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.
@@ -1,350 +1,3 @@
1
- var Y8=(Z,K)=>()=>(K||Z((K={exports:{}}).exports,K),K.exports);var i1=Y8((O4,EZ)=>{EZ.exports={name:"tjs-lang",version:"0.5.4",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",exports:{".":{bun:"./src/index.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang":{bun:"./src/lang/index.ts",default:"./dist/lang/index.js"},"./lang/eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",default:"./dist/lang/emitters/from-ts.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-javascript":"^6.2.4","@codemirror/state":"^6.5.3","@codemirror/view":"^6.39.9","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",eslint:"^8.57.1","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.2.0","tosijs-ui":"^1.2.0",typescript:"^5.6.2",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"firebase deploy --only hosting",deploy:"npm run build:demo && npm run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-markdown":"^6.5.0","@codemirror/theme-one-dark":"^6.1.3",acorn:"^8.15.0",firebase:"^10.12.0","tosijs-schema":"^1.2.0"}}});import*as D1 from"acorn";class b extends Error{line;column;source;filename;constructor(Z,K,X,H){let Y=`${H||"<source>"}:${K.line}:${K.column}`;super(`${Z} at ${Y}`);this.name="TranspileError",this.line=K.line,this.column=K.column,this.source=X,this.filename=H}}class p extends b{constructor(Z,K,X,H){super(Z,K,X,H);this.name="SyntaxError"}formatWithContext(Z=2){if(!this.source)return this.message;let K=this.source.split(`
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
- `).trim();let F=v8(K,X);return{code:$,tests:K,mocks:X,testRunner:F}}function M1(Z,K){let X=0,H=null,Y=!1;for(let J=K;J<Z.length;J++){let $=Z[J];if(Y){Y=!1;continue}if($==="\\"){Y=!0;continue}if(!H&&($==='"'||$==="'"||$==="`")){H=$;continue}if(H===$){H=null;continue}if(H)continue;if($==="{")X++;if($==="}"){if(X--,X===0)return J}}return-1}function _6(Z,K){return Z.slice(0,K).split(`
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