tjs-lang 0.5.4 → 0.6.0
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/CLAUDE.md +33 -13
- package/README.md +4 -4
- package/bin/dev.ts +5 -1
- package/demo/docs.json +14 -2
- package/demo/index.html +2 -2
- package/demo/src/capabilities.ts +109 -2
- package/demo/src/demo-nav.ts +137 -203
- package/demo/src/imports.ts +43 -9
- package/demo/src/index.ts +179 -29
- package/demo/src/playground-shared.ts +11 -4
- package/demo/src/playground.ts +2 -2
- package/demo/src/tjs-playground.ts +294 -11
- package/demo/src/ts-playground.ts +239 -0
- package/dist/index.js +135 -127
- package/dist/index.js.map +6 -5
- package/dist/src/cli/commands/emit.d.ts +3 -0
- package/dist/src/lang/emitters/dts.d.ts +48 -0
- package/dist/src/lang/emitters/from-ts.d.ts +2 -0
- package/dist/src/lang/index.d.ts +1 -0
- package/dist/tjs-batteries.js +3 -3
- package/dist/tjs-batteries.js.map +2 -2
- package/dist/tjs-full.js +135 -127
- package/dist/tjs-full.js.map +6 -5
- package/dist/tjs-transpiler.js +2 -349
- package/dist/tjs-transpiler.js.map +4 -19
- package/package.json +1 -1
- package/src/cli/commands/emit.ts +26 -0
- package/src/cli/tjs.ts +4 -1
- package/src/lang/codegen.test.ts +55 -0
- package/src/lang/emitters/dts.test.ts +406 -0
- package/src/lang/emitters/dts.ts +588 -0
- package/src/lang/emitters/from-ts.ts +244 -20
- package/src/lang/index.ts +5 -0
- package/src/lang/typescript-syntax.test.ts +358 -0
package/dist/tjs-transpiler.js
CHANGED
|
@@ -1,350 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
`),X=this.line-1,H=Math.max(0,X-Z),Y=Math.min(K.length-1,X+Z),J=[],$=String(Y+1).length;for(let Q=H;Q<=Y;Q++){let z=String(Q+1).padStart($),G=Q===X?">":" ";if(J.push(`${G} ${z} | ${K[Q]}`),Q===X){let U=" ".repeat($+4+this.column);J.push(`${U}^ ${this.message.split(" at ")[0]}`)}}return J.join(`
|
|
3
|
-
`)}}function s(Z){return{depth:Z.depth+1,locals:new Map,parent:Z,parameters:Z.parameters,atoms:Z.atoms,warnings:Z.warnings,source:Z.source,filename:Z.filename,options:Z.options}}function f(Z){if(Z.loc)return{line:Z.loc.start.line,column:Z.loc.start.column};return{line:1,column:0}}function u0(Z,K){let X="",H=0,Y,J,$="normal",Q=[],z=[{type:"top-level",braceDepth:0}],G=0,U=()=>z[z.length-1]?.type||"top-level",F=()=>{let W=z[z.length-1];return W?.type==="class-body"&&G===W.braceDepth+1};while(H<Z.length){let W=Z[H],q=Z[H+1];switch($){case"single-string":if(X+=W,W==="\\"&&H+1<Z.length){X+=q,H+=2;continue}if(W==="'")$="normal";H++;continue;case"double-string":if(X+=W,W==="\\"&&H+1<Z.length){X+=q,H+=2;continue}if(W==='"')$="normal";H++;continue;case"template-string":if(X+=W,W==="\\"&&H+1<Z.length){X+=q,H+=2;continue}if(W==="$"&&q==="{"){X+=q,H+=2,Q.push(1),$="normal";continue}if(W==="`")$="normal";H++;continue;case"line-comment":if(X+=W,W===`
|
|
4
|
-
`)$="normal";H++;continue;case"block-comment":if(X+=W,W==="*"&&q==="/"){X+=q,H+=2,$="normal";continue}H++;continue;case"regex":if(X+=W,W==="\\"&&H+1<Z.length){X+=q,H+=2;continue}if(W==="["){H++;while(H<Z.length&&Z[H]!=="]")if(X+=Z[H],Z[H]==="\\"&&H+1<Z.length)X+=Z[H+1],H+=2;else H++;if(H<Z.length)X+=Z[H],H++;continue}if(W==="/"){H++;while(H<Z.length&&/[gimsuy]/.test(Z[H]))X+=Z[H],H++;$="normal";continue}H++;continue;case"normal":if(Q.length>0){if(W==="{")Q[Q.length-1]++;else if(W==="}"){if(Q[Q.length-1]--,Q[Q.length-1]===0){Q.pop(),X+=W,H++,$="template-string";continue}}}if(W==="'"){X+=W,H++,$="single-string";continue}if(W==='"'){X+=W,H++,$="double-string";continue}if(W==="`"){X+=W,H++,$="template-string";continue}if(W==="/"&&q==="/"){X+=W+q,H+=2,$="line-comment";continue}if(W==="/"&&q==="*"){X+=W+q,H+=2,$="block-comment";continue}if(W==="/"){let D=X.trimEnd();if(!D[D.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(D)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(D)){X+=W,H++,$="regex";continue}}break}if(W==="{"){G++,X+=W,H++;continue}if(W==="}"){G--;let D=z[z.length-1];if(D&&G===D.braceDepth)z.pop();X+=W,H++;continue}let w=Z.slice(H).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(w){let D=w[0].slice(0,-1);X+=D,H+=D.length,z.push({type:"class-body",braceDepth:G});continue}let L=Z.slice(H).match(/^function\s+(\w+)\s*\(/);if(L){let D=L[1],B=L[0].length,A=Z[H+B],R=null,j=H+B;if(A==="?"||A==="!")if(R=A,j++,R==="!")K.unsafeFunctions.add(D);else K.safeFunctions.add(D);X+=`function ${D}(`,H=j;let M=m0(Z,H,"(",")");if(!M){X+=Z[H],H++;continue}let{content:V,endPos:C}=M;H=C;let N=Q6(V,K,!0);X+=N+")";let T=H;while(T<Z.length&&/\s/.test(Z[T]))T++;let O=Z.slice(T,T+2);if(O==="->"||O==="-?"||O==="-!"){T+=2;while(T<Z.length&&/\s/.test(Z[T]))T++;let x=x0(Z,T);if(x){let{type:l,endPos:E}=x;if(Y===void 0){if(Y=l,O==="-?")J="safe";else if(O==="-!")J="unsafe"}H=E}}continue}let I=Z.slice(H).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/);if(I&&F()){let D=I[1],B=I[0].length,A=H+B;X+=D+"(",H=A;let R=m0(Z,H,"(",")");if(!R){X+=Z[H],H++;continue}let{content:j,endPos:M}=R;H=M;let V=Q6(j,K,!0);X+=V+")";let C=H;while(C<Z.length&&/\s/.test(Z[C]))C++;if(Z.slice(C,C+2)==="->"){C+=2;while(C<Z.length&&/\s/.test(Z[C]))C++;let T=x0(Z,C);if(T)H=T.endPos}else if(Z[C]===":"){C++;while(C<Z.length&&/\s/.test(Z[C]))C++;let T=x0(Z,C);if(T)H=T.endPos}continue}if(Z[H]==="("){let D=m0(Z,H+1,"(",")");if(!D){X+=Z[H],H++;continue}let{content:B,endPos:A}=D,R=A;while(R<Z.length&&/\s/.test(Z[R]))R++;let j,M=Z.slice(R,R+2);if(M==="->"||M==="-?"||M==="-!"){R+=2;while(R<Z.length&&/\s/.test(Z[R]))R++;let V=x0(Z,R);if(V){j=V.type,R=V.endPos;while(R<Z.length&&/\s/.test(Z[R]))R++}}if(Z.slice(R,R+2)==="=>"){let V=null,C=B,N=B.trimStart();if(N.startsWith("?")&&(N.length===1||/\s/.test(N[1])))V="?",C=N.slice(1);else if(N.startsWith("!")&&(N.length===1||/\s/.test(N[1])))V="!",C=N.slice(1);let T=Q6(C,K,!1);X+=`(${V==="?"?"/* safe */ ":V==="!"?"/* unsafe */ ":""}${T})`,H=A;while(H<R&&/\s/.test(Z[H]))X+=Z[H],H++;if(j)H=R}else{let V=u0(B,K);X+=`(${V.source})`,H=A}continue}X+=Z[H],H++}return{source:X,returnType:Y,returnSafety:J}}function m0(Z,K,X,H){let Y=1,J=K,$=!1,Q="";while(J<Z.length&&Y>0){let z=Z[J];if(!$&&(z==="'"||z==='"'||z==="`"))$=!0,Q=z;else if($&&z===Q&&Z[J-1]!=="\\")$=!1;else if(!$){if(z===X)Y++;else if(z===H)Y--}J++}if(Y!==0)return null;return{content:Z.slice(K,J-1),endPos:J}}function o6(Z,K){let X=K;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)return null;let H=X,Y=Z[X];if(Y==="{"||Y==="["){let $=Y==="{"?"}":"]",Q=m0(Z,X+1,Y,$);if(!Q)return null;return{value:Z.slice(H,Q.endPos),endPos:Q.endPos}}if(Y==="'"||Y==='"'||Y==="`"){X++;while(X<Z.length){if(Z[X]===Y&&Z[X-1]!=="\\")return X++,{value:Z.slice(H,X),endPos:X};X++}return null}if(/[-+\d]/.test(Y)){while(X<Z.length&&/[\d.eE+-]/.test(Z[X]))X++;return{value:Z.slice(H,X),endPos:X}}let J=Z.slice(X).match(/^(true|false|null|undefined)\b/);if(J)return{value:J[1],endPos:X+J[1].length};return null}function j0(Z){return Z.replace(/(?<!\|)\|(?!\|)/g," || ")}function x0(Z,K){let X=K,H=0,Y=!1,J="",$=!1,Q=(z)=>({type:j0(Z.slice(K,z).trim()),endPos:z});while(X<Z.length){let z=Z[X];if(!Y&&(z==="'"||z==='"'||z==="`")){Y=!0,J=z,$=!0,X++;continue}if(Y){if(z===J&&Z[X-1]!=="\\"){if(Y=!1,X++,H===0){let G=X;while(G<Z.length&&/\s/.test(Z[G]))G++;if(Z[G]==="{"){if(!Z.slice(G+1).match(/^\s*(\w+)\s*:/))return Q(X)}if(Z[G]!=="|"&&Z[G]!=="&")return Q(X)}continue}X++;continue}if(z==="{"||z==="["||z==="("){H++,$=!0,X++;continue}if(z==="}"||z==="]"||z===")"){if(H--,H===0){X++;let G=X;while(G<Z.length&&/\s/.test(Z[G]))G++;if(Z[G]==="|"||Z[G]==="&")continue;return Q(X)}X++;continue}if(H===0&&z==="{"){if($)return Q(X);if(Z.slice(X+1).match(/^\s*(\w+)\s*:/)){H++,$=!0,X++;continue}return Q(X)}if(H===0&&(z==="|"||z==="&")){if(X++,X<Z.length&&Z[X]==="|")X++;while(X<Z.length&&/\s/.test(Z[X]))X++;continue}if(H===0&&(/\d/.test(z)||z==="-"&&/\d/.test(Z[X+1]))){let G=X;if(Z[G]==="-")G++;while(G<Z.length&&/\d/.test(Z[G]))G++;if(G<Z.length&&Z[G]==="."&&/\d/.test(Z[G+1])){G++;while(G<Z.length&&/\d/.test(Z[G]))G++}if(G<Z.length&&(Z[G]==="e"||Z[G]==="E")){if(G++,G<Z.length&&(Z[G]==="+"||Z[G]==="-"))G++;while(G<Z.length&&/\d/.test(Z[G]))G++}$=!0,X=G;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X<Z.length&&Z[X]==="{")return{type:j0(Z.slice(K,G).trim()),endPos:G};if(Z[X]!=="|"&&Z[X]!=="&")return{type:j0(Z.slice(K,G).trim()),endPos:G};continue}if(H===0&&/[a-zA-Z_]/.test(z)){let G=X;while(G<Z.length&&/\w/.test(Z[G]))G++;$=!0,X=G;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X<Z.length&&Z[X]==="{"){if(!Z.slice(X+1).match(/^\s*(\w+)\s*:/)){let F=G;while(F>K&&/\s/.test(Z[F-1]))F--;return{type:j0(Z.slice(K,F).trim()),endPos:G}}}if(Z[X]!=="|"&&Z[X]!=="&")return{type:j0(Z.slice(K,G).trim()),endPos:G};continue}X++}if($)return Q(X);return null}function i0(Z){let K=[],X="",H=0,Y=!1,J=!1,$=0;while($<Z.length){let Q=Z[$],z=Z[$+1];if(!J&&Q==="/"&&z==="/"){Y=!0,X+="//",$+=2;continue}if(!Y&&Q==="/"&&z==="*"){J=!0,X+="/*",$+=2;continue}if(Y&&Q===`
|
|
5
|
-
`){Y=!1,X+=Q,$++;continue}if(J&&Q==="*"&&z==="/"){J=!1,X+="*/",$+=2;continue}if(Y||J){X+=Q,$++;continue}if(Q==="("||Q==="{"||Q==="[")H++,X+=Q;else if(Q===")"||Q==="}"||Q==="]")H--,X+=Q;else if(Q===","&&H===0)K.push(X),X="";else X+=Q;$++}if(X.trim())K.push(X);return K}function Q6(Z,K,X){let H=u0(Z,{originalSource:Z,requiredParams:K.requiredParams,unsafeFunctions:K.unsafeFunctions,safeFunctions:K.safeFunctions}).source,Y=i0(H),J=!1,$=new Set,Q=(G)=>{if(X&&/^\w+$/.test(G)){if($.has(G))throw Error(`Duplicate parameter name '${G}'`);$.add(G)}};return Y.map((G)=>{let U=G.trim();if(!U)return G;if(X&&U.startsWith("{")&&U.endsWith("}")){let q=U.slice(1,-1);return`{ ${c6(q,K)} }`}if(X&&U.startsWith("[")&&U.endsWith("]")){let q=U.slice(1,-1);return`[ ${c6(q,K)} ]`}let F=U.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(F){let[,q,w]=F;return Q(q),J=!0,`${q} = ${w}`}if(!$8(U)){let q=U.match(/^(\w+)\s*=/);if(q)Q(q[1]);return J=!0,G}let W=J8(U);if(W!==-1){let q=U.slice(0,W).trim(),w=U.slice(W+1).trim();if(Q(q),J&&X&&/^\w+$/.test(q))throw Error(`Required parameter '${q}' cannot follow optional parameter`);if(X&&/^\w+$/.test(q))K.requiredParams.add(q);return`${q} = ${w}`}return G}).join(",")}function c6(Z,K){return i0(Z).map((Y)=>{let J=Y.trim();if(!J)return Y;let $=J.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if($){let[,G,U]=$;K.requiredParams.add(G);let F=l0(U);return`${G} = ${F}`}let Q=J.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(Q){let[,G,U]=Q;K.requiredParams.add(G);let F=d0(U);return`${G} = ${F}`}let z=J.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(z){let[,G,U]=z;return K.requiredParams.add(G),`${G} = ${U}`}return Y}).join(", ")}function l0(Z){let K=Z.slice(1,-1).trim();return`{ ${i0(K).map((Y)=>{let J=Y.trim();if(!J)return Y;let $=J.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if($){let[,F,W]=$;return`${F}: ${l0(W)}`}let Q=J.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(Q){let[,F,W]=Q;return`${F}: ${l0(W)}`}let z=J.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(z){let[,F,W]=z;return`${F}: ${d0(W)}`}let G=J.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(G){let[,F,W]=G;return`${F}: ${d0(W)}`}let U=J.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(U){let[,F,W]=U;return`${F}: ${W}`}return Y}).join(", ")} }`}function d0(Z){let K=Z.slice(1,-1).trim();return`[ ${i0(K).map((Y)=>{let J=Y.trim();if(!J)return Y;if(J.startsWith("{")&&J.endsWith("}"))return l0(J);if(J.startsWith("[")&&J.endsWith("]"))return d0(J);return Y}).join(", ")} ]`}function $8(Z){let K=0,X=!1,H=!1,Y=!1,J="";for(let $=0;$<Z.length;$++){let Q=Z[$];if(!Y&&(Q==="'"||Q==='"'||Q==="`")){Y=!0,J=Q;continue}if(Y){if(Q===J&&Z[$-1]!=="\\")Y=!1;continue}if(Q==="("||Q==="{"||Q==="[")K++;else if(Q===")"||Q==="}"||Q==="]")K--;else if(K===0){if(Q===":")X=!0;if(Q==="="&&Z[$+1]!==">")H=!0}}return X&&!H}function J8(Z){let K=0,X=!1,H="";for(let Y=0;Y<Z.length;Y++){let J=Z[Y];if(!X&&(J==="'"||J==='"'||J==="`")){X=!0,H=J;continue}if(X){if(J===H&&Z[Y-1]!=="\\")X=!1;continue}if(J==="("||J==="{"||J==="[")K++;else if(J===")"||J==="}"||J==="]")K--;else if(K===0&&J===":")return Y}return-1}function r6(Z){let K="",X=0;while(X<Z.length){let H=Z.slice(X).match(/^\btry\s*\{/);if(H){let J=X+H[0].length-1+1,$=1,Q=J;while(Q<Z.length&&$>0){let G=Z[Q];if(G==="{")$++;else if(G==="}")$--;Q++}if($!==0){K+=Z[X],X++;continue}if(Z.slice(Q).match(/^\s*(catch|finally)\b/))K+=Z.slice(X,Q),X=Q;else{let G=Z.slice(J,Q-1);K+=`try {${G}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,X=Q}}else K+=Z[X],X++}return K}function e6(Z){let K=[],X="",H=0,Y=0;while(H<Z.length){let J=Z.slice(H).match(/^\bwasm\s*\{/);if(J){let $=H,Q=H+J[0].length,z=1,G=Q;while(G<Z.length&&z>0){let M=Z[G];if(M==="{")z++;else if(M==="}")z--;G++}if(z!==0){X+=Z[H],H++;continue}let U=Z.slice(Q,G-1),F,W=G,q=Z.slice(G).match(/^\s*fallback\s*\{/);if(q){let M=G+q[0].length;z=1;let V=M;while(V<Z.length&&z>0){let C=Z[V];if(C==="{")z++;else if(C==="}")z--;V++}if(z===0)F=Z.slice(M,V-1),W=V}let L=z8(U).map((M)=>{let V=G8(Z,$,M);return V?`${M}: ${V}`:M}),I={id:`__tjs_wasm_${Y}`,body:U,fallback:F,captures:L,start:$,end:W};K.push(I);let D=F??U,B=L.map((M)=>M.split(":")[0].trim()),A=B.length>0?B.join(", "):"",R=B.length>0?`globalThis.${I.id}(${A})`:`globalThis.${I.id}()`,j=`(globalThis.${I.id} ? ${R} : (() => {${D}})())`;X+=j,H=W,Y++}else X+=Z[H],H++}return{source:X,blocks:K}}function Q8(Z){return Z.startsWith("f32x4_")||Z.startsWith("v128_")}function z8(Z){let K=Z.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),X=new Set,H=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,Y;while((Y=H.exec(K))!==null)X.add(Y[1]);let J=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,$=new Set;while((Y=J.exec(K))!==null)$.add(Y[1]);for(let W of X){if(!$.has(W))continue;let q=new RegExp(`(?<!\\.)\\b${W}\\b`,"g"),w=new RegExp(`\\.${W}\\b`,"g"),L=K.match(q)?.length||0,I=K.match(w)?.length||0;if(L<=I)$.delete(W)}let Q=new Set,z=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((Y=z.exec(K))!==null)Q.add(Y[1]);let G=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((Y=G.exec(K))!==null)Q.add(Y[1]);let U=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"]),F=[];for(let W of $)if(!Q.has(W)&&!U.has(W)&&!Q8(W))F.push(W);return F.sort()}function G8(Z,K,X){let H=Z.slice(0,K),Y=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,J=H.match(Y);if(!J){let $=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,Q=H.match($);if(!Q)return;return s6(Q[1],X)}return s6(J[1],X)}function s6(Z,K){let X=Z.split(",").map((H)=>H.trim());for(let H of X){let Y=H.match(new RegExp(`^${K}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(Y)return Y[1];let J=H.match(new RegExp(`^${K}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(J)return J[1]}return}function Z1(Z){let X=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(X,"IsNot($1, $2)");let H=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(H,"Is($1, $2)"),Z}function X1(Z){let K=/^[\s]*[([/+\-`]/,X=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,H=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,Y=Z.split(`
|
|
6
|
-
`),J=[];for(let $=0;$<Y.length;$++){let Q=Y[$],z=$>0?Y[$-1]:"";if($>0&&K.test(Q)){let G=z.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!X.test(G)&&!H.test(G)){let U=Q.match(/^(\s*)/),F=U?U[1]:"",W=Q.slice(F.length);J.push(F+";"+W);continue}}J.push(Q)}return J.join(`
|
|
7
|
-
`)}function K1(Z){let K=[],X=0,H="normal",Y=[];while(X<Z.length){let $=Z[X],Q=Z[X+1];switch(H){case"single-string":if($==="\\"&&X+1<Z.length){X+=2;continue}if($==="'")H="normal";X++;continue;case"double-string":if($==="\\"&&X+1<Z.length){X+=2;continue}if($==='"')H="normal";X++;continue;case"template-string":if($==="\\"&&X+1<Z.length){X+=2;continue}if($==="$"&&Q==="{"){X+=2,Y.push(1),H="normal";continue}if($==="`")H="normal";X++;continue;case"line-comment":if($===`
|
|
8
|
-
`)H="normal";X++;continue;case"block-comment":if($==="*"&&Q==="/"){X+=2,H="normal";continue}X++;continue;case"regex":if($==="\\"&&X+1<Z.length){X+=2;continue}if($==="["){X++;while(X<Z.length&&Z[X]!=="]")if(Z[X]==="\\"&&X+1<Z.length)X+=2;else X++;if(X<Z.length)X++;continue}if($==="/"){X++;while(X<Z.length&&/[gimsuy]/.test(Z[X]))X++;H="normal";continue}X++;continue;case"normal":if(Y.length>0){if($==="{")Y[Y.length-1]++;else if($==="}"){if(Y[Y.length-1]--,Y[Y.length-1]===0){Y.pop(),X++,H="template-string";continue}}}if($==="'"){X++,H="single-string";continue}if($==='"'){X++,H="double-string";continue}if($==="`"){X++,H="template-string";continue}if($==="/"&&Q==="/"){X+=2,H="line-comment";continue}if($==="/"&&Q==="*"){X+=2,H="block-comment";continue}if($==="/"){let z=X-1;while(z>=0&&/\s/.test(Z[z]))z--;let G=z>=0?Z[z]:"";if(!G||/[=(!,;:{[&|?+\-*%<>~^]/.test(G)||z>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(Z.slice(Math.max(0,z-10),z+1))){X++,H="regex";continue}}if($==="="&&Q==="="&&Z[X+2]!=="="&&Z[X-1]!=="!"){K.push({pos:X,op:"=="}),X+=2;continue}if($==="!"&&Q==="="&&Z[X+2]!=="="){K.push({pos:X,op:"!="}),X+=2;continue}break}X++}if(K.length===0)return Z;let J=Z;for(let $=K.length-1;$>=0;$--){let{pos:Q,op:z}=K[$],G=z==="=="?"Is":"IsNot",U=W8(J,Q),F=_8(J,Q+2),W=J.slice(U,Q).trim(),q=J.slice(Q+2,F).trim();if(W&&q){let w=J.slice(0,U),L=J.slice(F),D=/[a-zA-Z0-9_$]$/.test(w)?" ":"";J=`${w}${D}${G}(${W}, ${q})${L}`}}return J}function W8(Z,K){let X=K-1;while(X>=0&&/\s/.test(Z[X]))X--;if(X<0)return 0;let H=0,Y=!1,J="";while(X>=0){let $=Z[X],Q=X>0?Z[X-1]:"";if(Y){if($===J&&Q!=="\\")Y=!1;X--;continue}if(($==='"'||$==="'"||$==="`")&&Q!=="\\"){Y=!0,J=$,X--;continue}if($===")"||$==="]"){H++,X--;continue}if($==="("||$==="["){if(H>0){H--,X--;continue}return X+1}if(H>0){X--;continue}if($===";"||$==="{"||$==="}")return X+1;if(/[a-z]/.test($)){let z=X+1,G=X;while(G>0&&/[a-z]/i.test(Z[G-1]))G--;let U=Z.slice(G,z),F=G>0?Z[G-1]:"";if(!/[a-zA-Z0-9_$]/.test(F)){if(["return","throw","case","typeof","void","delete","await","yield","new"].includes(U))return z}}if($===">"&&Q==="=")return X+1;if($==="="&&Q!=="="&&Q!=="!"&&Q!=="<"&&Q!==">")return X+1;if($==="&"&&Q==="&")return X+1;if($==="|"&&Q==="|")return X+1;if($==="?"||$===":")return X+1;if($===",")return X+1;X--}return 0}function _8(Z,K){let X=K;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)return Z.length;let H=0,Y=!1,J="";while(X<Z.length){let $=Z[X],Q=X+1<Z.length?Z[X+1]:"";if(Y){if($===J&&Z[X-1]!=="\\")Y=!1;X++;continue}if(($==='"'||$==="'"||$==="`")&&Z[X-1]!=="\\"){Y=!0,J=$,X++;continue}if($==="("||$==="["||$==="{"){H++,X++;continue}if($===")"||$==="]"||$==="}"){if(H>0){H--,X++;continue}return X}if(H>0){X++;continue}if($===";")return X;if($==="&"&&Q==="&")return X;if($==="|"&&Q==="|")return X;if($==="?")return X;if($===":")return X;if($===",")return X;if(($==="="||$==="!")&&Q==="="&&Z[X+2]!=="=")return X;X++}return Z.length}function H1(Z){let K="",X=0;while(X<Z.length){let H=Z.slice(X).match(/^\bType\s+([A-Z][a-zA-Z0-9_]*)\s*/);if(H){let Y=H[1],J=X+H[0].length,$=Y,Q=!1,z=Z.slice(J).match(/^(['"`])([^]*?)\1\s*/);if(z){let W=J+z[0].length,q=Z[W],w=q===void 0||W>=Z.length||q!=="="&&q!=="{";if(q==="="||q==="{")$=z[2],Q=!0,J=W;else if(w){let L=z[0].trim(),I=z[0].slice(L.length);K+=`const ${Y} = Type('${Y}', ${L})${I}`,X=W;continue}}let G,U=J,F=Z.slice(J).match(/^=\s*/);if(F){J+=F[0].length;let W=Z.slice(J).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(W){G=W[0],J+=W[0].length,U=J;let q=Z.slice(J).match(/^\s*/);if(q)J+=q[0].length}}if(Z[J]==="{"){let W=J+1,q=1,w=W;while(w<Z.length&&q>0){let j=Z[w];if(j==="{")q++;else if(j==="}")q--;w++}if(q!==0){K+=Z[X],X++;continue}let L=Z.slice(W,w-1).trim(),I=w,D=L.match(/description\s*:\s*(['"`])([^]*?)\1/);if(D&&!Q)$=D[2];let B,A=L.match(/example\s*:\s*/);if(A){let j=A.index+A[0].length,M=o6(L,j);if(M)B=M.value.trim()}let R=L.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(R&&B){let j=R[1].trim(),M=R[2].trim(),V=G?`, ${G}`:"";K+=`const ${Y} = Type('${$}', (${j}) => { if (!globalThis.__tjs?.validate(${j}, globalThis.__tjs?.infer(${B}))) return false; ${M} }, ${B}${V})`}else if(R){let j=R[1].trim(),M=R[2].trim(),V=G?`, undefined, ${G}`:"";K+=`const ${Y} = Type('${$}', (${j}) => { ${M} }${V})`}else if(B){let j=G?`, ${G}`:"";K+=`const ${Y} = Type('${$}', undefined, ${B}${j})`}else if(G)K+=`const ${Y} = Type('${$}', ${G})`;else K+=`const ${Y} = Type('${$}')`;X=I;continue}else if(G){K+=`const ${Y} = Type('${$}', ${G})`,X=U;continue}else if(!z){let W=Z.slice(J).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(W){let q=W[0];K+=`const ${Y} = Type('${Y}', ${q})`,X=J+W[0].length;continue}}}K+=Z[X],X++}return K}function Y1(Z){let K="",X=0;while(X<Z.length){let H=Z.slice(X).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(H){let Y=H[1],J=H[2],Q=X+H[0].length-1+1,z=1,G=Q;while(G<Z.length&&z>0){let I=Z[G];if(I==="{")z++;else if(I==="}")z--;G++}if(z!==0){K+=Z[X],X++;continue}let U=Z.slice(Q,G-1).trim(),F=G,W=J.split(",").map((I)=>{let D=I.trim().split("=").map((B)=>B.trim());if(D.length===2)return`['${D[0]}', ${D[1]}]`;return`'${D[0]}'`}),q=U.match(/description\s*:\s*(['"`])([^]*?)\1/),w=U.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),L=q?q[2]:Y;if(w){let I=w[1].trim().split(",").map((j)=>j.trim()),D=w[2].trim(),B=I[0]||"x",A=I.slice(1),R=A.map((j)=>`check${j}`);A.forEach((j,M)=>{D=D.replace(new RegExp(`\\b${j}\\s*\\(`,"g"),`${R[M]}(`)}),K+=`const ${Y} = Generic([${W.join(", ")}], (${B}, ${R.join(", ")}) => { ${D} }, '${L}')`}else K+=`const ${Y} = Generic([${W.join(", ")}], () => true, '${L}')`;X=F;continue}K+=Z[X],X++}return K}function $1(Z){let K="",X=0;while(X<Z.length){let H=Z.slice(X).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(H){let Y=H[1],J=H[3],$=X+H[0].length;if(Z[$]==="{"){let Q=$+1,z=1,G=Q;while(G<Z.length&&z>0){let q=Z[G];if(q==="{")z++;else if(q==="}")z--;G++}if(z!==0){K+=Z[X],X++;continue}let U=Z.slice(Q,G-1).trim(),F=G,W=a6(U);K+=`const ${Y} = Union('${J}', [${W.join(", ")}])`,X=F;continue}else{let Q=Z.indexOf(`
|
|
9
|
-
`,$);if(Q===-1)Q=Z.length;let z=Z.slice($,Q).trim();if(z){let G=a6(z);K+=`const ${Y} = Union('${J}', [${G.join(", ")}])`,X=Q;continue}}}K+=Z[X],X++}return K}function a6(Z){let K=[],X=Z.split("|").map((H)=>H.trim());for(let H of X){if(!H)continue;K.push(H)}return K}function J1(Z){let K="",X=0;while(X<Z.length){let H=Z.slice(X).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(H){let Y=H[1],J=H[3],Q=X+H[0].length-1+1,z=1,G=Q;while(G<Z.length&&z>0){let w=Z[G];if(w==="{")z++;else if(w==="}")z--;G++}if(z!==0){K+=Z[X],X++;continue}let U=Z.slice(Q,G-1).trim(),F=G,q=F8(U).map(([w,L])=>`${w}: ${L}`).join(", ");K+=`const ${Y} = Enum('${J}', { ${q} })`,X=F;continue}K+=Z[X],X++}return K}function F8(Z){let K=[],X=0,H=Z.split(/[\n,]/).map((Y)=>Y.trim()).filter((Y)=>Y&&!Y.startsWith("//"));for(let Y of H){let J=Y.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*(?:=\s*(.+))?$/);if(J){let $=J[1],Q=J[2]?.trim();if(Q!==void 0){K.push([$,Q]);let z=Number(Q);if(!isNaN(z))X=z+1}else K.push([$,String(X)]),X++}}return K}function Q1(Z){let K=new Map,X="",H=0;while(H<Z.length){let Y=Z.slice(H),J=Y.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/);if(!J){if(H===0||Z[H-1]===`
|
|
10
|
-
`||Z[H-1]===";"||Z[H-1]==="}"){let A=Y.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}X+=Z[H],H++;continue}let $=J[1],Q=J[2],z=H+J[0].length-1,G=V0(Z,z),U=Z.slice(z+1,G-1).trim(),F=[],W=0,q=Z.slice(z+1,G-1);while(W<q.length){let A=q.slice(W).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!A){W++;continue}let R=A[1],j=!!A[2],M=A[3],V=W+A[0].length-1,C=1,N=V+1;while(N<q.length&&C>0){if(q[N]==="(")C++;if(q[N]===")")C--;N++}let T=q.slice(V+1,N-1),O=N;while(O<q.length&&/\s/.test(q[O]))O++;if(q[O]==="="&&q[O+1]===">"){let m=P0(Z,z+1+W);throw new p(`Arrow functions are not allowed in extend blocks (method '${M}' in extend ${Q}). Use regular function syntax instead, as extension methods need 'this' binding.`,m)}if(q[O]!=="{"){W++;continue}let x=V0(q,O),l=q.slice(W,x).trim(),E=T.split(",").map((m)=>m.trim()).filter((m)=>m.length>0).map((m)=>{let Z0=m.match(/^(\w+)\s*:\s*(.+)$/);if(Z0)return`${Z0[1]} = ${Z0[2]}`;return m}).join(", "),S=j?"async ":"",i=q.slice(O+1,x-1);F.push({name:M,isAsync:j,fullText:`${M}: ${S}function(${E}) {${i}}`}),W=x}let w=!K.has(Q);if(w)K.set(Q,new Set);let L=K.get(Q);for(let B of F)L.add(B.name);let I=F.map((B)=>` ${B.fullText}`).join(`,
|
|
11
|
-
`),D;if(w)D=`${$}const __ext_${Q} = {
|
|
12
|
-
${I}
|
|
13
|
-
${$}}
|
|
14
|
-
`;else D=`${$}Object.assign(__ext_${Q}, {
|
|
15
|
-
${I}
|
|
16
|
-
${$}})
|
|
17
|
-
`;for(let B of F)D+=`${$}if (__tjs?.registerExtension) { __tjs.registerExtension('${Q}', '${B.name}', __ext_${Q}.${B.name}) }
|
|
18
|
-
`;X+=D,H=G}if(H<=Z.length&&X.length<Z.length);return{source:X,extensions:K}}function C0(Z,K){if(K.size===0)return Z;let X=new Map;for(let[Y,J]of K)for(let $ of J){if(!X.has($))X.set($,[]);X.get($).push(Y)}let H=Z;for(let[Y,J]of X){if(!J.includes("String"))continue;let $=new RegExp(`('(?:[^'\\\\]|\\\\.)*')\\.(${Y})\\((\\))?`,"g");H=H.replace($,(G,U,F,W)=>{return W?`__ext_String.${F}.call(${U})`:`__ext_String.${F}.call(${U}, `});let Q=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${Y})\\((\\))?`,"g");H=H.replace(Q,(G,U,F,W)=>{return W?`__ext_String.${F}.call(${U})`:`__ext_String.${F}.call(${U}, `});let z=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+Y+"\\((\\))?","g");H=H.replace(z,(G,U,F)=>{return F?`__ext_String.${Y}.call(${U})`:`__ext_String.${Y}.call(${U}, `})}for(let[Y,J]of X){if(!J.includes("Array"))continue;let $=`].${Y}(`,Q=0,z;while((z=H.indexOf($,Q))!==-1){let G=1,U=z-1,F=!1;while(U>=0&&G>0){let W=H[U];if(F){if(W===F&&(U===0||H[U-1]!=="\\"))F=!1}else{if(W==="]")G++;if(W==="[")G--;if(W==="'"||W==='"'||W==="`")F=W}U--}if(G===0){let W=H.slice(U+1,z+1),q=H.slice(0,U+1),w=H.slice(z+$.length);if(w[0]===")")H=`${q}__ext_Array.${Y}.call(${W})${w.slice(1)}`;else H=`${q}__ext_Array.${Y}.call(${W}, ${w}`}Q=z+1}}for(let[Y,J]of X){if(!J.includes("Number"))continue;let $=new RegExp(`(\\d+(?:\\.\\d+)?)\\.(${Y})\\((\\))?`,"g");H=H.replace($,(Q,z,G,U)=>{return U?`__ext_Number.${G}.call(${z})`:`__ext_Number.${G}.call(${z}, `})}return H}function P0(Z,K){let X=1,H=0;for(let Y=0;Y<K&&Y<Z.length;Y++)if(Z[Y]===`
|
|
19
|
-
`)X++,H=0;else H++;return{line:X,column:H}}function z1(Z,K){let X=K.trim();if(/^['"`]/.test(X))return`typeof ${Z} === 'string'`;if(X==="true"||X==="false")return`typeof ${Z} === 'boolean'`;if(X==="null")return`${Z} === null`;if(X==="undefined")return`${Z} === undefined`;if(X.startsWith("["))return`Array.isArray(${Z})`;if(X.startsWith("{"))return`(typeof ${Z} === 'object' && ${Z} !== null && !Array.isArray(${Z}))`;if(/^\+\d+/.test(X))return`(typeof ${Z} === 'number' && Number.isInteger(${Z}) && ${Z} >= 0)`;if(/^-?\d+\.\d+/.test(X))return`typeof ${Z} === 'number'`;if(/^-?\d+$/.test(X))return`(typeof ${Z} === 'number' && Number.isInteger(${Z}))`;return"true"}function p0(Z){let K=Z.trim();if(/^['"`]/.test(K))return"string";if(K==="true"||K==="false")return"boolean";if(K==="null")return"null";if(K==="undefined")return"undefined";if(K.startsWith("["))return"array";if(K.startsWith("{"))return"object";if(/^\+\d+/.test(K))return"non-negative-integer";if(/^-?\d+\.\d+/.test(K))return"number";if(/^-?\d+$/.test(K))return"integer";return"any"}function z6(Z,K){let X=[],H=0,Y="",J=!1;for(let Q=0;Q<Z.length;Q++){let z=Z[Q];if(!J&&(z==="'"||z==='"'||z==="`")){J=z,Y+=z;continue}if(J){if(Y+=z,z==="\\"){if(Q++,Q<Z.length)Y+=Z[Q];continue}if(z===J)J=!1;continue}if(z==="("||z==="["||z==="{"){H++,Y+=z;continue}if(z===")"||z==="]"||z==="}"){H--,Y+=z;continue}if(z===","&&H===0){let G=t6(Y.trim(),K);if(G)X.push(G);Y="";continue}Y+=z}let $=Y.trim();if($){let Q=t6($,K);if(Q)X.push(Q)}return X}function t6(Z,K){let X=Z.replace(/^\/\*\s*unsafe\s*\*\/\s*/,"");if(X.startsWith("..."))return null;let H=X.indexOf("=");if(H===-1)return{name:X.trim(),defaultValue:"",required:!0};let Y=X.slice(0,H).trim(),J=X.slice(H+1).trim();return{name:Y,defaultValue:J,required:K.has(Y)}}function V0(Z,K){let X=1,H=K+1,Y=!1,J=!1,$=!1;while(H<Z.length&&X>0){let Q=Z[H],z=H+1<Z.length?Z[H+1]:"";if(J){if(Q===`
|
|
20
|
-
`)J=!1;H++;continue}if($){if(Q==="*"&&z==="/"){$=!1,H+=2;continue}H++;continue}if(Y){if(Q==="\\"){H+=2;continue}if(Q===Y)Y=!1;H++;continue}if(Q==="/"&&z==="/"){J=!0,H+=2;continue}if(Q==="/"&&z==="*"){$=!0,H+=2;continue}if(Q==="'"||Q==='"'||Q==="`"){Y=Q,H++;continue}if(Q==="{")X++;if(Q==="}")X--;H++}return H}function G1(Z,K){let X=new Set,H=/(?:^|(?<=[\n;{}]))\s*(export\s+)?(async\s+)?function\s+(\w+)\s*\(/gm,Y=new Map,J,$=[];while((J=H.exec(Z))!==null){let F=!!J[1],W=!!J[2],q=J[3],w=J.index,L=w,D=J[0].indexOf("function");if(D>=0)L=w+D;$.push({name:q,fullMatchStart:w,funcKeywordStart:L,exported:F,isAsync:W})}for(let F of $)if(!Y.has(F.name))Y.set(F.name,[]);let Q=new Map;for(let F of $)Q.set(F.name,(Q.get(F.name)||0)+1);let z=new Set;for(let[F,W]of Q)if(W>1)z.add(F);if(z.size===0)return{source:Z,polymorphicNames:X};for(let F of $){if(!z.has(F.name))continue;let W=Z.indexOf("(",F.funcKeywordStart);if(W===-1)continue;let q=1,w=W+1;while(w<Z.length&&q>0){if(Z[w]==="(")q++;if(Z[w]===")")q--;w++}let L=w-1,I=Z.slice(W+1,L),D=w;while(D<Z.length&&Z[D]!=="{")D++;if(D>=Z.length)continue;let B=V0(Z,D),A=F.fullMatchStart;while(A>0&&Z[A-1]===" ")A--;let R=Y.get(F.name),j=z6(I,K);if(I.includes("...")){let V=P0(Z,F.funcKeywordStart);throw new p(`Rest parameters are not supported in polymorphic function '${F.name}'. Use separate function names instead.`,V)}R.push({index:R.length+1,start:A,end:B,text:Z.slice(A,B),exported:F.exported,isAsync:F.isAsync,params:j})}for(let[F,W]of Y){if(W.length<2)continue;let q=W.filter((w)=>w.isAsync).length;if(q>0&&q<W.length){let w=P0(Z,W[0].start);throw new p(`Polymorphic function '${F}': all variants must be either sync or async, not mixed.`,w)}for(let w=0;w<W.length;w++)for(let L=w+1;L<W.length;L++){let I=W[w],D=W[L];if(I.params.length!==D.params.length)continue;let B=!0;for(let A=0;A<I.params.length;A++){let R=I.params[A].defaultValue?p0(I.params[A].defaultValue):"any",j=D.params[A].defaultValue?p0(D.params[A].defaultValue):"any";if(R!==j){B=!1;break}}if(B){let A=P0(Z,D.start);throw new p(`Polymorphic function '${F}': variants ${w+1} and ${L+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,A)}}}let G=[];for(let[F,W]of Y){if(W.length<2)continue;for(let q of W)G.push({name:F,variant:q})}G.sort((F,W)=>W.variant.start-F.variant.start);let U=Z;for(let{name:F,variant:W}of G){let q=W.isAsync?"async ":"",w=W.text.replace(new RegExp(`(?:export\\s+)?${q?q.replace(/\s+$/,"\\s+"):""}function\\s+${F}\\s*\\(`),`${q}function ${F}$$${W.index}(`);U=U.slice(0,W.start)+w+U.slice(W.end)}for(let[F,W]of Y){if(W.length<2)continue;X.add(F);let q=W[0].isAsync,w=W.some((R)=>R.exported),L=q?"async ":"",I=w?"export ":"",D=[...W].sort((R,j)=>{if(R.params.length!==j.params.length)return 0;let M=0,V=0;for(let C of R.params){let N=C.defaultValue?p0(C.defaultValue):"any";if(N==="non-negative-integer")M+=3;else if(N==="integer")M+=2;else if(N!=="any")M+=1}for(let C of j.params){let N=C.defaultValue?p0(C.defaultValue):"any";if(N==="non-negative-integer")V+=3;else if(N==="integer")V+=2;else if(N!=="any")V+=1}return V-M}),B=[];for(let R of D){let j=[`__args.length === ${R.params.length}`],M=[];for(let V=0;V<R.params.length;V++){let C=R.params[V];if(M.push(`__args[${V}]`),C.defaultValue){let N=z1(`__args[${V}]`,C.defaultValue);if(N!=="true")j.push(N)}}B.push(` if (${j.join(" && ")}) return ${F}$${R.index}(${M.join(", ")})`)}let A=`
|
|
21
|
-
${I}${L}function ${F}(...__args) {
|
|
22
|
-
${B.join(`
|
|
23
|
-
`)}
|
|
24
|
-
return __tjs.typeError('${F}', 'no matching overload', __args)
|
|
25
|
-
}
|
|
26
|
-
`;U+=A}return{source:U,polymorphicNames:X}}function W1(Z){return Z.replace(/(?<=^|[;\n{])\s*([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(K,X)=>{return K.replace(X,`const ${X}`)})}function _1(Z,K=!1){let X=[],H=[],Y="",J=0;while(J<Z.length){let $=Z.slice(J).match(/^\btest\s+/);if($){let Q=J,z=J+$[0].length,G,U=Z.slice(z).match(/^(['"`])([^]*?)\1\s*/);if(U)G=U[2],z+=U[0].length;if(Z[z]==="{"){let F=z+1,W=1,q=F;while(q<Z.length&&W>0){let w=Z[q];if(w==="{")W++;else if(w==="}")W--;q++}if(W===0){let w=Z.slice(F,q-1).trim(),L=q,I=(Z.slice(0,Q).match(/\n/g)||[]).length+1;if(X.push({description:G,body:w,start:Q,end:L,line:I}),!K)try{Function(w)()}catch(A){let R=G||`test at line ${I}`;H.push(`Test failed: ${R} (line ${I})
|
|
27
|
-
${A.message||A}`)}let B=(Z.slice(Q,L).match(/\n/g)||[]).length;Y+=`
|
|
28
|
-
`.repeat(B),J=L;continue}}}Y+=Z[J],J++}return{source:Y,tests:X,errors:H}}function F1(Z,K){let X=new Set,H=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,Y,J=[];while((Y=H.exec(Z))!==null){let Q=Y[1],z=Y[2]?.trim()||"",G=Y.index+Y[0].length-1,U=V0(Z,G),F=Z.slice(G,U);J.push({className:Q,extendsClause:z,bodyStart:G,bodyEnd:U,body:F})}let $=Z;for(let Q=J.length-1;Q>=0;Q--){let{className:z,extendsClause:G,bodyStart:U,bodyEnd:F,body:W}=J[Q],q=/\bconstructor\s*\(/g,w,L=[];while((w=q.exec(W))!==null)L.push(w.index);if(L.length<2)continue;X.add(z);let I=[];for(let V=0;V<L.length;V++){let C=L[V],N=W.indexOf("(",C),T=1,O=N+1;while(O<W.length&&T>0){if(W[O]==="(")T++;if(W[O]===")")T--;O++}let x=W.slice(N+1,O-1),l=O;while(l<W.length&&W[l]!=="{")l++;let E=V0(W,l),S=W.slice(l+1,E-1);I.push({index:V+1,paramStr:x,bodyText:S,fullStart:C,fullEnd:E})}let D=W.slice(0,I[0].fullEnd),B=I[I.length-1].fullEnd;D+=W.slice(B);let A=W;for(let V=I.length-1;V>=1;V--){let C=I[V],N=C.fullStart;while(N>0&&A[N-1]===" ")N--;if(N>0&&A[N-1]===`
|
|
29
|
-
`)N--;A=A.slice(0,N)+A.slice(C.fullEnd)}let R="";for(let V=1;V<I.length;V++){let C=I[V],N=z6(C.paramStr,K);if(C.paramStr.includes("...")){let O=P0(Z,U+C.fullStart);throw new p(`Rest parameters are not supported in polymorphic constructors for '${z}'.`,O)}R+=`
|
|
30
|
-
function ${z}$ctor$${C.index}(${C.paramStr}) {`,R+=`
|
|
31
|
-
const __obj = Object.create(${z}.prototype)`,R+=`
|
|
32
|
-
;(function() {${C.bodyText}}).call(__obj)`,R+=`
|
|
33
|
-
return __obj`,R+=`
|
|
34
|
-
}
|
|
35
|
-
`}let j=[];for(let V=0;V<I.length;V++){let C=I[V],N=z6(C.paramStr,K),T=[`a.length === ${N.length}`];for(let O=0;O<N.length;O++){let x=N[O];if(x.defaultValue){let l=z1(`a[${O}]`,x.defaultValue);if(l!=="true")T.push(l)}}if(V===0)j.push(` if (${T.join(" && ")}) return Reflect.construct(t, a)`);else{let O=N.map((x,l)=>`a[${l}]`).join(", ");j.push(` if (${T.join(" && ")}) return ${z}$ctor$${C.index}(${O})`)}}R+=`
|
|
36
|
-
function ${z}$dispatch(t, a) {
|
|
37
|
-
`,R+=j.join(`
|
|
38
|
-
`)+`
|
|
39
|
-
`,R+=` return __tjs.typeError('${z}', 'no matching constructor', a)
|
|
40
|
-
`,R+=`}
|
|
41
|
-
`,$=$.slice(0,U)+A+$.slice(F);let M=U+A.length;$=$.slice(0,M)+R+$.slice(M)}return{source:$,polyCtorClasses:X}}function q1(Z,K=new Set){let X=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,H="",Y=0,J;while((J=X.exec(Z))!==null){let $=J[1],Q=J[2]||"",z=J.index,G=z+J[0].length-1,U=1,F=G+1;while(F<Z.length&&U>0){let W=Z[F];if(W==="{")U++;else if(W==="}")U--;F++}if(U===0){let W=F,q=Z.slice(G,W);if(H+=Z.slice(Y,z),H+=`let ${$} = class ${$}${Q} ${q}; `,K.has($))H+=`${$} = new Proxy(${$}, { apply(t, _, a) { return ${$}$dispatch(t, a) }, construct(t, a) { return ${$}$dispatch(t, a) } });`;else H+=`${$} = new Proxy(${$}, { apply(t, _, a) { return Reflect.construct(t, a) } });`;Y=W}}return H+=Z.slice(Y),H}function U1(Z){let K=[{pattern:/\bnew\s+Date\b/,message:"new Date() is not allowed in TjsDate mode. Use Timestamp.now() or Timestamp.from()"},{pattern:/\bDate\.now\b/,message:"Date.now() is not allowed in TjsDate mode. Use Timestamp.now()"},{pattern:/\bDate\.parse\b/,message:"Date.parse() is not allowed in TjsDate mode. Use Timestamp.parse()"},{pattern:/\bDate\.UTC\b/,message:"Date.UTC() is not allowed in TjsDate mode. Use Timestamp.from()"}];for(let{pattern:X,message:H}of K)if(X.test(Z))throw Error(H);return Z}function w1(Z){if(/(?<![A-Za-z_$])\beval\s*\(/.test(Z))throw Error("eval() is not allowed in TjsNoeval mode. Use Eval() from TJS runtime for safe evaluation.");if(/\bnew\s+Function\s*\(/.test(Z))throw Error("new Function() is not allowed in TjsNoeval mode. Use SafeFunction() from TJS runtime.");return Z}function n0(Z,K={}){let X=Z,H,Y=new Set,J=new Set,$=new Set,Q={tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1},z=Z.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);if(z)H=z[2],Z=Z.replace(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\s*/,"$1");let G=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsStandard|TjsSafeEval)\b/,U;while(U=Z.match(G)){let A=U[2];if(A==="TjsStrict")Q.tjsEquals=!0,Q.tjsClass=!0,Q.tjsDate=!0,Q.tjsNoeval=!0,Q.tjsStandard=!0;else if(A==="TjsEquals")Q.tjsEquals=!0;else if(A==="TjsClass")Q.tjsClass=!0;else if(A==="TjsDate")Q.tjsDate=!0;else if(A==="TjsNoeval")Q.tjsNoeval=!0;else if(A==="TjsStandard")Q.tjsStandard=!0;else if(A==="TjsSafeEval")Q.tjsSafeEval=!0;Z=Z.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${A}\\s*`),"$1")}if(Q.tjsStandard)Z=X1(Z);if(Z=Z1(Z),Q.tjsEquals&&!K.vmTarget)Z=K1(Z);Z=H1(Z),Z=Y1(Z),Z=$1(Z),Z=J1(Z),Z=W1(Z);let{source:F,returnType:W,returnSafety:q}=u0(Z,{originalSource:X,requiredParams:Y,unsafeFunctions:J,safeFunctions:$});Z=F;let w=Q1(Z);Z=w.source,Z=r6(Z);let L=G1(Z,Y);Z=L.source;let I=e6(Z);Z=I.source;let D=_1(Z,K.dangerouslySkipTests);Z=D.source;let B=F1(Z,Y);Z=B.source;for(let A of B.polyCtorClasses)J.add(`${A}$dispatch`);if(Q.tjsClass)Z=q1(Z,B.polyCtorClasses);if(Q.tjsDate)Z=U1(Z);if(Q.tjsNoeval)Z=w1(Z);return Z=C0(Z,w.extensions),{source:Z,returnType:W,returnSafety:q,moduleSafety:H,tjsModes:Q,originalSource:X,requiredParams:Y,unsafeFunctions:J,safeFunctions:$,wasmBlocks:I.blocks,tests:D.tests,testErrors:D.errors,polymorphicNames:L.polymorphicNames,extensions:w.extensions}}function W0(Z,K={}){let{filename:X="<source>",colonShorthand:H=!0,vmTarget:Y=!1}=K,{source:J,returnType:$,returnSafety:Q,moduleSafety:z,originalSource:G,requiredParams:U,unsafeFunctions:F,safeFunctions:W,wasmBlocks:q,tests:w,testErrors:L}=H?n0(Z,{vmTarget:Y}):{source:Z,returnType:void 0,returnSafety:void 0,moduleSafety:void 0,originalSource:Z,requiredParams:new Set,unsafeFunctions:new Set,safeFunctions:new Set,wasmBlocks:[],tests:[],testErrors:[]};try{return{ast:D1.parse(J,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:$,returnSafety:Q,moduleSafety:z,originalSource:G,requiredParams:U,unsafeFunctions:F,safeFunctions:W,wasmBlocks:q,tests:w,testErrors:L}}catch(I){let D=I.loc||{line:1,column:0};throw new p(I.message.replace(/\s*\(\d+:\d+\)$/,""),D,G,X)}}function A1(Z,K){for(let H of Z.body){if(H.type==="ImportDeclaration")throw new p("Imports are not supported. All atoms must be registered with the VM.",H.loc?.start||{line:1,column:0},void 0,K);if(H.type==="ExportNamedDeclaration"||H.type==="ExportDefaultDeclaration")throw new p("Exports are not supported. The function is automatically exported.",H.loc?.start||{line:1,column:0},void 0,K);if(H.type==="ClassDeclaration")throw new p("Classes are not supported. Agent99 uses functional composition.",H.loc?.start||{line:1,column:0},void 0,K)}let X=Z.body.filter((H)=>H.type==="FunctionDeclaration");if(X.length===0)throw new p("Source must contain a function declaration",{line:1,column:0},void 0,K);if(X.length>1){let H=X[1];throw new p("Only a single function per agent is allowed",H.loc?.start||{line:1,column:0},void 0,K)}return X[0]}function N0(Z,K){let X={params:{}};if(!K.loc)return X;let H=Z.substring(0,K.start),Y=[...H.matchAll(/\/\*#([\s\S]*?)\*\//g)];if(Y.length>0){let U=Y[Y.length-1],F=H.substring(U.index+U[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(F)){let W=U[1],q=W.split(`
|
|
42
|
-
`),w=q.filter((L)=>L.trim().length>0).reduce((L,I)=>{let D=I.match(/^(\s*)/)?.[1].length||0;return Math.min(L,D)},1/0);if(w>0&&w<1/0)W=q.map((L)=>L.slice(w)).join(`
|
|
43
|
-
`);return X.description=W.trim(),X}}let J=H.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!J)return X;let $=J[0],Q=$.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);if(Q)X.description=Q[1].trim();let z=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,G;while((G=z.exec($))!==null)X.params[G[1]]=G[2].trim();return X}import{parseExpressionAt as q8}from"acorn";function o(Z){switch(Z.type){case"Literal":{let K=Z.value;if(K===null)return{kind:"null"};if(typeof K==="string")return{kind:"string"};if(typeof K==="number"){let X=Z.raw;if(X&&X.includes("."))return{kind:"number"};return{kind:"integer"}}if(typeof K==="boolean")return{kind:"boolean"};return{kind:"any"}}case"ArrayExpression":{let K=Z.elements;if(K.length===0)return{kind:"array",items:{kind:"any"}};return{kind:"array",items:o(K[0])}}case"ObjectExpression":{let K=Z.properties,X={};for(let H of K)if(H.type==="Property"&&H.key.type==="Identifier"){let Y=H.key.name;X[Y]=o(H.value)}return{kind:"object",shape:X}}case"LogicalExpression":{let{operator:K,left:X,right:H}=Z;if(K==="||")return o(X);if(K==="&&")return o(H);if(K==="??")return o(H);return{kind:"any"}}case"BinaryExpression":{let{operator:K,left:X,right:H}=Z;if(K==="|"){let Y=o(X),J=o(H);if(J.kind==="null")return{...Y,nullable:!0};if(Y.kind==="null")return{...J,nullable:!0};return{kind:"union",members:[Y,J]}}return{kind:"any"}}case"Identifier":{if(Z.name==="undefined")return{kind:"undefined"};return{kind:"any"}}case"UnaryExpression":{let{operator:K,argument:X}=Z;if(K==="+"&&X.type==="Literal"){if(typeof X.value==="number")return{kind:"non-negative-integer"}}if(K==="-"&&X.type==="Literal"){if(typeof X.value==="number"){let Y=X.raw;if(Y&&Y.includes("."))return{kind:"number"};return{kind:"integer"}}}return{kind:"any"}}default:return{kind:"any"}}}function Q0(Z,K){if(Z.type==="Identifier")return{name:Z.name,type:{kind:"any"},required:!0};if(Z.type==="AssignmentPattern"){let{left:X,right:H}=Z;if(X.type!=="Identifier")throw new b("Only simple parameter names are supported",f(Z));let Y=X.name,J=K?.has(Y)??!1,$=o(H),Q=X0(H);return{name:Y,type:$,required:J,default:J?null:Q,example:Q,loc:{start:Z.start,end:Z.end}}}if(Z.type==="ObjectPattern"){let X=Z.properties,H={},Y={};for(let J of X)if(J.type==="Property"){let $=J.key.type==="Identifier"?J.key.name:String(J.key.value);if(J.value.type==="Identifier")H[$]={kind:"any"},Y[$]={name:$,type:{kind:"any"},required:!0};else if(J.value.type==="AssignmentPattern"){let Q=Q0(J.value,K),z=K?.has($)??!1;H[$]=Q.type,Y[$]={name:$,type:Q.type,required:z,default:z?null:Q.example,example:Q.example}}}return{name:"__destructured__",type:{kind:"object",shape:H,destructuredParams:Y},required:!0}}throw new b(`Unsupported parameter pattern: ${Z.type}`,f(Z))}function X0(Z){switch(Z.type){case"Literal":return Z.value;case"ArrayExpression":return Z.elements.map((K)=>K?X0(K):null);case"ObjectExpression":{let K={};for(let X of Z.properties)if(X.type==="Property"&&X.key.type==="Identifier")K[X.key.name]=X0(X.value);return K}case"UnaryExpression":if(Z.operator==="-"){let K=X0(Z.argument);return typeof K==="number"?-K:void 0}if(Z.operator==="+"){let K=X0(Z.argument);return typeof K==="number"?+K:void 0}return;case"BinaryExpression":{let{operator:K,left:X}=Z;if(K==="|")return X0(X);return}case"LogicalExpression":{let{operator:K,left:X,right:H}=Z;if(K==="&&"){if(X.type==="Literal"&&X.value===null)return null}if(K==="||")return X0(X)??X0(H);if(K==="??")return X0(X)??X0(H);return}default:return}}function R1(Z){try{let K=q8(Z,0,{ecmaVersion:2022});return o(K)}catch{return{kind:"any"}}}function G6(Z){switch(Z.kind){case"string":return Z.nullable?"string | null":"string";case"number":return Z.nullable?"number | null":"number";case"integer":return Z.nullable?"integer | null":"integer";case"non-negative-integer":return Z.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return Z.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let K=Z.items?G6(Z.items):"any";return Z.nullable?`${K}[] | null`:`${K}[]`}case"object":{if(!Z.shape||Object.keys(Z.shape).length===0)return Z.nullable?"object | null":"object";let K=Object.entries(Z.shape).map(([X,H])=>`${X}: ${G6(H)}`).join(", ");return Z.nullable?`{ ${K} } | null`:`{ ${K} }`}case"union":return Z.members?.map(G6).join(" | ")||"any";default:return"any"}}function c0(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?c0(Z.items):{}};case"object":if(Z.shape){let K={};for(let[X,H]of Object.entries(Z.shape))K[X]=c0(H);return{type:"object",properties:K,additionalProperties:!1}}return{type:"object"};case"union":if(Z.members)return{oneOf:Z.members.map(c0)};return{};default:return{}}}function U8(Z){let K={},X=[];for(let[H,Y]of Object.entries(Z))if(K[H]=c0(Y.type),Y.required)X.push(H);return{type:"object",properties:K,required:X.length>0?X:void 0,additionalProperties:!1}}function W6(Z,K,X,H={},Y){let J=N0(K,Z),$=new Map;for(let I of Z.params){let D=Q0(I,Y);if(D.name==="__destructured__"&&D.type.kind==="object"&&D.type.destructuredParams)for(let[B,A]of Object.entries(D.type.destructuredParams))$.set(B,{...A,description:J.params[B]});else D.description=J.params[D.name],$.set(D.name,D)}let Q;if(X)Q=R1(X);let z={depth:0,locals:new Map,parameters:$,atoms:new Set(Object.keys(H.atoms||{})),warnings:[],source:K,filename:H.filename||"<source>",options:H},G=K0(Z.body,z),U=[],F=[],W=[];for(let[I,D]of $.entries())if(D.required)F.push(I);else if(D.default!==void 0)W.push({name:I,defaultValue:D.default});else F.push(I);if(F.length>0)U.push({op:"varsImport",keys:F});for(let{name:I,defaultValue:D}of W)U.push({op:"varsImport",keys:[I]}),U.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:I},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:I,value:D}]});U.push(...G);let q=Object.fromEntries($),w={name:Z.id?.name||"anonymous",description:J.description,parameters:q,returns:Q},L=U8(q);return{ast:{op:"seq",steps:U,inputSchema:L},signature:w,warnings:z.warnings}}function K0(Z,K){let X=[];for(let H of Z.body){let Y=E0(H,K);if(Y)if(Array.isArray(Y))X.push(...Y);else X.push(Y)}return X}function E0(Z,K){switch(Z.type){case"VariableDeclaration":return w8(Z,K);case"ExpressionStatement":return D8(Z,K);case"IfStatement":return R8(Z,K);case"WhileStatement":return L8(Z,K);case"ForOfStatement":return I8(Z,K);case"TryStatement":return B8(Z,K);case"ReturnStatement":return M8(Z,K);case"ThrowStatement":throw new b("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",f(Z),K.source,K.filename);case"BlockStatement":return{op:"scope",steps:K0(Z,s(K))};case"EmptyStatement":return null;default:throw new b(`Unsupported statement type: ${Z.type}`,f(Z),K.source,K.filename)}}function w8(Z,K){let X=[],H=Z.kind==="const",Y=H?"constSet":"varSet";for(let J of Z.declarations){if(J.id.type!=="Identifier")throw new b("Only simple variable names are supported",f(J),K.source,K.filename);let $=J.id.name;if(J.init){let{step:Q,resultVar:z}=_0(J.init,K,$,H);if(Q)X.push(Q);else if(z!==$)X.push({op:Y,key:$,value:z});let G=o(J.init);K.locals.set($,G)}else{if(H)throw new b("const declarations must be initialized",f(J),K.source,K.filename);X.push({op:"varSet",key:$,value:null}),K.locals.set($,{kind:"any",nullable:!0})}}return X}function D8(Z,K){let X=Z.expression;if(X.type==="AssignmentExpression")return A8(X,K);if(X.type==="CallExpression"){let{step:H,resultVar:Y}=_0(X,K);if(H)return H;if(Y)return{op:"varSet",key:"_",value:Y};return null}return K.warnings.push({message:"Expression statement has no effect",line:f(Z).line,column:f(Z).column}),null}function A8(Z,K){if(Z.left.type!=="Identifier")throw new b("Only simple variable assignment is supported",f(Z),K.source,K.filename);let X=Z.left.name,{step:H,resultVar:Y}=_0(Z.right,K,X);if(H)return H;return{op:"varSet",key:X,value:Y}}function R8(Z,K){let X=v(Z.test,K),H=Z.consequent.type==="BlockStatement"?K0(Z.consequent,s(K)):[E0(Z.consequent,K)].filter(Boolean),Y;if(Z.alternate)Y=Z.alternate.type==="BlockStatement"?K0(Z.alternate,s(K)):[E0(Z.alternate,K)].filter(Boolean);return{op:"if",condition:X,then:H,...Y&&{else:Y}}}function L8(Z,K){let X=v(Z.test,K),H=Z.body.type==="BlockStatement"?K0(Z.body,s(K)):[E0(Z.body,K)].filter(Boolean);return{op:"while",condition:X,body:H}}function I8(Z,K){let X;if(Z.left.type==="VariableDeclaration"){let $=Z.left.declarations[0];if($.id.type!=="Identifier")throw new b("Only simple variable names are supported in for...of",f(Z.left),K.source,K.filename);X=$.id.name}else if(Z.left.type==="Identifier")X=Z.left.name;else throw new b("Unsupported for...of left-hand side",f(Z.left),K.source,K.filename);let H=d(Z.right,K),Y=s(K);Y.locals.set(X,{kind:"any"});let J=Z.body.type==="BlockStatement"?K0(Z.body,Y):[E0(Z.body,Y)].filter(Boolean);return{op:"map",items:H,as:X,steps:J}}function B8(Z,K){let X=K0(Z.block,s(K)),H,Y;if(Z.handler){let J=s(K);if(Z.handler.param?.type==="Identifier")Y=Z.handler.param.name,J.locals.set(Y,{kind:"any"});H=K0(Z.handler.body,J)}return{op:"try",try:X,...H&&{catch:H},...Y&&{catchParam:Y}}}function M8(Z,K){if(!Z.argument)return{op:"return",value:{}};let{step:X,resultVar:H}=_0(Z.argument,K,"__returnVal__");if(X)return[X,{op:"return",value:H}];return{op:"return",value:d(Z.argument,K)}}var I1=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),j8=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),O0=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),P8=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 V8(Z){if(Z.callee.type==="Identifier"){let K=Z.callee.name;return j8.has(K)||O0.has(K)}if(Z.callee.type==="MemberExpression"){let K=Z.callee;if(K.object.type==="Identifier"){let X=K.object.name;if(I1.has(X)||O0.has(X))return!0}if(K.property.type==="Identifier"){let X=K.property.name;if(P8.has(X))return!0}}return!1}function C8(Z){if(Z.object.type==="Identifier"){let K=Z.object.name;return I1.has(K)||O0.has(K)}return!1}var L1={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 N8(Z){if(Z.callee.type==="Identifier"){let K=Z.callee.name;if(O0.has(K))return L1[K]||`${K} is not available in AsyncJS.`}if(Z.callee.type==="MemberExpression"){let K=Z.callee;if(K.object.type==="Identifier"){let X=K.object.name;if(O0.has(X))return L1[X]||`${X} is not available in AsyncJS.`}}return null}function B1(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 _0(Z,K,X,H){let Y=H?"constSet":"varSet";if(Z.type==="ChainExpression")return _0(Z.expression,K,X,H);if(Z.type==="NewExpression"){let $=Z,Q="constructor";if($.callee.type==="Identifier")Q=$.callee.name;let z=B1(Q);throw new b(`The 'new' keyword is not supported in AsyncJS.${z}`,f(Z),K.source,K.filename)}if(Z.type==="CallExpression"){let $=N8(Z);if($)throw new b($,f(Z),K.source,K.filename)}if(Z.type==="CallExpression"&&V8(Z)){let $=v(Z,K);if(X)return{step:{op:Y,key:X,value:$},resultVar:X};return{step:null,resultVar:$}}if(Z.type==="MemberExpression"&&C8(Z)){let $=v(Z,K);if(X)return{step:{op:Y,key:X,value:$},resultVar:X};return{step:null,resultVar:$}}if(Z.type==="CallExpression")return E8(Z,K,X,H);if(Z.type==="TemplateLiteral")return T8(Z,K,X,H);if(Z.type==="BinaryExpression"||Z.type==="LogicalExpression"||Z.type==="UnaryExpression"){let $=v(Z,K);if(X)return{step:{op:Y,key:X,value:$},resultVar:X};return{step:null,resultVar:$}}return{step:null,resultVar:d(Z,K)}}function E8(Z,K,X,H){let Y,J=!1,$;if(Z.callee.type==="Identifier")Y=Z.callee.name;else if(Z.callee.type==="MemberExpression"){let z=Z.callee;if(z.property.type==="Identifier")Y=z.property.name,J=!0,$=d(z.object,K);else throw new b("Computed method names are not supported",f(Z),K.source,K.filename)}else throw new b("Only named function calls are supported",f(Z),K.source,K.filename);if(J)return O8(Y,$,Z.arguments,K,X,H);if(Y==="console"&&Z.callee.type==="MemberExpression");let Q=k8(Z,K);return{step:{op:Y,...Q,...X&&{result:X},...X&&H&&{resultConst:!0}},resultVar:X}}function O8(Z,K,X,H,Y,J){switch(Z){case"map":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let $=X[0],Q=$.params[0],z=Q?.type==="Identifier"?Q.name:"item",G=s(H);G.locals.set(z,{kind:"any"});let U;if($.body.type==="BlockStatement")U=K0($.body,G);else{let{step:F,resultVar:W}=_0($.body,G,"result");U=F?[F]:[{op:"varSet",key:"result",value:W}]}return{step:{op:"map",items:K,as:z,steps:U,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}break;case"filter":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let $=X[0],Q=$.params[0],z=Q?.type==="Identifier"?Q.name:"item",G=s(H);G.locals.set(z,{kind:"any"});let U;if($.body.type==="BlockStatement")throw new b("filter callback must be an expression, not a block",f(X[0]),H.source,H.filename);else U=v($.body,G);return{step:{op:"filter",items:K,as:z,condition:U,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}break;case"find":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let $=X[0],Q=$.params[0],z=Q?.type==="Identifier"?Q.name:"item",G=s(H);G.locals.set(z,{kind:"any"});let U;if($.body.type==="BlockStatement")throw new b("find callback must be an expression, not a block",f(X[0]),H.source,H.filename);else U=v($.body,G);return{step:{op:"find",items:K,as:z,condition:U,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}break;case"reduce":if(X.length>=2&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let $=X[0],Q=$.params[0],z=$.params[1],G=Q?.type==="Identifier"?Q.name:"acc",U=z?.type==="Identifier"?z.name:"item",F=s(H);F.locals.set(G,{kind:"any"}),F.locals.set(U,{kind:"any"});let W;if($.body.type==="BlockStatement")W=K0($.body,F);else{let{step:w,resultVar:L}=_0($.body,F,"result");W=w?[w]:[{op:"varSet",key:"result",value:L}]}let q=d(X[1],H);return{step:{op:"reduce",items:K,as:U,accumulator:G,initial:q,steps:W,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}break;case"slice":break;case"push":return{step:{op:"push",list:K,item:d(X[0],H),...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y};case"join":return{step:{op:"join",list:K,sep:X.length>0?d(X[0],H):"",...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y};case"split":return{step:{op:"split",str:K,sep:X.length>0?d(X[0],H):"",...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}return H.warnings.push({message:`Unknown method '${Z}' - treating as atom call`,line:0,column:0}),{step:{op:Z,receiver:K,args:X.map(($)=>d($,H)),...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}function T8(Z,K,X,H){let Y="",J={};for(let $=0;$<Z.quasis.length;$++)if(Y+=Z.quasis[$].value.cooked||Z.quasis[$].value.raw,$<Z.expressions.length){let Q=Z.expressions[$],z=`_${$}`;J[z]=d(Q,K),Y+=`{{${z}}}`}return{step:{op:"template",tmpl:Y,vars:J,...X&&{result:X},...X&&H&&{resultConst:!0}},resultVar:X}}function v(Z,K){switch(Z.type){case"Literal":return{$expr:"literal",value:Z.value};case"Identifier":return{$expr:"ident",name:Z.name};case"MemberExpression":{let X=Z,H=v(X.object,K),Y=X.optional===!0;if(X.computed){let $=X.property;if($.type==="Literal")return{$expr:"member",object:H,property:String($.value),computed:!0,...Y&&{optional:!0}};throw new b("Computed member access with variables not yet supported",f(Z),K.source,K.filename)}let J=X.property.name;return{$expr:"member",object:H,property:J,...Y&&{optional:!0}}}case"ChainExpression":return v(Z.expression,K);case"BinaryExpression":{let X=Z;return{$expr:"binary",op:X.operator,left:v(X.left,K),right:v(X.right,K)}}case"LogicalExpression":{let X=Z;return{$expr:"logical",op:X.operator,left:v(X.left,K),right:v(X.right,K)}}case"UnaryExpression":{let X=Z;return{$expr:"unary",op:X.operator,argument:v(X.argument,K)}}case"ConditionalExpression":{let X=Z;return{$expr:"conditional",test:v(X.test,K),consequent:v(X.consequent,K),alternate:v(X.alternate,K)}}case"ArrayExpression":return{$expr:"array",elements:Z.elements.filter((H)=>H!==null).map((H)=>v(H,K))};case"ObjectExpression":{let X=Z,H=[];for(let Y of X.properties)if(Y.type==="Property"){let J=Y.key.type==="Identifier"?Y.key.name:String(Y.key.value);H.push({key:J,value:v(Y.value,K)})}return{$expr:"object",properties:H}}case"CallExpression":{let X=Z;if(X.callee.type==="MemberExpression"){let H=X.callee,Y=H.property.type==="Identifier"?H.property.name:String(H.property.value),J=H.optional===!0||X.optional===!0;return{$expr:"methodCall",object:v(H.object,K),method:Y,arguments:X.arguments.map(($)=>v($,K)),...J&&{optional:!0}}}if(X.callee.type==="Identifier")return{$expr:"call",callee:X.callee.name,arguments:X.arguments.map((Y)=>v(Y,K))};throw new b("Complex function calls in expressions should be lifted to statements",f(Z),K.source,K.filename)}case"NewExpression":{let X=Z,H="constructor";if(X.callee.type==="Identifier")H=X.callee.name;let Y=B1(H);throw new b(`The 'new' keyword is not supported in AsyncJS.${Y}`,f(Z),K.source,K.filename)}case"TemplateLiteral":throw new b("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",f(Z),K.source,K.filename);default:throw new b(`Unsupported expression type in condition: ${Z.type}`,f(Z),K.source,K.filename)}}function d(Z,K){switch(Z.type){case"Literal":return Z.value;case"Identifier":return Z.name;case"MemberExpression":{let X=Z;if(X.optional===!0)return v(Z,K);let Y=d(X.object,K);if(Y&&typeof Y==="object"&&Y.$expr){let $=X.computed?String(X.property.value):X.property.name;return{$expr:"member",object:Y,property:$,...X.computed&&{computed:!0}}}if(X.computed)return`${Y}[${d(X.property,K)}]`;let J=X.property.name;if(typeof Y==="string")return`${Y}.${J}`;if(Y&&Y.$kind==="arg")return{$kind:"arg",path:`${Y.path}.${J}`};return`${Y}.${J}`}case"ChainExpression":return d(Z.expression,K);case"ArrayExpression":return Z.elements.map((X)=>X?d(X,K):null);case"ObjectExpression":{let X={};for(let H of Z.properties)if(H.type==="Property"){let Y=H.key.type==="Identifier"?H.key.name:String(H.key.value);X[Y]=d(H.value,K)}return X}case"TemplateLiteral":return v(Z,K);case"CallExpression":return v(Z,K);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return v(Z,K);default:return null}}function k8(Z,K){if(Z.arguments.length===1&&Z.arguments[0].type==="ObjectExpression"){let X=Z.arguments[0],H={};for(let Y of X.properties)if(Y.type==="Property"){let J=Y.key.type==="Identifier"?Y.key.name:String(Y.key.value);H[J]=d(Y.value,K)}return H}return{args:Z.arguments.map((X)=>d(X,K))}}import{parseExpressionAt as JZ}from"acorn";function S8(Z,K){let X=K;while(X>0&&Z[X-1]!==`
|
|
44
|
-
`)X--;if(Z.slice(X,K).includes("//"))return!0;let Y=0,J=!1;while(Y<K)if(!J&&Z.slice(Y,Y+2)==="/*")J=!0,Y+=2;else if(J&&Z.slice(Y,Y+2)==="*/")J=!1,Y+=2;else Y++;return J}function g8(Z){let K=[],X=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,H;while((H=X.exec(Z))!==null){let Y=H[2]||`embedded test ${K.length+1}`,J=(H[3]||H[4]||"").trim();K.push({description:Y,body:J,line:_6(Z,H.index)})}return K}function F6(Z){let K=[],X=[],H=g8(Z);K.push(...H);let Y=/test\s+(['"`])([^'"`]*)\1\s*\{|test\s*\(\s*(['"`])([^'"`]*)\3\s*\)\s*\{|test\s*\{/g,J=/mock\s*\{/g,$=Z,Q,z=[];while((Q=Y.exec(Z))!==null){let W=Q.index;if(S8(Z,W))continue;let q=Q[2]||Q[4]||`test ${K.length+1}`,w=Q.index+Q[0].length,L=M1(Z,w-1);if(L===-1)continue;let I=Z.slice(w,L).trim();K.push({description:q,body:I,line:_6(Z,W)}),z.push({start:W,end:L+1,desc:q})}let G=[];while((Q=J.exec(Z))!==null){let W=Q.index,q=Q.index+Q[0].length,w=M1(Z,q-1);if(w===-1)continue;let L=Z.slice(q,w).trim();X.push({body:L,line:_6(Z,W)}),G.push({start:W,end:w+1})}let U=[...z,...G].sort((W,q)=>q.start-W.start);for(let W of U)$=$.slice(0,W.start)+$.slice(W.end);$=$.replace(/\n\s*\n\s*\n/g,`
|
|
1
|
+
import{parseExpressionAt as U}from"acorn";class A extends Error{line;column;source;filename;constructor(S,J,O,D){let T=`${D||"<source>"}:${J.line}:${J.column}`;super(`${S} at ${T}`);this.name="TranspileError",this.line=J.line,this.column=J.column,this.source=O,this.filename=D}}function B(S){if(S.loc)return{line:S.loc.start.line,column:S.loc.start.column};return{line:1,column:0}}function M(S){switch(S.type){case"Literal":{let J=S.value;if(J===null)return{kind:"null"};if(typeof J==="string")return{kind:"string"};if(typeof J==="number"){let O=S.raw;if(O&&O.includes("."))return{kind:"number"};return{kind:"integer"}}if(typeof J==="boolean")return{kind:"boolean"};return{kind:"any"}}case"ArrayExpression":{let J=S.elements;if(J.length===0)return{kind:"array",items:{kind:"any"}};return{kind:"array",items:M(J[0])}}case"ObjectExpression":{let J=S.properties,O={};for(let D of J)if(D.type==="Property"&&D.key.type==="Identifier"){let T=D.key.name;O[T]=M(D.value)}return{kind:"object",shape:O}}case"LogicalExpression":{let{operator:J,left:O,right:D}=S;if(J==="||")return M(O);if(J==="&&")return M(D);if(J==="??")return M(D);return{kind:"any"}}case"BinaryExpression":{let{operator:J,left:O,right:D}=S;if(J==="|"){let T=M(O),j=M(D);if(j.kind==="null")return{...T,nullable:!0};if(T.kind==="null")return{...j,nullable:!0};return{kind:"union",members:[T,j]}}return{kind:"any"}}case"Identifier":{if(S.name==="undefined")return{kind:"undefined"};return{kind:"any"}}case"UnaryExpression":{let{operator:J,argument:O}=S;if(J==="+"&&O.type==="Literal"){if(typeof O.value==="number")return{kind:"non-negative-integer"}}if(J==="-"&&O.type==="Literal"){if(typeof O.value==="number"){let T=O.raw;if(T&&T.includes("."))return{kind:"number"};return{kind:"integer"}}}return{kind:"any"}}default:return{kind:"any"}}}function W(S,J){if(S.type==="Identifier")return{name:S.name,type:{kind:"any"},required:!0};if(S.type==="AssignmentPattern"){let{left:O,right:D}=S;if(O.type!=="Identifier")throw new A("Only simple parameter names are supported",B(S));let T=O.name,j=J?.has(T)??!1,I=M(D),w=R(D);return{name:T,type:I,required:j,default:j?null:w,example:w,loc:{start:S.start,end:S.end}}}if(S.type==="ObjectPattern"){let O=S.properties,D={},T={};for(let j of O)if(j.type==="Property"){let I=j.key.type==="Identifier"?j.key.name:String(j.key.value);if(j.value.type==="Identifier")D[I]={kind:"any"},T[I]={name:I,type:{kind:"any"},required:!0};else if(j.value.type==="AssignmentPattern"){let w=W(j.value,J),N=J?.has(I)??!1;D[I]=w.type,T[I]={name:I,type:w.type,required:N,default:N?null:w.example,example:w.example}}}return{name:"__destructured__",type:{kind:"object",shape:D,destructuredParams:T},required:!0}}throw new A(`Unsupported parameter pattern: ${S.type}`,B(S))}function R(S){switch(S.type){case"Literal":return S.value;case"ArrayExpression":return S.elements.map((J)=>J?R(J):null);case"ObjectExpression":{let J={};for(let O of S.properties)if(O.type==="Property"&&O.key.type==="Identifier")J[O.key.name]=R(O.value);return J}case"UnaryExpression":if(S.operator==="-"){let J=R(S.argument);return typeof J==="number"?-J:void 0}if(S.operator==="+"){let J=R(S.argument);return typeof J==="number"?+J:void 0}return;case"BinaryExpression":{let{operator:J,left:O}=S;if(J==="|")return R(O);return}case"LogicalExpression":{let{operator:J,left:O,right:D}=S;if(J==="&&"){if(O.type==="Literal"&&O.value===null)return null}if(J==="||")return R(O)??R(D);if(J==="??")return R(O)??R(D);return}default:return}}function G(S){try{let J=U(S,0,{ecmaVersion:2022});return M(J)}catch{return{kind:"any"}}}function C(S){switch(S.kind){case"string":return S.nullable?"string | null":"string";case"number":return S.nullable?"number | null":"number";case"integer":return S.nullable?"integer | null":"integer";case"non-negative-integer":return S.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return S.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let J=S.items?C(S.items):"any";return S.nullable?`${J}[] | null`:`${J}[]`}case"object":{if(!S.shape||Object.keys(S.shape).length===0)return S.nullable?"object | null":"object";let J=Object.entries(S.shape).map(([O,D])=>`${O}: ${C(D)}`).join(", ");return S.nullable?`{ ${J} } | null`:`{ ${J} }`}case"union":return S.members?.map(C).join(" | ")||"any";default:return"any"}}export{SS as wrap,e as validateArgs,C as typeToString,r as typeOf,s as transpileToJS,X as transpile,P as transformFunction,Z as tjs,u as testUtils,o as runtime,h as preprocess,G as parseReturnType,W as parseParameter,F as parse,v as lint,t as isError,n as installRuntime,M as inferTypeFromValue,b as getToolDefinitions,m as extractTests,q as extractTDoc,R as extractLiteralValue,y as expectFunction,p as error,JS as emitRuntimeWrapper,$ as createAgent,a as checkType,d as assertFunction,Y as ajs,OS as TJS_VERSION,g as Schema};
|
|
45
2
|
|
|
46
|
-
|
|
47
|
-
`).length}function v8(Z,K){if(Z.length===0)return"// No tests defined";let X=K.map((Y)=>Y.body).join(`
|
|
48
|
-
`);return`(async () => {
|
|
49
|
-
const __results = []
|
|
50
|
-
|
|
51
|
-
${Z.map((Y,J)=>`
|
|
52
|
-
// Test ${J+1}: ${Y.description}
|
|
53
|
-
try {
|
|
54
|
-
${X}
|
|
55
|
-
await (async () => {
|
|
56
|
-
${Y.body}
|
|
57
|
-
})()
|
|
58
|
-
__results.push({ description: ${JSON.stringify(Y.description)}, passed: true })
|
|
59
|
-
} catch (__e) {
|
|
60
|
-
__results.push({ description: ${JSON.stringify(Y.description)}, passed: false, error: __e.message })
|
|
61
|
-
}`).join(`
|
|
62
|
-
`)}
|
|
63
|
-
|
|
64
|
-
// Compute summary (no console output - caller handles reporting)
|
|
65
|
-
const __passed = __results.filter(r => r.passed).length
|
|
66
|
-
const __failed = __results.filter(r => !r.passed).length
|
|
67
|
-
|
|
68
|
-
// Return summary
|
|
69
|
-
return { passed: __passed, failed: __failed, results: __results }
|
|
70
|
-
})()`.trim()}var j1=`
|
|
71
|
-
function assert(condition, message) {
|
|
72
|
-
if (!condition) {
|
|
73
|
-
throw new Error(message || 'Assertion failed')
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
`,P1=`
|
|
77
|
-
function expect(actual) {
|
|
78
|
-
const deepEqual = (a, b) => {
|
|
79
|
-
if (a === b) return true
|
|
80
|
-
if (a === null || b === null) return a === b
|
|
81
|
-
if (a === undefined || b === undefined) return a === undefined && b === undefined
|
|
82
|
-
if (typeof a !== typeof b) return false
|
|
83
|
-
if (typeof a !== 'object') return a === b
|
|
84
|
-
if (Array.isArray(a) !== Array.isArray(b)) return false
|
|
85
|
-
if (Array.isArray(a)) {
|
|
86
|
-
if (a.length !== b.length) return false
|
|
87
|
-
return a.every((v, i) => deepEqual(v, b[i]))
|
|
88
|
-
}
|
|
89
|
-
const keysA = Object.keys(a)
|
|
90
|
-
const keysB = Object.keys(b)
|
|
91
|
-
if (keysA.length !== keysB.length) return false
|
|
92
|
-
return keysA.every(k => deepEqual(a[k], b[k]))
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const format = (v) => {
|
|
96
|
-
if (v === null) return 'null'
|
|
97
|
-
if (v === undefined) return 'undefined'
|
|
98
|
-
if (typeof v === 'string') return JSON.stringify(v)
|
|
99
|
-
if (typeof v === 'object') return JSON.stringify(v)
|
|
100
|
-
return String(v)
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return {
|
|
104
|
-
toBe(expected) {
|
|
105
|
-
if (!deepEqual(actual, expected)) {
|
|
106
|
-
throw new Error(\`Expected \${format(expected)} but got \${format(actual)}\`)
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
toEqual(expected) {
|
|
110
|
-
if (!deepEqual(actual, expected)) {
|
|
111
|
-
throw new Error(\`Expected \${format(expected)} but got \${format(actual)}\`)
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
toContain(item) {
|
|
115
|
-
if (!Array.isArray(actual) || !actual.some(v => deepEqual(v, item))) {
|
|
116
|
-
throw new Error(\`Expected \${format(actual)} to contain \${format(item)}\`)
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
toThrow(message) {
|
|
120
|
-
let threw = false
|
|
121
|
-
let thrownMessage = ''
|
|
122
|
-
try {
|
|
123
|
-
if (typeof actual === 'function') actual()
|
|
124
|
-
} catch (e) {
|
|
125
|
-
threw = true
|
|
126
|
-
thrownMessage = e.message || String(e)
|
|
127
|
-
}
|
|
128
|
-
if (!threw) {
|
|
129
|
-
throw new Error('Expected function to throw but it did not')
|
|
130
|
-
}
|
|
131
|
-
if (message && !thrownMessage.includes(message)) {
|
|
132
|
-
throw new Error(\`Expected error containing "\${message}" but got "\${thrownMessage}"\`)
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
toBeTruthy() {
|
|
136
|
-
if (!actual) {
|
|
137
|
-
throw new Error(\`Expected \${format(actual)} to be truthy\`)
|
|
138
|
-
}
|
|
139
|
-
},
|
|
140
|
-
toBeFalsy() {
|
|
141
|
-
if (actual) {
|
|
142
|
-
throw new Error(\`Expected \${format(actual)} to be falsy\`)
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
toBeNull() {
|
|
146
|
-
if (actual !== null) {
|
|
147
|
-
throw new Error(\`Expected null but got \${format(actual)}\`)
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
toBeUndefined() {
|
|
151
|
-
if (actual !== undefined) {
|
|
152
|
-
throw new Error(\`Expected undefined but got \${format(actual)}\`)
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
toBeGreaterThan(n) {
|
|
156
|
-
if (!(actual > n)) {
|
|
157
|
-
throw new Error(\`Expected \${format(actual)} to be greater than \${n}\`)
|
|
158
|
-
}
|
|
159
|
-
},
|
|
160
|
-
toBeLessThan(n) {
|
|
161
|
-
if (!(actual < n)) {
|
|
162
|
-
throw new Error(\`Expected \${format(actual)} to be less than \${n}\`)
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
`,b8=j1+`
|
|
168
|
-
`+P1;function f8(Z,K,X=0.000000001){if(Z===K)return!0;if(typeof Z==="number"&&typeof K==="number"){if(!Number.isInteger(Z)||!Number.isInteger(K)){let H=Math.abs(Z-K),Y=Math.max(Math.abs(Z),Math.abs(K),1);return H/Y<X}}return!1}function q6(Z,K){if(Z===K)return!0;if(typeof Z==="number"&&typeof K==="number"&&Number.isNaN(Z)&&Number.isNaN(K))return!0;if(f8(Z,K))return!0;if(Z===null||K===null)return Z===K;if(Z===void 0||K===void 0)return Z===K;if(typeof Z!==typeof K)return!1;if(typeof Z!=="object")return!1;if(Array.isArray(Z)&&Array.isArray(K)){if(Z.length!==K.length)return!1;return Z.every((Y,J)=>q6(Y,K[J]))}if(Array.isArray(Z)!==Array.isArray(K))return!1;let X=Object.keys(Z),H=Object.keys(K);if(X.length!==H.length)return!1;return X.every((Y)=>q6(Z[Y],K[Y]))}function U6(Z,K,X=""){if(K===null){if(Z===null)return{matches:!0};return{matches:!1,error:`Expected null at '${X}', got ${F0(Z)}`}}if(K===void 0){if(Z===void 0)return{matches:!0};return{matches:!1,error:`Expected undefined at '${X}', got ${F0(Z)}`}}if(typeof K==="number"){if(typeof Z==="number")return{matches:!0};return{matches:!1,error:`Expected number at '${X}', got ${F0(Z)}`}}if(typeof K==="string"){if(typeof Z==="string")return{matches:!0};return{matches:!1,error:`Expected string at '${X}', got ${F0(Z)}`}}if(typeof K==="boolean"){if(typeof Z==="boolean")return{matches:!0};return{matches:!1,error:`Expected boolean at '${X}', got ${F0(Z)}`}}if(Array.isArray(K)){if(!Array.isArray(Z))return{matches:!1,error:`Expected array at '${X}', got ${F0(Z)}`};if(K.length===0)return{matches:!0};let H=K[0];for(let Y=0;Y<Z.length;Y++){let J=U6(Z[Y],H,`${X}[${Y}]`);if(!J.matches)return J}return{matches:!0}}if(typeof K==="object"&&K!==null){if(typeof Z!=="object"||Z===null||Array.isArray(Z))return{matches:!1,error:`Expected object at '${X}', got ${F0(Z)}`};for(let H of Object.keys(K)){let Y=X?`${X}.${H}`:H;if(!(H in Z))return{matches:!1,error:`Missing property '${Y}'`};let J=U6(Z[H],K[H],Y);if(!J.matches)return J}return{matches:!0}}if(Z===K)return{matches:!0};return{matches:!1,error:`Type mismatch at '${X}'`}}function F0(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";return typeof Z}function T0(Z,K=0){if(Z===null)return"null";if(Z===void 0)return"undefined";if(typeof Z==="string")return JSON.stringify(Z);if(typeof Z==="number")return String(Z);if(typeof Z==="boolean")return String(Z);if(Array.isArray(Z)){if(Z.length===0)return"[]";if(Z.length<=3)return`[${Z.map((X)=>T0(X,K)).join(", ")}]`;return`[${Z.slice(0,3).map((X)=>T0(X,K)).join(", ")}, ...]`}if(typeof Z==="object"){let X=Object.entries(Z);if(X.length===0)return"{}";let H=(z)=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(z)?z:JSON.stringify(z);if(X.length<=2)return`{${X.map(([G,U])=>`${H(G)}: ${T0(U,K)}`).join(", ")}}`;let Y=" ".repeat(K+1),J=" ".repeat(K),$=X.slice(0,8).map(([z,G])=>`${Y}${H(z)}: ${T0(G,K+1)}`).join(`,
|
|
169
|
-
`),Q=X.length>8?`,
|
|
170
|
-
${Y}...`:"";return`{
|
|
171
|
-
${$}${Q}
|
|
172
|
-
${J}}`}return String(Z)}function y8(Z){let K=Z.replace(/\/\*[\s\S]*?\*\//g,(X)=>{let H=X.split(`
|
|
173
|
-
`).length-1;return`
|
|
174
|
-
`.repeat(H)});return K=K.replace(/\/\/[^\n]*/g,""),K}function V1(Z){let K=Z.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return K=K.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),K=K.replace(/^export\s+default\s+/gm,""),K=K.replace(/^export\s+/gm,""),K=K.replace(/^(\s*)((?:const|let|var)\s+\w+\s*=\s*)?await\s+.+$/gm,"$1/* top-level await removed for test execution */"),K}function C1(Z){let K=Z.replace(/^const __tjs = globalThis\.__tjs\?\.createRuntime\?\.\(\) \?\? globalThis\.__tjs;\n?/m,"");return K=K.replace(/^const \{ (?:Is|IsNot|Is, IsNot) \} = __tjs \?\? \{\};\n?/m,""),K}function h8(Z){if(Object.keys(Z).length===0)return"";let K=[];for(let[X,H]of Object.entries(Z)){let Y=V1(H);Y=C1(Y),K.push(`// Resolved import: ${X}`),K.push(Y)}return K.join(`
|
|
175
|
-
`)}function x8(Z){let K={},X=Z.trim();if(!X.startsWith("{")||!X.includes("="))try{return{pattern:Function(`return ${Z}`)(),defaults:K}}catch{return null}let H="",Y=0,J=0;while(J<X.length){let $=X[J];if($==="{"||$==="["||$==="(")Y++,H+=$,J++;else if($==="}"||$==="]"||$===")")Y--,H+=$,J++;else if($==="'"||$==='"'||$==="`"){let Q=$;H+=$,J++;while(J<X.length&&X[J]!==Q){if(X[J]==="\\")H+=X[J++];H+=X[J++]}if(J<X.length)H+=X[J++]}else if(Y===1&&$==="="){let G=(H.slice(H.lastIndexOf("{")+1).split(",").pop()||"").match(/\s*(\w+)\s*$/);if(G){let U=J+1;while(U<X.length&&/\s/.test(X[U]))U++;let F="",W=0;while(U<X.length){let q=X[U];if(q==="{"||q==="["||q==="(")W++;else if(q==="}"||q==="]"||q===")"){if(W===0)break;W--}else if(q===","&&W===0)break;F+=q,U++}try{K[G[1]]=Function(`return ${F.trim()}`)()}catch{}H+=":",J++;continue}H+=$,J++}else H+=$,J++}try{return{pattern:Function(`return ${H}`)(),defaults:K}}catch{return null}}function N1(Z){let K=[],X=y8(Z),H=/(async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(-[>?])\s*/g,Y;while((Y=H.exec(X))!==null){let J=!!Y[1],$=Y[2],Q=Y[3],z=Y[4],G=X.slice(0,Y.index).split(`
|
|
176
|
-
`).length;if(z==="-!")continue;let U=X.slice(Y.index+Y[0].length),F=w6(U);if(!F)continue;let W=m8(Q);if(Q.trim()&&W.length===0)continue;try{let q=x8(F);if(!q)continue;let w=W.map((L)=>Function(`return ${L}`)());K.push({funcName:$,args:w,expected:q.pattern,defaults:Object.keys(q.defaults).length>0?q.defaults:void 0,line:G,isAsync:J})}catch{}}return K}function E1(Z,K,X,H,Y={},J=new Map){let $=[];if(Z.length===0&&X.length===0)return $;let Q=H.match(/^import\s+.*?from\s+['"]([^'"]+)['"];?\s*$/gm)||[],z=Q.length>0&&Q.some((A)=>{let R=A.match(/from\s+['"]([^'"]+)['"]/);return R&&!(R[1]in Y)}),G=V1(H);G=C1(G);let U=h8(Y),F=K.map((A)=>A.body).join(`
|
|
177
|
-
`),W=Z.map((A,R)=>{let j=J.size>0?C0(A.body,J):A.body;return`
|
|
178
|
-
// Test ${R}: ${A.description}
|
|
179
|
-
try {
|
|
180
|
-
${j}
|
|
181
|
-
__testResults.push({ idx: ${R}, passed: true });
|
|
182
|
-
} catch (e) {
|
|
183
|
-
__testResults.push({ idx: ${R}, passed: false, error: e.message || String(e) });
|
|
184
|
-
}
|
|
185
|
-
`}).join(`
|
|
186
|
-
`),q=X.filter((A)=>!A.isAsync),w=X.filter((A)=>A.isAsync),L=q.map((A,R)=>`
|
|
187
|
-
// Signature test ${R}: ${A.funcName}
|
|
188
|
-
try {
|
|
189
|
-
let __actual = ${A.funcName}(${A.args.map((j)=>JSON.stringify(j)).join(", ")});
|
|
190
|
-
const __expected = ${JSON.stringify(A.expected)};${A.defaults?`
|
|
191
|
-
const __defaults = ${JSON.stringify(A.defaults)};
|
|
192
|
-
if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
|
|
193
|
-
const __typeResult = __typeMatches(__actual, __expected, '${A.funcName}');
|
|
194
|
-
if (__typeResult.matches) {
|
|
195
|
-
__sigTestResults.push({ idx: ${R}, passed: true });
|
|
196
|
-
} else {
|
|
197
|
-
__sigTestResults.push({ idx: ${R}, passed: false, error: __typeResult.error || 'Type mismatch: got ' + __format(__actual) });
|
|
198
|
-
}
|
|
199
|
-
} catch (e) {
|
|
200
|
-
__sigTestResults.push({ idx: ${R}, passed: false, error: e.message || String(e) });
|
|
201
|
-
}
|
|
202
|
-
`).join(`
|
|
203
|
-
`),B=`
|
|
204
|
-
${`
|
|
205
|
-
const __saved_tjs = globalThis.__tjs;
|
|
206
|
-
class __MonadicError extends Error { constructor(m,p,e,a,c){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;} }
|
|
207
|
-
const __stub_tjs = { version: '0.0.0', MonadicError: __MonadicError, pushStack: () => {}, popStack: () => {}, getStack: () => [], typeError: (path, expected, value) => new __MonadicError(\`Type error at \${path}: expected \${expected}\`, path, expected, typeof value), createRuntime: function() { return this; } };
|
|
208
|
-
globalThis.__tjs = __stub_tjs;
|
|
209
|
-
`}
|
|
210
|
-
const __testResults = [];
|
|
211
|
-
const __sigTestResults = [];
|
|
212
|
-
try {
|
|
213
|
-
// Test assertions
|
|
214
|
-
function assert(condition, message) {
|
|
215
|
-
if (!condition) throw new Error(message || 'Assertion failed')
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
function expect(actual) {
|
|
219
|
-
return {
|
|
220
|
-
toBe(expected) {
|
|
221
|
-
if (!__deepEqual(actual, expected)) {
|
|
222
|
-
throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
toEqual(expected) {
|
|
226
|
-
if (!__deepEqual(actual, expected)) {
|
|
227
|
-
throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))
|
|
228
|
-
}
|
|
229
|
-
},
|
|
230
|
-
toContain(item) {
|
|
231
|
-
if (!Array.isArray(actual) || !actual.some(function(v) { return __deepEqual(v, item) })) {
|
|
232
|
-
throw new Error('Expected ' + __format(actual) + ' to contain ' + __format(item))
|
|
233
|
-
}
|
|
234
|
-
},
|
|
235
|
-
toBeTruthy() {
|
|
236
|
-
if (!actual) {
|
|
237
|
-
throw new Error('Expected ' + __format(actual) + ' to be truthy')
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
toBeFalsy() {
|
|
241
|
-
if (actual) {
|
|
242
|
-
throw new Error('Expected ' + __format(actual) + ' to be falsy')
|
|
243
|
-
}
|
|
244
|
-
},
|
|
245
|
-
toBeNull() {
|
|
246
|
-
if (actual !== null) {
|
|
247
|
-
throw new Error('Expected null but got ' + __format(actual))
|
|
248
|
-
}
|
|
249
|
-
},
|
|
250
|
-
toBeUndefined() {
|
|
251
|
-
if (actual !== undefined) {
|
|
252
|
-
throw new Error('Expected undefined but got ' + __format(actual))
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
toBeGreaterThan(n) {
|
|
256
|
-
if (!(actual > n)) {
|
|
257
|
-
throw new Error('Expected ' + __format(actual) + ' to be greater than ' + n)
|
|
258
|
-
}
|
|
259
|
-
},
|
|
260
|
-
toBeLessThan(n) {
|
|
261
|
-
if (!(actual < n)) {
|
|
262
|
-
throw new Error('Expected ' + __format(actual) + ' to be less than ' + n)
|
|
263
|
-
}
|
|
264
|
-
},
|
|
265
|
-
toBeNaN() {
|
|
266
|
-
if (typeof actual !== 'number' || !Number.isNaN(actual)) {
|
|
267
|
-
throw new Error('Expected NaN but got ' + __format(actual))
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
// Inject resolved imports first (they may be dependencies)
|
|
274
|
-
${U}
|
|
275
|
-
|
|
276
|
-
// Execute the module code ONCE
|
|
277
|
-
${G}
|
|
278
|
-
${F}
|
|
279
|
-
|
|
280
|
-
// Run explicit test blocks
|
|
281
|
-
${W}
|
|
282
|
-
|
|
283
|
-
// Run signature tests
|
|
284
|
-
${L}
|
|
285
|
-
|
|
286
|
-
} finally {
|
|
287
|
-
${"globalThis.__tjs = __saved_tjs;"}
|
|
288
|
-
}
|
|
289
|
-
return { testResults: __testResults, sigTestResults: __sigTestResults };
|
|
290
|
-
`;try{let A=Function("__deepEqual","__format","__typeMatches",B),{testResults:R,sigTestResults:j}=A(q6,T0,U6);for(let M of R){let V=Z[M.idx],C=z&&!M.passed&&M.error&&/is not defined$/.test(M.error);$.push({description:V.description,passed:C?!0:M.passed,error:C?void 0:M.error,line:V.line})}for(let M of j){let V=q[M.idx],C=z&&!M.passed&&M.error&&/is not defined$/.test(M.error);$.push({description:`${V.funcName} signature example`,passed:C?!0:M.passed,error:C?void 0:M.error,isSignatureTest:!0,line:V.line})}}catch(A){let R=z&&A instanceof ReferenceError;for(let j of Z)$.push({description:j.description,passed:R,error:R?void 0:`Module execution failed: ${A.message}`,line:j.line});for(let j of q)$.push({description:`${j.funcName} signature example`,passed:R,error:R?void 0:`Module execution failed: ${A.message}`,isSignatureTest:!0,line:j.line})}for(let A of w)$.push({description:`${A.funcName} signature example`,passed:!0,isSignatureTest:!0,line:A.line});return $}function w6(Z){let K="",X=0,H=!1;for(let J=0;J<Z.length;J++){let $=Z[J];if($==="{"||$==="["||$==="("){if($==="{"&&X===0&&H)break;X++,K+=$,H=!0}else if($==="}"||$==="]"||$===")")X--,K+=$;else if(!/\s/.test($))K+=$,H=!0;else K+=$}return K.trim()||null}function m8(Z){if(!Z.trim())return[];let K=[],X=l8(Z);for(let H of X){let Y=H.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(Y)K.push(Y[2].trim());else return[]}return K}function l8(Z){let K=[],X="",H=0;for(let Y of Z){if(Y==="("||Y==="["||Y==="{")H++;else if(Y===")"||Y==="]"||Y==="}")H--;else if(Y===","&&H===0){K.push(X.trim()),X="";continue}X+=Y}if(X.trim())K.push(X.trim());return K}import*as T1 from"acorn";var e={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},k0={custom:0,type:1,import:2,function:3,table:4,memory:5,global:6,export:7,start:8,element:9,code:10,data:11},_={unreachable:0,nop:1,block:2,loop:3,if:4,else:5,end:11,br:12,br_if:13,br_table:14,return:15,call:16,call_indirect:17,drop:26,select:27,local_get:32,local_set:33,local_tee:34,global_get:35,global_set:36,i32_load:40,i64_load:41,f32_load:42,f64_load:43,i32_load8_s:44,i32_load8_u:45,i32_load16_s:46,i32_load16_u:47,i32_store:54,i64_store:55,f32_store:56,f64_store:57,i32_store8:58,i32_store16:59,memory_size:63,memory_grow:64,i32_const:65,i64_const:66,f32_const:67,f64_const:68,i32_eqz:69,i32_eq:70,i32_ne:71,i32_lt_s:72,i32_lt_u:73,i32_gt_s:74,i32_gt_u:75,i32_le_s:76,i32_le_u:77,i32_ge_s:78,i32_ge_u:79,i64_eqz:80,i64_eq:81,i64_ne:82,i64_lt_s:83,i64_lt_u:84,i64_gt_s:85,i64_gt_u:86,i64_le_s:87,i64_le_u:88,i64_ge_s:89,i64_ge_u:90,f32_eq:91,f32_ne:92,f32_lt:93,f32_gt:94,f32_le:95,f32_ge:96,f64_eq:97,f64_ne:98,f64_lt:99,f64_gt:100,f64_le:101,f64_ge:102,i32_clz:103,i32_ctz:104,i32_popcnt:105,i32_add:106,i32_sub:107,i32_mul:108,i32_div_s:109,i32_div_u:110,i32_rem_s:111,i32_rem_u:112,i32_and:113,i32_or:114,i32_xor:115,i32_shl:116,i32_shr_s:117,i32_shr_u:118,i32_rotl:119,i32_rotr:120,i64_add:124,i64_sub:125,i64_mul:126,i64_div_s:127,f32_abs:139,f32_neg:140,f32_ceil:141,f32_floor:142,f32_trunc:143,f32_nearest:144,f32_sqrt:145,f32_add:146,f32_sub:147,f32_mul:148,f32_div:149,f32_min:150,f32_max:151,f32_copysign:152,f64_abs:153,f64_neg:154,f64_ceil:155,f64_floor:156,f64_trunc:157,f64_nearest:158,f64_sqrt:159,f64_add:160,f64_sub:161,f64_mul:162,f64_div:163,f64_min:164,f64_max:165,f64_copysign:166,i32_wrap_i64:167,i32_trunc_f32_s:168,i32_trunc_f32_u:169,i32_trunc_f64_s:170,i32_trunc_f64_u:171,i64_extend_i32_s:172,i64_extend_i32_u:173,f32_convert_i32_s:178,f32_convert_i32_u:179,f32_convert_i64_s:180,f32_demote_f64:182,f64_convert_i32_s:183,f64_convert_i32_u:184,f64_convert_i64_s:185,f64_promote_f32:187,i32_reinterpret_f32:188,f32_reinterpret_i32:190,f64_reinterpret_i64:191,i32_extend8_s:192,i32_extend16_s:193},d8=Object.fromEntries(Object.entries(_).map(([Z,K])=>[K,Z.replace(/_/g,".")])),g0=253,u={v128_load:0,v128_store:11,v128_const:12,f32x4_splat:19,f32x4_extract_lane:31,f32x4_replace_lane:32,f32x4_neg:225,f32x4_sqrt:227,f32x4_add:228,f32x4_sub:229,f32x4_mul:230,f32x4_div:231},u8=Object.fromEntries(Object.entries(u).map(([Z,K])=>[K,Z.replace(/_/g,".")]));function D6(Z){return[g0,...k(Z)]}function O1(Z,K,X){return[g0,...k(Z),...k(K),...k(X)]}function k(Z){let K=[];do{let X=Z&127;if(Z>>>=7,Z!==0)X|=128;K.push(X)}while(Z!==0);return K}function v0(Z){let K=[],X=!0;while(X){let H=Z&127;if(Z>>=7,Z===0&&(H&64)===0||Z===-1&&(H&64)!==0)X=!1;else H|=128;K.push(H)}return K}function R6(Z){let K=new ArrayBuffer(4);return new Float32Array(K)[0]=Z,[...new Uint8Array(K)]}function a(Z){let K=new ArrayBuffer(8);return new Float64Array(K)[0]=Z,[...new Uint8Array(K)]}function A6(Z){let K=new TextEncoder().encode(Z);return[...k(K.length),...K]}function S0(Z,K){return[Z,...k(K.length),...K]}function z0(Z,K){let X=0,H=0,Y=K;while(Y<Z.length){let J=Z[Y];if(X|=(J&127)<<H,Y++,(J&128)===0)break;H+=7}return[X,Y-K]}function i8(Z,K){let X=new ArrayBuffer(8),H=new Uint8Array(X);for(let Y=0;Y<8;Y++)H[Y]=Z[K+Y];return new Float64Array(X)[0]}function p8(Z,K,X){let H=[],Y=1,J=()=>" ".repeat(Y),$=K.map((G,U)=>`(param $${G.name} ${G.type})`).join(" "),Q=X.map((G,U)=>`(local $L${K.length+U} ${G})`).join(" ");if(H.push(`(func (export "compute") ${$} (result f64)`),Q)H.push(` ${Q}`);let z=0;while(z<Z.length){let G=Z[z],U=d8[G]||`unknown(0x${G.toString(16)})`;if(z++,G===_.local_get||G===_.local_set||G===_.local_tee){let[F,W]=z0(Z,z);z+=W;let q=F<K.length?`$${K[F].name}`:`$L${F}`;H.push(`${J()}${U} ${q}`)}else if(G===_.br||G===_.br_if){let[F,W]=z0(Z,z);z+=W,H.push(`${J()}${U} ${F}`)}else if(G===_.i32_const){let[F,W]=z0(Z,z);z+=W,H.push(`${J()}i32.const ${F}`)}else if(G===_.f32_const){let F=new ArrayBuffer(4),W=new Uint8Array(F);for(let w=0;w<4;w++)W[w]=Z[z+w];let q=new Float32Array(F)[0];z+=4,H.push(`${J()}f32.const ${q}`)}else if(G===_.f64_const){let F=i8(Z,z);z+=8,H.push(`${J()}f64.const ${F}`)}else if(G===_.block||G===_.loop){let F=Z[z];z++,H.push(`${J()}${U}${F===e.void?"":` (result ${F===e.f64?"f64":"i32"})`}`),Y++}else if(G===_.if){let F=Z[z];z++,H.push(`${J()}if${F===e.void?"":` (result ${F===e.f64?"f64":"i32"})`}`),Y++}else if(G===_.else)Y--,H.push(`${J()}else`),Y++;else if(G===_.end)Y=Math.max(1,Y-1),H.push(`${J()}end`);else if(G===_.f64_load||G===_.f64_store||G===_.f32_load||G===_.f32_store||G===_.i32_load||G===_.i32_store){let[F,W]=z0(Z,z);z+=W;let[q,w]=z0(Z,z);z+=w,H.push(`${J()}${U}${q?` offset=${q}`:""}`)}else if(G===g0){let[F,W]=z0(Z,z);z+=W;let q=u8[F]||`simd.unknown(0x${F.toString(16)})`;if(F===u.v128_load||F===u.v128_store){let[w,L]=z0(Z,z);z+=L;let[I,D]=z0(Z,z);z+=D,H.push(`${J()}${q}${I?` offset=${I}`:""}`)}else if(F===u.v128_const){let w=Z.slice(z,z+16);z+=16,H.push(`${J()}v128.const ${w.map((L)=>"0x"+L.toString(16).padStart(2,"0")).join(" ")}`)}else if(F===u.f32x4_extract_lane||F===u.f32x4_replace_lane){let w=Z[z];z++,H.push(`${J()}${q} ${w}`)}else H.push(`${J()}${q}`)}else H.push(`${J()}${U}`)}return H.push(")"),H.join(`
|
|
291
|
-
`)}var s0={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:_.i32_load8_s,storeOp:_.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:_.i32_load8_u,storeOp:_.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:_.i32_load8_u,storeOp:_.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:_.i32_load16_s,storeOp:_.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:_.i32_load16_u,storeOp:_.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:_.i32_load,storeOp:_.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:_.i32_load,storeOp:_.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:_.f32_load,storeOp:_.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:_.f64_load,storeOp:_.f64_store}};function n8(Z){let K={params:Z,locals:new Map,nextLocalIndex:Z.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1};return Z.forEach((X,H)=>{K.locals.set(X.name,{index:H,type:X.type})}),K}function o0(Z,K,X){if(Z.locals.has(K))return Z.errors.push(`Duplicate local declaration: ${K}`),Z.locals.get(K).index;let H=Z.nextLocalIndex++;return Z.locals.set(K,{index:H,type:X}),Z.localTypes.push(X),H}function q0(Z,K){return Z.locals.get(K)}function I0(Z,K){switch(Z.type){case"ExpressionStatement":{let X=Z.expression;return[...g(X,K),_.drop]}case"ReturnStatement":{let X=Z;if(K.hasReturn=!0,!X.argument)return[_.return];let H=g(X.argument,K),Y=y(X.argument,K);if(Y==="i32")H.push(_.f64_convert_i32_s);else if(Y==="f32")H.push(_.f64_promote_f32);return H.push(_.return),H}case"VariableDeclaration":{let X=Z,H=[];for(let Y of X.declarations){if(Y.id.type!=="Identifier"){K.errors.push("Destructuring not supported in WASM blocks");continue}let J=Y.id.name,$="f64";if(Y.init)$=y(Y.init,K);let Q=o0(K,J,$);if(Y.init)H.push(...g(Y.init,K)),H.push(_.local_set,...k(Q))}return H}case"ForStatement":return c8(Z,K);case"IfStatement":return o8(Z,K);case"BlockStatement":{let X=Z,H=[];for(let Y of X.body)H.push(...I0(Y,K));return H}default:return K.errors.push(`Unsupported statement type: ${Z.type}`),[]}}function c8(Z,K){let X=[];if(Z.init)if(Z.init.type==="VariableDeclaration")X.push(...I0(Z.init,K));else X.push(...g(Z.init,K));if(X.push(_.block,e.void),X.push(_.loop,e.void),Z.test)X.push(...g(Z.test,K)),X.push(_.i32_eqz),X.push(_.br_if,1);if(K.loopDepth++,Z.body)X.push(...I0(Z.body,K));if(K.loopDepth--,Z.update)X.push(...g(Z.update,K)),X.push(_.drop);return X.push(_.br,0),X.push(_.end),X.push(_.end),X}function o8(Z,K){let X=[];if(X.push(...g(Z.test,K)),X.push(_.if,e.void),X.push(...I0(Z.consequent,K)),Z.alternate)X.push(_.else),X.push(...I0(Z.alternate,K));return X.push(_.end),X}function y(Z,K){switch(Z.type){case"Literal":{let X=Z;if(typeof X.value==="number"){if(X.raw&&(X.raw.includes(".")||X.raw.includes("e")))return"f64";if(Number.isInteger(X.value)&&X.value>=-2147483648&&X.value<=2147483647)return"i32";return"f64"}return"f64"}case"Identifier":return q0(K,Z.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let X=Z;if(["<",">","<=",">=","==","!=","===","!=="].includes(X.operator))return"i32";if(["|","&","^","<<",">>",">>>"].includes(X.operator))return"i32";let H=y(X.left,K),Y=y(X.right,K);if(H==="v128"||Y==="v128")return"v128";if(H==="f64"||Y==="f64")return"f64";if(H==="f32"||Y==="f32")return"f32";return"i32"}case"UnaryExpression":{let X=Z;if(X.operator==="!")return"i32";return y(X.argument,K)}case"MemberExpression":{let X=Z;if(X.object.type==="Identifier"){if(q0(K,X.object.name)){let Y=K.params.find((J)=>J.name===X.object.name);if(Y?.arrayType){let J=s0[Y.arrayType];if(J)return J.elementType}}}return"f64"}case"CallExpression":{let X=Z;if(X.callee.type==="MemberExpression"){let H=X.callee;if(H.object.type==="Identifier"&&H.object.name==="Math")return"f64"}if(X.callee.type==="Identifier"){let H=X.callee.name;if(H==="f32x4_extract_lane")return"f32";if(H.startsWith("f32x4_")||H==="v128_load")return"v128"}return"f64"}default:return"f64"}}function g(Z,K){switch(Z.type){case"Literal":{let X=Z;if(typeof X.value==="number"){let H=y(Z,K);if(H==="i32")return[_.i32_const,...v0(X.value|0)];else if(H==="f32")return[_.f32_const,...R6(X.value)];else return[_.f64_const,...a(X.value)]}return K.errors.push(`Unsupported literal type: ${typeof X.value}`),[_.f64_const,...a(0)]}case"Identifier":{let X=Z.name,H=q0(K,X);if(H)return[_.local_get,...k(H.index)];return K.errors.push(`Unknown identifier: ${X}`),[_.f64_const,...a(0)]}case"BinaryExpression":return s8(Z,K);case"UnaryExpression":return a8(Z,K);case"AssignmentExpression":return t8(Z,K);case"UpdateExpression":return r8(Z,K);case"MemberExpression":return e8(Z,K);case"CallExpression":return XZ(Z,K);case"SequenceExpression":{let X=Z,H=[];for(let Y=0;Y<X.expressions.length;Y++)if(H.push(...g(X.expressions[Y],K)),Y<X.expressions.length-1)H.push(_.drop);return H}default:return K.errors.push(`Unsupported expression type: ${Z.type}`),[_.f64_const,...a(0)]}}function s8(Z,K){let X=g(Z.left,K),H=g(Z.right,K),Y=y(Z,K),J=y(Z.left,K),$=y(Z.right,K),Q=["<",">","<=",">=","==","===","!=","!=="].includes(Z.operator),z;if(J==="f64"||$==="f64")z="f64";else if(J==="f32"||$==="f32")z="f32";else z="i32";if(!Q&&Y==="f64")z="f64";let G=X,U=H;if(z==="f64"){if(J==="i32")G=[...X,_.f64_convert_i32_s];else if(J==="f32")G=[...X,_.f64_promote_f32];if($==="i32")U=[...H,_.f64_convert_i32_s];else if($==="f32")U=[...H,_.f64_promote_f32]}else if(z==="f32"){if(J==="i32")G=[...X,_.f32_convert_i32_s];if($==="i32")U=[...H,_.f32_convert_i32_s]}let W={"+":{i32:_.i32_add,f32:_.f32_add,f64:_.f64_add},"-":{i32:_.i32_sub,f32:_.f32_sub,f64:_.f64_sub},"*":{i32:_.i32_mul,f32:_.f32_mul,f64:_.f64_mul},"/":{i32:_.i32_div_s,f32:_.f32_div,f64:_.f64_div},"%":{i32:_.i32_rem_s},"<":{i32:_.i32_lt_s,f32:_.f32_lt,f64:_.f64_lt},">":{i32:_.i32_gt_s,f32:_.f32_gt,f64:_.f64_gt},"<=":{i32:_.i32_le_s,f32:_.f32_le,f64:_.f64_le},">=":{i32:_.i32_ge_s,f32:_.f32_ge,f64:_.f64_ge},"==":{i32:_.i32_eq,f32:_.f32_eq,f64:_.f64_eq},"===":{i32:_.i32_eq,f32:_.f32_eq,f64:_.f64_eq},"!=":{i32:_.i32_ne,f32:_.f32_ne,f64:_.f64_ne},"!==":{i32:_.i32_ne,f32:_.f32_ne,f64:_.f64_ne},"|":{i32:_.i32_or},"&":{i32:_.i32_and},"^":{i32:_.i32_xor},"<<":{i32:_.i32_shl},">>":{i32:_.i32_shr_s},">>>":{i32:_.i32_shr_u}}[Z.operator];if(!W)return K.errors.push(`Unsupported operator: ${Z.operator}`),[_.f64_const,...a(0)];let q=W[z]??W.f64??W.i32;if(q===void 0)return K.errors.push(`Operator ${Z.operator} not supported for type ${z}`),[_.f64_const,...a(0)];return[...G,...U,q]}function a8(Z,K){let X=g(Z.argument,K),H=y(Z.argument,K);switch(Z.operator){case"-":if(H==="i32")return[_.i32_const,0,...X,_.i32_sub];else if(H==="f32")return[...X,_.f32_neg];else return[...X,_.f64_neg];case"!":return[...X,_.i32_eqz];case"~":return[...X,_.i32_const,...v0(-1),_.i32_xor];default:return K.errors.push(`Unsupported unary operator: ${Z.operator}`),X}}function t8(Z,K){if(Z.left.type==="MemberExpression")return ZZ(Z.left,Z.right,Z.operator,K);if(Z.left.type!=="Identifier")return K.errors.push("Assignment target must be identifier or array element"),[];let X=Z.left.name,H=q0(K,X);if(!H)return K.errors.push(`Unknown variable: ${X}`),[];let Y=[];if(Z.operator==="="){Y.push(...g(Z.right,K));let J=y(Z.right,K);if(H.type==="f64"&&J==="i32")Y.push(_.f64_convert_i32_s);else if(H.type==="f64"&&J==="f32")Y.push(_.f64_promote_f32);else if(H.type==="i32"&&J==="f64")Y.push(_.i32_trunc_f64_s);else if(H.type==="i32"&&J==="f32")Y.push(_.i32_trunc_f32_s);else if(H.type==="f32"&&J==="i32")Y.push(_.f32_convert_i32_s);else if(H.type==="f32"&&J==="f64")Y.push(_.f32_demote_f64)}else{let J=y(Z.right,K),$=H.type;if(J==="f64"||H.type==="f64")$="f64";else if(J==="f32"||H.type==="f32")$="f32";if(Y.push(_.local_get,...k(H.index)),$==="f64"&&H.type==="i32")Y.push(_.f64_convert_i32_s);else if($==="f64"&&H.type==="f32")Y.push(_.f64_promote_f32);else if($==="f32"&&H.type==="i32")Y.push(_.f32_convert_i32_s);if(Y.push(...g(Z.right,K)),$==="f64"&&J==="i32")Y.push(_.f64_convert_i32_s);else if($==="f64"&&J==="f32")Y.push(_.f64_promote_f32);else if($==="f32"&&J==="i32")Y.push(_.f32_convert_i32_s);let Q=Z.operator.slice(0,-1),G={"+":{i32:_.i32_add,f32:_.f32_add,f64:_.f64_add},"-":{i32:_.i32_sub,f32:_.f32_sub,f64:_.f64_sub},"*":{i32:_.i32_mul,f32:_.f32_mul,f64:_.f64_mul},"/":{i32:_.i32_div_s,f32:_.f32_div,f64:_.f64_div}}[Q]?.[$];if(!G)return K.errors.push(`Unsupported compound assignment: ${Z.operator}`),[];if(Y.push(G),H.type==="i32"&&$==="f64")Y.push(_.i32_trunc_f64_s);else if(H.type==="i32"&&$==="f32")Y.push(_.i32_trunc_f32_s);else if(H.type==="f32"&&$==="f64")Y.push(_.f32_demote_f64)}return Y.push(_.local_tee,...k(H.index)),Y}function r8(Z,K){if(Z.argument.type!=="Identifier")return K.errors.push("Update expression argument must be identifier"),[];let X=Z.argument.name,H=q0(K,X);if(!H)return K.errors.push(`Unknown variable: ${X}`),[];let Y=[],J=H.type==="i32";if(Z.prefix){if(Y.push(_.local_get,...k(H.index)),J)Y.push(_.i32_const,1),Y.push(Z.operator==="++"?_.i32_add:_.i32_sub);else Y.push(_.f64_const,...a(1)),Y.push(Z.operator==="++"?_.f64_add:_.f64_sub);Y.push(_.local_tee,...k(H.index))}else{if(Y.push(_.local_get,...k(H.index)),Y.push(_.local_get,...k(H.index)),J)Y.push(_.i32_const,1),Y.push(Z.operator==="++"?_.i32_add:_.i32_sub);else Y.push(_.f64_const,...a(1)),Y.push(Z.operator==="++"?_.f64_add:_.f64_sub);Y.push(_.local_set,...k(H.index))}return Y}function e8(Z,K){if(Z.object.type!=="Identifier")return K.errors.push("Array access requires identifier"),[];let X=Z.object.name,H=K.params.find((G)=>G.name===X);if(!H?.isArray||!H.arrayType)return K.errors.push(`${X} is not a typed array parameter`),[];let Y=s0[H.arrayType];if(!Y)return K.errors.push(`Unknown array type: ${H.arrayType}`),[];K.needsMemory=!0;let J=[],$=q0(K,X);if(!$)return K.errors.push(`Unknown array: ${X}`),[];if(J.push(_.local_get,...k($.index)),!Z.computed||!Z.property)return K.errors.push("Array access requires computed index"),[];let Q=g(Z.property,K),z=y(Z.property,K);if(J.push(...Q),z==="f64")J.push(_.i32_trunc_f64_s);if(Y.bytesPerElement>1)J.push(_.i32_const,...v0(Y.bytesPerElement)),J.push(_.i32_mul);return J.push(_.i32_add),J.push(Y.loadOp,0,0),J}function ZZ(Z,K,X,H){if(Z.object.type!=="Identifier")return H.errors.push("Array store requires identifier"),[];let Y=Z.object.name,J=H.params.find((w)=>w.name===Y);if(!J?.isArray||!J.arrayType)return H.errors.push(`${Y} is not a typed array parameter`),[];let $=s0[J.arrayType];if(!$)return H.errors.push(`Unknown array type: ${J.arrayType}`),[];H.needsMemory=!0;let Q=[],z=q0(H,Y);if(!z)return[];if(!Z.computed||!Z.property)return H.errors.push("Array store requires computed index"),[];let G=g(Z.property,H),U=y(Z.property,H),F=()=>{let w=[];if(w.push(_.local_get,...k(z.index)),w.push(...G),U==="f64")w.push(_.i32_trunc_f64_s);if($.bytesPerElement>1)w.push(_.i32_const,...v0($.bytesPerElement)),w.push(_.i32_mul);return w.push(_.i32_add),w};if(X==="=")Q.push(...g(K,H));else{let w=o0(H,`__addr_${H.nextLocalIndex}`,"i32");Q.push(...F()),Q.push(_.local_tee,...k(w)),Q.push($.loadOp,0,0),Q.push(...g(K,H));let L=y(K,H);if($.elementType==="f32"&&L==="f64")Q.push(_.f32_demote_f64);else if($.elementType==="f64"&&L==="f32")Q.push(_.f64_promote_f32);else if($.elementType==="f32"&&L==="i32")Q.push(_.f32_convert_i32_s);else if($.elementType==="f64"&&L==="i32")Q.push(_.f64_convert_i32_s);else if($.elementType==="i32"&&L==="f64")Q.push(_.i32_trunc_f64_s);else if($.elementType==="i32"&&L==="f32")Q.push(_.i32_trunc_f32_s);let I=X.slice(0,-1),D={"+":$.elementType==="i32"?_.i32_add:$.elementType==="f32"?_.f32_add:_.f64_add,"-":$.elementType==="i32"?_.i32_sub:$.elementType==="f32"?_.f32_sub:_.f64_sub,"*":$.elementType==="i32"?_.i32_mul:$.elementType==="f32"?_.f32_mul:_.f64_mul};Q.push(D[I]??_.f64_add);let B=o0(H,`__val_${H.nextLocalIndex}`,$.elementType);return Q.push(_.local_set,...k(B)),Q.push(_.local_get,...k(w)),Q.push(_.local_get,...k(B)),Q.push($.storeOp,0,0),Q.push(_.local_get,...k(B)),Q}let W=y(K,H);if($.elementType==="f32"&&W==="f64")Q.push(_.f32_demote_f64);else if($.elementType==="f64"&&W==="f32")Q.push(_.f64_promote_f32);else if($.elementType==="i32"&&W==="f64")Q.push(_.i32_trunc_f64_s);let q=o0(H,`__tmp_${H.nextLocalIndex}`,$.elementType);if(Q.push(_.local_set,...k(q)),Q.push(_.local_get,...k(z.index)),Q.push(...G),U==="f64")Q.push(_.i32_trunc_f64_s);if($.bytesPerElement>1)Q.push(_.i32_const,...v0($.bytesPerElement)),Q.push(_.i32_mul);return Q.push(_.i32_add),Q.push(_.local_get,...k(q)),Q.push($.storeOp,0,0),Q.push(_.local_get,...k(q)),Q}function XZ(Z,K){if(Z.callee.type==="MemberExpression"){let X=Z.callee;if(X.object.type==="Identifier"&&X.object.name==="Math"&&X.property.type==="Identifier"){let H=X.property.name;return HZ(H,Z.arguments,K)}}if(Z.callee.type==="Identifier"){let X=Z.callee.name;if(X.startsWith("f32x4_")||X.startsWith("v128_"))return KZ(X,Z.arguments,K)}return K.errors.push(`Unsupported function call: ${Z.callee.type}`),[_.f64_const,...a(0)]}function KZ(Z,K,X){X.needsMemory=!0;let H=[];switch(Z){case"v128_load":case"f32x4_load":{if(H.push(...g(K[0],X)),y(K[0],X)==="f64")H.push(_.i32_trunc_f64_s);H.push(...g(K[1],X));let J=y(K[1],X);if(J==="f64")H.push(_.i32_trunc_f64_s);else if(J==="f32")H.push(_.i32_trunc_f32_s);return H.push(_.i32_add),H.push(...O1(u.v128_load,2,0)),H}case"v128_store":case"f32x4_store":{if(H.push(...g(K[0],X)),y(K[0],X)==="f64")H.push(_.i32_trunc_f64_s);H.push(...g(K[1],X));let J=y(K[1],X);if(J==="f64")H.push(_.i32_trunc_f64_s);else if(J==="f32")H.push(_.i32_trunc_f32_s);return H.push(_.i32_add),H.push(...g(K[2],X)),H.push(...O1(u.v128_store,2,0)),H.push(_.i32_const,0),H}case"f32x4_splat":{H.push(...g(K[0],X));let Y=y(K[0],X);if(Y==="i32")H.push(_.f32_convert_i32_s);else if(Y==="f64")H.push(_.f32_demote_f64);return H.push(...D6(u.f32x4_splat)),H}case"f32x4_extract_lane":{H.push(...g(K[0],X));let Y=K[1].value;if(!Number.isInteger(Y)||Y<0||Y>3)return X.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${Y}`),[_.f32_const,...R6(0)];return H.push(g0,...k(u.f32x4_extract_lane),Y),H}case"f32x4_replace_lane":{H.push(...g(K[0],X));let Y=K[1].value;if(!Number.isInteger(Y)||Y<0||Y>3)return X.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${Y}`),[_.f32_const,...R6(0)];H.push(...g(K[2],X));let J=y(K[2],X);if(J==="i32")H.push(_.f32_convert_i32_s);else if(J==="f64")H.push(_.f32_demote_f64);return H.push(g0,...k(u.f32x4_replace_lane),Y),H}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{H.push(...g(K[0],X)),H.push(...g(K[1],X));let Y={f32x4_add:u.f32x4_add,f32x4_sub:u.f32x4_sub,f32x4_mul:u.f32x4_mul,f32x4_div:u.f32x4_div};return H.push(...D6(Y[Z])),H}case"f32x4_neg":case"f32x4_sqrt":{H.push(...g(K[0],X));let Y={f32x4_neg:u.f32x4_neg,f32x4_sqrt:u.f32x4_sqrt};return H.push(...D6(Y[Z])),H}default:return X.errors.push(`Unknown SIMD intrinsic: ${Z}`),[_.f64_const,...a(0)]}}function HZ(Z,K,X){let H=[];for(let Q of K){H.push(...g(Q,X));let z=y(Q,X);if(z==="i32")H.push(_.f64_convert_i32_s);else if(z==="f32")H.push(_.f64_promote_f32)}let J={abs:_.f64_abs,ceil:_.f64_ceil,floor:_.f64_floor,trunc:_.f64_trunc,sqrt:_.f64_sqrt,min:_.f64_min,max:_.f64_max}[Z];if(J!==void 0)return H.push(J),H;if(["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(Z))return X.needsMathImports.add(Z),X.errors.push(`Math.${Z} requires JS import (not yet implemented)`),[_.f64_const,...a(0)];return X.errors.push(`Unknown Math method: ${Z}`),[_.f64_const,...a(0)]}function YZ(Z){let K=Z.split(":").map((J)=>J.trim()),X=K[0];if(K.length===1)return{name:X,type:"f64"};let H=K[1];if(s0[H])return{name:X,type:"i32",isArray:!0,arrayType:H};return{name:X,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[H]??"f64"}}function $Z(Z,K,X,H,Y){let J=[0,97,115,109,1,0,0,0],$=Z.map((B)=>e[B.type]),Q=Y?[1,e.f64]:[0],z=S0(k0.type,[1,96,...k(Z.length),...$,...Q]),G=[],U=[];if(H)U=S0(k0.import,[1,...A6("env"),...A6("memory"),2,0,1]);let F=S0(k0.function,[1,0]),W=S0(k0.export,[1,...A6("compute"),0,0]),q=[];if(X.length>0){let B=X[0],A=1;for(let R=1;R<X.length;R++)if(X[R]===B)A++;else q.push([...k(A),e[B]]),B=X[R],A=1;q.push([...k(A),e[B]])}let L=[...[...k(q.length),...q.flat()],...K,_.end],I=S0(k0.code,[1,...k(L.length),...L]),D=[...J,...z];if(U.length>0)D.push(...U);return D.push(...F,...W,...I),D}function k1(Z){try{let K=Z.captures.map(YZ),X;try{let G=`function __wasm__(${K.map((U)=>U.name).join(", ")}) { ${Z.body} }`;X=T1.parse(G,{ecmaVersion:2022})}catch(G){return{bytes:new Uint8Array,warnings:[],success:!1,error:`Parse error: ${G.message}`}}let Y=X.body[0].body.body,J=n8(K),$=[];for(let G of Y)$.push(...I0(G,J));if(J.errors.length>0)return{bytes:new Uint8Array,warnings:J.warnings,success:!1,error:J.errors.join("; ")};let Q=$Z(K,$,J.localTypes,J.needsMemory,J.hasReturn),z=p8($,K,J.localTypes);return{bytes:new Uint8Array(Q),warnings:J.warnings,success:!0,needsMemory:J.needsMemory,wat:z}}catch(K){return{bytes:new Uint8Array,warnings:[],success:!1,error:K.message}}}function S1(Z){let K=[],X=[];for(let Q of Z){let z=k1(Q);if(z.success){let G=btoa(String.fromCharCode(...z.bytes));X.push({id:Q.id,base64:G,captures:Q.captures,needsMemory:z.needsMemory??!1,wat:z.wat??""}),K.push({id:Q.id,success:!0,byteLength:z.bytes.length})}else K.push({id:Q.id,success:!1,error:z.error})}if(X.length===0)return{code:"",results:K};let H=X.map((Q)=>{let z=Q.wat.split(`
|
|
292
|
-
`).map((G)=>` * ${G}`);return`/**
|
|
293
|
-
* WASM: ${Q.id}
|
|
294
|
-
${z.join(`
|
|
295
|
-
`)}
|
|
296
|
-
*/`}).join(`
|
|
297
|
-
`),Y=X.map((Q)=>`{id:${JSON.stringify(Q.id)},b64:${JSON.stringify(Q.base64)},c:${JSON.stringify(Q.captures)},m:${Q.needsMemory}}`).join(","),J=X.some((Q)=>Q.needsMemory);return{code:`${H}
|
|
298
|
-
;(async()=>{
|
|
299
|
-
const __wasmBlocks=[${Y}];
|
|
300
|
-
const __b64ToBytes=s=>{const b=atob(s),a=new Uint8Array(b.length);for(let i=0;i<b.length;i++)a[i]=b.charCodeAt(i);return a};
|
|
301
|
-
const __parseType=c=>{const m=c.match(/^(\\w+)\\s*:\\s*(\\w+)$/);if(!m)return{n:c,t:'f64',a:false};const[,n,ts]=m;const at={Float32Array:'f32',Float64Array:'f64',Int32Array:'i32',Uint8Array:'i32'};if(at[ts])return{n,t:'i32',a:true,at:ts};return{n,t:'f64',a:false}};
|
|
302
|
-
${J?`const __wasmMem=new WebAssembly.Memory({initial:1024});
|
|
303
|
-
let __woff=0;
|
|
304
|
-
globalThis.wasmBuffer=function(Ctor,len){const bytes=len*Ctor.BYTES_PER_ELEMENT;const align=Math.max(Ctor.BYTES_PER_ELEMENT,16);__woff=(__woff+align-1)&~(align-1);const arr=new Ctor(__wasmMem.buffer,__woff,len);__woff+=bytes;return arr};`:""}
|
|
305
|
-
for(const{id,b64,c,m}of __wasmBlocks){
|
|
306
|
-
const bytes=__b64ToBytes(b64);
|
|
307
|
-
const params=c.map(__parseType);
|
|
308
|
-
const hasArrays=params.some(p=>p.a);
|
|
309
|
-
const mem=m?__wasmMem:null;
|
|
310
|
-
const imp=mem?{env:{memory:mem}}:{};
|
|
311
|
-
const inst=await WebAssembly.instantiate(await WebAssembly.compile(bytes),imp);
|
|
312
|
-
const compute=inst.exports.compute;
|
|
313
|
-
if(!hasArrays){globalThis[id]=compute;continue}
|
|
314
|
-
globalThis[id]=function(...args){
|
|
315
|
-
const mv=new Uint8Array(mem.buffer);let off=__woff;const ptrs=[];
|
|
316
|
-
for(let i=0;i<params.length;i++){const p=params[i],a=args[i];
|
|
317
|
-
if(p.a&&a?.buffer){
|
|
318
|
-
if(a.buffer===mem.buffer){ptrs.push(a.byteOffset)}
|
|
319
|
-
else{const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;mv.set(ab,off);ptrs.push(off);off+=ab.length}
|
|
320
|
-
} else ptrs.push(a)}
|
|
321
|
-
const r=compute(...ptrs);off=__woff;
|
|
322
|
-
for(let i=0;i<params.length;i++){const p=params[i],a=args[i];
|
|
323
|
-
if(p.a&&a?.buffer){
|
|
324
|
-
if(a.buffer===mem.buffer) continue;
|
|
325
|
-
const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;ab.set(mv.slice(off,off+ab.length));off+=ab.length}}
|
|
326
|
-
return r};
|
|
327
|
-
}})();
|
|
328
|
-
`.trim(),results:K}}function QZ(Z,K,X){if(!Z||!K)return!1;let H=new RegExp(`function\\s+${K}\\s*\\([^)]*?\\b${X}\\s*([=:])`,"s"),Y=Z.match(H);if(!Y)return!1;return Y[1]===":"}function zZ(Z,K,X,H,Y){let J=[],$=N0(K,Z),Q={},z=!1,G,U;if(Z.params.length===1&&(Z.params[0].type==="ObjectPattern"||Z.params[0].type==="AssignmentPattern"&&Z.params[0].left.type==="ObjectPattern")){z=!0;let q=Z.params[0],w=q.type==="ObjectPattern"?q:q.left,L=Q0(w,X);if(L.type.kind==="object"&&L.type.destructuredParams){G={},U=new Set;for(let[I,D]of Object.entries(L.type.destructuredParams))if(Q[I]={...D,description:$.params[I]},G[I]=D.type,D.required)U.add(I)}}else for(let q of Z.params)if(q.type==="Identifier"){let w=Q0(q,X);Q[q.name]={...w,required:X.has(q.name),description:$.params[q.name]}}else if(q.type==="AssignmentPattern"&&q.left.type==="Identifier"){let w=Q0(q,X),L=QZ(Y||"",Z.id?.name||"",q.left.name);Q[q.left.name]={...w,required:L,default:L?null:w.example??w.default,description:$.params[q.left.name]}}else if(q.type==="ObjectPattern"){let w=Q0(q,X);if(w.type.kind==="object"&&w.type.destructuredParams)for(let[L,I]of Object.entries(w.type.destructuredParams))Q[L]={...I,description:$.params[L]}}let F;if(H)try{let q=H.includes("=")?g1(H):H,w=JZ(q,0,{ecmaVersion:2022});F=o(w)}catch{F={kind:"any"},J.push(`Could not parse return type: ${H}`)}return{types:{name:Z.id?.name||"anonymous",params:Q,returns:F,description:$.description,isDestructuredParam:z,destructuredShape:G,destructuredRequired:U},warnings:J}}function GZ(Z,K,X){let H=[],Y=X?`${X}:`:"",J=X?`${X}:${Z}`:Z;if(K.isDestructuredParam&&K.destructuredShape){let Q=K.destructuredShape,z=K.destructuredRequired||new Set,G=Object.keys(Q);if(G.length===0)return null;for(let U of G)H.push(`if (${U} instanceof Error) return ${U};`);for(let[U,F]of Object.entries(Q)){let W=z.has(U),q=`${Y}${Z}.${U}`,w=L6(U,F);if(w){let L=F.kind;if(W)H.push(`if (${w}) return __tjs.typeError('${q}', '${L}', ${U});`);else H.push(`if (${U} !== undefined && ${w}) return __tjs.typeError('${q}', '${L}', ${U});`)}}if(H.length===0)return null;return H.unshift(`__tjs.pushStack('${J}');`),H.unshift("try {"),{preamble:H.join(`
|
|
329
|
-
`),suffix:"} finally { __tjs.popStack(); }"}}let $=Object.entries(K.params);if($.length===0)return null;for(let[Q]of $)H.push(`if (${Q} instanceof Error) return ${Q};`);for(let[Q,z]of $){let G=`${Y}${Z}.${Q}`,U=L6(Q,z.type);if(U){let F=z.type.kind==="union"?z.type.members.map((W)=>W.kind).join(" | "):z.type.kind;if(z.required)H.push(`if (${U}) return __tjs.typeError('${G}', '${F}', ${Q});`);else H.push(`if (${Q} !== undefined && ${U}) return __tjs.typeError('${G}', '${F}', ${Q});`)}}if(H.length===0)return null;return H.unshift(`__tjs.pushStack('${J}');`),H.unshift("try {"),{preamble:H.join(`
|
|
330
|
-
`),suffix:"} finally { __tjs.popStack(); }"}}function g1(Z){let K="",X=0;for(let H=0;H<Z.length;H++){let Y=Z[H];if(Y==="{"||Y==="["||Y==="(")X++,K+=Y;else if(Y==="}"||Y==="]"||Y===")")X--,K+=Y;else if(Y==="'"||Y==='"'||Y==="`"){K+=Y,H++;while(H<Z.length&&Z[H]!==Y){if(Z[H]==="\\")K+=Z[H++];K+=Z[H++]}if(H<Z.length)K+=Z[H]}else if(X===1&&Y==="="&&Z[H-1]!=="!"&&Z[H+1]!=="=")K+=":";else K+=Y}return K}function WZ(Z,K){let H=new RegExp(`function\\s+${K}\\s*\\([^)]*\\)\\s*(-[>?!])\\s*`,"g").exec(Z);if(!H)return null;let Y=Z.slice(H.index+H[0].length);return w6(Y)}function _Z(Z,K){let H=new RegExp(`function\\s+${K}\\s*\\([^)]*\\)\\s*-([>?!])`,"g").exec(Z);if(!H)return;let Y=H[1];if(Y==="?")return"safe";if(Y==="!")return"unsafe";return}function FZ(Z){let K=Z.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return K?K[1].trim():void 0}function qZ(Z,K){let X=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${K}\\s*\\(`,"m"),H=Z.match(X);return H?parseInt(H[1],10):void 0}function a0(Z,K={}){let{filename:X="<source>",runTests:H=!0,debug:Y=!1,resolvedImports:J={}}=K,$=[],z=FZ(Z)||X,{code:G,tests:U,mocks:F,testRunner:W}=F6(Z),{ast:q,originalSource:w,requiredParams:L,unsafeFunctions:I}=W0(G,{filename:X,colonShorthand:!0}),D=UZ(q),B=n0(G),A={},R=[],j=[];for(let E of D){let S=E.id?.name||"anonymous",i=WZ(G,S),m;if(i&&i.includes("="))try{let c=i.matchAll(/(\w+)\s*=\s*/g),t=g1(i),G0=Function(`return ${t}`)(),r={};for(let H8 of c){let J6=H8[1];if(J6 in G0)r[J6]=G0[J6]}if(Object.keys(r).length>0)m=r}catch{}let{types:Z0,warnings:r1}=zZ(E,w,L,i,G);$.push(...r1),A[S]=Z0;for(let c of E.params)if(c.type==="AssignmentPattern"){let t=c.left?.name||c.left?.value,G0=t?Z0.params[t]:null;if(G0?.required&&G0.default===null)j.push({start:c.left.end,end:c.right.end});else{let r=c.right;if(r.type==="BinaryExpression"&&r.operator==="|")j.push({start:r.left.end,end:r.end})}}let p6=B.moduleSafety==="none"||I.has(S),e1=B.safeFunctions.has(S),Z8=_Z(G,S),X8=qZ(Z,S),L0={file:z,line:X8??E.loc?.start.line??0,column:E.loc?.start.column??0},K8={unsafe:p6,safe:e1,returnSafety:Z8},n6=B.polymorphicNames.has(S),$6;if(n6){let c=[];for(let G0 of D){let r=G0.id?.name||"";if(r.startsWith(S+"$"))c.push(r)}let t={polymorphic:!0,variants:c};if(L0)t.source=`${L0.file}:${L0.line}`;$6=`${S}.__tjs = ${JSON.stringify(t,null,2)}`}else $6=wZ(S,Z0,K8,{debug:Y,source:L0,returnDefaults:m});if(R.push({position:E.end,text:`
|
|
331
|
-
${$6}`}),!p6&&!n6){let c=`${L0.file}:${L0.line}`,t=GZ(S,Z0,c);if(t&&E.body&&E.body.start!==void 0)R.push({position:E.body.start+1,text:`
|
|
332
|
-
${t.preamble}
|
|
333
|
-
`}),R.push({position:E.body.end-1,text:`
|
|
334
|
-
${t.suffix}
|
|
335
|
-
`})}}j.sort((E,S)=>S.start-E.start);let M=B.source;for(let{start:E,end:S}of j)M=M.slice(0,E)+M.slice(S);for(let E of R){let S=0;for(let i of j)if(i.start<E.position)S+=i.end-i.start;E.position-=S}R.sort((E,S)=>S.position-E.position);for(let{position:E,text:S}of R)M=M.slice(0,E)+S+M.slice(E);let V=M.includes("__tjs.typeError("),C=M.includes("__tjs.pushStack("),N=M.includes("Is("),T=M.includes("IsNot("),O=B.tjsModes.tjsSafeEval;if(V||C||N||T||O){let E=`const __tjs = globalThis.__tjs?.createRuntime?.() ?? globalThis.__tjs;
|
|
336
|
-
`;if(N||T){let S=[N&&"Is",T&&"IsNot"].filter(Boolean).join(", ");E+=`const { ${S} } = __tjs ?? {};
|
|
337
|
-
`}M=E+M}if(O)M=`import { Eval, SafeFunction } from 'tjs-lang';
|
|
338
|
-
`+M;let x;if(H){let E=N1(Z);x=E1(U,F,E,M,J,B.extensions);let S=x.filter((i)=>!i.passed);if(S.length>0&&H===!0){let i=S.map((m)=>{if(m.isSignatureTest)return` Function signature example is inconsistent:
|
|
339
|
-
${m.error}`;let Z0=m.line?` (line ${m.line})`:"";return` Test '${m.description}'${Z0} failed:
|
|
340
|
-
${m.error}`});throw Error(`Transpile-time test failures:
|
|
341
|
-
${i.join(`
|
|
342
|
-
`)}`)}}if(H==="only")return{code:"",types:A,metadata:A,testResults:x,testCount:x?.length};let l;if(B.wasmBlocks.length>0){l=[];let E=S1(B.wasmBlocks);if(E.code)M=E.code+`
|
|
343
|
-
`+M;l=E.results}return{code:M,types:A,metadata:A,warnings:$.length>0?$:void 0,testRunner:U.length>0?W:void 0,testCount:U.length>0?U.length:void 0,testResults:x,wasmCompiled:l}}function UZ(Z){let K=[];for(let X of Z.body)if(X.type==="FunctionDeclaration")K.push(X);else if(X.type==="ExportNamedDeclaration"&&X.declaration?.type==="FunctionDeclaration")K.push(X.declaration);else if(X.type==="ExportDefaultDeclaration"&&X.declaration?.type==="FunctionDeclaration")K.push(X.declaration);return K}function b0(Z){let K={kind:Z.kind};if(Z.nullable)K.nullable=!0;if(Z.items)K.items=b0(Z.items);if(Z.shape)K.shape=Object.fromEntries(Object.entries(Z.shape).map(([X,H])=>[X,b0(H)]));if(Z.members)K.members=Z.members.map(b0);return K}function wZ(Z,K,X={},H={}){let Y={};for(let[$,Q]of Object.entries(K.params)){if(Y[$]={type:b0(Q.type),required:Q.required},Q.default!==void 0)Y[$].default=Q.default;if(Q.description)Y[$].description=Q.description}let J={params:Y};if(K.returns){if(J.returns={type:b0(K.returns)},H.returnDefaults)J.returns.defaults=H.returnDefaults;if(X.returnSafety==="safe")J.safeReturn=!0;else if(X.returnSafety==="unsafe")J.unsafeReturn=!0}if(K.description)J.description=K.description;if(X.unsafe)J.unsafe=!0;if(X.safe)J.safe=!0;if(H.source){let{file:$,line:Q}=H.source;J.source=`${$}:${Q}`}return`${Z}.__tjs = ${JSON.stringify(J,null,2)}`}function L6(Z,K){switch(K.kind){case"string":return`typeof ${Z} !== 'string'`;case"number":return`typeof ${Z} !== 'number'`;case"integer":return`(typeof ${Z} !== 'number' || !Number.isInteger(${Z}))`;case"non-negative-integer":return`(typeof ${Z} !== 'number' || !Number.isInteger(${Z}) || ${Z} < 0)`;case"boolean":return`typeof ${Z} !== 'boolean'`;case"null":return`${Z} !== null`;case"undefined":return`${Z} !== undefined`;case"array":return`!Array.isArray(${Z})`;case"object":return`(typeof ${Z} !== 'object' || ${Z} === null || Array.isArray(${Z}))`;case"union":{let X=K.members.map((H)=>L6(Z,H)).filter((H)=>H!==null);if(X.length===0)return null;return`(${X.join(" && ")})`}case"any":return null;default:return null}}function r0(Z,K={}){let{ast:X,returnType:H,originalSource:Y,requiredParams:J}=W0(Z,{filename:K.filename,colonShorthand:!0,vmTarget:!0}),$=A1(X,K.filename),{ast:Q,signature:z,warnings:G}=W6($,Y,H,K,J);return{ast:Q,signature:z,warnings:G}}function DZ(Z,...K){if(typeof Z==="string")return r0(Z).ast;let X=Z.reduce((H,Y,J)=>H+Y+(K[J]!==void 0?String(K[J]):""),"");return r0(X).ast}function AZ(Z,K,X){let{ast:H,signature:Y}=r0(Z),J=async($)=>{return(await K.run(H,$,X)).result};return J.signature=Y,J.ast=H,J}function t0(Z){switch(Z.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"array":return{type:"array",items:Z.items?t0(Z.items):{}};case"object":if(!Z.shape)return{type:"object"};return{type:"object",properties:Object.fromEntries(Object.entries(Z.shape).map(([K,X])=>[K,t0(X)]))};case"union":if(!Z.members)return{};return{anyOf:Z.members.map(t0)};case"any":default:return{}}}function RZ(Z){return Object.entries(Z).map(([K,X])=>{let H=X.signature,Y={},J=[];for(let[$,Q]of Object.entries(H.parameters)){if(Y[$]=t0(Q.type),Q.description)Y[$].description=Q.description;if(Q.required)J.push($)}return{type:"function",function:{name:K,description:H.description,parameters:{type:"object",properties:Y,required:J}}}})}function LZ(Z,K,...X){if(typeof Z==="string")return a0(Z,K);let H=K!==void 0?[K,...X]:X,Y=Z.reduce((J,$,Q)=>J+$+(H[Q]!==void 0?String(H[Q]):""),"");return a0(Y)}import{s as v1}from"tosijs-schema";function b1(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";return typeof Z}function e0(Z){return v1.infer(Z)}function I6(Z){return e0(Z)}I6.type=b1;I6.infer=e0;var IZ=new Proxy(I6,{get(Z,K){if(K==="type")return b1;if(K==="infer")return e0;return v1[K]},apply(Z,K,X){return e0(X[0])}});function Z6(Z,K,X,H,Y){if(!X)X=P;(function J($,Q,z){var G=z||$.type;if(X[G]($,Q,J),K[G])K[G]($,Q)})(Z,H,Y)}function f1(Z,K,X,H,Y){var J=[];if(!X)X=P;(function $(Q,z,G){var U=G||Q.type,F=Q!==J[J.length-1];if(F)J.push(Q);if(X[U](Q,z,$),K[U])K[U](Q,z||J,J);if(F)J.pop()})(Z,H,Y)}function B6(Z,K,X){X(Z,K)}function U0(Z,K,X){}var P={};P.Program=P.BlockStatement=P.StaticBlock=function(Z,K,X){for(var H=0,Y=Z.body;H<Y.length;H+=1){var J=Y[H];X(J,K,"Statement")}};P.Statement=B6;P.EmptyStatement=U0;P.ExpressionStatement=P.ParenthesizedExpression=P.ChainExpression=function(Z,K,X){return X(Z.expression,K,"Expression")};P.IfStatement=function(Z,K,X){if(X(Z.test,K,"Expression"),X(Z.consequent,K,"Statement"),Z.alternate)X(Z.alternate,K,"Statement")};P.LabeledStatement=function(Z,K,X){return X(Z.body,K,"Statement")};P.BreakStatement=P.ContinueStatement=U0;P.WithStatement=function(Z,K,X){X(Z.object,K,"Expression"),X(Z.body,K,"Statement")};P.SwitchStatement=function(Z,K,X){X(Z.discriminant,K,"Expression");for(var H=0,Y=Z.cases;H<Y.length;H+=1){var J=Y[H];X(J,K)}};P.SwitchCase=function(Z,K,X){if(Z.test)X(Z.test,K,"Expression");for(var H=0,Y=Z.consequent;H<Y.length;H+=1){var J=Y[H];X(J,K,"Statement")}};P.ReturnStatement=P.YieldExpression=P.AwaitExpression=function(Z,K,X){if(Z.argument)X(Z.argument,K,"Expression")};P.ThrowStatement=P.SpreadElement=function(Z,K,X){return X(Z.argument,K,"Expression")};P.TryStatement=function(Z,K,X){if(X(Z.block,K,"Statement"),Z.handler)X(Z.handler,K);if(Z.finalizer)X(Z.finalizer,K,"Statement")};P.CatchClause=function(Z,K,X){if(Z.param)X(Z.param,K,"Pattern");X(Z.body,K,"Statement")};P.WhileStatement=P.DoWhileStatement=function(Z,K,X){X(Z.test,K,"Expression"),X(Z.body,K,"Statement")};P.ForStatement=function(Z,K,X){if(Z.init)X(Z.init,K,"ForInit");if(Z.test)X(Z.test,K,"Expression");if(Z.update)X(Z.update,K,"Expression");X(Z.body,K,"Statement")};P.ForInStatement=P.ForOfStatement=function(Z,K,X){X(Z.left,K,"ForInit"),X(Z.right,K,"Expression"),X(Z.body,K,"Statement")};P.ForInit=function(Z,K,X){if(Z.type==="VariableDeclaration")X(Z,K);else X(Z,K,"Expression")};P.DebuggerStatement=U0;P.FunctionDeclaration=function(Z,K,X){return X(Z,K,"Function")};P.VariableDeclaration=function(Z,K,X){for(var H=0,Y=Z.declarations;H<Y.length;H+=1){var J=Y[H];X(J,K)}};P.VariableDeclarator=function(Z,K,X){if(X(Z.id,K,"Pattern"),Z.init)X(Z.init,K,"Expression")};P.Function=function(Z,K,X){if(Z.id)X(Z.id,K,"Pattern");for(var H=0,Y=Z.params;H<Y.length;H+=1){var J=Y[H];X(J,K,"Pattern")}X(Z.body,K,Z.expression?"Expression":"Statement")};P.Pattern=function(Z,K,X){if(Z.type==="Identifier")X(Z,K,"VariablePattern");else if(Z.type==="MemberExpression")X(Z,K,"MemberPattern");else X(Z,K)};P.VariablePattern=U0;P.MemberPattern=B6;P.RestElement=function(Z,K,X){return X(Z.argument,K,"Pattern")};P.ArrayPattern=function(Z,K,X){for(var H=0,Y=Z.elements;H<Y.length;H+=1){var J=Y[H];if(J)X(J,K,"Pattern")}};P.ObjectPattern=function(Z,K,X){for(var H=0,Y=Z.properties;H<Y.length;H+=1){var J=Y[H];if(J.type==="Property"){if(J.computed)X(J.key,K,"Expression");X(J.value,K,"Pattern")}else if(J.type==="RestElement")X(J.argument,K,"Pattern")}};P.Expression=B6;P.ThisExpression=P.Super=P.MetaProperty=U0;P.ArrayExpression=function(Z,K,X){for(var H=0,Y=Z.elements;H<Y.length;H+=1){var J=Y[H];if(J)X(J,K,"Expression")}};P.ObjectExpression=function(Z,K,X){for(var H=0,Y=Z.properties;H<Y.length;H+=1){var J=Y[H];X(J,K)}};P.FunctionExpression=P.ArrowFunctionExpression=P.FunctionDeclaration;P.SequenceExpression=function(Z,K,X){for(var H=0,Y=Z.expressions;H<Y.length;H+=1){var J=Y[H];X(J,K,"Expression")}};P.TemplateLiteral=function(Z,K,X){for(var H=0,Y=Z.quasis;H<Y.length;H+=1){var J=Y[H];X(J,K)}for(var $=0,Q=Z.expressions;$<Q.length;$+=1){var z=Q[$];X(z,K,"Expression")}};P.TemplateElement=U0;P.UnaryExpression=P.UpdateExpression=function(Z,K,X){X(Z.argument,K,"Expression")};P.BinaryExpression=P.LogicalExpression=function(Z,K,X){X(Z.left,K,"Expression"),X(Z.right,K,"Expression")};P.AssignmentExpression=P.AssignmentPattern=function(Z,K,X){X(Z.left,K,"Pattern"),X(Z.right,K,"Expression")};P.ConditionalExpression=function(Z,K,X){X(Z.test,K,"Expression"),X(Z.consequent,K,"Expression"),X(Z.alternate,K,"Expression")};P.NewExpression=P.CallExpression=function(Z,K,X){if(X(Z.callee,K,"Expression"),Z.arguments)for(var H=0,Y=Z.arguments;H<Y.length;H+=1){var J=Y[H];X(J,K,"Expression")}};P.MemberExpression=function(Z,K,X){if(X(Z.object,K,"Expression"),Z.computed)X(Z.property,K,"Expression")};P.ExportNamedDeclaration=P.ExportDefaultDeclaration=function(Z,K,X){if(Z.declaration)X(Z.declaration,K,Z.type==="ExportNamedDeclaration"||Z.declaration.id?"Statement":"Expression");if(Z.source)X(Z.source,K,"Expression")};P.ExportAllDeclaration=function(Z,K,X){if(Z.exported)X(Z.exported,K);X(Z.source,K,"Expression")};P.ImportDeclaration=function(Z,K,X){for(var H=0,Y=Z.specifiers;H<Y.length;H+=1){var J=Y[H];X(J,K)}X(Z.source,K,"Expression")};P.ImportExpression=function(Z,K,X){X(Z.source,K,"Expression")};P.ImportSpecifier=P.ImportDefaultSpecifier=P.ImportNamespaceSpecifier=P.Identifier=P.PrivateIdentifier=P.Literal=U0;P.TaggedTemplateExpression=function(Z,K,X){X(Z.tag,K,"Expression"),X(Z.quasi,K,"Expression")};P.ClassDeclaration=P.ClassExpression=function(Z,K,X){return X(Z,K,"Class")};P.Class=function(Z,K,X){if(Z.id)X(Z.id,K,"Pattern");if(Z.superClass)X(Z.superClass,K,"Expression");X(Z.body,K)};P.ClassBody=function(Z,K,X){for(var H=0,Y=Z.body;H<Y.length;H+=1){var J=Y[H];X(J,K)}};P.MethodDefinition=P.PropertyDefinition=P.Property=function(Z,K,X){if(Z.computed)X(Z.key,K,"Expression");if(Z.value)X(Z.value,K,"Expression")};var MZ={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function jZ(Z,K={}){let X={...MZ,...K},H=[],Y;try{Y=W0(Z,{filename:X.filename,colonShorthand:!0}).ast}catch($){return{diagnostics:[{severity:"error",message:$.message,line:$.loc?.line,column:$.loc?.column,rule:"parse-error"}],valid:!1}}let J=[y1()];if(f1(Y,{FunctionDeclaration($,Q,z){let G=y1();J.push(G);for(let U of $.params)PZ(G,U,"parameter");if($.id)(J[J.length-2]||J[0]).declarations.set($.id.name,{node:$.id,kind:"function",used:!1})},VariableDeclaration($){let Q=J[J.length-1];for(let z of $.declarations)if(z.id.type==="Identifier")Q.declarations.set(z.id.name,{node:z.id,kind:$.kind,used:!1})}}),Z6(Y,{Identifier($){for(let Q=J.length-1;Q>=0;Q--){let z=J[Q].declarations.get($.name);if(z){z.used=!0;break}}}}),X.unusedVariables)for(let $ of J)for(let[Q,z]of $.declarations){if(Q.startsWith("_"))continue;if(!z.used&&z.kind!=="function")H.push({severity:"warning",message:`'${Q}' is declared but never used`,line:z.node.loc?.start?.line,column:z.node.loc?.start?.column,rule:"no-unused-vars"})}if(X.unreachableCode)Z6(Y,{BlockStatement($){let Q=!1;for(let z of $.body){if(Q){H.push({severity:"warning",message:"Unreachable code after return statement",line:z.loc?.start?.line,column:z.loc?.start?.column,rule:"no-unreachable"});break}if(z.type==="ReturnStatement")Q=!0}}});if(X.noExplicitNew)Z6(Y,{NewExpression($){let Q="class";if($.callee.type==="Identifier")Q=$.callee.name;else if($.callee.type==="MemberExpression"){if($.callee.property.type==="Identifier")Q=$.callee.property.name}H.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${Q}(...) instead of new ${Q}(...)`,line:$.loc?.start?.line,column:$.loc?.start?.column,rule:"no-explicit-new"})}});return{diagnostics:H,valid:H.filter(($)=>$.severity==="error").length===0}}function y1(){return{declarations:new Map}}function PZ(Z,K,X){if(K.type==="Identifier")Z.declarations.set(K.name,{node:K,kind:X,used:!1});else if(K.type==="AssignmentPattern"&&K.left.type==="Identifier")Z.declarations.set(K.left.name,{node:K.left,kind:X,used:!1})}import{validate as p1,s as H6}from"tosijs-schema";import{validate as M6,s as X6}from"tosijs-schema";function w0(Z){return Z!==null&&typeof Z==="object"&&"__runtimeType"in Z&&Z.__runtimeType===!0}function h1(Z){return Z!==null&&typeof Z==="object"&&"schema"in Z&&typeof Z.schema==="object"}function VZ(Z){return Z!==null&&typeof Z==="object"&&"type"in Z&&typeof Z.type==="string"}function h(Z,K,X,H){let Y,J,$,Q=X,z=H;if(typeof Z==="string")if(Y=Z,typeof K==="function"){if(J=K,Q!==void 0)$=X6.infer(Q)}else if(K===void 0&&Q!==void 0)$=X6.infer(Q);else if(h1(K))$=K;else if(VZ(K))$=K;else if(K!==void 0)Q=K,z=Q,$=X6.infer(Q);else throw Error("Type(description) requires a predicate, schema, or example");else{if(h1(Z))$=Z;else $=Z;Y=CZ($)}let G;if($){let F=$?.schema??$;if(F&&typeof F==="object"&&Array.isArray(F.examples))G=F.examples}if(Q===void 0&&G&&G.length>0)Q=G[0];return{description:Y,check:(F)=>{if(J)return J(F);if($)return M6(F,$);return!1},schema:$,predicate:J,example:Q,examples:G,default:z,__runtimeType:!0}}function CZ(Z){let K=Z?.schema??Z;if(K&&typeof K==="object"&&"type"in K){let X=K;switch(X.type){case"string":if(X.format)return`string (${X.format})`;if(X.pattern)return`string matching ${X.pattern}`;if(X.minLength!==void 0&&X.maxLength!==void 0)return`string (${X.minLength}-${X.maxLength} chars)`;return"string";case"number":case"integer":if(X.minimum!==void 0&&X.maximum!==void 0)return`${X.type} (${X.minimum}-${X.maximum})`;if(X.minimum!==void 0)return`${X.type} >= ${X.minimum}`;if(X.maximum!==void 0)return`${X.type} <= ${X.maximum}`;return X.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var j6=h("string",(Z)=>typeof Z==="string"),P6=h("number",(Z)=>typeof Z==="number"),V6=h("boolean",(Z)=>typeof Z==="boolean"),C6=h("integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)),N6=h("positive integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)&&Z>0),E6=h("non-empty string",(Z)=>typeof Z==="string"&&Z.length>0),O6=h("email address",(Z)=>typeof Z==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(Z)),x1=(Z)=>{try{return new URL(Z),!0}catch{return!1}},T6=h("URL",(Z)=>typeof Z==="string"&&x1(Z)),k6=h("UUID",(Z)=>typeof Z==="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(Z)),m1=(Z)=>{let K=new Date(Z);return!isNaN(K.getTime())&&Z.includes("T")},l1=(Z)=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(Z))return!1;let K=new Date(Z+"T00:00:00Z");return!isNaN(K.getTime())},d1=h("ISO 8601 timestamp",(Z)=>typeof Z==="string"&&m1(Z)),u1=h("date (YYYY-MM-DD)",(Z)=>typeof Z==="string"&&l1(Z));function S6(Z){return h(`${Z.description} or null`,(K)=>K===null||Z.check(K))}function g6(Z){return h(`${Z.description} (optional)`,(K)=>K===null||K===void 0||Z.check(K))}function v6(Z,K,...X){if(typeof Z==="string"&&Array.isArray(K)){let J=Z,$=K,Q=new Set($);return{description:J,check:(G)=>Q.has(G),__runtimeType:!0,values:$}}let H=[];if(w0(Z))H.push(Z);if(w0(K))H.push(K);H.push(...X);let Y=H.map((J)=>J.description).join(" | ");return h(Y,(J)=>H.some(($)=>$.check(J)))}function b6(Z){return h(`array of ${Z.description}`,(K)=>Array.isArray(K)&&K.every((X)=>Z.check(X)))}function NZ(Z){if(w0(Z))return(X)=>Z.check(X);if(Z&&typeof Z==="object"&&"schema"in Z)return(X)=>M6(X,Z);let K=X6.infer(Z);return(X)=>M6(X,K)}function f0(Z,K,X){let H=[],Y=[];for(let $ of Z)if(typeof $==="string")H.push($),Y.push(void 0);else H.push($[0]),Y.push($[1]);let J=(...$)=>{let Q=H.map((G,U)=>{let F=U<$.length?$[U]:Y[U];if(F===void 0)return()=>!0;return NZ(F)}),z=X;return H.forEach((G,U)=>{let F=U<$.length?$[U]:Y[U],W="any";if(w0(F))W=F.description;else if(F!==void 0)W=typeof F==="string"?"string":JSON.stringify(F);z=z.replace(new RegExp(`\\b${G}\\b`,"g"),W)}),h(z,(G)=>K(G,...Q))};return J.params=H,J.description=X,J}var f6=f0(["T","U"],(Z,K,X)=>Array.isArray(Z)&&Z.length===2&&K(Z[0])&&X(Z[1]),"Pair<T, U>"),y6=f0(["V"],(Z,K)=>typeof Z==="object"&&Z!==null&&!Array.isArray(Z)&&Object.values(Z).every(K),"Record<string, V>");function h6(Z,K){let X=Object.values(K),H=new Set(X),Y=Object.keys(K),J={};for(let[Q,z]of Object.entries(K))J[z]=Q;return{description:Z,check:(Q)=>H.has(Q),__runtimeType:!0,members:K,names:J,values:X,keys:Y}}var OZ=i1(),Y0=OZ.version,y0=Symbol.for("tjs.equals");function Y6(Z){let[K=0,X=0,H=0]=Z.split(".").map(Number);return{major:K,minor:X,patch:H}}function x6(Z,K){let X=Y6(Z),H=Y6(K);if(X.major!==H.major)return X.major<H.major?-1:1;if(X.minor!==H.minor)return X.minor<H.minor?-1:1;if(X.patch!==H.patch)return X.patch<H.patch?-1:1;return 0}function m6(Z,K){let X=Y6(Z),H=Y6(K);return X.major===H.major}class R0 extends Error{path;expected;actual;callStack;constructor(Z,K,X,H,Y){super(Z);if(this.name="MonadicError",this.path=K,this.expected=X,this.actual=H,this.callStack=Y,Error.captureStackTrace)Error.captureStackTrace(this,R0)}}function TZ(Z,K,X){let H=X===null?"null":typeof X,Y=n.debug?o1():void 0;return new R0(`Expected ${K} for '${Z}', got ${H}`,Z,K,H,Y)}function n1(Z){return Z instanceof R0}var l6={debug:!1,safety:"inputs",requireReturnTypes:!1,maxStackSize:100},n={...l6},J0=[],M0=0;function kZ(){M0++}function SZ(){if(M0>0)M0--}function gZ(){return M0>0}function vZ(Z){n={...n,...Z}}function bZ(){return{...n}}function c1(Z){if(n.debug&&Z){J0.push(Z);let K=n.maxStackSize??100;while(J0.length>K)J0.shift()}}function K6(){if(n.debug)J0.pop()}function o1(){return[...J0]}function fZ(){n={...l6},J0.length=0,M0=0}function h0(Z,K){if(Z!==null&&typeof Z==="object"&&typeof Z[y0]==="function")return Z[y0](K);if(K!==null&&typeof K==="object"&&typeof K[y0]==="function")return K[y0](Z);if(Z!==null&&typeof Z==="object"&&typeof Z.Equals==="function")return Z.Equals(K);if(K!==null&&typeof K==="object"&&typeof K.Equals==="function")return K.Equals(Z);if(Z===K)return!0;if((Z===null||Z===void 0)&&(K===null||K===void 0))return!0;if(Z===null||Z===void 0||K===null||K===void 0)return!1;if(typeof Z!==typeof K)return!1;if(typeof Z!=="object")return!1;if(Array.isArray(Z)&&Array.isArray(K)){if(Z.length!==K.length)return!1;return Z.every((Y,J)=>h0(Y,K[J]))}if(Array.isArray(Z)!==Array.isArray(K))return!1;let X=Object.keys(Z),H=Object.keys(K);if(X.length!==H.length)return!1;return X.every((Y)=>h0(Z[Y],K[Y]))}function s1(Z,K){return!h0(Z,K)}function $0(Z){return Z!==null&&typeof Z==="object"&&Z.$error===!0}function H0(Z,K){let X={$error:!0,message:Z,...K};if(n.debug&&J0.length>0){let H=K?.path?[...J0,K.path]:[...J0];X.stack=H}return X}function d6(Z,K){if(Z.length===0)return H0("Unknown error");if(Z.length===1)return Z[0];let X=Z.map((Y)=>{if(Y.path){let J=Y.path.split(".");return J[J.length-1]}return"unknown"}).join(", "),H=`Multiple parameter errors in ${K||"function"}: ${X}`;return H0(H,{path:K,errors:Z})}function B0(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";let K=typeof Z;if(K!=="object")return K;let X=Z.constructor?.name;if(X&&X!=="Object")return X;return"object"}function a1(Z,K){if(Z===null||Z===void 0)return!1;if(typeof Z!=="object"&&typeof Z!=="function")return!1;let X=Z;while(X!==null){if(X.constructor?.name===K)return!0;X=Object.getPrototypeOf(X)}return!1}function A0(Z,K,X){if($0(Z))return Z;if(typeof K==="object"&&K!==null&&"check"in K){if(K.check(Z))return null;return H0(`Expected ${K.description} but got ${B0(Z)}`,{path:X,expected:K.description,actual:B0(Z)})}let H=B0(Z);if(K==="any")return null;if(K===H)return null;if(K==="number"&&H==="number")return null;if(K==="integer"&&H==="number"&&Number.isInteger(Z))return null;if(K==="non-negative-integer"&&H==="number"&&Number.isInteger(Z)&&Z>=0)return null;if(K==="object"&&H==="object")return null;return H0(`Expected ${K} but got ${H}`,{path:X,expected:K,actual:H})}function u6(Z,K,X){for(let[H,Y]of Object.entries(K.params)){let J=Z[H];if($0(J))return J;if(Y.required&&J===void 0){let Q=typeof Y.type==="string"?Y.type:Y.type.description;return H0(`Missing required parameter '${H}'`,{path:X?`${X}.${H}`:H,expected:Q,actual:"undefined",loc:Y.loc})}if(J===void 0)continue;let $=A0(J,Y.type,X?`${X}.${H}`:H);if($){if(Y.loc)$.loc=Y.loc;return $}}return null}function i6(Z,K){if(Z.__tjs=K,!(!K.polymorphic&&(K.safe||K.safeReturn||n.safety!=="none"&&!K.unsafe||K.returns&&n.safety==="all"&&!K.unsafeReturn)))return Z;let H=!!K.returns,Y=!!K.unsafe,J=!!K.safe,$=!!K.unsafeReturn,Q=!!K.safeReturn,z=K.returns?.defaults,G=Object.entries(K.params),U=G.length,F=Z.name||K.name||"anonymous",W=function(...q){if(M0>0)return Z.apply(this,q);let w=J||!Y&&n.safety!=="none",L=H&&(Q||!$&&n.safety==="all");if(!w&&!L)return Z.apply(this,q);if(q.length>0&&$0(q[0]))return q[0];if(w){let I=q.length===1&&typeof q[0]==="object"&&q[0]!==null&&!Array.isArray(q[0]),D=[];if(!I)for(let B=0;B<U;B++){let[A,R]=G[B],j=q[B];if($0(j)){D.push(j);continue}if(R.required&&j===void 0){D.push(H0(`Missing required parameter '${A}'`,{path:`${F}.${A}`,expected:typeof R.type==="string"?R.type:R.type?.description||"value",actual:"undefined",loc:R.loc}));continue}if(j!==void 0){let M=A0(j,R.type,`${F}.${A}`);if(M){if(R.loc)M.loc=R.loc;D.push(M)}}}else{let B=q[0];for(let A=0;A<U;A++){let[R,j]=G[A],M=B[R];if($0(M)){D.push(M);continue}if(j.required&&M===void 0){D.push(H0(`Missing required parameter '${R}'`,{path:`${F}.${R}`,expected:typeof j.type==="string"?j.type:j.type?.description||"value",actual:"undefined",loc:j.loc}));continue}if(M!==void 0){let V=A0(M,j.type,`${F}.${R}`);if(V){if(j.loc)V.loc=j.loc;D.push(V)}}}}if(D.length>0)return d6(D,F)}c1(F);try{let I=Z.apply(this,q);if(L&&K.returns&&!$0(I)){let D=z&&typeof I==="object"&&I!==null?Object.assign({},z,I):I,B=A0(D,K.returns.type,`${F}()`);if(B)return K6(),B}return K6(),I}catch(I){return K6(),H0(I.message||String(I),{path:F,cause:I})}};return Object.defineProperty(W,"name",{value:Z.name}),W.__tjs=K,W}function t1(Z){let K=new Proxy(Z,{construct(X,H,Y){return Reflect.construct(X,H,Y)},apply(X,H,Y){return Reflect.construct(X,Y)}});Object.defineProperty(K,"name",{value:Z.name});for(let X of Object.getOwnPropertyNames(Z))if(X!=="length"&&X!=="name"&&X!=="prototype")Object.defineProperty(K,X,Object.getOwnPropertyDescriptor(Z,X));return K}function yZ(){let Z={...n},K=[],X=0;function H(D){Z={...Z,...D}}function Y(){return{...Z}}function J(D){if(Z.debug&&D){K.push(D);let B=Z.maxStackSize??100;while(K.length>B)K.shift()}}function $(){if(Z.debug)K.pop()}function Q(){return[...K]}function z(){Z={...l6},K.length=0,X=0}function G(){X++}function U(){if(X>0)X--}function F(){return X>0}let W=new Map;function q(D,B,A){if(!W.has(D))W.set(D,new Map);W.get(D).set(B,A)}function w(D,B){let A=typeof D,R;if(D===null||D===void 0)return;if(A==="string")R="String";else if(A==="number")R="Number";else if(A==="boolean")R="Boolean";else if(Array.isArray(D))R="Array";else if(A==="object")R=D.constructor?.name||"Object";else return;let j=R;while(j){let V=W.get(j);if(V?.has(B))return V.get(B);if(A==="object"&&!Array.isArray(D)){if(j=Object.getPrototypeOf(j===R?D:Object.getPrototypeOf(D))?.constructor?.name,j==="Object"||j===R)break}else break}let M=W.get("Object");if(M?.has(B))return M.get(B);return}function L(D,B,A){let R=A===null?"null":typeof A,j=Z.debug?Q():void 0;return new R0(`Expected ${B} for '${D}', got ${R}`,D,B,R,j)}function I(D,B){let A={$error:!0,message:D,...B};if(Z.debug&&K.length>0){let R=B?.path?[...K,B.path]:[...K];A.stack=R}return A}return{version:Y0,MonadicError:R0,typeError:L,isMonadicError:n1,isError:$0,error:I,composeErrors:d6,typeOf:B0,isNativeType:a1,checkType:A0,validateArgs:u6,wrap:i6,wrapClass:t1,compareVersions:x6,versionsCompatible:m6,configure:H,getConfig:Y,pushStack:J,popStack:$,getStack:Q,resetRuntime:z,enterUnsafe:G,exitUnsafe:U,isUnsafeMode:F,validate:p1,infer:H6.infer.bind(H6),Type:h,isRuntimeType:w0,Union:v6,Generic:f0,Enum:h6,Nullable:S6,Optional:g6,TArray:b6,TString:j6,TNumber:P6,TBoolean:V6,TInteger:C6,TPositiveInt:N6,TNonEmptyString:E6,TEmail:O6,TUrl:T6,TUuid:k6,TPair:f6,TRecord:y6,Is:h0,IsNot:s1,tjsEquals:y0,registerExtension:q,resolveExtension:w}}var D0={version:Y0,MonadicError:R0,typeError:TZ,isMonadicError:n1,isError:$0,error:H0,composeErrors:d6,typeOf:B0,isNativeType:a1,checkType:A0,validateArgs:u6,wrap:i6,wrapClass:t1,compareVersions:x6,versionsCompatible:m6,configure:vZ,getConfig:bZ,pushStack:c1,popStack:K6,getStack:o1,resetRuntime:fZ,enterUnsafe:kZ,exitUnsafe:SZ,isUnsafeMode:gZ,createRuntime:yZ,validate:p1,infer:H6.infer.bind(H6),Type:h,isRuntimeType:w0,Union:v6,Generic:f0,Enum:h6,Nullable:S6,Optional:g6,TArray:b6,TString:j6,TNumber:P6,TBoolean:V6,TInteger:C6,TPositiveInt:N6,TNonEmptyString:E6,TEmail:O6,TUrl:T6,TUuid:k6,Timestamp:d1,LegalDate:u1,TPair:f6,TRecord:y6,Is:h0,IsNot:s1};function hZ(){let Z=globalThis;if(Z.__tjs){let K=Z.__tjs.version;if(typeof K!=="string")return Z.__tjs=D0,D0;let X=x6(Y0,K);if(X===0)return Z.__tjs;if(m6(Y0,K))if(X>0)console.info(`TJS runtime: upgrading ${K} → ${Y0}`),Z.__tjs=D0;else console.info(`TJS runtime: keeping ${K} (newer than ${Y0})`);else if(console.warn(`TJS runtime version conflict: ${K} vs ${Y0} (major version mismatch)`),X>0)console.warn(`Upgrading to ${Y0} - check for breaking changes`),Z.__tjs=D0;return Z.__tjs}return Z.__tjs=D0,D0}function xZ(Z){return`
|
|
344
|
-
// TJS runtime wrapper (skips unsafe functions)
|
|
345
|
-
if (typeof ${Z}.__tjs === 'object' && !${Z}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
|
|
346
|
-
${Z} = globalThis.__tjs.wrap(${Z}, ${Z}.__tjs)
|
|
347
|
-
}
|
|
348
|
-
`.trim()}export{i6 as wrap,u6 as validateArgs,G6 as typeToString,B0 as typeOf,a0 as transpileToJS,r0 as transpile,W6 as transformFunction,LZ as tjs,b8 as testUtils,D0 as runtime,n0 as preprocess,R1 as parseReturnType,Q0 as parseParameter,W0 as parse,jZ as lint,$0 as isError,hZ as installRuntime,o as inferTypeFromValue,RZ as getToolDefinitions,F6 as extractTests,N0 as extractTDoc,X0 as extractLiteralValue,P1 as expectFunction,H0 as error,xZ as emitRuntimeWrapper,AZ as createAgent,A0 as checkType,j1 as assertFunction,DZ as ajs,Y0 as TJS_VERSION,IZ as Schema};
|
|
349
|
-
|
|
350
|
-
//# debugId=F3DB92A52524CC1864756E2164756E21
|
|
3
|
+
//# debugId=56EF8E8DAE2C7C2A64756E2164756E21
|