tjs-lang 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +1 -1
- package/demo/docs.json +9 -9
- package/demo/src/demo-nav.ts +51 -136
- package/demo/src/index.ts +35 -68
- package/demo/src/ts-playground.ts +18 -8
- package/dist/index.js +126 -112
- package/dist/index.js.map +11 -11
- package/dist/src/lang/emitters/js.d.ts +2 -2
- package/dist/src/lang/inference.d.ts +2 -2
- package/dist/src/test-examples.d.ts +41 -0
- package/dist/tjs-full.js +126 -112
- package/dist/tjs-full.js.map +11 -11
- package/dist/tjs-transpiler.js +102 -88
- package/dist/tjs-transpiler.js.map +8 -8
- package/dist/tjs-vm.js +18 -18
- package/dist/tjs-vm.js.map +5 -5
- package/package.json +1 -1
- package/src/lang/codegen.test.ts +76 -16
- package/src/lang/emitters/from-ts.ts +8 -28
- package/src/lang/emitters/js.ts +97 -7
- package/src/lang/eval.ts +41 -2
- package/src/lang/from-ts.test.ts +3 -3
- package/src/lang/inference.ts +34 -20
- package/src/lang/parser.test.ts +4 -4
- package/src/lang/transpiler.test.ts +5 -3
- package/src/lang/typescript-syntax.test.ts +20 -17
- package/src/runtime.test.ts +144 -13
- package/src/test-examples.test.ts +4 -12
- package/src/test-examples.ts +3 -1
- package/src/vm/runtime.ts +19 -0
package/dist/tjs-transpiler.js
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
var
|
|
2
|
-
`),
|
|
3
|
-
`)}}function
|
|
4
|
-
`)$="normal";H++;continue;case"block-comment":if(
|
|
5
|
-
`){Y=!1,
|
|
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(!
|
|
7
|
-
`)}function
|
|
8
|
-
`)H="normal";
|
|
9
|
-
`,$);if(Q===-1)Q=
|
|
10
|
-
`||
|
|
11
|
-
`),
|
|
12
|
-
${
|
|
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
13
|
${$}}
|
|
14
|
-
`;else
|
|
15
|
-
${
|
|
14
|
+
`;else D=`${$}Object.assign(__ext_${Q}, {
|
|
15
|
+
${I}
|
|
16
16
|
${$}})
|
|
17
|
-
`;for(let
|
|
18
|
-
`;
|
|
19
|
-
`)
|
|
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==="{")
|
|
21
|
-
${
|
|
22
|
-
${
|
|
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
23
|
`)}
|
|
24
|
-
return __tjs.typeError('${
|
|
24
|
+
return __tjs.typeError('${F}', 'no matching overload', __args)
|
|
25
25
|
}
|
|
26
|
-
`;
|
|
27
|
-
${
|
|
28
|
-
`.repeat(
|
|
29
|
-
`)
|
|
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
30
|
function ${z}$ctor$${C.index}(${C.paramStr}) {`,R+=`
|
|
31
31
|
const __obj = Object.create(${z}.prototype)`,R+=`
|
|
32
32
|
;(function() {${C.bodyText}}).call(__obj)`,R+=`
|
|
33
33
|
return __obj`,R+=`
|
|
34
34
|
}
|
|
35
|
-
`}let
|
|
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
36
|
function ${z}$dispatch(t, a) {
|
|
37
|
-
`,R+=
|
|
37
|
+
`,R+=j.join(`
|
|
38
38
|
`)+`
|
|
39
39
|
`,R+=` return __tjs.typeError('${z}', 'no matching constructor', a)
|
|
40
40
|
`,R+=`}
|
|
41
|
-
`,$=$.slice(0,
|
|
42
|
-
`),w=
|
|
43
|
-
`);return Z.description=W.trim(),Z}}let J=H.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!J)return Z;let $=J[0],Q=$.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);if(Q)Z.description=Q[1].trim();let z=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,G;while((G=z.exec($))!==null)Z.params[G[1]]=G[2].trim();return Z}import{parseExpressionAt as $8}from"acorn";function p(X){switch(X.type){case"Literal":{let K=X.value;if(K===null)return{kind:"null"};if(typeof K==="string")return{kind:"string"};if(typeof K==="number"){let Z=X.raw;if(Z&&Z.includes("."))return{kind:"number"};return{kind:"integer"}}if(typeof K==="boolean")return{kind:"boolean"};return{kind:"any"}}case"ArrayExpression":{let K=X.elements;if(K.length===0)return{kind:"array",items:{kind:"any"}};return{kind:"array",items:p(K[0])}}case"ObjectExpression":{let K=X.properties,Z={};for(let H of K)if(H.type==="Property"&&H.key.type==="Identifier"){let Y=H.key.name;Z[Y]=p(H.value)}return{kind:"object",shape:Z}}case"LogicalExpression":{let{operator:K,left:Z,right:H}=X;if(K==="||"){let Y=p(Z),J=p(H);if(J.kind==="null")return{...Y,nullable:!0};if(Y.kind==="null")return{...J,nullable:!0};return{kind:"union",members:[Y,J]}}if(K==="&&")return p(H);if(K==="??")return p(H);return{kind:"any"}}case"Identifier":{if(X.name==="undefined")return{kind:"undefined"};return{kind:"any"}}case"UnaryExpression":{let{operator:K,argument:Z}=X;if(K==="+"&&Z.type==="Literal"){if(typeof Z.value==="number")return{kind:"non-negative-integer"}}if(K==="-"&&Z.type==="Literal"){if(typeof Z.value==="number"){let Y=Z.raw;if(Y&&Y.includes("."))return{kind:"number"};return{kind:"integer"}}}return{kind:"any"}}default:return{kind:"any"}}}function Z0(X,K){if(X.type==="Identifier")return{name:X.name,type:{kind:"any"},required:!0};if(X.type==="AssignmentPattern"){let{left:Z,right:H}=X;if(Z.type!=="Identifier")throw new v("Only simple parameter names are supported",b(X));let Y=Z.name,J=K?.has(Y)??!1,$=p(H),Q=t(H);return{name:Y,type:$,required:J,default:J?null:Q,example:Q,loc:{start:X.start,end:X.end}}}if(X.type==="ObjectPattern"){let Z=X.properties,H={},Y={};for(let J of Z)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=Z0(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 v(`Unsupported parameter pattern: ${X.type}`,b(X))}function t(X){switch(X.type){case"Literal":return X.value;case"ArrayExpression":return X.elements.map((K)=>K?t(K):null);case"ObjectExpression":{let K={};for(let Z of X.properties)if(Z.type==="Property"&&Z.key.type==="Identifier")K[Z.key.name]=t(Z.value);return K}case"UnaryExpression":if(X.operator==="-"){let K=t(X.argument);return typeof K==="number"?-K:void 0}if(X.operator==="+"){let K=t(X.argument);return typeof K==="number"?+K:void 0}return;case"LogicalExpression":{let{operator:K,left:Z,right:H}=X;if(K==="&&"){if(Z.type==="Literal"&&Z.value===null)return null}if(K==="||")return t(Z)??t(H);if(K==="??")return t(Z)??t(H);return}default:return}}function F1(X){try{let K=$8(X,0,{ecmaVersion:2022});return p(K)}catch{return{kind:"any"}}}function Q6(X){switch(X.kind){case"string":return X.nullable?"string | null":"string";case"number":return X.nullable?"number | null":"number";case"integer":return X.nullable?"integer | null":"integer";case"non-negative-integer":return X.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return X.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let K=X.items?Q6(X.items):"any";return X.nullable?`${K}[] | null`:`${K}[]`}case"object":{if(!X.shape||Object.keys(X.shape).length===0)return X.nullable?"object | null":"object";let K=Object.entries(X.shape).map(([Z,H])=>`${Z}: ${Q6(H)}`).join(", ");return X.nullable?`{ ${K} } | null`:`{ ${K} }`}case"union":return X.members?.map(Q6).join(" | ")||"any";default:return"any"}}function p0(X){switch(X.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:X.items?p0(X.items):{}};case"object":if(X.shape){let K={};for(let[Z,H]of Object.entries(X.shape))K[Z]=p0(H);return{type:"object",properties:K,additionalProperties:!1}}return{type:"object"};case"union":if(X.members)return{oneOf:X.members.map(p0)};return{};default:return{}}}function J8(X){let K={},Z=[];for(let[H,Y]of Object.entries(X))if(K[H]=p0(Y.type),Y.required)Z.push(H);return{type:"object",properties:K,required:Z.length>0?Z:void 0,additionalProperties:!1}}function z6(X,K,Z,H={},Y){let J=P0(K,X),$=new Map;for(let L of X.params){let A=Z0(L,Y);if(A.name==="__destructured__"&&A.type.kind==="object"&&A.type.destructuredParams)for(let[I,q]of Object.entries(A.type.destructuredParams))$.set(I,{...q,description:J.params[I]});else A.description=J.params[A.name],$.set(A.name,A)}let Q;if(Z)Q=F1(Z);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=s(X.body,z),F=[],U=[],W=[];for(let[L,A]of $.entries())if(A.required)U.push(L);else if(A.default!==void 0)W.push({name:L,defaultValue:A.default});else U.push(L);if(U.length>0)F.push({op:"varsImport",keys:U});for(let{name:L,defaultValue:A}of W)F.push({op:"varsImport",keys:[L]}),F.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:L},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:L,value:A}]});F.push(...G);let D=Object.fromEntries($),w={name:X.id?.name||"anonymous",description:J.description,parameters:D,returns:Q},B=J8(D);return{ast:{op:"seq",steps:F,inputSchema:B},signature:w,warnings:z.warnings}}function s(X,K){let Z=[];for(let H of X.body){let Y=V0(H,K);if(Y)if(Array.isArray(Y))Z.push(...Y);else Z.push(Y)}return Z}function V0(X,K){switch(X.type){case"VariableDeclaration":return Q8(X,K);case"ExpressionStatement":return z8(X,K);case"IfStatement":return W8(X,K);case"WhileStatement":return _8(X,K);case"ForOfStatement":return F8(X,K);case"TryStatement":return U8(X,K);case"ReturnStatement":return D8(X,K);case"ThrowStatement":throw new v("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",b(X),K.source,K.filename);case"BlockStatement":return{op:"scope",steps:s(X,i(K))};case"EmptyStatement":return null;default:throw new v(`Unsupported statement type: ${X.type}`,b(X),K.source,K.filename)}}function Q8(X,K){let Z=[],H=X.kind==="const",Y=H?"constSet":"varSet";for(let J of X.declarations){if(J.id.type!=="Identifier")throw new v("Only simple variable names are supported",b(J),K.source,K.filename);let $=J.id.name;if(J.init){let{step:Q,resultVar:z}=$0(J.init,K,$,H);if(Q)Z.push(Q);else if(z!==$)Z.push({op:Y,key:$,value:z});let G=p(J.init);K.locals.set($,G)}else{if(H)throw new v("const declarations must be initialized",b(J),K.source,K.filename);Z.push({op:"varSet",key:$,value:null}),K.locals.set($,{kind:"any",nullable:!0})}}return Z}function z8(X,K){let Z=X.expression;if(Z.type==="AssignmentExpression")return G8(Z,K);if(Z.type==="CallExpression"){let{step:H,resultVar:Y}=$0(Z,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:b(X).line,column:b(X).column}),null}function G8(X,K){if(X.left.type!=="Identifier")throw new v("Only simple variable assignment is supported",b(X),K.source,K.filename);let Z=X.left.name,{step:H,resultVar:Y}=$0(X.right,K,Z);if(H)return H;return{op:"varSet",key:Z,value:Y}}function W8(X,K){let Z=g(X.test,K),H=X.consequent.type==="BlockStatement"?s(X.consequent,i(K)):[V0(X.consequent,K)].filter(Boolean),Y;if(X.alternate)Y=X.alternate.type==="BlockStatement"?s(X.alternate,i(K)):[V0(X.alternate,K)].filter(Boolean);return{op:"if",condition:Z,then:H,...Y&&{else:Y}}}function _8(X,K){let Z=g(X.test,K),H=X.body.type==="BlockStatement"?s(X.body,i(K)):[V0(X.body,K)].filter(Boolean);return{op:"while",condition:Z,body:H}}function F8(X,K){let Z;if(X.left.type==="VariableDeclaration"){let $=X.left.declarations[0];if($.id.type!=="Identifier")throw new v("Only simple variable names are supported in for...of",b(X.left),K.source,K.filename);Z=$.id.name}else if(X.left.type==="Identifier")Z=X.left.name;else throw new v("Unsupported for...of left-hand side",b(X.left),K.source,K.filename);let H=h(X.right,K),Y=i(K);Y.locals.set(Z,{kind:"any"});let J=X.body.type==="BlockStatement"?s(X.body,Y):[V0(X.body,Y)].filter(Boolean);return{op:"map",items:H,as:Z,steps:J}}function U8(X,K){let Z=s(X.block,i(K)),H,Y;if(X.handler){let J=i(K);if(X.handler.param?.type==="Identifier")Y=X.handler.param.name,J.locals.set(Y,{kind:"any"});H=s(X.handler.body,J)}return{op:"try",try:Z,...H&&{catch:H},...Y&&{catchParam:Y}}}function D8(X,K){if(!X.argument)return{op:"return",value:{}};let{step:Z,resultVar:H}=$0(X.argument,K,"__returnVal__");if(Z)return[Z,{op:"return",value:H}];return{op:"return",value:h(X.argument,K)}}var D1=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),q8=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),C0=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),w8=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 A8(X){if(X.callee.type==="Identifier"){let K=X.callee.name;return q8.has(K)||C0.has(K)}if(X.callee.type==="MemberExpression"){let K=X.callee;if(K.object.type==="Identifier"){let Z=K.object.name;if(D1.has(Z)||C0.has(Z))return!0}if(K.property.type==="Identifier"){let Z=K.property.name;if(w8.has(Z))return!0}}return!1}function R8(X){if(X.object.type==="Identifier"){let K=X.object.name;return D1.has(K)||C0.has(K)}return!1}var U1={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 I8(X){if(X.callee.type==="Identifier"){let K=X.callee.name;if(C0.has(K))return U1[K]||`${K} is not available in AsyncJS.`}if(X.callee.type==="MemberExpression"){let K=X.callee;if(K.object.type==="Identifier"){let Z=K.object.name;if(C0.has(Z))return U1[Z]||`${Z} is not available in AsyncJS.`}}return null}function q1(X){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."}[X]||" Use factory functions or object literals instead."}function $0(X,K,Z,H){let Y=H?"constSet":"varSet";if(X.type==="ChainExpression")return $0(X.expression,K,Z,H);if(X.type==="NewExpression"){let $=X,Q="constructor";if($.callee.type==="Identifier")Q=$.callee.name;let z=q1(Q);throw new v(`The 'new' keyword is not supported in AsyncJS.${z}`,b(X),K.source,K.filename)}if(X.type==="CallExpression"){let $=I8(X);if($)throw new v($,b(X),K.source,K.filename)}if(X.type==="CallExpression"&&A8(X)){let $=g(X,K);if(Z)return{step:{op:Y,key:Z,value:$},resultVar:Z};return{step:null,resultVar:$}}if(X.type==="MemberExpression"&&R8(X)){let $=g(X,K);if(Z)return{step:{op:Y,key:Z,value:$},resultVar:Z};return{step:null,resultVar:$}}if(X.type==="CallExpression")return L8(X,K,Z,H);if(X.type==="TemplateLiteral")return M8(X,K,Z,H);if(X.type==="BinaryExpression"||X.type==="LogicalExpression"||X.type==="UnaryExpression"){let $=g(X,K);if(Z)return{step:{op:Y,key:Z,value:$},resultVar:Z};return{step:null,resultVar:$}}return{step:null,resultVar:h(X,K)}}function L8(X,K,Z,H){let Y,J=!1,$;if(X.callee.type==="Identifier")Y=X.callee.name;else if(X.callee.type==="MemberExpression"){let z=X.callee;if(z.property.type==="Identifier")Y=z.property.name,J=!0,$=h(z.object,K);else throw new v("Computed method names are not supported",b(X),K.source,K.filename)}else throw new v("Only named function calls are supported",b(X),K.source,K.filename);if(J)return B8(Y,$,X.arguments,K,Z,H);if(Y==="console"&&X.callee.type==="MemberExpression");let Q=j8(X,K);return{step:{op:Y,...Q,...Z&&{result:Z},...Z&&H&&{resultConst:!0}},resultVar:Z}}function B8(X,K,Z,H,Y,J){switch(X){case"map":if(Z.length>0&&(Z[0].type==="ArrowFunctionExpression"||Z[0].type==="FunctionExpression")){let $=Z[0],Q=$.params[0],z=Q?.type==="Identifier"?Q.name:"item",G=i(H);G.locals.set(z,{kind:"any"});let F;if($.body.type==="BlockStatement")F=s($.body,G);else{let{step:U,resultVar:W}=$0($.body,G,"result");F=U?[U]:[{op:"varSet",key:"result",value:W}]}return{step:{op:"map",items:K,as:z,steps:F,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}break;case"filter":if(Z.length>0&&(Z[0].type==="ArrowFunctionExpression"||Z[0].type==="FunctionExpression")){let $=Z[0],Q=$.params[0],z=Q?.type==="Identifier"?Q.name:"item",G=i(H);G.locals.set(z,{kind:"any"});let F;if($.body.type==="BlockStatement")throw new v("filter callback must be an expression, not a block",b(Z[0]),H.source,H.filename);else F=g($.body,G);return{step:{op:"filter",items:K,as:z,condition:F,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}break;case"find":if(Z.length>0&&(Z[0].type==="ArrowFunctionExpression"||Z[0].type==="FunctionExpression")){let $=Z[0],Q=$.params[0],z=Q?.type==="Identifier"?Q.name:"item",G=i(H);G.locals.set(z,{kind:"any"});let F;if($.body.type==="BlockStatement")throw new v("find callback must be an expression, not a block",b(Z[0]),H.source,H.filename);else F=g($.body,G);return{step:{op:"find",items:K,as:z,condition:F,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}break;case"reduce":if(Z.length>=2&&(Z[0].type==="ArrowFunctionExpression"||Z[0].type==="FunctionExpression")){let $=Z[0],Q=$.params[0],z=$.params[1],G=Q?.type==="Identifier"?Q.name:"acc",F=z?.type==="Identifier"?z.name:"item",U=i(H);U.locals.set(G,{kind:"any"}),U.locals.set(F,{kind:"any"});let W;if($.body.type==="BlockStatement")W=s($.body,U);else{let{step:w,resultVar:B}=$0($.body,U,"result");W=w?[w]:[{op:"varSet",key:"result",value:B}]}let D=h(Z[1],H);return{step:{op:"reduce",items:K,as:F,accumulator:G,initial:D,steps:W,...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}break;case"slice":break;case"push":return{step:{op:"push",list:K,item:h(Z[0],H),...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y};case"join":return{step:{op:"join",list:K,sep:Z.length>0?h(Z[0],H):"",...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y};case"split":return{step:{op:"split",str:K,sep:Z.length>0?h(Z[0],H):"",...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}return H.warnings.push({message:`Unknown method '${X}' - treating as atom call`,line:0,column:0}),{step:{op:X,receiver:K,args:Z.map(($)=>h($,H)),...Y&&{result:Y},...Y&&J&&{resultConst:!0}},resultVar:Y}}function M8(X,K,Z,H){let Y="",J={};for(let $=0;$<X.quasis.length;$++)if(Y+=X.quasis[$].value.cooked||X.quasis[$].value.raw,$<X.expressions.length){let Q=X.expressions[$],z=`_${$}`;J[z]=h(Q,K),Y+=`{{${z}}}`}return{step:{op:"template",tmpl:Y,vars:J,...Z&&{result:Z},...Z&&H&&{resultConst:!0}},resultVar:Z}}function g(X,K){switch(X.type){case"Literal":return{$expr:"literal",value:X.value};case"Identifier":return{$expr:"ident",name:X.name};case"MemberExpression":{let Z=X,H=g(Z.object,K),Y=Z.optional===!0;if(Z.computed){let $=Z.property;if($.type==="Literal")return{$expr:"member",object:H,property:String($.value),computed:!0,...Y&&{optional:!0}};throw new v("Computed member access with variables not yet supported",b(X),K.source,K.filename)}let J=Z.property.name;return{$expr:"member",object:H,property:J,...Y&&{optional:!0}}}case"ChainExpression":return g(X.expression,K);case"BinaryExpression":{let Z=X;return{$expr:"binary",op:Z.operator,left:g(Z.left,K),right:g(Z.right,K)}}case"LogicalExpression":{let Z=X;return{$expr:"logical",op:Z.operator,left:g(Z.left,K),right:g(Z.right,K)}}case"UnaryExpression":{let Z=X;return{$expr:"unary",op:Z.operator,argument:g(Z.argument,K)}}case"ConditionalExpression":{let Z=X;return{$expr:"conditional",test:g(Z.test,K),consequent:g(Z.consequent,K),alternate:g(Z.alternate,K)}}case"ArrayExpression":return{$expr:"array",elements:X.elements.filter((H)=>H!==null).map((H)=>g(H,K))};case"ObjectExpression":{let Z=X,H=[];for(let Y of Z.properties)if(Y.type==="Property"){let J=Y.key.type==="Identifier"?Y.key.name:String(Y.key.value);H.push({key:J,value:g(Y.value,K)})}return{$expr:"object",properties:H}}case"CallExpression":{let Z=X;if(Z.callee.type==="MemberExpression"){let H=Z.callee,Y=H.property.type==="Identifier"?H.property.name:String(H.property.value),J=H.optional===!0||Z.optional===!0;return{$expr:"methodCall",object:g(H.object,K),method:Y,arguments:Z.arguments.map(($)=>g($,K)),...J&&{optional:!0}}}if(Z.callee.type==="Identifier")return{$expr:"call",callee:Z.callee.name,arguments:Z.arguments.map((Y)=>g(Y,K))};throw new v("Complex function calls in expressions should be lifted to statements",b(X),K.source,K.filename)}case"NewExpression":{let Z=X,H="constructor";if(Z.callee.type==="Identifier")H=Z.callee.name;let Y=q1(H);throw new v(`The 'new' keyword is not supported in AsyncJS.${Y}`,b(X),K.source,K.filename)}case"TemplateLiteral":throw new v("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",b(X),K.source,K.filename);default:throw new v(`Unsupported expression type in condition: ${X.type}`,b(X),K.source,K.filename)}}function h(X,K){switch(X.type){case"Literal":return X.value;case"Identifier":return X.name;case"MemberExpression":{let Z=X;if(Z.optional===!0)return g(X,K);let Y=h(Z.object,K);if(Y&&typeof Y==="object"&&Y.$expr){let $=Z.computed?String(Z.property.value):Z.property.name;return{$expr:"member",object:Y,property:$,...Z.computed&&{computed:!0}}}if(Z.computed)return`${Y}[${h(Z.property,K)}]`;let J=Z.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 h(X.expression,K);case"ArrayExpression":return X.elements.map((Z)=>Z?h(Z,K):null);case"ObjectExpression":{let Z={};for(let H of X.properties)if(H.type==="Property"){let Y=H.key.type==="Identifier"?H.key.name:String(H.key.value);Z[Y]=h(H.value,K)}return Z}case"TemplateLiteral":return g(X,K);case"CallExpression":return g(X,K);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return g(X,K);default:return null}}function j8(X,K){if(X.arguments.length===1&&X.arguments[0].type==="ObjectExpression"){let Z=X.arguments[0],H={};for(let Y of Z.properties)if(Y.type==="Property"){let J=Y.key.type==="Identifier"?Y.key.name:String(Y.key.value);H[J]=h(Y.value,K)}return H}return{args:X.arguments.map((Z)=>h(Z,K))}}import{parseExpressionAt as t8}from"acorn";function P8(X,K){let Z=K;while(Z>0&&X[Z-1]!==`
|
|
44
|
-
`)
|
|
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,`
|
|
45
45
|
|
|
46
|
-
`).trim();let
|
|
47
|
-
`).length}function
|
|
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
48
|
`);return`(async () => {
|
|
49
49
|
const __results = []
|
|
50
50
|
|
|
51
|
-
${
|
|
51
|
+
${Z.map((Y,J)=>`
|
|
52
52
|
// Test ${J+1}: ${Y.description}
|
|
53
53
|
try {
|
|
54
|
-
${
|
|
54
|
+
${X}
|
|
55
55
|
await (async () => {
|
|
56
56
|
${Y.body}
|
|
57
57
|
})()
|
|
@@ -67,13 +67,13 @@ const __failed = __results.filter(r => !r.passed).length
|
|
|
67
67
|
|
|
68
68
|
// Return summary
|
|
69
69
|
return { passed: __passed, failed: __failed, results: __results }
|
|
70
|
-
})()`.trim()}var
|
|
70
|
+
})()`.trim()}var j1=`
|
|
71
71
|
function assert(condition, message) {
|
|
72
72
|
if (!condition) {
|
|
73
73
|
throw new Error(message || 'Assertion failed')
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
-
`,
|
|
76
|
+
`,P1=`
|
|
77
77
|
function expect(actual) {
|
|
78
78
|
const deepEqual = (a, b) => {
|
|
79
79
|
if (a === b) return true
|
|
@@ -164,33 +164,33 @@ function expect(actual) {
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
`,
|
|
168
|
-
`+
|
|
169
|
-
`),Q=
|
|
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
170
|
${Y}...`:"";return`{
|
|
171
171
|
${$}${Q}
|
|
172
|
-
${J}}`}return String(
|
|
172
|
+
${J}}`}return String(Z)}function y8(Z){let K=Z.replace(/\/\*[\s\S]*?\*\//g,(X)=>{let H=X.split(`
|
|
173
173
|
`).length-1;return`
|
|
174
|
-
`.repeat(H)});return K=K.replace(/\/\/[^\n]*/g,""),K}function
|
|
175
|
-
`)}function
|
|
176
|
-
`).length;if(z==="-!")continue;let
|
|
177
|
-
`),W=
|
|
178
|
-
// Test ${R}: ${
|
|
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
179
|
try {
|
|
180
|
-
${
|
|
180
|
+
${j}
|
|
181
181
|
__testResults.push({ idx: ${R}, passed: true });
|
|
182
182
|
} catch (e) {
|
|
183
183
|
__testResults.push({ idx: ${R}, passed: false, error: e.message || String(e) });
|
|
184
184
|
}
|
|
185
185
|
`}).join(`
|
|
186
|
-
`),
|
|
187
|
-
// Signature test ${R}: ${
|
|
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
188
|
try {
|
|
189
|
-
let __actual = ${
|
|
190
|
-
const __expected = ${JSON.stringify(
|
|
191
|
-
const __defaults = ${JSON.stringify(
|
|
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
192
|
if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
|
|
193
|
-
const __typeResult = __typeMatches(__actual, __expected, '${
|
|
193
|
+
const __typeResult = __typeMatches(__actual, __expected, '${A.funcName}');
|
|
194
194
|
if (__typeResult.matches) {
|
|
195
195
|
__sigTestResults.push({ idx: ${R}, passed: true });
|
|
196
196
|
} else {
|
|
@@ -200,8 +200,13 @@ ${J}}`}return String(X)}function N8(X){let K=X.replace(/\/\*[\s\S]*?\*\//g,(Z)=>
|
|
|
200
200
|
__sigTestResults.push({ idx: ${R}, passed: false, error: e.message || String(e) });
|
|
201
201
|
}
|
|
202
202
|
`).join(`
|
|
203
|
-
`),
|
|
204
|
-
${
|
|
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
|
+
`}
|
|
205
210
|
const __testResults = [];
|
|
206
211
|
const __sigTestResults = [];
|
|
207
212
|
try {
|
|
@@ -266,71 +271,80 @@ ${J}}`}return String(X)}function N8(X){let K=X.replace(/\/\*[\s\S]*?\*\//g,(Z)=>
|
|
|
266
271
|
}
|
|
267
272
|
|
|
268
273
|
// Inject resolved imports first (they may be dependencies)
|
|
269
|
-
${
|
|
274
|
+
${U}
|
|
270
275
|
|
|
271
276
|
// Execute the module code ONCE
|
|
272
277
|
${G}
|
|
273
|
-
${
|
|
278
|
+
${F}
|
|
274
279
|
|
|
275
280
|
// Run explicit test blocks
|
|
276
281
|
${W}
|
|
277
282
|
|
|
278
283
|
// Run signature tests
|
|
279
|
-
${
|
|
284
|
+
${L}
|
|
280
285
|
|
|
281
286
|
} finally {
|
|
282
287
|
${"globalThis.__tjs = __saved_tjs;"}
|
|
283
288
|
}
|
|
284
289
|
return { testResults: __testResults, sigTestResults: __sigTestResults };
|
|
285
|
-
`;try{let
|
|
286
|
-
`)}var c0={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 h8(X){let K={params:X,locals:new Map,nextLocalIndex:X.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1};return X.forEach((Z,H)=>{K.locals.set(Z.name,{index:H,type:Z.type})}),K}function n0(X,K,Z){if(X.locals.has(K))return X.errors.push(`Duplicate local declaration: ${K}`),X.locals.get(K).index;let H=X.nextLocalIndex++;return X.locals.set(K,{index:H,type:Z}),X.localTypes.push(Z),H}function Q0(X,K){return X.locals.get(K)}function A0(X,K){switch(X.type){case"ExpressionStatement":{let Z=X.expression;return[...y(Z,K),_.drop]}case"ReturnStatement":{let Z=X;if(K.hasReturn=!0,!Z.argument)return[_.return];let H=y(Z.argument,K),Y=x(Z.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 Z=X,H=[];for(let Y of Z.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)$=x(Y.init,K);let Q=n0(K,J,$);if(Y.init)H.push(...y(Y.init,K)),H.push(_.local_set,...S(Q))}return H}case"ForStatement":return x8(X,K);case"IfStatement":return m8(X,K);case"BlockStatement":{let Z=X,H=[];for(let Y of Z.body)H.push(...A0(Y,K));return H}default:return K.errors.push(`Unsupported statement type: ${X.type}`),[]}}function x8(X,K){let Z=[];if(X.init)if(X.init.type==="VariableDeclaration")Z.push(...A0(X.init,K));else Z.push(...y(X.init,K));if(Z.push(_.block,n.void),Z.push(_.loop,n.void),X.test)Z.push(...y(X.test,K)),Z.push(_.i32_eqz),Z.push(_.br_if,1);if(K.loopDepth++,X.body)Z.push(...A0(X.body,K));if(K.loopDepth--,X.update)Z.push(...y(X.update,K)),Z.push(_.drop);return Z.push(_.br,0),Z.push(_.end),Z.push(_.end),Z}function m8(X,K){let Z=[];if(Z.push(...y(X.test,K)),Z.push(_.if,n.void),Z.push(...A0(X.consequent,K)),X.alternate)Z.push(_.else),Z.push(...A0(X.alternate,K));return Z.push(_.end),Z}function x(X,K){switch(X.type){case"Literal":{let Z=X;if(typeof Z.value==="number"){if(Z.raw&&(Z.raw.includes(".")||Z.raw.includes("e")))return"f64";if(Number.isInteger(Z.value)&&Z.value>=-2147483648&&Z.value<=2147483647)return"i32";return"f64"}return"f64"}case"Identifier":return Q0(K,X.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let Z=X;if(["<",">","<=",">=","==","!=","===","!=="].includes(Z.operator))return"i32";if(["|","&","^","<<",">>",">>>"].includes(Z.operator))return"i32";let H=x(Z.left,K),Y=x(Z.right,K);if(H==="f64"||Y==="f64")return"f64";if(H==="f32"||Y==="f32")return"f32";return"i32"}case"UnaryExpression":{let Z=X;if(Z.operator==="!")return"i32";return x(Z.argument,K)}case"MemberExpression":{let Z=X;if(Z.object.type==="Identifier"){if(Q0(K,Z.object.name)){let Y=K.params.find((J)=>J.name===Z.object.name);if(Y?.arrayType){let J=c0[Y.arrayType];if(J)return J.elementType}}}return"f64"}case"CallExpression":{let Z=X;if(Z.callee.type==="MemberExpression"){let H=Z.callee;if(H.object.type==="Identifier"&&H.object.name==="Math")return"f64"}return"f64"}default:return"f64"}}function y(X,K){switch(X.type){case"Literal":{let Z=X;if(typeof Z.value==="number"){let H=x(X,K);if(H==="i32")return[_.i32_const,...k0(Z.value|0)];else if(H==="f32")return[_.f32_const,...b8(Z.value)];else return[_.f64_const,...c(Z.value)]}return K.errors.push(`Unsupported literal type: ${typeof Z.value}`),[_.f64_const,...c(0)]}case"Identifier":{let Z=X.name,H=Q0(K,Z);if(H)return[_.local_get,...S(H.index)];return K.errors.push(`Unknown identifier: ${Z}`),[_.f64_const,...c(0)]}case"BinaryExpression":return d8(X,K);case"UnaryExpression":return l8(X,K);case"AssignmentExpression":return u8(X,K);case"UpdateExpression":return i8(X,K);case"MemberExpression":return p8(X,K);case"CallExpression":return c8(X,K);case"SequenceExpression":{let Z=X,H=[];for(let Y=0;Y<Z.expressions.length;Y++)if(H.push(...y(Z.expressions[Y],K)),Y<Z.expressions.length-1)H.push(_.drop);return H}default:return K.errors.push(`Unsupported expression type: ${X.type}`),[_.f64_const,...c(0)]}}function d8(X,K){let Z=y(X.left,K),H=y(X.right,K),Y=x(X,K),J=x(X.left,K),$=x(X.right,K),Q=["<",">","<=",">=","==","===","!=","!=="].includes(X.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=Z,F=H;if(z==="f64"){if(J==="i32")G=[...Z,_.f64_convert_i32_s];else if(J==="f32")G=[...Z,_.f64_promote_f32];if($==="i32")F=[...H,_.f64_convert_i32_s];else if($==="f32")F=[...H,_.f64_promote_f32]}else if(z==="f32"){if(J==="i32")G=[...Z,_.f32_convert_i32_s];if($==="i32")F=[...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}}[X.operator];if(!W)return K.errors.push(`Unsupported operator: ${X.operator}`),[_.f64_const,...c(0)];let D=W[z]??W.f64??W.i32;if(D===void 0)return K.errors.push(`Operator ${X.operator} not supported for type ${z}`),[_.f64_const,...c(0)];return[...G,...F,D]}function l8(X,K){let Z=y(X.argument,K),H=x(X.argument,K);switch(X.operator){case"-":if(H==="i32")return[_.i32_const,0,...Z,_.i32_sub];else if(H==="f32")return[...Z,_.f32_neg];else return[...Z,_.f64_neg];case"!":return[...Z,_.i32_eqz];case"~":return[...Z,_.i32_const,...k0(-1),_.i32_xor];default:return K.errors.push(`Unsupported unary operator: ${X.operator}`),Z}}function u8(X,K){if(X.left.type==="MemberExpression")return n8(X.left,X.right,X.operator,K);if(X.left.type!=="Identifier")return K.errors.push("Assignment target must be identifier or array element"),[];let Z=X.left.name,H=Q0(K,Z);if(!H)return K.errors.push(`Unknown variable: ${Z}`),[];let Y=[];if(X.operator==="="){Y.push(...y(X.right,K));let J=x(X.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=x(X.right,K),$=H.type;if(J==="f64"||H.type==="f64")$="f64";else if(J==="f32"||H.type==="f32")$="f32";if(Y.push(_.local_get,...S(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(...y(X.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=X.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: ${X.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,...S(H.index)),Y}function i8(X,K){if(X.argument.type!=="Identifier")return K.errors.push("Update expression argument must be identifier"),[];let Z=X.argument.name,H=Q0(K,Z);if(!H)return K.errors.push(`Unknown variable: ${Z}`),[];let Y=[],J=H.type==="i32";if(X.prefix){if(Y.push(_.local_get,...S(H.index)),J)Y.push(_.i32_const,1),Y.push(X.operator==="++"?_.i32_add:_.i32_sub);else Y.push(_.f64_const,...c(1)),Y.push(X.operator==="++"?_.f64_add:_.f64_sub);Y.push(_.local_tee,...S(H.index))}else{if(Y.push(_.local_get,...S(H.index)),Y.push(_.local_get,...S(H.index)),J)Y.push(_.i32_const,1),Y.push(X.operator==="++"?_.i32_add:_.i32_sub);else Y.push(_.f64_const,...c(1)),Y.push(X.operator==="++"?_.f64_add:_.f64_sub);Y.push(_.local_set,...S(H.index))}return Y}function p8(X,K){if(X.object.type!=="Identifier")return K.errors.push("Array access requires identifier"),[];let Z=X.object.name,H=K.params.find((G)=>G.name===Z);if(!H?.isArray||!H.arrayType)return K.errors.push(`${Z} is not a typed array parameter`),[];let Y=c0[H.arrayType];if(!Y)return K.errors.push(`Unknown array type: ${H.arrayType}`),[];K.needsMemory=!0;let J=[],$=Q0(K,Z);if(!$)return K.errors.push(`Unknown array: ${Z}`),[];if(J.push(_.local_get,...S($.index)),!X.computed||!X.property)return K.errors.push("Array access requires computed index"),[];let Q=y(X.property,K),z=x(X.property,K);if(J.push(...Q),z==="f64")J.push(_.i32_trunc_f64_s);if(Y.bytesPerElement>1)J.push(_.i32_const,...k0(Y.bytesPerElement)),J.push(_.i32_mul);return J.push(_.i32_add),J.push(Y.loadOp,0,0),J}function n8(X,K,Z,H){if(X.object.type!=="Identifier")return H.errors.push("Array store requires identifier"),[];let Y=X.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 $=c0[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(!X.computed||!X.property)return H.errors.push("Array store requires computed index"),[];let G=y(X.property,H),F=x(X.property,H),U=()=>{let w=[];if(w.push(_.local_get,...S(z.index)),w.push(...G),F==="f64")w.push(_.i32_trunc_f64_s);if($.bytesPerElement>1)w.push(_.i32_const,...k0($.bytesPerElement)),w.push(_.i32_mul);return w.push(_.i32_add),w};if(Z==="=")Q.push(...y(K,H));else{let w=n0(H,`__addr_${H.nextLocalIndex}`,"i32");Q.push(...U()),Q.push(_.local_tee,...S(w)),Q.push($.loadOp,0,0),Q.push(...y(K,H));let B=x(K,H);if($.elementType==="f32"&&B==="f64")Q.push(_.f32_demote_f64);else if($.elementType==="f64"&&B==="f32")Q.push(_.f64_promote_f32);else if($.elementType==="f32"&&B==="i32")Q.push(_.f32_convert_i32_s);else if($.elementType==="f64"&&B==="i32")Q.push(_.f64_convert_i32_s);else if($.elementType==="i32"&&B==="f64")Q.push(_.i32_trunc_f64_s);else if($.elementType==="i32"&&B==="f32")Q.push(_.i32_trunc_f32_s);let L=Z.slice(0,-1),A={"+":$.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(A[L]??_.f64_add);let I=n0(H,`__val_${H.nextLocalIndex}`,$.elementType);return Q.push(_.local_set,...S(I)),Q.push(_.local_get,...S(w)),Q.push(_.local_get,...S(I)),Q.push($.storeOp,0,0),Q.push(_.local_get,...S(I)),Q}let W=x(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 D=n0(H,`__tmp_${H.nextLocalIndex}`,$.elementType);if(Q.push(_.local_set,...S(D)),Q.push(_.local_get,...S(z.index)),Q.push(...G),F==="f64")Q.push(_.i32_trunc_f64_s);if($.bytesPerElement>1)Q.push(_.i32_const,...k0($.bytesPerElement)),Q.push(_.i32_mul);return Q.push(_.i32_add),Q.push(_.local_get,...S(D)),Q.push($.storeOp,0,0),Q.push(_.local_get,...S(D)),Q}function c8(X,K){if(X.callee.type==="MemberExpression"){let Z=X.callee;if(Z.object.type==="Identifier"&&Z.object.name==="Math"&&Z.property.type==="Identifier"){let H=Z.property.name;return o8(H,X.arguments,K)}}return K.errors.push(`Unsupported function call: ${X.callee.type}`),[_.f64_const,...c(0)]}function o8(X,K,Z){let H=[];for(let Q of K){H.push(...y(Q,Z));let z=x(Q,Z);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}[X];if(J!==void 0)return H.push(J),H;if(["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(X))return Z.needsMathImports.add(X),Z.errors.push(`Math.${X} requires JS import (not yet implemented)`),[_.f64_const,...c(0)];return Z.errors.push(`Unknown Math method: ${X}`),[_.f64_const,...c(0)]}function s8(X){let K=X.split(":").map((J)=>J.trim()),Z=K[0];if(K.length===1)return{name:Z,type:"f64"};let H=K[1];if(c0[H])return{name:Z,type:"i32",isArray:!0,arrayType:H};return{name:Z,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[H]??"f64"}}function a8(X,K,Z,H,Y){let J=[0,97,115,109,1,0,0,0],$=X.map((I)=>n[I.type]),Q=Y?[1,n.f64]:[0],z=N0(E0.type,[1,96,...S(X.length),...$,...Q]),G=[],F=[];if(H)F=N0(E0.import,[1,...D6("env"),...D6("memory"),2,0,1]);let U=N0(E0.function,[1,0]),W=N0(E0.export,[1,...D6("compute"),0,0]),D=[];if(Z.length>0){let I=Z[0],q=1;for(let R=1;R<Z.length;R++)if(Z[R]===I)q++;else D.push([...S(q),n[I]]),I=Z[R],q=1;D.push([...S(q),n[I]])}let B=[...[...S(D.length),...D.flat()],...K,_.end],L=N0(E0.code,[1,...S(B.length),...B]),A=[...J,...z];if(F.length>0)A.push(...F);return A.push(...U,...W,...L),A}function P1(X){try{let K=X.captures.map(s8),Z;try{let G=`function __wasm__(${K.map((F)=>F.name).join(", ")}) { ${X.body} }`;Z=j1.parse(G,{ecmaVersion:2022})}catch(G){return{bytes:new Uint8Array,warnings:[],success:!1,error:`Parse error: ${G.message}`}}let Y=Z.body[0].body.body,J=h8(K),$=[];for(let G of Y)$.push(...A0(G,J));if(J.errors.length>0)return{bytes:new Uint8Array,warnings:J.warnings,success:!1,error:J.errors.join("; ")};let Q=a8(K,$,J.localTypes,J.needsMemory,J.hasReturn),z=y8($,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 V1(X){let K=[],Z=[];for(let $ of X){let Q=P1($);if(Q.success){let z=btoa(String.fromCharCode(...Q.bytes));Z.push({id:$.id,base64:z,captures:$.captures,needsMemory:Q.needsMemory??!1,wat:Q.wat??""}),K.push({id:$.id,success:!0,byteLength:Q.bytes.length})}else K.push({id:$.id,success:!1,error:Q.error})}if(Z.length===0)return{code:"",results:K};let H=Z.map(($)=>{let Q=$.wat.split(`
|
|
287
|
-
`).map((
|
|
288
|
-
* WASM: ${
|
|
289
|
-
${
|
|
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(`
|
|
290
295
|
`)}
|
|
291
296
|
*/`}).join(`
|
|
292
|
-
`),Y=
|
|
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}
|
|
293
298
|
;(async()=>{
|
|
294
299
|
const __wasmBlocks=[${Y}];
|
|
295
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};
|
|
296
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};`:""}
|
|
297
305
|
for(const{id,b64,c,m}of __wasmBlocks){
|
|
298
306
|
const bytes=__b64ToBytes(b64);
|
|
299
307
|
const params=c.map(__parseType);
|
|
300
308
|
const hasArrays=params.some(p=>p.a);
|
|
301
|
-
|
|
309
|
+
const mem=m?__wasmMem:null;
|
|
302
310
|
const imp=mem?{env:{memory:mem}}:{};
|
|
303
311
|
const inst=await WebAssembly.instantiate(await WebAssembly.compile(bytes),imp);
|
|
304
312
|
const compute=inst.exports.compute;
|
|
305
313
|
if(!hasArrays){globalThis[id]=compute;continue}
|
|
306
314
|
globalThis[id]=function(...args){
|
|
307
|
-
const mv=new Uint8Array(mem.buffer);let off=
|
|
315
|
+
const mv=new Uint8Array(mem.buffer);let off=__woff;const ptrs=[];
|
|
308
316
|
for(let i=0;i<params.length;i++){const p=params[i],a=args[i];
|
|
309
|
-
if(p.a&&a?.buffer){
|
|
310
|
-
|
|
311
|
-
|
|
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;
|
|
312
322
|
for(let i=0;i<params.length;i++){const p=params[i],a=args[i];
|
|
313
|
-
if(p.a&&a?.buffer){
|
|
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}}
|
|
314
326
|
return r};
|
|
315
327
|
}})();
|
|
316
|
-
`.trim(),results:K}}function
|
|
317
|
-
`):
|
|
318
|
-
`):
|
|
319
|
-
${
|
|
320
|
-
${
|
|
321
|
-
`})
|
|
322
|
-
|
|
323
|
-
`}M=
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
${m.
|
|
328
|
-
|
|
329
|
-
`+M;N=T.results}return{code:M,types:q,metadata:q,warnings:$.length>0?$:void 0,testRunner:F.length>0?W:void 0,testCount:F.length>0?F.length:void 0,testResults:E,wasmCompiled:N}}function YX(X){let K=[];for(let Z of X.body)if(Z.type==="FunctionDeclaration")K.push(Z);else if(Z.type==="ExportNamedDeclaration"&&Z.declaration?.type==="FunctionDeclaration")K.push(Z.declaration);else if(Z.type==="ExportDefaultDeclaration"&&Z.declaration?.type==="FunctionDeclaration")K.push(Z.declaration);return K}function S0(X){let K={kind:X.kind};if(X.nullable)K.nullable=!0;if(X.items)K.items=S0(X.items);if(X.shape)K.shape=Object.fromEntries(Object.entries(X.shape).map(([Z,H])=>[Z,S0(H)]));if(X.members)K.members=X.members.map(S0);return K}function $X(X,K,Z={},H={}){let Y={};for(let[$,Q]of Object.entries(K.params)){if(Y[$]={type:S0(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:S0(K.returns)},H.returnDefaults)J.returns.defaults=H.returnDefaults;if(Z.returnSafety==="safe")J.safeReturn=!0;else if(Z.returnSafety==="unsafe")J.unsafeReturn=!0}if(K.description)J.description=K.description;if(Z.unsafe)J.unsafe=!0;if(Z.safe)J.safe=!0;if(H.source){let{file:$,line:Q}=H.source;J.source=`${$}:${Q}`}return`${X}.__tjs = ${JSON.stringify(J,null,2)}`}function C1(X,K){switch(K.kind){case"string":return`typeof ${X} !== 'string'`;case"number":return`typeof ${X} !== 'number'`;case"integer":return`(typeof ${X} !== 'number' || !Number.isInteger(${X}))`;case"non-negative-integer":return`(typeof ${X} !== 'number' || !Number.isInteger(${X}) || ${X} < 0)`;case"boolean":return`typeof ${X} !== 'boolean'`;case"null":return`${X} !== null`;case"undefined":return`${X} !== undefined`;case"array":return`!Array.isArray(${X})`;case"object":return`(typeof ${X} !== 'object' || ${X} === null || Array.isArray(${X}))`;case"any":return null;default:return null}}function a0(X,K={}){let{ast:Z,returnType:H,originalSource:Y,requiredParams:J}=Y0(X,{filename:K.filename,colonShorthand:!0,vmTarget:!0}),$=_1(Z,K.filename),{ast:Q,signature:z,warnings:G}=z6($,Y,H,K,J);return{ast:Q,signature:z,warnings:G}}function JX(X,...K){if(typeof X==="string")return a0(X).ast;let Z=X.reduce((H,Y,J)=>H+Y+(K[J]!==void 0?String(K[J]):""),"");return a0(Z).ast}function QX(X,K,Z){let{ast:H,signature:Y}=a0(X),J=async($)=>{return(await K.run(H,$,Z)).result};return J.signature=Y,J.ast=H,J}function s0(X){switch(X.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:X.items?s0(X.items):{}};case"object":if(!X.shape)return{type:"object"};return{type:"object",properties:Object.fromEntries(Object.entries(X.shape).map(([K,Z])=>[K,s0(Z)]))};case"union":if(!X.members)return{};return{anyOf:X.members.map(s0)};case"any":default:return{}}}function zX(X){return Object.entries(X).map(([K,Z])=>{let H=Z.signature,Y={},J=[];for(let[$,Q]of Object.entries(H.parameters)){if(Y[$]=s0(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 GX(X,K,...Z){if(typeof X==="string")return o0(X,K);let H=K!==void 0?[K,...Z]:Z,Y=X.reduce((J,$,Q)=>J+$+(H[Q]!==void 0?String(H[Q]):""),"");return o0(Y)}import{s as E1}from"tosijs-schema";function N1(X){if(X===null)return"null";if(X===void 0)return"undefined";if(Array.isArray(X))return"array";return typeof X}function t0(X){return E1.infer(X)}function q6(X){return t0(X)}q6.type=N1;q6.infer=t0;var WX=new Proxy(q6,{get(X,K){if(K==="type")return N1;if(K==="infer")return t0;return E1[K]},apply(X,K,Z){return t0(Z[0])}});function r0(X,K,Z,H,Y){if(!Z)Z=j;(function J($,Q,z){var G=z||$.type;if(Z[G]($,Q,J),K[G])K[G]($,Q)})(X,H,Y)}function T1(X,K,Z,H,Y){var J=[];if(!Z)Z=j;(function $(Q,z,G){var F=G||Q.type,U=Q!==J[J.length-1];if(U)J.push(Q);if(Z[F](Q,z,$),K[F])K[F](Q,z||J,J);if(U)J.pop()})(X,H,Y)}function w6(X,K,Z){Z(X,K)}function z0(X,K,Z){}var j={};j.Program=j.BlockStatement=j.StaticBlock=function(X,K,Z){for(var H=0,Y=X.body;H<Y.length;H+=1){var J=Y[H];Z(J,K,"Statement")}};j.Statement=w6;j.EmptyStatement=z0;j.ExpressionStatement=j.ParenthesizedExpression=j.ChainExpression=function(X,K,Z){return Z(X.expression,K,"Expression")};j.IfStatement=function(X,K,Z){if(Z(X.test,K,"Expression"),Z(X.consequent,K,"Statement"),X.alternate)Z(X.alternate,K,"Statement")};j.LabeledStatement=function(X,K,Z){return Z(X.body,K,"Statement")};j.BreakStatement=j.ContinueStatement=z0;j.WithStatement=function(X,K,Z){Z(X.object,K,"Expression"),Z(X.body,K,"Statement")};j.SwitchStatement=function(X,K,Z){Z(X.discriminant,K,"Expression");for(var H=0,Y=X.cases;H<Y.length;H+=1){var J=Y[H];Z(J,K)}};j.SwitchCase=function(X,K,Z){if(X.test)Z(X.test,K,"Expression");for(var H=0,Y=X.consequent;H<Y.length;H+=1){var J=Y[H];Z(J,K,"Statement")}};j.ReturnStatement=j.YieldExpression=j.AwaitExpression=function(X,K,Z){if(X.argument)Z(X.argument,K,"Expression")};j.ThrowStatement=j.SpreadElement=function(X,K,Z){return Z(X.argument,K,"Expression")};j.TryStatement=function(X,K,Z){if(Z(X.block,K,"Statement"),X.handler)Z(X.handler,K);if(X.finalizer)Z(X.finalizer,K,"Statement")};j.CatchClause=function(X,K,Z){if(X.param)Z(X.param,K,"Pattern");Z(X.body,K,"Statement")};j.WhileStatement=j.DoWhileStatement=function(X,K,Z){Z(X.test,K,"Expression"),Z(X.body,K,"Statement")};j.ForStatement=function(X,K,Z){if(X.init)Z(X.init,K,"ForInit");if(X.test)Z(X.test,K,"Expression");if(X.update)Z(X.update,K,"Expression");Z(X.body,K,"Statement")};j.ForInStatement=j.ForOfStatement=function(X,K,Z){Z(X.left,K,"ForInit"),Z(X.right,K,"Expression"),Z(X.body,K,"Statement")};j.ForInit=function(X,K,Z){if(X.type==="VariableDeclaration")Z(X,K);else Z(X,K,"Expression")};j.DebuggerStatement=z0;j.FunctionDeclaration=function(X,K,Z){return Z(X,K,"Function")};j.VariableDeclaration=function(X,K,Z){for(var H=0,Y=X.declarations;H<Y.length;H+=1){var J=Y[H];Z(J,K)}};j.VariableDeclarator=function(X,K,Z){if(Z(X.id,K,"Pattern"),X.init)Z(X.init,K,"Expression")};j.Function=function(X,K,Z){if(X.id)Z(X.id,K,"Pattern");for(var H=0,Y=X.params;H<Y.length;H+=1){var J=Y[H];Z(J,K,"Pattern")}Z(X.body,K,X.expression?"Expression":"Statement")};j.Pattern=function(X,K,Z){if(X.type==="Identifier")Z(X,K,"VariablePattern");else if(X.type==="MemberExpression")Z(X,K,"MemberPattern");else Z(X,K)};j.VariablePattern=z0;j.MemberPattern=w6;j.RestElement=function(X,K,Z){return Z(X.argument,K,"Pattern")};j.ArrayPattern=function(X,K,Z){for(var H=0,Y=X.elements;H<Y.length;H+=1){var J=Y[H];if(J)Z(J,K,"Pattern")}};j.ObjectPattern=function(X,K,Z){for(var H=0,Y=X.properties;H<Y.length;H+=1){var J=Y[H];if(J.type==="Property"){if(J.computed)Z(J.key,K,"Expression");Z(J.value,K,"Pattern")}else if(J.type==="RestElement")Z(J.argument,K,"Pattern")}};j.Expression=w6;j.ThisExpression=j.Super=j.MetaProperty=z0;j.ArrayExpression=function(X,K,Z){for(var H=0,Y=X.elements;H<Y.length;H+=1){var J=Y[H];if(J)Z(J,K,"Expression")}};j.ObjectExpression=function(X,K,Z){for(var H=0,Y=X.properties;H<Y.length;H+=1){var J=Y[H];Z(J,K)}};j.FunctionExpression=j.ArrowFunctionExpression=j.FunctionDeclaration;j.SequenceExpression=function(X,K,Z){for(var H=0,Y=X.expressions;H<Y.length;H+=1){var J=Y[H];Z(J,K,"Expression")}};j.TemplateLiteral=function(X,K,Z){for(var H=0,Y=X.quasis;H<Y.length;H+=1){var J=Y[H];Z(J,K)}for(var $=0,Q=X.expressions;$<Q.length;$+=1){var z=Q[$];Z(z,K,"Expression")}};j.TemplateElement=z0;j.UnaryExpression=j.UpdateExpression=function(X,K,Z){Z(X.argument,K,"Expression")};j.BinaryExpression=j.LogicalExpression=function(X,K,Z){Z(X.left,K,"Expression"),Z(X.right,K,"Expression")};j.AssignmentExpression=j.AssignmentPattern=function(X,K,Z){Z(X.left,K,"Pattern"),Z(X.right,K,"Expression")};j.ConditionalExpression=function(X,K,Z){Z(X.test,K,"Expression"),Z(X.consequent,K,"Expression"),Z(X.alternate,K,"Expression")};j.NewExpression=j.CallExpression=function(X,K,Z){if(Z(X.callee,K,"Expression"),X.arguments)for(var H=0,Y=X.arguments;H<Y.length;H+=1){var J=Y[H];Z(J,K,"Expression")}};j.MemberExpression=function(X,K,Z){if(Z(X.object,K,"Expression"),X.computed)Z(X.property,K,"Expression")};j.ExportNamedDeclaration=j.ExportDefaultDeclaration=function(X,K,Z){if(X.declaration)Z(X.declaration,K,X.type==="ExportNamedDeclaration"||X.declaration.id?"Statement":"Expression");if(X.source)Z(X.source,K,"Expression")};j.ExportAllDeclaration=function(X,K,Z){if(X.exported)Z(X.exported,K);Z(X.source,K,"Expression")};j.ImportDeclaration=function(X,K,Z){for(var H=0,Y=X.specifiers;H<Y.length;H+=1){var J=Y[H];Z(J,K)}Z(X.source,K,"Expression")};j.ImportExpression=function(X,K,Z){Z(X.source,K,"Expression")};j.ImportSpecifier=j.ImportDefaultSpecifier=j.ImportNamespaceSpecifier=j.Identifier=j.PrivateIdentifier=j.Literal=z0;j.TaggedTemplateExpression=function(X,K,Z){Z(X.tag,K,"Expression"),Z(X.quasi,K,"Expression")};j.ClassDeclaration=j.ClassExpression=function(X,K,Z){return Z(X,K,"Class")};j.Class=function(X,K,Z){if(X.id)Z(X.id,K,"Pattern");if(X.superClass)Z(X.superClass,K,"Expression");Z(X.body,K)};j.ClassBody=function(X,K,Z){for(var H=0,Y=X.body;H<Y.length;H+=1){var J=Y[H];Z(J,K)}};j.MethodDefinition=j.PropertyDefinition=j.Property=function(X,K,Z){if(X.computed)Z(X.key,K,"Expression");if(X.value)Z(X.value,K,"Expression")};var FX={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function UX(X,K={}){let Z={...FX,...K},H=[],Y;try{Y=Y0(X,{filename:Z.filename,colonShorthand:!0}).ast}catch($){return{diagnostics:[{severity:"error",message:$.message,line:$.loc?.line,column:$.loc?.column,rule:"parse-error"}],valid:!1}}let J=[k1()];if(T1(Y,{FunctionDeclaration($,Q,z){let G=k1();J.push(G);for(let F of $.params)DX(G,F,"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})}}),r0(Y,{Identifier($){for(let Q=J.length-1;Q>=0;Q--){let z=J[Q].declarations.get($.name);if(z){z.used=!0;break}}}}),Z.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(Z.unreachableCode)r0(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(Z.noExplicitNew)r0(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 k1(){return{declarations:new Map}}function DX(X,K,Z){if(K.type==="Identifier")X.declarations.set(K.name,{node:K,kind:Z,used:!1});else if(K.type==="AssignmentPattern"&&K.left.type==="Identifier")X.declarations.set(K.left.name,{node:K.left,kind:Z,used:!1})}import{validate as x1,s as Z6}from"tosijs-schema";import{validate as A6,s as e0}from"tosijs-schema";function G0(X){return X!==null&&typeof X==="object"&&"__runtimeType"in X&&X.__runtimeType===!0}function S1(X){return X!==null&&typeof X==="object"&&"schema"in X&&typeof X.schema==="object"}function qX(X){return X!==null&&typeof X==="object"&&"type"in X&&typeof X.type==="string"}function f(X,K,Z,H){let Y,J,$,Q=Z,z=H;if(typeof X==="string")if(Y=X,typeof K==="function"){if(J=K,Q!==void 0)$=e0.infer(Q)}else if(K===void 0&&Q!==void 0)$=e0.infer(Q);else if(S1(K))$=K;else if(qX(K))$=K;else if(K!==void 0)Q=K,z=Q,$=e0.infer(Q);else throw Error("Type(description) requires a predicate, schema, or example");else{if(S1(X))$=X;else $=X;Y=wX($)}let G;if($){let U=$?.schema??$;if(U&&typeof U==="object"&&Array.isArray(U.examples))G=U.examples}if(Q===void 0&&G&&G.length>0)Q=G[0];return{description:Y,check:(U)=>{if(J)return J(U);if($)return A6(U,$);return!1},schema:$,predicate:J,example:Q,examples:G,default:z,__runtimeType:!0}}function wX(X){let K=X?.schema??X;if(K&&typeof K==="object"&&"type"in K){let Z=K;switch(Z.type){case"string":if(Z.format)return`string (${Z.format})`;if(Z.pattern)return`string matching ${Z.pattern}`;if(Z.minLength!==void 0&&Z.maxLength!==void 0)return`string (${Z.minLength}-${Z.maxLength} chars)`;return"string";case"number":case"integer":if(Z.minimum!==void 0&&Z.maximum!==void 0)return`${Z.type} (${Z.minimum}-${Z.maximum})`;if(Z.minimum!==void 0)return`${Z.type} >= ${Z.minimum}`;if(Z.maximum!==void 0)return`${Z.type} <= ${Z.maximum}`;return Z.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var R6=f("string",(X)=>typeof X==="string"),I6=f("number",(X)=>typeof X==="number"),L6=f("boolean",(X)=>typeof X==="boolean"),B6=f("integer",(X)=>typeof X==="number"&&Number.isInteger(X)),M6=f("positive integer",(X)=>typeof X==="number"&&Number.isInteger(X)&&X>0),j6=f("non-empty string",(X)=>typeof X==="string"&&X.length>0),P6=f("email address",(X)=>typeof X==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(X)),g1=(X)=>{try{return new URL(X),!0}catch{return!1}},V6=f("URL",(X)=>typeof X==="string"&&g1(X)),C6=f("UUID",(X)=>typeof X==="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(X)),v1=(X)=>{let K=new Date(X);return!isNaN(K.getTime())&&X.includes("T")},b1=(X)=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(X))return!1;let K=new Date(X+"T00:00:00Z");return!isNaN(K.getTime())},f1=f("ISO 8601 timestamp",(X)=>typeof X==="string"&&v1(X)),y1=f("date (YYYY-MM-DD)",(X)=>typeof X==="string"&&b1(X));function O6(X){return f(`${X.description} or null`,(K)=>K===null||X.check(K))}function E6(X){return f(`${X.description} (optional)`,(K)=>K===null||K===void 0||X.check(K))}function N6(X,K,...Z){if(typeof X==="string"&&Array.isArray(K)){let J=X,$=K,Q=new Set($);return{description:J,check:(G)=>Q.has(G),__runtimeType:!0,values:$}}let H=[];if(G0(X))H.push(X);if(G0(K))H.push(K);H.push(...Z);let Y=H.map((J)=>J.description).join(" | ");return f(Y,(J)=>H.some(($)=>$.check(J)))}function T6(X){return f(`array of ${X.description}`,(K)=>Array.isArray(K)&&K.every((Z)=>X.check(Z)))}function AX(X){if(G0(X))return(Z)=>X.check(Z);if(X&&typeof X==="object"&&"schema"in X)return(Z)=>A6(Z,X);let K=e0.infer(X);return(Z)=>A6(Z,K)}function g0(X,K,Z){let H=[],Y=[];for(let $ of X)if(typeof $==="string")H.push($),Y.push(void 0);else H.push($[0]),Y.push($[1]);let J=(...$)=>{let Q=H.map((G,F)=>{let U=F<$.length?$[F]:Y[F];if(U===void 0)return()=>!0;return AX(U)}),z=Z;return H.forEach((G,F)=>{let U=F<$.length?$[F]:Y[F],W="any";if(G0(U))W=U.description;else if(U!==void 0)W=typeof U==="string"?"string":JSON.stringify(U);z=z.replace(new RegExp(`\\b${G}\\b`,"g"),W)}),f(z,(G)=>K(G,...Q))};return J.params=H,J.description=Z,J}var k6=g0(["T","U"],(X,K,Z)=>Array.isArray(X)&&X.length===2&&K(X[0])&&Z(X[1]),"Pair<T, U>"),S6=g0(["V"],(X,K)=>typeof X==="object"&&X!==null&&!Array.isArray(X)&&Object.values(X).every(K),"Record<string, V>");function g6(X,K){let Z=Object.values(K),H=new Set(Z),Y=Object.keys(K),J={};for(let[Q,z]of Object.entries(K))J[z]=Q;return{description:X,check:(Q)=>H.has(Q),__runtimeType:!0,members:K,names:J,values:Z,keys:Y}}var IX=h1(),r=IX.version,v0=Symbol.for("tjs.equals");function K6(X){let[K=0,Z=0,H=0]=X.split(".").map(Number);return{major:K,minor:Z,patch:H}}function v6(X,K){let Z=K6(X),H=K6(K);if(Z.major!==H.major)return Z.major<H.major?-1:1;if(Z.minor!==H.minor)return Z.minor<H.minor?-1:1;if(Z.patch!==H.patch)return Z.patch<H.patch?-1:1;return 0}function b6(X,K){let Z=K6(X),H=K6(K);return Z.major===H.major}class F0 extends Error{path;expected;actual;callStack;constructor(X,K,Z,H,Y){super(X);if(this.name="MonadicError",this.path=K,this.expected=Z,this.actual=H,this.callStack=Y,Error.captureStackTrace)Error.captureStackTrace(this,F0)}}function LX(X,K,Z){let H=Z===null?"null":typeof Z,Y=l.debug?l1():void 0;return new F0(`Expected ${K} for '${X}', got ${H}`,X,K,H,Y)}function m1(X){return X instanceof F0}var f6={debug:!1,safety:"inputs",requireReturnTypes:!1,maxStackSize:100},l={...f6},X0=[],I0=0;function BX(){I0++}function MX(){if(I0>0)I0--}function jX(){return I0>0}function PX(X){l={...l,...X}}function VX(){return{...l}}function d1(X){if(l.debug&&X){X0.push(X);let K=l.maxStackSize??100;while(X0.length>K)X0.shift()}}function X6(){if(l.debug)X0.pop()}function l1(){return[...X0]}function CX(){l={...f6},X0.length=0,I0=0}function b0(X,K){if(X!==null&&typeof X==="object"&&typeof X[v0]==="function")return X[v0](K);if(K!==null&&typeof K==="object"&&typeof K[v0]==="function")return K[v0](X);if(X!==null&&typeof X==="object"&&typeof X.Equals==="function")return X.Equals(K);if(K!==null&&typeof K==="object"&&typeof K.Equals==="function")return K.Equals(X);if(X===K)return!0;if((X===null||X===void 0)&&(K===null||K===void 0))return!0;if(X===null||X===void 0||K===null||K===void 0)return!1;if(typeof X!==typeof K)return!1;if(typeof X!=="object")return!1;if(Array.isArray(X)&&Array.isArray(K)){if(X.length!==K.length)return!1;return X.every((Y,J)=>b0(Y,K[J]))}if(Array.isArray(X)!==Array.isArray(K))return!1;let Z=Object.keys(X),H=Object.keys(K);if(Z.length!==H.length)return!1;return Z.every((Y)=>b0(X[Y],K[Y]))}function u1(X,K){return!b0(X,K)}function e(X){return X!==null&&typeof X==="object"&&X.$error===!0}function a(X,K){let Z={$error:!0,message:X,...K};if(l.debug&&X0.length>0){let H=K?.path?[...X0,K.path]:[...X0];Z.stack=H}return Z}function y6(X,K){if(X.length===0)return a("Unknown error");if(X.length===1)return X[0];let Z=X.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"}: ${Z}`;return a(H,{path:K,errors:X})}function R0(X){if(X===null)return"null";if(X===void 0)return"undefined";if(Array.isArray(X))return"array";let K=typeof X;if(K!=="object")return K;let Z=X.constructor?.name;if(Z&&Z!=="Object")return Z;return"object"}function i1(X,K){if(X===null||X===void 0)return!1;if(typeof X!=="object"&&typeof X!=="function")return!1;let Z=X;while(Z!==null){if(Z.constructor?.name===K)return!0;Z=Object.getPrototypeOf(Z)}return!1}function _0(X,K,Z){if(e(X))return X;if(typeof K==="object"&&K!==null&&"check"in K){if(K.check(X))return null;return a(`Expected ${K.description} but got ${R0(X)}`,{path:Z,expected:K.description,actual:R0(X)})}let H=R0(X);if(K==="any")return null;if(K===H)return null;if(K==="number"&&H==="number")return null;if(K==="integer"&&H==="number"&&Number.isInteger(X))return null;if(K==="non-negative-integer"&&H==="number"&&Number.isInteger(X)&&X>=0)return null;if(K==="object"&&H==="object")return null;return a(`Expected ${K} but got ${H}`,{path:Z,expected:K,actual:H})}function h6(X,K,Z){for(let[H,Y]of Object.entries(K.params)){let J=X[H];if(e(J))return J;if(Y.required&&J===void 0){let Q=typeof Y.type==="string"?Y.type:Y.type.description;return a(`Missing required parameter '${H}'`,{path:Z?`${Z}.${H}`:H,expected:Q,actual:"undefined",loc:Y.loc})}if(J===void 0)continue;let $=_0(J,Y.type,Z?`${Z}.${H}`:H);if($){if(Y.loc)$.loc=Y.loc;return $}}return null}function x6(X,K){if(X.__tjs=K,!(!K.polymorphic&&(K.safe||K.safeReturn||l.safety!=="none"&&!K.unsafe||K.returns&&l.safety==="all"&&!K.unsafeReturn)))return X;let H=!!K.returns,Y=!!K.unsafe,J=!!K.safe,$=!!K.unsafeReturn,Q=!!K.safeReturn,z=K.returns?.defaults,G=Object.entries(K.params),F=G.length,U=X.name||K.name||"anonymous",W=function(...D){if(I0>0)return X.apply(this,D);let w=J||!Y&&l.safety!=="none",B=H&&(Q||!$&&l.safety==="all");if(!w&&!B)return X.apply(this,D);if(D.length>0&&e(D[0]))return D[0];if(w){let L=D.length===1&&typeof D[0]==="object"&&D[0]!==null&&!Array.isArray(D[0]),A=[];if(!L)for(let I=0;I<F;I++){let[q,R]=G[I],M=D[I];if(e(M)){A.push(M);continue}if(R.required&&M===void 0){A.push(a(`Missing required parameter '${q}'`,{path:`${U}.${q}`,expected:typeof R.type==="string"?R.type:R.type?.description||"value",actual:"undefined",loc:R.loc}));continue}if(M!==void 0){let V=_0(M,R.type,`${U}.${q}`);if(V){if(R.loc)V.loc=R.loc;A.push(V)}}}else{let I=D[0];for(let q=0;q<F;q++){let[R,M]=G[q],V=I[R];if(e(V)){A.push(V);continue}if(M.required&&V===void 0){A.push(a(`Missing required parameter '${R}'`,{path:`${U}.${R}`,expected:typeof M.type==="string"?M.type:M.type?.description||"value",actual:"undefined",loc:M.loc}));continue}if(V!==void 0){let P=_0(V,M.type,`${U}.${R}`);if(P){if(M.loc)P.loc=M.loc;A.push(P)}}}}if(A.length>0)return y6(A,U)}d1(U);try{let L=X.apply(this,D);if(B&&K.returns&&!e(L)){let A=z&&typeof L==="object"&&L!==null?Object.assign({},z,L):L,I=_0(A,K.returns.type,`${U}()`);if(I)return X6(),I}return X6(),L}catch(L){return X6(),a(L.message||String(L),{path:U,cause:L})}};return Object.defineProperty(W,"name",{value:X.name}),W.__tjs=K,W}function p1(X){let K=new Proxy(X,{construct(Z,H,Y){return Reflect.construct(Z,H,Y)},apply(Z,H,Y){return Reflect.construct(Z,Y)}});Object.defineProperty(K,"name",{value:X.name});for(let Z of Object.getOwnPropertyNames(X))if(Z!=="length"&&Z!=="name"&&Z!=="prototype")Object.defineProperty(K,Z,Object.getOwnPropertyDescriptor(X,Z));return K}function OX(){let X={...l},K=[],Z=0;function H(A){X={...X,...A}}function Y(){return{...X}}function J(A){if(X.debug&&A){K.push(A);let I=X.maxStackSize??100;while(K.length>I)K.shift()}}function $(){if(X.debug)K.pop()}function Q(){return[...K]}function z(){X={...f6},K.length=0,Z=0}function G(){Z++}function F(){if(Z>0)Z--}function U(){return Z>0}let W=new Map;function D(A,I,q){if(!W.has(A))W.set(A,new Map);W.get(A).set(I,q)}function w(A,I){let q=typeof A,R;if(A===null||A===void 0)return;if(q==="string")R="String";else if(q==="number")R="Number";else if(q==="boolean")R="Boolean";else if(Array.isArray(A))R="Array";else if(q==="object")R=A.constructor?.name||"Object";else return;let M=R;while(M){let P=W.get(M);if(P?.has(I))return P.get(I);if(q==="object"&&!Array.isArray(A)){if(M=Object.getPrototypeOf(M===R?A:Object.getPrototypeOf(A))?.constructor?.name,M==="Object"||M===R)break}else break}let V=W.get("Object");if(V?.has(I))return V.get(I);return}function B(A,I,q){let R=q===null?"null":typeof q,M=X.debug?Q():void 0;return new F0(`Expected ${I} for '${A}', got ${R}`,A,I,R,M)}function L(A,I){let q={$error:!0,message:A,...I};if(X.debug&&K.length>0){let R=I?.path?[...K,I.path]:[...K];q.stack=R}return q}return{version:r,MonadicError:F0,typeError:B,isMonadicError:m1,isError:e,error:L,composeErrors:y6,typeOf:R0,isNativeType:i1,checkType:_0,validateArgs:h6,wrap:x6,wrapClass:p1,compareVersions:v6,versionsCompatible:b6,configure:H,getConfig:Y,pushStack:J,popStack:$,getStack:Q,resetRuntime:z,enterUnsafe:G,exitUnsafe:F,isUnsafeMode:U,validate:x1,infer:Z6.infer.bind(Z6),Type:f,isRuntimeType:G0,Union:N6,Generic:g0,Enum:g6,Nullable:O6,Optional:E6,TArray:T6,TString:R6,TNumber:I6,TBoolean:L6,TInteger:B6,TPositiveInt:M6,TNonEmptyString:j6,TEmail:P6,TUrl:V6,TUuid:C6,TPair:k6,TRecord:S6,Is:b0,IsNot:u1,tjsEquals:v0,registerExtension:D,resolveExtension:w}}var W0={version:r,MonadicError:F0,typeError:LX,isMonadicError:m1,isError:e,error:a,composeErrors:y6,typeOf:R0,isNativeType:i1,checkType:_0,validateArgs:h6,wrap:x6,wrapClass:p1,compareVersions:v6,versionsCompatible:b6,configure:PX,getConfig:VX,pushStack:d1,popStack:X6,getStack:l1,resetRuntime:CX,enterUnsafe:BX,exitUnsafe:MX,isUnsafeMode:jX,createRuntime:OX,validate:x1,infer:Z6.infer.bind(Z6),Type:f,isRuntimeType:G0,Union:N6,Generic:g0,Enum:g6,Nullable:O6,Optional:E6,TArray:T6,TString:R6,TNumber:I6,TBoolean:L6,TInteger:B6,TPositiveInt:M6,TNonEmptyString:j6,TEmail:P6,TUrl:V6,TUuid:C6,Timestamp:f1,LegalDate:y1,TPair:k6,TRecord:S6,Is:b0,IsNot:u1};function EX(){let X=globalThis;if(X.__tjs){let K=X.__tjs.version;if(typeof K!=="string")return X.__tjs=W0,W0;let Z=v6(r,K);if(Z===0)return X.__tjs;if(b6(r,K))if(Z>0)console.info(`TJS runtime: upgrading ${K} → ${r}`),X.__tjs=W0;else console.info(`TJS runtime: keeping ${K} (newer than ${r})`);else if(console.warn(`TJS runtime version conflict: ${K} vs ${r} (major version mismatch)`),Z>0)console.warn(`Upgrading to ${r} - check for breaking changes`),X.__tjs=W0;return X.__tjs}return X.__tjs=W0,W0}function NX(X){return`
|
|
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`
|
|
330
344
|
// TJS runtime wrapper (skips unsafe functions)
|
|
331
|
-
if (typeof ${
|
|
332
|
-
${
|
|
345
|
+
if (typeof ${Z}.__tjs === 'object' && !${Z}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
|
|
346
|
+
${Z} = globalThis.__tjs.wrap(${Z}, ${Z}.__tjs)
|
|
333
347
|
}
|
|
334
|
-
`.trim()}export{
|
|
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};
|
|
335
349
|
|
|
336
|
-
//# debugId=
|
|
350
|
+
//# debugId=F3DB92A52524CC1864756E2164756E21
|