tjs-lang 0.8.7 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CLAUDE.md +12 -4
  2. package/dist/experiments/ambient/probe.d.ts +52 -0
  3. package/dist/index.js +115 -171
  4. package/dist/index.js.map +4 -4
  5. package/dist/scripts/build-editors.d.ts +19 -0
  6. package/dist/src/css/dimensions.d.ts +23 -0
  7. package/dist/src/css/index.d.ts +85 -0
  8. package/dist/src/css/predicates.d.ts +38 -0
  9. package/dist/src/css/shorthands.d.ts +31 -0
  10. package/dist/src/css/style.d.ts +48 -0
  11. package/dist/src/lang/emitters/js.d.ts +9 -1
  12. package/dist/src/lang/index.d.ts +2 -2
  13. package/dist/src/lang/parser-transforms.d.ts +9 -5
  14. package/dist/src/lang/parser.d.ts +2 -0
  15. package/dist/src/lang/predicate.d.ts +60 -0
  16. package/dist/src/lang/transpiler.d.ts +3 -2
  17. package/dist/src/lang/types.d.ts +16 -0
  18. package/dist/src/schema/index.d.ts +12 -0
  19. package/dist/tjs-browser-from-ts.js +20 -20
  20. package/dist/tjs-browser-from-ts.js.map +3 -3
  21. package/dist/tjs-browser.js +100 -90
  22. package/dist/tjs-browser.js.map +4 -4
  23. package/dist/tjs-css.js +193 -0
  24. package/dist/tjs-css.js.map +7 -0
  25. package/dist/tjs-eval.js +43 -42
  26. package/dist/tjs-eval.js.map +4 -4
  27. package/dist/tjs-from-ts.js +13 -13
  28. package/dist/tjs-from-ts.js.map +2 -2
  29. package/dist/tjs-lang.js +102 -92
  30. package/dist/tjs-lang.js.map +4 -4
  31. package/dist/tjs-runtime.js +10 -0
  32. package/dist/tjs-runtime.js.map +7 -0
  33. package/dist/tjs-schema.js +6 -0
  34. package/dist/tjs-schema.js.map +7 -0
  35. package/dist/tjs-vm.js +55 -54
  36. package/dist/tjs-vm.js.map +4 -4
  37. package/docs/ambient-contracts.md +261 -0
  38. package/editors/ace/ajs-mode.js +214 -233
  39. package/editors/codemirror/ajs-language.js +1570 -233
  40. package/editors/editors-build.test.ts +29 -0
  41. package/editors/monaco/ajs-monarch.js +239 -195
  42. package/llms.txt +4 -0
  43. package/package.json +35 -4
  44. package/src/css/css.test.ts +122 -0
  45. package/src/css/dimensions.test.ts +112 -0
  46. package/src/css/dimensions.ts +146 -0
  47. package/src/css/index.ts +243 -0
  48. package/src/css/perf.bench.test.ts +109 -0
  49. package/src/css/predicates.ts +232 -0
  50. package/src/css/property-aware.test.ts +84 -0
  51. package/src/css/shorthands.test.ts +90 -0
  52. package/src/css/shorthands.ts +113 -0
  53. package/src/css/style.test.ts +125 -0
  54. package/src/css/style.ts +134 -0
  55. package/src/index-tsfree.test.ts +58 -0
  56. package/src/lang/emit-verified-predicate.test.ts +95 -0
  57. package/src/lang/emitters/dts.test.ts +31 -0
  58. package/src/lang/emitters/dts.ts +23 -4
  59. package/src/lang/emitters/js.ts +33 -1
  60. package/src/lang/from-ts.test.ts +1 -1
  61. package/src/lang/generic-verified-predicate.test.ts +39 -0
  62. package/src/lang/index.ts +14 -5
  63. package/src/lang/parser-transforms.ts +109 -14
  64. package/src/lang/parser.ts +9 -2
  65. package/src/lang/predicate-evaluator.test.ts +49 -0
  66. package/src/lang/predicate-report.test.ts +54 -0
  67. package/src/lang/predicate.ts +268 -0
  68. package/src/lang/redos-lint.test.ts +81 -0
  69. package/src/lang/transpiler.ts +13 -0
  70. package/src/lang/type-verified-predicate.test.ts +83 -0
  71. package/src/lang/types.ts +17 -0
  72. package/src/lang/typescript-syntax.test.ts +2 -1
  73. package/src/schema/index.ts +62 -0
  74. package/src/schema/schema.test.ts +66 -0
  75. package/src/use-cases/bootstrap.test.ts +14 -4
package/dist/tjs-lang.js CHANGED
@@ -1,59 +1,63 @@
1
- var hs=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var kr=hs((Qo,ai)=>{ai.exports={name:"tjs-lang",version:"0.8.7",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",types:"./dist/src/index.d.ts",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],browser:["./dist/src/lang/browser.d.ts"],"browser/from-ts":["./dist/src/lang/browser-from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"]}},exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./browser":{types:"./dist/src/lang/browser.d.ts",default:"./dist/tjs-browser.js"},"./browser/from-ts":{types:"./dist/src/lang/browser-from-ts.d.ts",default:"./dist/tjs-browser-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.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","llms.txt"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",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":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-loose":"^8.5.2","acorn-walk":"^8.3.4","tosijs-schema":"^1.3.0"}}});import*as fr from"acorn";var U=class extends Error{line;column;source;filename;constructor(n,t,r,s){let o=`${s||"<source>"}:${t.line}:${t.column}`;super(`${n} at ${o}`),this.name="TranspileError",this.line=t.line,this.column=t.column,this.source=r,this.filename=s}},z=class extends U{constructor(n,t,r,s){super(n,t,r,s),this.name="SyntaxError"}formatWithContext(n=2){if(!this.source)return this.message;let t=this.source.split(`
2
- `),r=this.line-1,s=Math.max(0,r-n),o=Math.min(t.length-1,r+n),i=[],a=String(o+1).length;for(let c=s;c<=o;c++){let l=String(c+1).padStart(a),p=c===r?">":" ";if(i.push(`${p} ${l} | ${t[c]}`),c===r){let f=" ".repeat(a+4+this.column);i.push(`${f}^ ${this.message.split(" at ")[0]}`)}}return i.join(`
3
- `)}};function re(e){return{depth:e.depth+1,locals:new Map,parent:e,parameters:e.parameters,atoms:e.atoms,warnings:e.warnings,source:e.source,filename:e.filename,options:e.options,helpers:e.helpers,helperSteps:e.helperSteps,helperTransforming:e.helperTransforming}}function W(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}function bs(e,n){let t=e.match(n);if(!t)return null;let r=t.index+t[0].length-1,s=1,o=r+1;for(;o<e.length&&s>0;)e[o]==="{"?s++:e[o]==="}"&&s--,o++;if(s!==0)return null;let i=e.slice(r,o),a=[t[0].slice(0,-1)+i,i];return a.index=t.index,a}function Dn(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\btry\s*\{/);if(r){let o=t+r[0].length-1+1,i=1,a=o;for(;a<e.length&&i>0;){let l=e[a];l==="{"?i++:l==="}"&&i--,a++}if(i!==0){n+=e[t],t++;continue}if(e.slice(a).match(/^\s*(catch|finally)\b/))n+=e.slice(t,a),t=a;else{let l=e.slice(o,a-1);n+=`try {${l}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,t=a}}else n+=e[t],t++}return n}function qn(e){let n=[],t="",r=0,s=0;for(;r<e.length;){let o=e.slice(r).match(/^\bwasm\s*\{/);if(o){let i=r,a=r+o[0].length,c=1,l=a;for(;l<e.length&&c>0;){let g=e[l];g==="{"?c++:g==="}"&&c--,l++}if(c!==0){t+=e[r],r++;continue}let p=e.slice(a,l-1),f,u=l,m=e.slice(l).match(/^\s*fallback\s*\{/);if(m){let g=l+m[0].length;c=1;let $=g;for(;$<e.length&&c>0;){let k=e[$];k==="{"?c++:k==="}"&&c--,$++}c===0&&(f=e.slice(g,$-1),u=$)}let b=ws(p).map(g=>{let $=Ss(e,i,g);return $?`${g}: ${$}`:g}),S={id:`__tjs_wasm_${s}`,body:p,fallback:f,captures:b,start:i,end:u};n.push(S);let E=f??p,w=b.map(g=>g.split(":")[0].trim()),h=w.length>0?w.join(", "):"",x=w.length>0?`globalThis.${S.id}(${h})`:`globalThis.${S.id}()`,_=`(globalThis.${S.id} ? ${x} : (() => {${E}})())`;t+=_,r=u,s++}else t+=e[r],r++}return{source:t,blocks:n}}function Un(e){let n=[],t="",r=0;for(;r<e.length;){let s=/^\b(export\s+)?wasm\s+function\s+(\w+)\s*\(/,o=e.slice(r).match(s);if(!o){t+=e[r],r++;continue}let i=!!o[1],a=o[2],c=r,l=r+o[0].length,p=1,f=l;for(;f<e.length&&p>0;)e[f]==="("?p++:e[f]===")"&&p--,f++;if(p!==0){t+=e[r],r++;continue}let u=e.slice(l,f-1);if(u.match(/^\s*!/))throw new z(`Unsafe wasm functions (with \`!\` marker) are reserved for a future phase. Remove the bang from \`wasm function ${a}\` to declare it as a regular (pure) wasm function, or wait until the unsafe variant is implemented.`,pe(e,c));let y,b=f,S=e.slice(f).match(/^\s*:\s*(\w+)/);S&&(y=S[1],b=f+S[0].length);let E=e.slice(b).match(/^\s*\{/);if(!E){t+=e[r],r++;continue}let w=b+E[0].length,h=1,x=w;for(;x<e.length&&h>0;)e[x]==="{"?h++:e[x]==="}"&&h--,x++;if(h!==0){t+=e[r],r++;continue}let _=e.slice(w,x-1),g=xs(u),$=`__tjs_wasm_${a}`,k={id:$,name:a,returnType:y,body:_,captures:g,start:c,end:x};n.push(k);let j=g.map(P=>P.split(":")[0].trim()),M=`${i?"export ":""}function ${a}(${j.join(", ")}) { return globalThis.${$}(${j.join(", ")}) }`;t+=M,r=x}return{source:t,blocks:n}}function Wn(e,n){let{loader:t,importerPath:r}=n;if(!t)return{source:e,blocks:[]};let s=[],o=new Set;function i(l,p){if(!o.has(l.id)){s.push(l),o.add(l.id);for(let[f,u]of p){if(f===l.name||o.has(u.id))continue;new RegExp(`\\b${f}\\s*\\(`).test(l.body)&&i(u,p)}}}let a=/^(\s*)import\s*\{([^}]*?)\}\s*from\s*(['"])([^'"]+)\3\s*;?\s*$/gm;return{source:e.replace(a,(l,p,f,u,m)=>{let y=t.load(m,r);if(!y)return l;let b=new Map;for(let _ of y.parseResult.wasmBlocks)_.name&&b.set(_.name,_);if(b.size===0)return l;let S=f.split(",").map(_=>_.trim()).filter(_=>_.length>0),E=[],w=[];for(let _ of S){let g=_.match(/^(\w+)(?:\s+as\s+(\w+))?$/);if(!g){w.push(_);continue}let $=g[1],k=g[2]??g[1],j=b.get($);if(!j){w.push(_);continue}i(j,b);let A=j.captures.map(M=>M.split(":")[0].trim());E.push(`function ${k}(${A.join(", ")}) { return globalThis.${j.id}(${A.join(", ")}) }`)}let h=E.join(`
4
- `);if(w.length===0)return h?`${p}${h}`:`${p}`;let x=`${p}import { ${w.join(", ")} } from '${m}'`;return h?`${x}
5
- ${p}${h}`:x}),blocks:s}}function xs(e){let n=e.trim();return n?n.split(",").map(t=>t.trim()).filter(t=>t.length>0):[]}function _s(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function ws(e){let n=e.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),t=new Set,r=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,s;for(;(s=r.exec(n))!==null;)t.add(s[1]);let o=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,i=new Set;for(;(s=o.exec(n))!==null;)i.add(s[1]);for(let u of t){if(!i.has(u))continue;let m=new RegExp(`(?<!\\.)\\b${u}\\b`,"g"),y=new RegExp(`\\.${u}\\b`,"g"),b=n.match(m)?.length||0,S=n.match(y)?.length||0;b<=S&&i.delete(u)}let a=new Set,c=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=c.exec(n))!==null;)a.add(s[1]);let l=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=l.exec(n))!==null;)a.add(s[1]);let p=new Set(["if","else","for","while","do","switch","case","break","continue","return","function","let","const","var","new","this","true","false","null","undefined","typeof","instanceof","in","of","try","catch","finally","throw","async","await","class","extends","super","import","export","default","from","as","static","get","set","yield","console","Math","Array","Object","String","Number","Boolean","Date","JSON","Promise","Map","Set","WeakMap","WeakSet","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","ArrayBuffer","DataView","Error","TypeError","RangeError","length","push","pop","shift","unshift","slice","splice","map","filter","reduce","forEach","find","findIndex","indexOf","includes","globalThis","window","document","Infinity","NaN","isNaN","isFinite","parseInt","parseFloat","encodeURI","decodeURI","eval","wasmBuffer"]),f=[];for(let u of i)!a.has(u)&&!p.has(u)&&!_s(u)&&f.push(u);return f.sort()}function Ss(e,n,t){let r=e.slice(0,n),s=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,o=r.match(s);if(!o){let i=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,a=r.match(i);return a?In(a[1],t):void 0}return In(o[1],t)}function In(e,n){let t=e.split(",").map(r=>r.trim());for(let r of t){let s=r.match(new RegExp(`^${n}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(s)return s[1];let o=r.match(new RegExp(`^${n}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(o)return o[1]}}function Ue(e){let n=`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,t=new RegExp(n+"\\s+IsNot\\s+"+n,"g");e=e.replace(t,"IsNot($1, $2)");let r=new RegExp(n+"\\s+Is\\s+"+n,"g");return e=e.replace(r,"Is($1, $2)"),e}function Ln(e){let n=/^[\s]*[([`]/,t=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,r=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,s=e.split(`
6
- `),o=[],i=!1;for(let a=0;a<s.length;a++){let c=s[a],l=a>0?s[a-1]:"";if(i){o.push(c),c.includes("*/")&&(i=!1);continue}let p=c.indexOf("/*"),f=c.indexOf("*/");if(p!==-1&&(f===-1||f<p)){i=!0,o.push(c);continue}if(a>0&&n.test(c)){let u=l.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!t.test(u)&&!r.test(u)){let m=c.match(/^(\s*)/),y=m?m[1]:"",b=c.slice(y.length);o.push(y+";"+b);continue}}o.push(c)}return o.join(`
7
- `)}function $s(e){let n=[],t=0,r="normal",s=[];for(;t<e.length;){let i=e[t],a=e[t+1];switch(r){case"single-string":if(i==="\\"&&t+1<e.length){t+=2;continue}i==="'"&&(r="normal"),t++;continue;case"double-string":if(i==="\\"&&t+1<e.length){t+=2;continue}i==='"'&&(r="normal"),t++;continue;case"template-string":if(i==="\\"&&t+1<e.length){t+=2;continue}if(i==="$"&&a==="{"){t+=2,s.push(1),r="normal";continue}i==="`"&&(r="normal"),t++;continue;case"line-comment":i===`
8
- `&&(r="normal"),t++;continue;case"block-comment":if(i==="*"&&a==="/"){t+=2,r="normal";continue}t++;continue;case"regex":if(i==="\\"&&t+1<e.length){t+=2;continue}if(i==="["){for(t++;t<e.length&&e[t]!=="]";)e[t]==="\\"&&t+1<e.length?t+=2:t++;t<e.length&&t++;continue}if(i==="/"){for(t++;t<e.length&&/[gimsuy]/.test(e[t]);)t++;r="normal";continue}t++;continue;case"normal":if(s.length>0){if(i==="{")s[s.length-1]++;else if(i==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),t++,r="template-string";continue}}if(i==="'"){t++,r="single-string";continue}if(i==='"'){t++,r="double-string";continue}if(i==="`"){t++,r="template-string";continue}if(i==="/"&&a==="/"){t+=2,r="line-comment";continue}if(i==="/"&&a==="*"){t+=2,r="block-comment";continue}if(i==="/"){let c=t-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){t++,r="regex";continue}}if(i==="t"&&e.slice(t,t+6)==="typeof"&&(t===0||!/[\w$]/.test(e[t-1]))&&/\s/.test(e[t+6]??"")){let c=t+6;for(;c<e.length&&/\s/.test(e[c]);)c++;if(c<e.length&&/[a-zA-Z_$]/.test(e[c])){let l=c;for(;c<e.length&&/[\w$]/.test(e[c]);)c++;for(;c<e.length;)if(e[c]==="."&&/[a-zA-Z_$]/.test(e[c+1]??""))for(c++;c<e.length&&/[\w$]/.test(e[c]);)c++;else if(e[c]==="?"&&e[c+1]==="."&&/[a-zA-Z_$]/.test(e[c+2]??""))for(c+=2;c<e.length&&/[\w$]/.test(e[c]);)c++;else break;n.push({keywordStart:t,operandEnd:c,operand:e.slice(l,c)}),t=c;continue}}break}t++}if(n.length===0)return e;let o=e;for(let i=n.length-1;i>=0;i--){let a=n[i];o=o.slice(0,a.keywordStart)+`TypeOf(${a.operand})`+o.slice(a.operandEnd)}return o}function We(e){e=$s(e);let n=[],t=0,r="normal",s=[];for(;t<e.length;){let i=e[t],a=e[t+1];switch(r){case"single-string":if(i==="\\"&&t+1<e.length){t+=2;continue}i==="'"&&(r="normal"),t++;continue;case"double-string":if(i==="\\"&&t+1<e.length){t+=2;continue}i==='"'&&(r="normal"),t++;continue;case"template-string":if(i==="\\"&&t+1<e.length){t+=2;continue}if(i==="$"&&a==="{"){t+=2,s.push(1),r="normal";continue}i==="`"&&(r="normal"),t++;continue;case"line-comment":i===`
9
- `&&(r="normal"),t++;continue;case"block-comment":if(i==="*"&&a==="/"){t+=2,r="normal";continue}t++;continue;case"regex":if(i==="\\"&&t+1<e.length){t+=2;continue}if(i==="["){for(t++;t<e.length&&e[t]!=="]";)e[t]==="\\"&&t+1<e.length?t+=2:t++;t<e.length&&t++;continue}if(i==="/"){for(t++;t<e.length&&/[gimsuy]/.test(e[t]);)t++;r="normal";continue}t++;continue;case"normal":if(s.length>0){if(i==="{")s[s.length-1]++;else if(i==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),t++,r="template-string";continue}}if(i==="'"){t++,r="single-string";continue}if(i==='"'){t++,r="double-string";continue}if(i==="`"){t++,r="template-string";continue}if(i==="/"&&a==="/"){t+=2,r="line-comment";continue}if(i==="/"&&a==="*"){t+=2,r="block-comment";continue}if(i==="/"){let c=t-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){t++,r="regex";continue}}if(i==="="&&a==="="&&e[t+2]!=="="&&e[t-1]!=="!"){n.push({pos:t,op:"=="}),t+=2;continue}if(i==="!"&&a==="="&&e[t+2]!=="="){n.push({pos:t,op:"!="}),t+=2;continue}break}t++}if(n.length===0)return e;let o=e;for(let i=n.length-1;i>=0;i--){let{pos:a,op:c}=n[i],l=c==="=="?"Eq":"NotEq",p=Es(o,a),f=Ts(o,a+2),u=o.slice(p,a).trim(),m=o.slice(a+2,f).trim();if(u&&m){let y=o.slice(0,p),b=o.slice(f),E=/[a-zA-Z0-9_$]$/.test(y)?" ":"";o=`${y}${E}${l}(${u}, ${m})${b}`}}return o}function Es(e,n){let t=n-1;for(;t>=0&&/\s/.test(e[t]);)t--;if(t<0)return 0;let r=0,s=!1,o="";for(;t>=0;){let i=e[t],a=t>0?e[t-1]:"";if(s){i===o&&a!=="\\"&&(s=!1),t--;continue}if((i==='"'||i==="'"||i==="`")&&a!=="\\"){s=!0,o=i,t--;continue}if(i===")"||i==="]"||i==="}"){r++,t--;continue}if(i==="("||i==="["){if(r>0){r--,t--;continue}return t+1}if(i==="{"){if(r>0){r--,t--;continue}return t+1}if(r>0){t--;continue}if(i===";")return t+1;if(/[a-z]/.test(i)){let c=t+1,l=t;for(;l>0&&/[a-z]/i.test(e[l-1]);)l--;let p=e.slice(l,c),f=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(f)){if(["return","throw","case","typeof","void","delete","await","yield"].includes(p))return c;if(p==="new")return l}}if(i===">"&&a==="="||i==="="&&a!=="="&&a!=="!"&&a!=="<"&&a!==">"||i==="&"&&a==="&"||i==="|"&&a==="|"||i==="?"||i===":"||i===",")return t+1;t--}return 0}function Ts(e,n){let t=n;for(;t<e.length&&/\s/.test(e[t]);)t++;if(t>=e.length)return e.length;let r=0,s=!1,o="";for(;t<e.length;){let i=e[t],a=t+1<e.length?e[t+1]:"";if(s){i===o&&e[t-1]!=="\\"&&(s=!1),t++;continue}if((i==='"'||i==="'"||i==="`")&&e[t-1]!=="\\"){s=!0,o=i,t++;continue}if(i==="("||i==="["||i==="{"){r++,t++;continue}if(i===")"||i==="]"||i==="}"){if(r>0){r--,t++;continue}return t}if(r>0){t++;continue}if(i===";"||i==="&"&&a==="&"||i==="|"&&a==="|"||i==="?"||i===":"||i===","||(i==="="||i==="!")&&a==="="&&e[t+2]!=="=")return t;t++}return e.length}function Jn(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(r){let s=r[1],o=t+r[0].length,i=s,a=!1,c=e.slice(o).match(/^(['"`])([^]*?)\1\s*/);if(c){let u=o+c[0].length,m=e[u],y=m===void 0||u>=e.length||m!=="="&&m!=="{";if(m==="="||m==="{")i=c[2],a=!0,o=u;else if(y){let b=c[0].trim(),S=c[0].slice(b.length);n+=`const ${s} = Type('${s}', ${b})${S}`,t=u;continue}}let l,p=o,f=e.slice(o).match(/^=\s*/);if(f){o+=f[0].length;let u=e.slice(o).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(u){l=u[0],o+=u[0].length,p=o;let m=e.slice(o).match(/^\s*/);m&&(o+=m[0].length)}}if(e[o]==="{"){let u=o+1,m=1,y=u;for(;y<e.length&&m>0;){let _=e[y];_==="{"?m++:_==="}"&&m--,y++}if(m!==0){n+=e[t],t++;continue}let b=e.slice(u,y-1).trim(),S=y,E=b.match(/description\s*:\s*(['"`])([^]*?)\1/);E&&!a&&(i=E[2]);let w,h=b.match(/example\s*:\s*/);if(h){let _=h.index+h[0].length,g=cr(b,_);g&&(w=g.value.trim())}let x=b.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(x&&w){let _=x[1].trim(),g=x[2].trim(),$=l?`, ${l}`:"";n+=`const ${s} = Type('${i}', (${_}) => { if (!globalThis.__tjs?.validate(${_}, globalThis.__tjs?.infer(${w}))) return false; ${g} }, ${w}${$})`}else if(x){let _=x[1].trim(),g=x[2].trim(),$=l?`, undefined, ${l}`:"";n+=`const ${s} = Type('${i}', (${_}) => { ${g} }${$})`}else if(w){let _=l?`, ${l}`:"";n+=`const ${s} = Type('${i}', undefined, ${w}${_})`}else l?n+=`const ${s} = Type('${i}', ${l})`:n+=`const ${s} = Type('${i}')`;t=S;continue}else if(l){n+=`const ${s} = Type('${i}', ${l})`,t=p;continue}else if(!c){let u=e.slice(o).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(u){let m=u[0];n+=`const ${s} = Type('${s}', ${m})`,t=o+u[0].length;continue}}}n+=e[t],t++}return n}function Vn(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bFunctionPredicate\s+([A-Z_][a-zA-Z0-9_]*)\s*(?:<([^>]+)>)?\s*/);if(r){let s=r[1],o=r[2],i=t+r[0].length;if(e[i]==="{"){let a=1,c=i+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;if(a===0){let l=e.slice(i+1,c-1).trim(),p=bs(l,/params\s*:\s*\{/),f=l.match(/returns\s*:\s*(.+?)(?:\n|$)/),u=l.match(/returnContract\s*:\s*['"](\w+)['"]/),m=l.match(/description\s*:\s*(['"])([^]*?)\1/),y=[];p&&y.push(`params: ${p[1]}`),f&&y.push(`returns: ${f[1].trim()}`),u&&y.push(`returnContract: '${u[1]}'`);let b=m?m[2]:s;if(o){let S=o.split(",").map(w=>{let h=w.trim().split("=").map(x=>x.trim());if(h.length===2){let x=h[1]==="any"||h[1]==="undefined"?"null":h[1];return`['${h[0]}', ${x}]`}return`'${h[0]}'`}),E=o.split(",").map(w=>w.trim().split("=")[0].trim());n+=`const ${s} = FunctionPredicate('${b}', [${S.join(", ")}], (${E.join(", ")}) => ({ ${y.join(", ")} }))`}else n+=`const ${s} = FunctionPredicate('${b}', { ${y.join(", ")} })`;t=c;continue}}if(e[i]==="("){let a=1,c=i+1;for(;c<e.length&&a>0;)e[c]==="("?a++:e[c]===")"&&a--,c++;if(a===0){let l=e.slice(i+1,c-1).trim(),p=l.indexOf(",");if(p!==-1){let f=l.slice(0,p).trim(),u=l.slice(p+1).trim();n+=`const ${s} = FunctionPredicate(${u}, ${f})`}else n+=`const ${s} = FunctionPredicate('${s}', ${l})`;t=c;continue}}}n+=e[t],t++}return n}function zn(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(r){let s=r[1],o=r[2],a=t+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let w=e[l];w==="{"?c++:w==="}"&&c--,l++}if(c!==0){n+=e[t],t++;continue}let p=e.slice(a,l-1).trim(),f=l,u=o.split(",").map(w=>{let h=w.trim().split("=").map(x=>x.trim());if(h.length===2){let x=h[1]==="any"||h[1]==="undefined"?"null":h[1];return`['${h[0]}', ${x}]`}return`'${h[0]}'`}),m=p,y=m.search(/\bdeclaration\s*\{/);if(y!==-1){let w=m.indexOf("{",y),h=1,x=w+1;for(;x<m.length&&h>0;)m[x]==="{"?h++:m[x]==="}"&&h--,x++;m=m.slice(0,y)+m.slice(x)}let b=m.match(/description\s*:\s*(['"`])([^]*?)\1/),S=m.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),E=b?b[2]:s;if(S){let w=S[1].trim().split(",").map($=>$.trim()),h=S[2].trim(),x=w[0]||"x",_=w.slice(1),g=_.map($=>`check${$}`);_.forEach(($,k)=>{h=h.replace(new RegExp(`\\b${$}\\s*\\(`,"g"),`${g[k]}(`)}),n+=`const ${s} = Generic([${u.join(", ")}], (${x}, ${g.join(", ")}) => { ${h} }, '${E}')`}else n+=`const ${s} = Generic([${u.join(", ")}], () => true, '${E}')`;t=f;continue}n+=e[t],t++}return n}function Zn(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(r){let s=r[1],o=r[3],i=t+r[0].length;if(e[i]==="{"){let a=i+1,c=1,l=a;for(;l<e.length&&c>0;){let m=e[l];m==="{"?c++:m==="}"&&c--,l++}if(c!==0){n+=e[t],t++;continue}let p=e.slice(a,l-1).trim(),f=l,u=On(p);n+=`const ${s} = Union('${o}', [${u.join(", ")}])`,t=f;continue}else{let a=e.indexOf(`
10
- `,i);a===-1&&(a=e.length);let c=e.slice(i,a).trim();if(c){let l=On(c);n+=`const ${s} = Union('${o}', [${l.join(", ")}])`,t=a;continue}}}n+=e[t],t++}return n}function On(e){let n=[],t=e.split("|").map(r=>r.trim());for(let r of t)r&&n.push(r);return n}function Gn(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(r){let s=r[1],o=r[3],a=t+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let y=e[l];y==="{"?c++:y==="}"&&c--,l++}if(c!==0){n+=e[t],t++;continue}let p=e.slice(a,l-1).trim(),f=l,m=ks(p).map(([y,b])=>`${y}: ${b}`).join(", ");n+=`const ${s} = Enum('${o}', { ${m} })`,t=f;continue}n+=e[t],t++}return n}function ks(e){let n=[],t=0,r=e.split(/[\n,]/).map(s=>s.trim()).filter(s=>s&&!s.startsWith("//"));for(let s of r){let o=s.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*(?:=\s*(.+))?$/);if(o){let i=o[1],a=o[2]?.trim();if(a!==void 0){n.push([i,a]);let c=Number(a);isNaN(c)||(t=c+1)}else n.push([i,String(t)]),t++}}return n}function Kn(e){let n=new Map,t="",r=0;for(;r<e.length;){let s=e.slice(r),o=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/);if(!o){if(r===0||e[r-1]===`
11
- `||e[r-1]===";"||e[r-1]==="}"){let h=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}t+=e[r],r++;continue}let i=o[1],a=o[2],c=r+o[0].length-1,l=qe(e,c),p=e.slice(c+1,l-1).trim(),f=[],u=0,m=e.slice(c+1,l-1);for(;u<m.length;){let h=m.slice(u).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!h){u++;continue}let x=h[1],_=!!h[2],g=h[3],$=u+h[0].length-1,k=1,j=$+1;for(;j<m.length&&k>0;)m[j]==="("&&k++,m[j]===")"&&k--,j++;let A=m.slice($+1,j-1),M=j;for(;M<m.length&&/\s/.test(m[M]);)M++;if(m[M]==="="&&m[M+1]===">"){let V=pe(e,c+1+u);throw new z(`Arrow functions are not allowed in extend blocks (method '${g}' in extend ${a}). Use regular function syntax instead, as extension methods need 'this' binding.`,V)}if(m[M]!=="{"){u++;continue}let P=qe(m,M),R=m.slice(u,P).trim(),I=A.split(",").map(V=>V.trim()).filter(V=>V.length>0).map(V=>{let X=V.match(/^(\w+)\s*:\s*(.+)$/);return X?`${X[1]} = ${X[2]}`:V}).join(", "),B=_?"async ":"",J=m.slice(M+1,P-1);f.push({name:g,isAsync:_,fullText:`${g}: ${B}function(${I}) {${J}}`}),u=P}let y=!n.has(a);y&&n.set(a,new Set);let b=n.get(a);for(let w of f)b.add(w.name);let S=f.map(w=>` ${w.fullText}`).join(`,
1
+ var ks=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Or=ks(($a,Ei)=>{Ei.exports={name:"tjs-lang",version:"0.9.0",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",types:"./dist/src/index.d.ts",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],browser:["./dist/src/lang/browser.d.ts"],"browser/from-ts":["./dist/src/lang/browser-from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"],css:["./dist/src/css/index.d.ts"],schema:["./dist/src/schema/index.d.ts"],runtime:["./dist/src/lang/runtime.d.ts"]}},exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./browser":{types:"./dist/src/lang/browser.d.ts",default:"./dist/tjs-browser.js"},"./browser/from-ts":{types:"./dist/src/lang/browser-from-ts.d.ts",default:"./dist/tjs-browser-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.js"},"./css":{bun:"./src/css/index.ts",types:"./dist/src/css/index.d.ts",default:"./dist/tjs-css.js"},"./schema":{bun:"./src/schema/index.ts",types:"./dist/src/schema/index.d.ts",default:"./dist/tjs-schema.js"},"./runtime":{bun:"./src/lang/runtime.ts",types:"./dist/src/lang/runtime.d.ts",default:"./dist/tjs-runtime.js"},"./bun-plugin":{bun:"./src/bun-plugin/tjs-plugin.ts"},"./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","llms.txt"],sideEffects:["./src/schema/index.ts","./dist/tjs-schema.js"],repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",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","build:editors":"bun scripts/build-editors.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 && bun run build:editors && 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":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-loose":"^8.5.2","acorn-walk":"^8.3.4","tosijs-schema":"^1.4.0"}}});import*as wr from"acorn";var W=class extends Error{line;column;source;filename;constructor(n,t,r,s){let o=`${s||"<source>"}:${t.line}:${t.column}`;super(`${n} at ${o}`),this.name="TranspileError",this.line=t.line,this.column=t.column,this.source=r,this.filename=s}},z=class extends W{constructor(n,t,r,s){super(n,t,r,s),this.name="SyntaxError"}formatWithContext(n=2){if(!this.source)return this.message;let t=this.source.split(`
2
+ `),r=this.line-1,s=Math.max(0,r-n),o=Math.min(t.length-1,r+n),i=[],a=String(o+1).length;for(let c=s;c<=o;c++){let l=String(c+1).padStart(a),f=c===r?">":" ";if(i.push(`${f} ${l} | ${t[c]}`),c===r){let p=" ".repeat(a+4+this.column);i.push(`${p}^ ${this.message.split(" at ")[0]}`)}}return i.join(`
3
+ `)}};function re(e){return{depth:e.depth+1,locals:new Map,parent:e,parameters:e.parameters,atoms:e.atoms,warnings:e.warnings,source:e.source,filename:e.filename,options:e.options,helpers:e.helpers,helperSteps:e.helperSteps,helperTransforming:e.helperTransforming}}function U(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}import*as ut from"acorn";function ie(e,n,t,r,s){t||(t=k),(function o(i,a,c){var l=c||i.type;t[l](i,a,o),n[l]&&n[l](i,a)})(e,r,s)}function Wn(e,n,t,r,s){var o=[];t||(t=k),(function i(a,c,l){var f=l||a.type,p=a!==o[o.length-1];p&&o.push(a),t[f](a,c,i),n[f]&&n[f](a,c||o,o),p&&o.pop()})(e,r,s)}function Ft(e,n,t){t(e,n)}function we(e,n,t){}var k={};k.Program=k.BlockStatement=k.StaticBlock=function(e,n,t){for(var r=0,s=e.body;r<s.length;r+=1){var o=s[r];t(o,n,"Statement")}};k.Statement=Ft;k.EmptyStatement=we;k.ExpressionStatement=k.ParenthesizedExpression=k.ChainExpression=function(e,n,t){return t(e.expression,n,"Expression")};k.IfStatement=function(e,n,t){t(e.test,n,"Expression"),t(e.consequent,n,"Statement"),e.alternate&&t(e.alternate,n,"Statement")};k.LabeledStatement=function(e,n,t){return t(e.body,n,"Statement")};k.BreakStatement=k.ContinueStatement=we;k.WithStatement=function(e,n,t){t(e.object,n,"Expression"),t(e.body,n,"Statement")};k.SwitchStatement=function(e,n,t){t(e.discriminant,n,"Expression");for(var r=0,s=e.cases;r<s.length;r+=1){var o=s[r];t(o,n)}};k.SwitchCase=function(e,n,t){e.test&&t(e.test,n,"Expression");for(var r=0,s=e.consequent;r<s.length;r+=1){var o=s[r];t(o,n,"Statement")}};k.ReturnStatement=k.YieldExpression=k.AwaitExpression=function(e,n,t){e.argument&&t(e.argument,n,"Expression")};k.ThrowStatement=k.SpreadElement=function(e,n,t){return t(e.argument,n,"Expression")};k.TryStatement=function(e,n,t){t(e.block,n,"Statement"),e.handler&&t(e.handler,n),e.finalizer&&t(e.finalizer,n,"Statement")};k.CatchClause=function(e,n,t){e.param&&t(e.param,n,"Pattern"),t(e.body,n,"Statement")};k.WhileStatement=k.DoWhileStatement=function(e,n,t){t(e.test,n,"Expression"),t(e.body,n,"Statement")};k.ForStatement=function(e,n,t){e.init&&t(e.init,n,"ForInit"),e.test&&t(e.test,n,"Expression"),e.update&&t(e.update,n,"Expression"),t(e.body,n,"Statement")};k.ForInStatement=k.ForOfStatement=function(e,n,t){t(e.left,n,"ForInit"),t(e.right,n,"Expression"),t(e.body,n,"Statement")};k.ForInit=function(e,n,t){e.type==="VariableDeclaration"?t(e,n):t(e,n,"Expression")};k.DebuggerStatement=we;k.FunctionDeclaration=function(e,n,t){return t(e,n,"Function")};k.VariableDeclaration=function(e,n,t){for(var r=0,s=e.declarations;r<s.length;r+=1){var o=s[r];t(o,n)}};k.VariableDeclarator=function(e,n,t){t(e.id,n,"Pattern"),e.init&&t(e.init,n,"Expression")};k.Function=function(e,n,t){e.id&&t(e.id,n,"Pattern");for(var r=0,s=e.params;r<s.length;r+=1){var o=s[r];t(o,n,"Pattern")}t(e.body,n,e.expression?"Expression":"Statement")};k.Pattern=function(e,n,t){e.type==="Identifier"?t(e,n,"VariablePattern"):e.type==="MemberExpression"?t(e,n,"MemberPattern"):t(e,n)};k.VariablePattern=we;k.MemberPattern=Ft;k.RestElement=function(e,n,t){return t(e.argument,n,"Pattern")};k.ArrayPattern=function(e,n,t){for(var r=0,s=e.elements;r<s.length;r+=1){var o=s[r];o&&t(o,n,"Pattern")}};k.ObjectPattern=function(e,n,t){for(var r=0,s=e.properties;r<s.length;r+=1){var o=s[r];o.type==="Property"?(o.computed&&t(o.key,n,"Expression"),t(o.value,n,"Pattern")):o.type==="RestElement"&&t(o.argument,n,"Pattern")}};k.Expression=Ft;k.ThisExpression=k.Super=k.MetaProperty=we;k.ArrayExpression=function(e,n,t){for(var r=0,s=e.elements;r<s.length;r+=1){var o=s[r];o&&t(o,n,"Expression")}};k.ObjectExpression=function(e,n,t){for(var r=0,s=e.properties;r<s.length;r+=1){var o=s[r];t(o,n)}};k.FunctionExpression=k.ArrowFunctionExpression=k.FunctionDeclaration;k.SequenceExpression=function(e,n,t){for(var r=0,s=e.expressions;r<s.length;r+=1){var o=s[r];t(o,n,"Expression")}};k.TemplateLiteral=function(e,n,t){for(var r=0,s=e.quasis;r<s.length;r+=1){var o=s[r];t(o,n)}for(var i=0,a=e.expressions;i<a.length;i+=1){var c=a[i];t(c,n,"Expression")}};k.TemplateElement=we;k.UnaryExpression=k.UpdateExpression=function(e,n,t){t(e.argument,n,"Expression")};k.BinaryExpression=k.LogicalExpression=function(e,n,t){t(e.left,n,"Expression"),t(e.right,n,"Expression")};k.AssignmentExpression=k.AssignmentPattern=function(e,n,t){t(e.left,n,"Pattern"),t(e.right,n,"Expression")};k.ConditionalExpression=function(e,n,t){t(e.test,n,"Expression"),t(e.consequent,n,"Expression"),t(e.alternate,n,"Expression")};k.NewExpression=k.CallExpression=function(e,n,t){if(t(e.callee,n,"Expression"),e.arguments)for(var r=0,s=e.arguments;r<s.length;r+=1){var o=s[r];t(o,n,"Expression")}};k.MemberExpression=function(e,n,t){t(e.object,n,"Expression"),e.computed&&t(e.property,n,"Expression")};k.ExportNamedDeclaration=k.ExportDefaultDeclaration=function(e,n,t){e.declaration&&t(e.declaration,n,e.type==="ExportNamedDeclaration"||e.declaration.id?"Statement":"Expression"),e.source&&t(e.source,n,"Expression")};k.ExportAllDeclaration=function(e,n,t){e.exported&&t(e.exported,n),t(e.source,n,"Expression")};k.ImportDeclaration=function(e,n,t){for(var r=0,s=e.specifiers;r<s.length;r+=1){var o=s[r];t(o,n)}t(e.source,n,"Expression")};k.ImportExpression=function(e,n,t){t(e.source,n,"Expression")};k.ImportSpecifier=k.ImportDefaultSpecifier=k.ImportNamespaceSpecifier=k.Identifier=k.PrivateIdentifier=k.Literal=we;k.TaggedTemplateExpression=function(e,n,t){t(e.tag,n,"Expression"),t(e.quasi,n,"Expression")};k.ClassDeclaration=k.ClassExpression=function(e,n,t){return t(e,n,"Class")};k.Class=function(e,n,t){e.id&&t(e.id,n,"Pattern"),e.superClass&&t(e.superClass,n,"Expression"),t(e.body,n)};k.ClassBody=function(e,n,t){for(var r=0,s=e.body;r<s.length;r+=1){var o=s[r];t(o,n)}};k.MethodDefinition=k.PropertyDefinition=k.Property=function(e,n,t){e.computed&&t(e.key,n,"Expression"),e.value&&t(e.value,n,"Expression")};var js=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","String","Number","Boolean","Array","Object","Eq","NotEq","Is","IsNot","TypeOf"]),vs=new Set(["Math","JSON","Object","Array","String","Number"]),As=new Set(["Math.random","Date.now"]);function Ln(e,n){let t=e[n],r=0;if(t==="*"||t==="+")r=1;else if(t==="{"){let s=e.slice(n).match(/^\{\d+,\}/);s&&(r=s[0].length)}return r===0?0:(e[n+r]==="?"&&r++,r)}function Ps(e){let n=[],t=0,r=!1;for(;t<e.length;){let s=e[t];if(s==="\\"){t+=2;continue}if(r){s==="]"&&(r=!1),t++;continue}if(s==="["){r=!0,t++;continue}if(s==="("){n.push({hadUnbounded:!1}),t++;continue}if(s===")"){let i=n.pop()??{hadUnbounded:!1},a=Ln(e,t+1);if(a>0){if(i.hadUnbounded)return"an unbounded quantifier is nested inside another (e.g. `(a+)+`)";n.length&&(n[n.length-1].hadUnbounded=!0),t+=1+a;continue}i.hadUnbounded&&n.length&&(n[n.length-1].hadUnbounded=!0),t++;continue}let o=Ln(e,t);if(o>0){n.length&&(n[n.length-1].hadUnbounded=!0),t+=o;continue}t++}return null}var Rs=new Set(["startsWith","endsWith","includes","indexOf","lastIndexOf","slice","substring","substr","toLowerCase","toUpperCase","trim","trimStart","trimEnd","split","replace","replaceAll","match","matchAll","charAt","charCodeAt","codePointAt","padStart","padEnd","repeat","concat","at","normalize","search","localeCompare","every","some","map","filter","reduce","reduceRight","find","findIndex","findLast","findLastIndex","flat","flatMap","join","keys","entries","values","forEach","test","exec","toFixed","toPrecision","toString","valueOf","hasOwnProperty"]),qt=["fetch","XMLHttpRequest","WebSocket","Date","console","setTimeout","setInterval","requestAnimationFrame","queueMicrotask","localStorage","sessionStorage","indexedDB","document","window","globalThis","self","process","require","eval","Function","import","crypto","performance","navigator"];function Ms(e){let n=new Set(qt);for(let[t,r]of Object.entries(e))r?.effects==="io"&&n.add(r.op??t);return n}function $e(e,n={}){let t=n.effectful??new Set(qt),r;try{r=ut.parse(e,{ecmaVersion:"latest",locations:!0})}catch(i){return{safe:!1,predicates:[],diagnostics:[{predicate:"<source>",message:`parse error: ${i.message}`,line:i.loc?.line??0,column:i.loc?.column??0}]}}let s=new Set(n.knownPredicates??[]);for(let i of r.body)i.type==="FunctionDeclaration"&&i.id&&s.add(i.id.name);let o=[];for(let i of r.body){if(i.type!=="FunctionDeclaration"||!i.id)continue;let a=i.id.name,c=(f,p)=>o.push({predicate:a,message:f,line:p?.loc?.start?.line??0,column:p?.loc?.start?.column??0}),l=f=>c("loops are not allowed \u2014 iterate with recursion or array methods (every/some/map/filter/reduce) so work stays fuel-bounded",f);ie(i,{AwaitExpression(f){c("`await` not allowed \u2014 predicates must be synchronous",f)},NewExpression(f){c("`new` not allowed in a predicate (non-pure construction)",f)},WhileStatement:l,DoWhileStatement:l,ForStatement:l,ForInStatement:l,ForOfStatement:l,Literal(f){if(f.regex&&typeof f.regex.pattern=="string"){let p=Ps(f.regex.pattern);p&&c(`regex /${f.regex.pattern}/ risks catastrophic backtracking (ReDoS): ${p}. A single match is not fuel-bounded, so it can't be certified predicate-safe \u2014 simplify the pattern or validate without it.`,f)}},CallExpression(f){let p=f.callee;if(p.type==="Identifier"){let u=p.name;t.has(u)?c(`'${u}' is effectful \u2014 not allowed in a predicate`,p):s.has(u)||js.has(u)||c(`unknown reference '${u}' \u2014 not a predicate or pure builtin`,p);return}if(p.type==="MemberExpression"&&!p.computed){let u=p.property.name,m=p.object;m.type==="Identifier"&&t.has(m.name)?c(`'${m.name}.${u}' is effectful`,p):m.type==="Identifier"&&vs.has(m.name)?As.has(`${m.name}.${u}`)&&c(`'${m.name}.${u}' is nondeterministic`,p):Rs.has(u)||c(`method '.${u}()' is not a known pure method`,p.property);return}c("unsupported call form in a predicate",p)}})}return{safe:o.length===0,predicates:[...s],diagnostics:o}}function ft(e){return e.map(n=>` ${n.predicate} (${n.line}:${n.column}): ${n.message}`).join(`
4
+ `)}var lt=e=>e&&e.type==="Literal"&&typeof e.value=="string";function Cs(e,n={}){let t;try{t=ut.parse(e,{ecmaVersion:"latest"})}catch{return[]}let r=new Set,s=new Set;ie(t,{BinaryExpression(c){(c.operator==="=="||c.operator==="===")&&(lt(c.left)&&r.add(c.left.value),lt(c.right)&&r.add(c.right.value))},ArrayExpression(c){for(let l of c.elements)lt(l)&&r.add(l.value)},CallExpression(c){let l=c.callee;if(l.type!=="MemberExpression"||l.computed)return;let f=l.property.name,p=c.arguments[0];lt(p)&&f==="startsWith"&&s.add(p.value)}});let o=null;if(n.validate!==!1){let c=$e(e,n);if(c.safe&&c.predicates.length){let l=n.entry??c.predicates[c.predicates.length-1];try{let p=Je(e,[l],n)[l];o=u=>{try{return p(u)===!0}catch{return!1}}}catch{o=null}}}let i=[];for(let c of r)(!o||o(c))&&i.push({value:c,kind:"value"});for(let c of s)i.push({value:c,kind:"stub"});let a=i;if(n.prefix){let c=n.prefix;a=i.filter(l=>l.value.startsWith(c)||l.kind==="stub"&&c.startsWith(l.value))}return a.sort((c,l)=>(c.kind===l.kind?0:c.kind==="value"?-1:1)||c.value.localeCompare(l.value)),n.limit?a.slice(0,n.limit):a}var Le=class extends Error{constructor(n){super(`predicate exceeded its fuel budget (${n})`),this.name="PredicateFuelExhausted"}};function Jn(e){let n=ut.parse(e,{ecmaVersion:"latest"}),t=[],r=o=>t.push([o.body.start+1,"__fuel();"]);ie(n,{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression(o){o.body.type==="BlockStatement"?t.push([o.body.start+1,"__fuel();"]):(t.push([o.body.start,"(__fuel(), "]),t.push([o.body.end,")"]))}}),t.sort((o,i)=>i[0]-o[0]);let s=e;for(let[o,i]of t)s=s.slice(0,o)+i+s.slice(o);return s}function Je(e,n,t={}){let r=$e(e,t);if(!r.safe)throw new Error(`Not predicate-safe:
5
+ ${ft(r.diagnostics)}`);let s=t.fuel??1e6,o=Jn(e),i=qt.filter(u=>u!=="import"&&u!=="eval"&&u!=="arguments"),a=new Function("__fuel",...i,`"use strict";
6
+ ${o}
7
+ ;return { ${n.join(", ")} };`),c=0,f=a(()=>{if(--c<0)throw new Le(s)},...i.map(()=>{})),p={};for(let u of n){let m=f[u];p[u]=(...y)=>{c=s;try{return m(...y)}catch(g){throw g instanceof RangeError&&/stack/i.test(g.message)?new Le(s):g}}}return p}function Wt(e,n,t={}){let r=$e(e,t);if(!r.safe)return{safe:!1,diagnostics:r.diagnostics};if(!r.predicates.includes(n))return{safe:!1,diagnostics:[{predicate:n,message:`entry predicate '${n}' not found in the verified cluster`,line:0,column:0}]};let s=t.fuel??1e6;return{safe:!0,code:`(() => {let __f = 0;const __fuel = () => { if (--__f < 0) throw new RangeError('tjs:predicate-fuel'); };${Jn(e)}return (...__a) => {__f = ${s};try { return !!${n}(...__a); }catch (e) {if (e instanceof RangeError && /tjs:predicate-fuel|stack/i.test(e.message)) return false;throw e;}};})()`,diagnostics:[]}}function Ns(e={}){let{onUnsafe:n,...t}=e,r=new Map,s=new Set;return(o,i)=>{let a=r.get(o);if(a===void 0){try{let c=$e(o,t).predicates,l=c[c.length-1];if(!l)throw new Error("$predicate declares no function");a=Je(o,[l],t)[l]}catch(c){if(a=null,!s.has(o)){s.add(o);let l=c instanceof Error?c:new Error(String(c));n?n(o,l):console.warn(`[tjs-lang] $predicate not verifiable \u2014 failing closed: ${l.message}`)}}r.set(o,a)}if(a===null)return!1;try{return a(i)===!0}catch{return!1}}}function Is(e,n){let t=e.match(n);if(!t)return null;let r=t.index+t[0].length-1,s=1,o=r+1;for(;o<e.length&&s>0;)e[o]==="{"?s++:e[o]==="}"&&s--,o++;if(s!==0)return null;let i=e.slice(r,o),a=[t[0].slice(0,-1)+i,i];return a.index=t.index,a}function Ut(e,n,t,r,s,o){let i=`__pred_${e}`,a=`function ${i}(${t}) { ${r} }`,c=Wt(a,i,s?{knownPredicates:new Set(s)}:{});return c.safe?(o?.push({name:e,kind:n,verified:!0}),c.code):(o?.push({name:e,kind:n,verified:!1,reason:ft(c.diagnostics).replace(/__pred_/g,"")}),null)}function Kn(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\btry\s*\{/);if(r){let o=t+r[0].length-1+1,i=1,a=o;for(;a<e.length&&i>0;){let l=e[a];l==="{"?i++:l==="}"&&i--,a++}if(i!==0){n+=e[t],t++;continue}if(e.slice(a).match(/^\s*(catch|finally)\b/))n+=e.slice(t,a),t=a;else{let l=e.slice(o,a-1);n+=`try {${l}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,t=a}}else n+=e[t],t++}return n}function Hn(e){let n=[],t="",r=0,s=0;for(;r<e.length;){let o=e.slice(r).match(/^\bwasm\s*\{/);if(o){let i=r,a=r+o[0].length,c=1,l=a;for(;l<e.length&&c>0;){let _=e[l];_==="{"?c++:_==="}"&&c--,l++}if(c!==0){t+=e[r],r++;continue}let f=e.slice(a,l-1),p,u=l,m=e.slice(l).match(/^\s*fallback\s*\{/);if(m){let _=l+m[0].length;c=1;let $=_;for(;$<e.length&&c>0;){let T=e[$];T==="{"?c++:T==="}"&&c--,$++}c===0&&(p=e.slice(_,$-1),u=$)}let g=Ds(f).map(_=>{let $=Fs(e,i,_);return $?`${_}: ${$}`:_}),x={id:`__tjs_wasm_${s}`,body:f,fallback:p,captures:g,start:i,end:u};n.push(x);let E=p??f,S=g.map(_=>_.split(":")[0].trim()),b=S.length>0?S.join(", "):"",h=S.length>0?`globalThis.${x.id}(${b})`:`globalThis.${x.id}()`,w=`(globalThis.${x.id} ? ${h} : (() => {${E}})())`;t+=w,r=u,s++}else t+=e[r],r++}return{source:t,blocks:n}}function Yn(e){let n=[],t="",r=0;for(;r<e.length;){let s=/^\b(export\s+)?wasm\s+function\s+(\w+)\s*\(/,o=e.slice(r).match(s);if(!o){t+=e[r],r++;continue}let i=!!o[1],a=o[2],c=r,l=r+o[0].length,f=1,p=l;for(;p<e.length&&f>0;)e[p]==="("?f++:e[p]===")"&&f--,p++;if(f!==0){t+=e[r],r++;continue}let u=e.slice(l,p-1);if(u.match(/^\s*!/))throw new z(`Unsafe wasm functions (with \`!\` marker) are reserved for a future phase. Remove the bang from \`wasm function ${a}\` to declare it as a regular (pure) wasm function, or wait until the unsafe variant is implemented.`,pe(e,c));let y,g=p,x=e.slice(p).match(/^\s*:\s*(\w+)/);x&&(y=x[1],g=p+x[0].length);let E=e.slice(g).match(/^\s*\{/);if(!E){t+=e[r],r++;continue}let S=g+E[0].length,b=1,h=S;for(;h<e.length&&b>0;)e[h]==="{"?b++:e[h]==="}"&&b--,h++;if(b!==0){t+=e[r],r++;continue}let w=e.slice(S,h-1),_=Os(u),$=`__tjs_wasm_${a}`,T={id:$,name:a,returnType:y,body:w,captures:_,start:c,end:h};n.push(T);let j=_.map(C=>C.split(":")[0].trim()),A=`${i?"export ":""}function ${a}(${j.join(", ")}) { return globalThis.${$}(${j.join(", ")}) }`;t+=A,r=h}return{source:t,blocks:n}}function Xn(e,n){let{loader:t,importerPath:r}=n;if(!t)return{source:e,blocks:[]};let s=[],o=new Set;function i(l,f){if(!o.has(l.id)){s.push(l),o.add(l.id);for(let[p,u]of f){if(p===l.name||o.has(u.id))continue;new RegExp(`\\b${p}\\s*\\(`).test(l.body)&&i(u,f)}}}let a=/^(\s*)import\s*\{([^}]*?)\}\s*from\s*(['"])([^'"]+)\3\s*;?\s*$/gm;return{source:e.replace(a,(l,f,p,u,m)=>{let y=t.load(m,r);if(!y)return l;let g=new Map;for(let w of y.parseResult.wasmBlocks)w.name&&g.set(w.name,w);if(g.size===0)return l;let x=p.split(",").map(w=>w.trim()).filter(w=>w.length>0),E=[],S=[];for(let w of x){let _=w.match(/^(\w+)(?:\s+as\s+(\w+))?$/);if(!_){S.push(w);continue}let $=_[1],T=_[2]??_[1],j=g.get($);if(!j){S.push(w);continue}i(j,g);let P=j.captures.map(A=>A.split(":")[0].trim());E.push(`function ${T}(${P.join(", ")}) { return globalThis.${j.id}(${P.join(", ")}) }`)}let b=E.join(`
8
+ `);if(S.length===0)return b?`${f}${b}`:`${f}`;let h=`${f}import { ${S.join(", ")} } from '${m}'`;return b?`${h}
9
+ ${f}${b}`:h}),blocks:s}}function Os(e){let n=e.trim();return n?n.split(",").map(t=>t.trim()).filter(t=>t.length>0):[]}function Bs(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function Ds(e){let n=e.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),t=new Set,r=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,s;for(;(s=r.exec(n))!==null;)t.add(s[1]);let o=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,i=new Set;for(;(s=o.exec(n))!==null;)i.add(s[1]);for(let u of t){if(!i.has(u))continue;let m=new RegExp(`(?<!\\.)\\b${u}\\b`,"g"),y=new RegExp(`\\.${u}\\b`,"g"),g=n.match(m)?.length||0,x=n.match(y)?.length||0;g<=x&&i.delete(u)}let a=new Set,c=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=c.exec(n))!==null;)a.add(s[1]);let l=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=l.exec(n))!==null;)a.add(s[1]);let f=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"]),p=[];for(let u of i)!a.has(u)&&!f.has(u)&&!Bs(u)&&p.push(u);return p.sort()}function Fs(e,n,t){let r=e.slice(0,n),s=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,o=r.match(s);if(!o){let i=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,a=r.match(i);return a?Vn(a[1],t):void 0}return Vn(o[1],t)}function Vn(e,n){let t=e.split(",").map(r=>r.trim());for(let r of t){let s=r.match(new RegExp(`^${n}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(s)return s[1];let o=r.match(new RegExp(`^${n}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(o)return o[1]}}function ze(e){let n=`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,t=new RegExp(n+"\\s+IsNot\\s+"+n,"g");e=e.replace(t,"IsNot($1, $2)");let r=new RegExp(n+"\\s+Is\\s+"+n,"g");return e=e.replace(r,"Is($1, $2)"),e}function Qn(e){let n=/^[\s]*[([`]/,t=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,r=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,s=e.split(`
10
+ `),o=[],i=!1;for(let a=0;a<s.length;a++){let c=s[a],l=a>0?s[a-1]:"";if(i){o.push(c),c.includes("*/")&&(i=!1);continue}let f=c.indexOf("/*"),p=c.indexOf("*/");if(f!==-1&&(p===-1||p<f)){i=!0,o.push(c);continue}if(a>0&&n.test(c)){let u=l.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!t.test(u)&&!r.test(u)){let m=c.match(/^(\s*)/),y=m?m[1]:"",g=c.slice(y.length);o.push(y+";"+g);continue}}o.push(c)}return o.join(`
11
+ `)}function qs(e){let n=[],t=0,r="normal",s=[];for(;t<e.length;){let i=e[t],a=e[t+1];switch(r){case"single-string":if(i==="\\"&&t+1<e.length){t+=2;continue}i==="'"&&(r="normal"),t++;continue;case"double-string":if(i==="\\"&&t+1<e.length){t+=2;continue}i==='"'&&(r="normal"),t++;continue;case"template-string":if(i==="\\"&&t+1<e.length){t+=2;continue}if(i==="$"&&a==="{"){t+=2,s.push(1),r="normal";continue}i==="`"&&(r="normal"),t++;continue;case"line-comment":i===`
12
+ `&&(r="normal"),t++;continue;case"block-comment":if(i==="*"&&a==="/"){t+=2,r="normal";continue}t++;continue;case"regex":if(i==="\\"&&t+1<e.length){t+=2;continue}if(i==="["){for(t++;t<e.length&&e[t]!=="]";)e[t]==="\\"&&t+1<e.length?t+=2:t++;t<e.length&&t++;continue}if(i==="/"){for(t++;t<e.length&&/[gimsuy]/.test(e[t]);)t++;r="normal";continue}t++;continue;case"normal":if(s.length>0){if(i==="{")s[s.length-1]++;else if(i==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),t++,r="template-string";continue}}if(i==="'"){t++,r="single-string";continue}if(i==='"'){t++,r="double-string";continue}if(i==="`"){t++,r="template-string";continue}if(i==="/"&&a==="/"){t+=2,r="line-comment";continue}if(i==="/"&&a==="*"){t+=2,r="block-comment";continue}if(i==="/"){let c=t-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){t++,r="regex";continue}}if(i==="t"&&e.slice(t,t+6)==="typeof"&&(t===0||!/[\w$]/.test(e[t-1]))&&/\s/.test(e[t+6]??"")){let c=t+6;for(;c<e.length&&/\s/.test(e[c]);)c++;if(c<e.length&&/[a-zA-Z_$]/.test(e[c])){let l=c;for(;c<e.length&&/[\w$]/.test(e[c]);)c++;for(;c<e.length;)if(e[c]==="."&&/[a-zA-Z_$]/.test(e[c+1]??""))for(c++;c<e.length&&/[\w$]/.test(e[c]);)c++;else if(e[c]==="?"&&e[c+1]==="."&&/[a-zA-Z_$]/.test(e[c+2]??""))for(c+=2;c<e.length&&/[\w$]/.test(e[c]);)c++;else break;n.push({keywordStart:t,operandEnd:c,operand:e.slice(l,c)}),t=c;continue}}break}t++}if(n.length===0)return e;let o=e;for(let i=n.length-1;i>=0;i--){let a=n[i];o=o.slice(0,a.keywordStart)+`TypeOf(${a.operand})`+o.slice(a.operandEnd)}return o}function Ge(e){e=qs(e);let n=[],t=0,r="normal",s=[];for(;t<e.length;){let i=e[t],a=e[t+1];switch(r){case"single-string":if(i==="\\"&&t+1<e.length){t+=2;continue}i==="'"&&(r="normal"),t++;continue;case"double-string":if(i==="\\"&&t+1<e.length){t+=2;continue}i==='"'&&(r="normal"),t++;continue;case"template-string":if(i==="\\"&&t+1<e.length){t+=2;continue}if(i==="$"&&a==="{"){t+=2,s.push(1),r="normal";continue}i==="`"&&(r="normal"),t++;continue;case"line-comment":i===`
13
+ `&&(r="normal"),t++;continue;case"block-comment":if(i==="*"&&a==="/"){t+=2,r="normal";continue}t++;continue;case"regex":if(i==="\\"&&t+1<e.length){t+=2;continue}if(i==="["){for(t++;t<e.length&&e[t]!=="]";)e[t]==="\\"&&t+1<e.length?t+=2:t++;t<e.length&&t++;continue}if(i==="/"){for(t++;t<e.length&&/[gimsuy]/.test(e[t]);)t++;r="normal";continue}t++;continue;case"normal":if(s.length>0){if(i==="{")s[s.length-1]++;else if(i==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),t++,r="template-string";continue}}if(i==="'"){t++,r="single-string";continue}if(i==='"'){t++,r="double-string";continue}if(i==="`"){t++,r="template-string";continue}if(i==="/"&&a==="/"){t+=2,r="line-comment";continue}if(i==="/"&&a==="*"){t+=2,r="block-comment";continue}if(i==="/"){let c=t-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){t++,r="regex";continue}}if(i==="="&&a==="="&&e[t+2]!=="="&&e[t-1]!=="!"){n.push({pos:t,op:"=="}),t+=2;continue}if(i==="!"&&a==="="&&e[t+2]!=="="){n.push({pos:t,op:"!="}),t+=2;continue}break}t++}if(n.length===0)return e;let o=e;for(let i=n.length-1;i>=0;i--){let{pos:a,op:c}=n[i],l=c==="=="?"Eq":"NotEq",f=Ws(o,a),p=Us(o,a+2),u=o.slice(f,a).trim(),m=o.slice(a+2,p).trim();if(u&&m){let y=o.slice(0,f),g=o.slice(p),E=/[a-zA-Z0-9_$]$/.test(y)?" ":"";o=`${y}${E}${l}(${u}, ${m})${g}`}}return o}function Ws(e,n){let t=n-1;for(;t>=0&&/\s/.test(e[t]);)t--;if(t<0)return 0;let r=0,s=!1,o="";for(;t>=0;){let i=e[t],a=t>0?e[t-1]:"";if(s){i===o&&a!=="\\"&&(s=!1),t--;continue}if((i==='"'||i==="'"||i==="`")&&a!=="\\"){s=!0,o=i,t--;continue}if(i===")"||i==="]"||i==="}"){r++,t--;continue}if(i==="("||i==="["){if(r>0){r--,t--;continue}return t+1}if(i==="{"){if(r>0){r--,t--;continue}return t+1}if(r>0){t--;continue}if(i===";")return t+1;if(/[a-z]/.test(i)){let c=t+1,l=t;for(;l>0&&/[a-z]/i.test(e[l-1]);)l--;let f=e.slice(l,c),p=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(p)){if(["return","throw","case","typeof","void","delete","await","yield"].includes(f))return c;if(f==="new")return l}}if(i===">"&&a==="="||i==="="&&a!=="="&&a!=="!"&&a!=="<"&&a!==">"||i==="&"&&a==="&"||i==="|"&&a==="|"||i==="?"||i===":"||i===",")return t+1;t--}return 0}function Us(e,n){let t=n;for(;t<e.length&&/\s/.test(e[t]);)t++;if(t>=e.length)return e.length;let r=0,s=!1,o="";for(;t<e.length;){let i=e[t],a=t+1<e.length?e[t+1]:"";if(s){i===o&&e[t-1]!=="\\"&&(s=!1),t++;continue}if((i==='"'||i==="'"||i==="`")&&e[t-1]!=="\\"){s=!0,o=i,t++;continue}if(i==="("||i==="["||i==="{"){r++,t++;continue}if(i===")"||i==="]"||i==="}"){if(r>0){r--,t++;continue}return t}if(r>0){t++;continue}if(i===";"||i==="&"&&a==="&"||i==="|"&&a==="|"||i==="?"||i===":"||i===","||(i==="="||i==="!")&&a==="="&&e[t+2]!=="=")return t;t++}return e.length}function er(e,n){let t="",r=0;for(;r<e.length;){let s=e.slice(r).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(s){let o=s[1],i=r+s[0].length,a=o,c=!1,l=e.slice(i).match(/^(['"`])([^]*?)\1\s*/);if(l){let m=i+l[0].length,y=e[m],g=y===void 0||m>=e.length||y!=="="&&y!=="{";if(y==="="||y==="{")a=l[2],c=!0,i=m;else if(g){let x=l[0].trim(),E=l[0].slice(x.length);t+=`const ${o} = Type('${o}', ${x})${E}`,r=m;continue}}let f,p=i,u=e.slice(i).match(/^=\s*/);if(u){i+=u[0].length;let m=e.slice(i).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(m){f=m[0],i+=m[0].length,p=i;let y=e.slice(i).match(/^\s*/);y&&(i+=y[0].length)}}if(e[i]==="{"){let m=i+1,y=1,g=m;for(;g<e.length&&y>0;){let _=e[g];_==="{"?y++:_==="}"&&y--,g++}if(y!==0){t+=e[r],r++;continue}let x=e.slice(m,g-1).trim(),E=g,S=x.match(/description\s*:\s*(['"`])([^]*?)\1/);S&&!c&&(a=S[2]);let b,h=x.match(/example\s*:\s*/);if(h){let _=h.index+h[0].length,$=br(x,_);$&&(b=$.value.trim())}let w=x.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(w&&b){let _=w[1].trim(),$=w[2].trim(),T=f?`, ${f}`:"",j=`globalThis.__tjs?.validate(${_}, globalThis.__tjs?.infer(${b}))`,P=Ut(o,"Type",_,$,void 0,n),A=P?`(__g => (${_}) => (${j} ? __g(${_}) : false))(${P})`:`(${_}) => { if (!${j}) return false; ${$} }`;t+=`const ${o} = Type('${a}', ${A}, ${b}${T})`}else if(w){let _=w[1].trim(),$=w[2].trim(),T=f?`, undefined, ${f}`:"",P=Ut(o,"Type",_,$,void 0,n)??`(${_}) => { ${$} }`;t+=`const ${o} = Type('${a}', ${P}${T})`}else if(b){let _=f?`, ${f}`:"";t+=`const ${o} = Type('${a}', undefined, ${b}${_})`}else f?t+=`const ${o} = Type('${a}', ${f})`:t+=`const ${o} = Type('${a}')`;r=E;continue}else if(f){t+=`const ${o} = Type('${a}', ${f})`,r=p;continue}else if(!l){let m=e.slice(i).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(m){let y=m[0];t+=`const ${o} = Type('${o}', ${y})`,r=i+m[0].length;continue}}}t+=e[r],r++}return t}function tr(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bFunctionPredicate\s+([A-Z_][a-zA-Z0-9_]*)\s*(?:<([^>]+)>)?\s*/);if(r){let s=r[1],o=r[2],i=t+r[0].length;if(e[i]==="{"){let a=1,c=i+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;if(a===0){let l=e.slice(i+1,c-1).trim(),f=Is(l,/params\s*:\s*\{/),p=l.match(/returns\s*:\s*(.+?)(?:\n|$)/),u=l.match(/returnContract\s*:\s*['"](\w+)['"]/),m=l.match(/description\s*:\s*(['"])([^]*?)\1/),y=[];f&&y.push(`params: ${f[1]}`),p&&y.push(`returns: ${p[1].trim()}`),u&&y.push(`returnContract: '${u[1]}'`);let g=m?m[2]:s;if(o){let x=o.split(",").map(S=>{let b=S.trim().split("=").map(h=>h.trim());if(b.length===2){let h=b[1]==="any"||b[1]==="undefined"?"null":b[1];return`['${b[0]}', ${h}]`}return`'${b[0]}'`}),E=o.split(",").map(S=>S.trim().split("=")[0].trim());n+=`const ${s} = FunctionPredicate('${g}', [${x.join(", ")}], (${E.join(", ")}) => ({ ${y.join(", ")} }))`}else n+=`const ${s} = FunctionPredicate('${g}', { ${y.join(", ")} })`;t=c;continue}}if(e[i]==="("){let a=1,c=i+1;for(;c<e.length&&a>0;)e[c]==="("?a++:e[c]===")"&&a--,c++;if(a===0){let l=e.slice(i+1,c-1).trim(),f=l.indexOf(",");if(f!==-1){let p=l.slice(0,f).trim(),u=l.slice(f+1).trim();n+=`const ${s} = FunctionPredicate(${u}, ${p})`}else n+=`const ${s} = FunctionPredicate('${s}', ${l})`;t=c;continue}}}n+=e[t],t++}return n}function nr(e,n){let t="",r=0;for(;r<e.length;){let s=e.slice(r).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(s){let o=s[1],i=s[2],c=r+s[0].length-1+1,l=1,f=c;for(;f<e.length&&l>0;){let b=e[f];b==="{"?l++:b==="}"&&l--,f++}if(l!==0){t+=e[r],r++;continue}let p=e.slice(c,f-1).trim(),u=f,m=i.split(",").map(b=>{let h=b.trim().split("=").map(w=>w.trim());if(h.length===2){let w=h[1]==="any"||h[1]==="undefined"?"null":h[1];return`['${h[0]}', ${w}]`}return`'${h[0]}'`}),y=p,g=y.search(/\bdeclaration\s*\{/);if(g!==-1){let b=y.indexOf("{",g),h=1,w=b+1;for(;w<y.length&&h>0;)y[w]==="{"?h++:y[w]==="}"&&h--,w++;y=y.slice(0,g)+y.slice(w)}let x=y.match(/description\s*:\s*(['"`])([^]*?)\1/),E=y.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),S=x?x[2]:o;if(E){let b=E[1].trim().split(",").map(A=>A.trim()),h=E[2].trim(),w=b[0]||"x",_=b.slice(1),$=_.map(A=>`check${A}`);_.forEach((A,C)=>{h=h.replace(new RegExp(`\\b${A}\\s*\\(`,"g"),`${$[C]}(`)});let T=[w,...$].join(", "),P=Ut(o,"Generic",T,h,$,n)??`(${T}) => { ${h} }`;t+=`const ${o} = Generic([${m.join(", ")}], ${P}, '${S}')`}else t+=`const ${o} = Generic([${m.join(", ")}], () => true, '${S}')`;r=u;continue}t+=e[r],r++}return t}function rr(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(r){let s=r[1],o=r[3],i=t+r[0].length;if(e[i]==="{"){let a=i+1,c=1,l=a;for(;l<e.length&&c>0;){let m=e[l];m==="{"?c++:m==="}"&&c--,l++}if(c!==0){n+=e[t],t++;continue}let f=e.slice(a,l-1).trim(),p=l,u=zn(f);n+=`const ${s} = Union('${o}', [${u.join(", ")}])`,t=p;continue}else{let a=e.indexOf(`
14
+ `,i);a===-1&&(a=e.length);let c=e.slice(i,a).trim();if(c){let l=zn(c);n+=`const ${s} = Union('${o}', [${l.join(", ")}])`,t=a;continue}}}n+=e[t],t++}return n}function zn(e){let n=[],t=e.split("|").map(r=>r.trim());for(let r of t)r&&n.push(r);return n}function sr(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(r){let s=r[1],o=r[3],a=t+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let y=e[l];y==="{"?c++:y==="}"&&c--,l++}if(c!==0){n+=e[t],t++;continue}let f=e.slice(a,l-1).trim(),p=l,m=Ls(f).map(([y,g])=>`${y}: ${g}`).join(", ");n+=`const ${s} = Enum('${o}', { ${m} })`,t=p;continue}n+=e[t],t++}return n}function Ls(e){let n=[],t=0,r=e.split(/[\n,]/).map(s=>s.trim()).filter(s=>s&&!s.startsWith("//"));for(let s of r){let o=s.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*(?:=\s*(.+))?$/);if(o){let i=o[1],a=o[2]?.trim();if(a!==void 0){n.push([i,a]);let c=Number(a);isNaN(c)||(t=c+1)}else n.push([i,String(t)]),t++}}return n}function ir(e){let n=new Map,t="",r=0;for(;r<e.length;){let s=e.slice(r),o=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/);if(!o){if(r===0||e[r-1]===`
15
+ `||e[r-1]===";"||e[r-1]==="}"){let b=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}t+=e[r],r++;continue}let i=o[1],a=o[2],c=r+o[0].length-1,l=Ve(e,c),f=e.slice(c+1,l-1).trim(),p=[],u=0,m=e.slice(c+1,l-1);for(;u<m.length;){let b=m.slice(u).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!b){u++;continue}let h=b[1],w=!!b[2],_=b[3],$=u+b[0].length-1,T=1,j=$+1;for(;j<m.length&&T>0;)m[j]==="("&&T++,m[j]===")"&&T--,j++;let P=m.slice($+1,j-1),A=j;for(;A<m.length&&/\s/.test(m[A]);)A++;if(m[A]==="="&&m[A+1]===">"){let V=pe(e,c+1+u);throw new z(`Arrow functions are not allowed in extend blocks (method '${_}' in extend ${a}). Use regular function syntax instead, as extension methods need 'this' binding.`,V)}if(m[A]!=="{"){u++;continue}let C=Ve(m,A),R=m.slice(u,C).trim(),I=P.split(",").map(V=>V.trim()).filter(V=>V.length>0).map(V=>{let X=V.match(/^(\w+)\s*:\s*(.+)$/);return X?`${X[1]} = ${X[2]}`:V}).join(", "),B=w?"async ":"",J=m.slice(A+1,C-1);p.push({name:_,isAsync:w,fullText:`${_}: ${B}function(${I}) {${J}}`}),u=C}let y=!n.has(a);y&&n.set(a,new Set);let g=n.get(a);for(let S of p)g.add(S.name);let x=p.map(S=>` ${S.fullText}`).join(`,
12
16
  `),E;y?E=`${i}const __ext_${a} = {
13
- ${S}
17
+ ${x}
14
18
  ${i}}
15
19
  `:E=`${i}Object.assign(__ext_${a}, {
16
- ${S}
20
+ ${x}
17
21
  ${i}})
18
- `;for(let w of f)E+=`${i}if (__tjs?.registerExtension) { __tjs.registerExtension('${a}', '${w.name}', __ext_${a}.${w.name}) }
19
- `;t+=E,r=l}return r<=e.length&&t.length<e.length,{source:t,extensions:n}}function Le(e,n){if(n.size===0)return e;let t=new Map;for(let[s,o]of n)for(let i of o)t.has(i)||t.set(i,[]),t.get(i).push(s);let r=e;for(let[s,o]of t){if(!o.includes("String"))continue;let i=new RegExp(`('(?:[^'\\\\]|\\\\.)*')\\.(${s})\\((\\))?`,"g");r=r.replace(i,(l,p,f,u)=>u?`__ext_String.${f}.call(${p})`:`__ext_String.${f}.call(${p}, `);let a=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${s})\\((\\))?`,"g");r=r.replace(a,(l,p,f,u)=>u?`__ext_String.${f}.call(${p})`:`__ext_String.${f}.call(${p}, `);let c=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+s+"\\((\\))?","g");r=r.replace(c,(l,p,f)=>f?`__ext_String.${s}.call(${p})`:`__ext_String.${s}.call(${p}, `)}for(let[s,o]of t){if(!o.includes("Array"))continue;let i=`].${s}(`,a=0,c;for(;(c=r.indexOf(i,a))!==-1;){let l=1,p=c-1,f=!1;for(;p>=0&&l>0;){let u=r[p];f?u===f&&(p===0||r[p-1]!=="\\")&&(f=!1):(u==="]"&&l++,u==="["&&l--,(u==="'"||u==='"'||u==="`")&&(f=u)),p--}if(l===0){let u=r.slice(p+1,c+1),m=r.slice(0,p+1),y=r.slice(c+i.length);y[0]===")"?r=`${m}__ext_Array.${s}.call(${u})${y.slice(1)}`:r=`${m}__ext_Array.${s}.call(${u}, ${y}`}a=c+1}}for(let[s,o]of t){if(!o.includes("Number"))continue;let i=new RegExp(`(\\d+(?:\\.\\d+)?)\\.(${s})\\((\\))?`,"g");r=r.replace(i,(a,c,l,p)=>p?`__ext_Number.${l}.call(${c})`:`__ext_Number.${l}.call(${c}, `)}return r}function pe(e,n){let t=1,r=0;for(let s=0;s<n&&s<e.length;s++)e[s]===`
20
- `?(t++,r=0):r++;return{line:t,column:r}}function Hn(e,n){let t=n.trim();return/^['"`]/.test(t)?`typeof ${e} === 'string'`:t==="true"||t==="false"?`typeof ${e} === 'boolean'`:t==="null"?`${e} === null`:t==="undefined"?`${e} === undefined`:t.startsWith("[")?`Array.isArray(${e})`:t.startsWith("{")?`(typeof ${e} === 'object' && ${e} !== null && !Array.isArray(${e}))`:/^\+\d+/.test(t)?`(typeof ${e} === 'number' && Number.isInteger(${e}) && ${e} >= 0)`:/^-?\d+\.\d+/.test(t)?`typeof ${e} === 'number'`:/^-?\d+$/.test(t)?`(typeof ${e} === 'number' && Number.isInteger(${e}))`:"true"}function ot(e){let n=e.trim();return/^['"`]/.test(n)?"string":n==="true"||n==="false"?"boolean":n==="null"?"null":n==="undefined"?"undefined":n.startsWith("[")?"array":n.startsWith("{")?"object":/^\+\d+/.test(n)?"non-negative-integer":/^-?\d+\.\d+/.test(n)?"number":/^-?\d+$/.test(n)?"integer":"any"}function It(e,n){let t=[],r=0,s="",o=!1;for(let a=0;a<e.length;a++){let c=e[a];if(!o&&(c==="'"||c==='"'||c==="`")){o=c,s+=c;continue}if(o){if(s+=c,c==="\\"){a++,a<e.length&&(s+=e[a]);continue}c===o&&(o=!1);continue}if(c==="("||c==="["||c==="{"){r++,s+=c;continue}if(c===")"||c==="]"||c==="}"){r--,s+=c;continue}if(c===","&&r===0){let l=Bn(s.trim(),n);l&&t.push(l),s="";continue}s+=c}let i=s.trim();if(i){let a=Bn(i,n);a&&t.push(a)}return t}function Bn(e,n){let t=e.replace(/^\/\*\s*unsafe\s*\*\/\s*/,"");if(t.startsWith("..."))return null;let r=t.indexOf("=");if(r===-1)return{name:t.trim(),defaultValue:"",required:!0};let s=t.slice(0,r).trim(),o=t.slice(r+1).trim();return{name:s,defaultValue:o,required:n.has(s)}}function qe(e,n){let t=1,r=n+1,s=!1,o=!1,i=!1;for(;r<e.length&&t>0;){let a=e[r],c=r+1<e.length?e[r+1]:"";if(o){a===`
21
- `&&(o=!1),r++;continue}if(i){if(a==="*"&&c==="/"){i=!1,r+=2;continue}r++;continue}if(s){if(a==="\\"){r+=2;continue}a===s&&(s=!1),r++;continue}if(a==="/"&&c==="/"){o=!0,r+=2;continue}if(a==="/"&&c==="*"){i=!0,r+=2;continue}if(a==="'"||a==='"'||a==="`"){s=a,r++;continue}a==="{"&&t++,a==="}"&&t--,r++}return r}function Yn(e,n){let t=new Set,r=/(?:^|(?<=[\n;{}]))\s*(export\s+)?(async\s+)?function\s+(\w+)\s*\(/gm,s=new Map,o,i=[];for(;(o=r.exec(e))!==null;){let f=!!o[1],u=!!o[2],m=o[3],y=o.index,b=y,E=o[0].indexOf("function");E>=0&&(b=y+E),i.push({name:m,fullMatchStart:y,funcKeywordStart:b,exported:f,isAsync:u})}for(let f of i)s.has(f.name)||s.set(f.name,[]);let a=new Map;for(let f of i)a.set(f.name,(a.get(f.name)||0)+1);let c=new Set;for(let[f,u]of a)u>1&&c.add(f);if(c.size===0)return{source:e,polymorphicNames:t};for(let f of i){if(!c.has(f.name))continue;let u=e.indexOf("(",f.funcKeywordStart);if(u===-1)continue;let m=1,y=u+1;for(;y<e.length&&m>0;)e[y]==="("&&m++,e[y]===")"&&m--,y++;let b=y-1,S=e.slice(u+1,b),E=y;for(;E<e.length&&e[E]!=="{";)E++;if(E>=e.length)continue;let w=qe(e,E),h=f.fullMatchStart;for(;h>0&&e[h-1]===" ";)h--;let x=s.get(f.name),_=It(S,n);if(S.includes("...")){let $=pe(e,f.funcKeywordStart);throw new z(`Rest parameters are not supported in polymorphic function '${f.name}'. Use separate function names instead.`,$)}x.push({index:x.length+1,start:h,end:w,text:e.slice(h,w),exported:f.exported,isAsync:f.isAsync,params:_})}for(let[f,u]of s){if(u.length<2)continue;let m=u.filter(y=>y.isAsync).length;if(m>0&&m<u.length){let y=pe(e,u[0].start);throw new z(`Polymorphic function '${f}': all variants must be either sync or async, not mixed.`,y)}for(let y=0;y<u.length;y++)for(let b=y+1;b<u.length;b++){let S=u[y],E=u[b];if(S.params.length!==E.params.length)continue;let w=!0;for(let h=0;h<S.params.length;h++){let x=S.params[h].defaultValue?ot(S.params[h].defaultValue):"any",_=E.params[h].defaultValue?ot(E.params[h].defaultValue):"any";if(x!==_){w=!1;break}}if(w){let h=pe(e,E.start);throw new z(`Polymorphic function '${f}': variants ${y+1} and ${b+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,h)}}}let l=[];for(let[f,u]of s)if(!(u.length<2))for(let m of u)l.push({name:f,variant:m});l.sort((f,u)=>u.variant.start-f.variant.start);let p=e;for(let{name:f,variant:u}of l){let m=u.isAsync?"async ":"",y=u.text.replace(new RegExp(`(?:export\\s+)?${m?m.replace(/\s+$/,"\\s+"):""}function\\s+${f}\\s*\\(`),`${m}function ${f}$$${u.index}(`);p=p.slice(0,u.start)+y+p.slice(u.end)}for(let[f,u]of s){if(u.length<2)continue;t.add(f);let m=u[0].isAsync,y=u.some(x=>x.exported),b=m?"async ":"",S=y?"export ":"",E=[...u].sort((x,_)=>{if(x.params.length!==_.params.length)return 0;let g=0,$=0;for(let k of x.params){let j=k.defaultValue?ot(k.defaultValue):"any";j==="non-negative-integer"?g+=3:j==="integer"?g+=2:j!=="any"&&(g+=1)}for(let k of _.params){let j=k.defaultValue?ot(k.defaultValue):"any";j==="non-negative-integer"?$+=3:j==="integer"?$+=2:j!=="any"&&($+=1)}return $-g}),w=[];for(let x of E){let _=[`__args.length === ${x.params.length}`],g=[];for(let $=0;$<x.params.length;$++){let k=x.params[$];if(g.push(`__args[${$}]`),k.defaultValue){let j=Hn(`__args[${$}]`,k.defaultValue);j!=="true"&&_.push(j)}}w.push(` if (${_.join(" && ")}) return ${f}$${x.index}(${g.join(", ")})`)}let h=`
22
- ${S}${b}function ${f}(...__args) {
23
- ${w.join(`
22
+ `;for(let S of p)E+=`${i}if (__tjs?.registerExtension) { __tjs.registerExtension('${a}', '${S.name}', __ext_${a}.${S.name}) }
23
+ `;t+=E,r=l}return r<=e.length&&t.length<e.length,{source:t,extensions:n}}function Ze(e,n){if(n.size===0)return e;let t=new Map;for(let[s,o]of n)for(let i of o)t.has(i)||t.set(i,[]),t.get(i).push(s);let r=e;for(let[s,o]of t){if(!o.includes("String"))continue;let i=new RegExp(`('(?:[^'\\\\]|\\\\.)*')\\.(${s})\\((\\))?`,"g");r=r.replace(i,(l,f,p,u)=>u?`__ext_String.${p}.call(${f})`:`__ext_String.${p}.call(${f}, `);let a=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${s})\\((\\))?`,"g");r=r.replace(a,(l,f,p,u)=>u?`__ext_String.${p}.call(${f})`:`__ext_String.${p}.call(${f}, `);let c=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+s+"\\((\\))?","g");r=r.replace(c,(l,f,p)=>p?`__ext_String.${s}.call(${f})`:`__ext_String.${s}.call(${f}, `)}for(let[s,o]of t){if(!o.includes("Array"))continue;let i=`].${s}(`,a=0,c;for(;(c=r.indexOf(i,a))!==-1;){let l=1,f=c-1,p=!1;for(;f>=0&&l>0;){let u=r[f];p?u===p&&(f===0||r[f-1]!=="\\")&&(p=!1):(u==="]"&&l++,u==="["&&l--,(u==="'"||u==='"'||u==="`")&&(p=u)),f--}if(l===0){let u=r.slice(f+1,c+1),m=r.slice(0,f+1),y=r.slice(c+i.length);y[0]===")"?r=`${m}__ext_Array.${s}.call(${u})${y.slice(1)}`:r=`${m}__ext_Array.${s}.call(${u}, ${y}`}a=c+1}}for(let[s,o]of t){if(!o.includes("Number"))continue;let i=new RegExp(`(\\d+(?:\\.\\d+)?)\\.(${s})\\((\\))?`,"g");r=r.replace(i,(a,c,l,f)=>f?`__ext_Number.${l}.call(${c})`:`__ext_Number.${l}.call(${c}, `)}return r}function pe(e,n){let t=1,r=0;for(let s=0;s<n&&s<e.length;s++)e[s]===`
24
+ `?(t++,r=0):r++;return{line:t,column:r}}function or(e,n){let t=n.trim();return/^['"`]/.test(t)?`typeof ${e} === 'string'`:t==="true"||t==="false"?`typeof ${e} === 'boolean'`:t==="null"?`${e} === null`:t==="undefined"?`${e} === undefined`:t.startsWith("[")?`Array.isArray(${e})`:t.startsWith("{")?`(typeof ${e} === 'object' && ${e} !== null && !Array.isArray(${e}))`:/^\+\d+/.test(t)?`(typeof ${e} === 'number' && Number.isInteger(${e}) && ${e} >= 0)`:/^-?\d+\.\d+/.test(t)?`typeof ${e} === 'number'`:/^-?\d+$/.test(t)?`(typeof ${e} === 'number' && Number.isInteger(${e}))`:"true"}function pt(e){let n=e.trim();return/^['"`]/.test(n)?"string":n==="true"||n==="false"?"boolean":n==="null"?"null":n==="undefined"?"undefined":n.startsWith("[")?"array":n.startsWith("{")?"object":/^\+\d+/.test(n)?"non-negative-integer":/^-?\d+\.\d+/.test(n)?"number":/^-?\d+$/.test(n)?"integer":"any"}function Lt(e,n){let t=[],r=0,s="",o=!1;for(let a=0;a<e.length;a++){let c=e[a];if(!o&&(c==="'"||c==='"'||c==="`")){o=c,s+=c;continue}if(o){if(s+=c,c==="\\"){a++,a<e.length&&(s+=e[a]);continue}c===o&&(o=!1);continue}if(c==="("||c==="["||c==="{"){r++,s+=c;continue}if(c===")"||c==="]"||c==="}"){r--,s+=c;continue}if(c===","&&r===0){let l=Gn(s.trim(),n);l&&t.push(l),s="";continue}s+=c}let i=s.trim();if(i){let a=Gn(i,n);a&&t.push(a)}return t}function Gn(e,n){let t=e.replace(/^\/\*\s*unsafe\s*\*\/\s*/,"");if(t.startsWith("..."))return null;let r=t.indexOf("=");if(r===-1)return{name:t.trim(),defaultValue:"",required:!0};let s=t.slice(0,r).trim(),o=t.slice(r+1).trim();return{name:s,defaultValue:o,required:n.has(s)}}function Ve(e,n){let t=1,r=n+1,s=!1,o=!1,i=!1;for(;r<e.length&&t>0;){let a=e[r],c=r+1<e.length?e[r+1]:"";if(o){a===`
25
+ `&&(o=!1),r++;continue}if(i){if(a==="*"&&c==="/"){i=!1,r+=2;continue}r++;continue}if(s){if(a==="\\"){r+=2;continue}a===s&&(s=!1),r++;continue}if(a==="/"&&c==="/"){o=!0,r+=2;continue}if(a==="/"&&c==="*"){i=!0,r+=2;continue}if(a==="'"||a==='"'||a==="`"){s=a,r++;continue}a==="{"&&t++,a==="}"&&t--,r++}return r}function ar(e,n){let t=new Set,r=/(?:^|(?<=[\n;{}]))\s*(export\s+)?(async\s+)?function\s+(\w+)\s*\(/gm,s=new Map,o,i=[];for(;(o=r.exec(e))!==null;){let p=!!o[1],u=!!o[2],m=o[3],y=o.index,g=y,E=o[0].indexOf("function");E>=0&&(g=y+E),i.push({name:m,fullMatchStart:y,funcKeywordStart:g,exported:p,isAsync:u})}for(let p of i)s.has(p.name)||s.set(p.name,[]);let a=new Map;for(let p of i)a.set(p.name,(a.get(p.name)||0)+1);let c=new Set;for(let[p,u]of a)u>1&&c.add(p);if(c.size===0)return{source:e,polymorphicNames:t};for(let p of i){if(!c.has(p.name))continue;let u=e.indexOf("(",p.funcKeywordStart);if(u===-1)continue;let m=1,y=u+1;for(;y<e.length&&m>0;)e[y]==="("&&m++,e[y]===")"&&m--,y++;let g=y-1,x=e.slice(u+1,g),E=y;for(;E<e.length&&e[E]!=="{";)E++;if(E>=e.length)continue;let S=Ve(e,E),b=p.fullMatchStart;for(;b>0&&e[b-1]===" ";)b--;let h=s.get(p.name),w=Lt(x,n);if(x.includes("...")){let $=pe(e,p.funcKeywordStart);throw new z(`Rest parameters are not supported in polymorphic function '${p.name}'. Use separate function names instead.`,$)}h.push({index:h.length+1,start:b,end:S,text:e.slice(b,S),exported:p.exported,isAsync:p.isAsync,params:w})}for(let[p,u]of s){if(u.length<2)continue;let m=u.filter(y=>y.isAsync).length;if(m>0&&m<u.length){let y=pe(e,u[0].start);throw new z(`Polymorphic function '${p}': all variants must be either sync or async, not mixed.`,y)}for(let y=0;y<u.length;y++)for(let g=y+1;g<u.length;g++){let x=u[y],E=u[g];if(x.params.length!==E.params.length)continue;let S=!0;for(let b=0;b<x.params.length;b++){let h=x.params[b].defaultValue?pt(x.params[b].defaultValue):"any",w=E.params[b].defaultValue?pt(E.params[b].defaultValue):"any";if(h!==w){S=!1;break}}if(S){let b=pe(e,E.start);throw new z(`Polymorphic function '${p}': variants ${y+1} and ${g+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,b)}}}let l=[];for(let[p,u]of s)if(!(u.length<2))for(let m of u)l.push({name:p,variant:m});l.sort((p,u)=>u.variant.start-p.variant.start);let f=e;for(let{name:p,variant:u}of l){let m=u.isAsync?"async ":"",y=u.text.replace(new RegExp(`(?:export\\s+)?${m?m.replace(/\s+$/,"\\s+"):""}function\\s+${p}\\s*\\(`),`${m}function ${p}$$${u.index}(`);f=f.slice(0,u.start)+y+f.slice(u.end)}for(let[p,u]of s){if(u.length<2)continue;t.add(p);let m=u[0].isAsync,y=u.some(h=>h.exported),g=m?"async ":"",x=y?"export ":"",E=[...u].sort((h,w)=>{if(h.params.length!==w.params.length)return 0;let _=0,$=0;for(let T of h.params){let j=T.defaultValue?pt(T.defaultValue):"any";j==="non-negative-integer"?_+=3:j==="integer"?_+=2:j!=="any"&&(_+=1)}for(let T of w.params){let j=T.defaultValue?pt(T.defaultValue):"any";j==="non-negative-integer"?$+=3:j==="integer"?$+=2:j!=="any"&&($+=1)}return $-_}),S=[];for(let h of E){let w=[`__args.length === ${h.params.length}`],_=[];for(let $=0;$<h.params.length;$++){let T=h.params[$];if(_.push(`__args[${$}]`),T.defaultValue){let j=or(`__args[${$}]`,T.defaultValue);j!=="true"&&w.push(j)}}S.push(` if (${w.join(" && ")}) return ${p}$${h.index}(${_.join(", ")})`)}let b=`
26
+ ${x}${g}function ${p}(...__args) {
27
+ ${S.join(`
24
28
  `)}
25
- return __tjs.typeError('${f}', 'no matching overload', __args)
29
+ return __tjs.typeError('${p}', 'no matching overload', __args)
26
30
  }
27
- `;p+=h}return{source:p,polymorphicNames:t}}function Xn(e){let n=new Set,t=/\b(?:let|const|var|function|class)\s+([A-Z][a-zA-Z0-9_]*)/g;for(let r;r=t.exec(e);)n.add(r[1]);return e.replace(/(?<=^|[;\n{])(\s*)([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(r,s,o)=>n.has(o)?r:r.replace(o,`const ${o}`))}function Qn(e,n=!1){let t=[],r=[],s="",o=0;for(;o<e.length;){let i=e.slice(o).match(/^\btest\s+/);if(i){let a=o,c=o+i[0].length,l,p=e.slice(c).match(/^(['"`])([^]*?)\1\s*/);if(p&&(l=p[2],c+=p[0].length),e[c]==="{"){let f=c+1,u=1,m=f,y=null,b=!1;for(;m<e.length&&u>0;){let S=e[m];if(b){b=!1,m++;continue}if(S==="\\"&&y){b=!0,m++;continue}if(y){S===y&&(y=null),m++;continue}if(S==="/"&&e[m+1]==="/"){let E=e.indexOf(`
28
- `,m);m=E===-1?e.length:E+1;continue}if(S==="/"&&e[m+1]==="*"){let E=e.indexOf("*/",m+2);m=E===-1?e.length:E+2;continue}if(S==="'"||S==='"'||S==="`"){y=S,m++;continue}S==="{"?u++:S==="}"&&u--,m++}if(u===0){let S=e.slice(f,m-1).trim(),E=m,w=(e.slice(0,a).match(/\n/g)||[]).length+1;if(t.push({description:l,body:S,start:a,end:E,line:w}),!n)try{new Function(S)()}catch(_){let g=l||`test at line ${w}`;r.push(`Test failed: ${g} (line ${w})
29
- ${_.message||_}`)}let x=(e.slice(a,E).match(/\n/g)||[]).length;s+=`
30
- `.repeat(x),o=E;continue}}}s+=e[o],o++}return{source:s,tests:t,errors:r}}function er(e,n){let t=new Set,r=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,s,o=[];for(;(s=r.exec(e))!==null;){let a=s[1],c=s[2]?.trim()||"",l=s.index+s[0].length-1,p=qe(e,l),f=e.slice(l,p);o.push({className:a,extendsClause:c,bodyStart:l,bodyEnd:p,body:f})}let i=e;for(let a=o.length-1;a>=0;a--){let{className:c,extendsClause:l,bodyStart:p,bodyEnd:f,body:u}=o[a],m=/\bconstructor\s*\(/g,y,b=[];for(;(y=m.exec(u))!==null;)b.push(y.index);if(b.length<2)continue;t.add(c);let S=[];for(let _=0;_<b.length;_++){let g=b[_],$=u.indexOf("(",g),k=1,j=$+1;for(;j<u.length&&k>0;)u[j]==="("&&k++,u[j]===")"&&k--,j++;let A=u.slice($+1,j-1),M=j;for(;M<u.length&&u[M]!=="{";)M++;let P=qe(u,M),R=u.slice(M+1,P-1);S.push({index:_+1,paramStr:A,bodyText:R,fullStart:g,fullEnd:P})}let E=u;for(let _=S.length-1;_>=1;_--){let g=S[_],$=g.fullStart;for(;$>0&&E[$-1]===" ";)$--;$>0&&E[$-1]===`
31
- `&&$--,E=E.slice(0,$)+E.slice(g.fullEnd)}let w="";for(let _=1;_<S.length;_++){let g=S[_],$=It(g.paramStr,n);if(g.paramStr.includes("...")){let j=pe(e,p+g.fullStart);throw new z(`Rest parameters are not supported in polymorphic constructors for '${c}'.`,j)}w+=`
32
- function ${c}$ctor$${g.index}(${g.paramStr}) {`,w+=`
33
- const __obj = Object.create(${c}.prototype)`,w+=`
34
- ;(function() {${g.bodyText}}).call(__obj)`,w+=`
35
- return __obj`,w+=`
31
+ `;f+=b}return{source:f,polymorphicNames:t}}function cr(e){let n=new Set,t=/\b(?:let|const|var|function|class)\s+([A-Z][a-zA-Z0-9_]*)/g;for(let r;r=t.exec(e);)n.add(r[1]);return e.replace(/(?<=^|[;\n{])(\s*)([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(r,s,o)=>n.has(o)?r:r.replace(o,`const ${o}`))}function lr(e,n=!1){let t=[],r=[],s="",o=0;for(;o<e.length;){let i=e.slice(o).match(/^\btest\s+/);if(i){let a=o,c=o+i[0].length,l,f=e.slice(c).match(/^(['"`])([^]*?)\1\s*/);if(f&&(l=f[2],c+=f[0].length),e[c]==="{"){let p=c+1,u=1,m=p,y=null,g=!1;for(;m<e.length&&u>0;){let x=e[m];if(g){g=!1,m++;continue}if(x==="\\"&&y){g=!0,m++;continue}if(y){x===y&&(y=null),m++;continue}if(x==="/"&&e[m+1]==="/"){let E=e.indexOf(`
32
+ `,m);m=E===-1?e.length:E+1;continue}if(x==="/"&&e[m+1]==="*"){let E=e.indexOf("*/",m+2);m=E===-1?e.length:E+2;continue}if(x==="'"||x==='"'||x==="`"){y=x,m++;continue}x==="{"?u++:x==="}"&&u--,m++}if(u===0){let x=e.slice(p,m-1).trim(),E=m,S=(e.slice(0,a).match(/\n/g)||[]).length+1;if(t.push({description:l,body:x,start:a,end:E,line:S}),!n)try{new Function(x)()}catch(w){let _=l||`test at line ${S}`;r.push(`Test failed: ${_} (line ${S})
33
+ ${w.message||w}`)}let h=(e.slice(a,E).match(/\n/g)||[]).length;s+=`
34
+ `.repeat(h),o=E;continue}}}s+=e[o],o++}return{source:s,tests:t,errors:r}}function ur(e,n){let t=new Set,r=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,s,o=[];for(;(s=r.exec(e))!==null;){let a=s[1],c=s[2]?.trim()||"",l=s.index+s[0].length-1,f=Ve(e,l),p=e.slice(l,f);o.push({className:a,extendsClause:c,bodyStart:l,bodyEnd:f,body:p})}let i=e;for(let a=o.length-1;a>=0;a--){let{className:c,extendsClause:l,bodyStart:f,bodyEnd:p,body:u}=o[a],m=/\bconstructor\s*\(/g,y,g=[];for(;(y=m.exec(u))!==null;)g.push(y.index);if(g.length<2)continue;t.add(c);let x=[];for(let w=0;w<g.length;w++){let _=g[w],$=u.indexOf("(",_),T=1,j=$+1;for(;j<u.length&&T>0;)u[j]==="("&&T++,u[j]===")"&&T--,j++;let P=u.slice($+1,j-1),A=j;for(;A<u.length&&u[A]!=="{";)A++;let C=Ve(u,A),R=u.slice(A+1,C-1);x.push({index:w+1,paramStr:P,bodyText:R,fullStart:_,fullEnd:C})}let E=u;for(let w=x.length-1;w>=1;w--){let _=x[w],$=_.fullStart;for(;$>0&&E[$-1]===" ";)$--;$>0&&E[$-1]===`
35
+ `&&$--,E=E.slice(0,$)+E.slice(_.fullEnd)}let S="";for(let w=1;w<x.length;w++){let _=x[w],$=Lt(_.paramStr,n);if(_.paramStr.includes("...")){let j=pe(e,f+_.fullStart);throw new z(`Rest parameters are not supported in polymorphic constructors for '${c}'.`,j)}S+=`
36
+ function ${c}$ctor$${_.index}(${_.paramStr}) {`,S+=`
37
+ const __obj = Object.create(${c}.prototype)`,S+=`
38
+ ;(function() {${_.bodyText}}).call(__obj)`,S+=`
39
+ return __obj`,S+=`
36
40
  }
37
- `}let h=[];for(let _=0;_<S.length;_++){let g=S[_],$=It(g.paramStr,n),k=[`a.length === ${$.length}`];for(let j=0;j<$.length;j++){let A=$[j];if(A.defaultValue){let M=Hn(`a[${j}]`,A.defaultValue);M!=="true"&&k.push(M)}}if(_===0)h.push(` if (${k.join(" && ")}) return Reflect.construct(t, a)`);else{let j=$.map((A,M)=>`a[${M}]`).join(", ");h.push(` if (${k.join(" && ")}) return ${c}$ctor$${g.index}(${j})`)}}w+=`
41
+ `}let b=[];for(let w=0;w<x.length;w++){let _=x[w],$=Lt(_.paramStr,n),T=[`a.length === ${$.length}`];for(let j=0;j<$.length;j++){let P=$[j];if(P.defaultValue){let A=or(`a[${j}]`,P.defaultValue);A!=="true"&&T.push(A)}}if(w===0)b.push(` if (${T.join(" && ")}) return Reflect.construct(t, a)`);else{let j=$.map((P,A)=>`a[${A}]`).join(", ");b.push(` if (${T.join(" && ")}) return ${c}$ctor$${_.index}(${j})`)}}S+=`
38
42
  function ${c}$dispatch(t, a) {
39
- `,w+=h.join(`
43
+ `,S+=b.join(`
40
44
  `)+`
41
- `,w+=` return __tjs.typeError('${c}', 'no matching constructor', a)
42
- `,w+=`}
43
- `,i=i.slice(0,p)+E+i.slice(f);let x=p+E.length;i=i.slice(0,x)+w+i.slice(x)}return{source:i,polyCtorClasses:t}}function tr(e,n=new Set){let t=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,r="",s=0,o;for(;(o=t.exec(e))!==null;){let i=o[1],a=o[2]||"",c=o.index,l=c+o[0].length-1,p=1,f=l+1;for(;f<e.length&&p>0;){let u=e[f];u==="{"?p++:u==="}"&&p--,f++}if(p===0){let u=f,m=e.slice(l,u);r+=e.slice(s,c),r+=`let ${i} = class ${i}${a} ${m}; `,n.has(i)?r+=`${i} = new Proxy(${i}, { apply(t, _, a) { return ${i}$dispatch(t, a) }, construct(t, a) { return ${i}$dispatch(t, a) } });`:r+=`${i} = new Proxy(${i}, { apply(t, _, a) { return Reflect.construct(t, a) } });`,s=u}}return r+=e.slice(s),r}function nr(e){let n=[{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:t,message:r}of n)if(t.test(e))throw new Error(r);return e}function rr(e){let n=new Set,t=/\bconst!\s+(\w+)\b/g,r;for(;(r=t.exec(e))!==null;)n.add(r[1]);if(n.size===0)return e;e=e.replace(/\bconst!\s+/g,"const ");let s=e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"");for(let o of n){if(new RegExp(`\\b${o}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])\\s*(?:=(?!=)|\\+\\+|--|\\+=|-=|\\*=|\\/=|%=|&&=|\\|\\|=|\\?\\?=|<<=|>>=|>>>=|\\^=|&=|\\|=)`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${o}'. const! bindings are read-only at compile time.`);if(new RegExp(`(?:\\+\\+|--)\\s*${o}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${o}'. const! bindings are read-only at compile time.`);if(new RegExp(`\\bdelete\\s+${o}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${o}'. const! bindings are read-only at compile time.`);let l="push|pop|splice|shift|unshift|sort|reverse|fill|copyWithin|set";if(new RegExp(`\\b${o}\\s*\\.\\s*(?:${l})\\s*\\(`,"g").test(s))throw new Error(`Cannot call mutating method on immutable binding '${o}'. const! bindings are read-only at compile time.`)}return e}function sr(e){if(/(?<![a-zA-Z_$])\bvar\s+/.test(e))throw new Error("var is not allowed in TjsNoVar mode. Use const or let instead.");return e}function ir(e){if(/(?<![A-Za-z_$])\beval\s*\(/.test(e))throw new Error("eval() is not allowed in TjsNoeval mode. Use Eval() from TJS runtime for safe evaluation.");if(/\bnew\s+Function\s*\(/.test(e))throw new Error("new Function() is not allowed in TjsNoeval mode. Use SafeFunction() from TJS runtime.");return e}function or(e){if(!e.includes("!."))return e;let n="",t=0,r="normal",s=0;for(;t<e.length;){let o=e[t],i=e[t+1];if(r==="normal"){if(o==="/"&&i==="/"){r="line-comment",n+=o,t++;continue}if(o==="/"&&i==="*"){r="block-comment",n+=o,t++;continue}if(o==="'"){r="string-single",n+=o,t++;continue}if(o==='"'){r="string-double",n+=o,t++;continue}if(o==="`"){r="string-template",s++,n+=o,t++;continue}if(o==="!"&&i==="."&&t+2<e.length&&/[a-zA-Z_$]/.test(e[t+2])){let a=n.length,c=js(n);if(c<a){let l=n.slice(c);n=n.slice(0,c);let p=t+2;for(;p<e.length&&/[\w$]/.test(e[p]);)p++;let f=e.slice(t+2,p);n+=`__tjs.bang(${l},'${f}')`,t=p;continue}}n+=o,t++}else r==="line-comment"?(n+=o,o===`
44
- `&&(r="normal"),t++):r==="block-comment"?(n+=o,o==="*"&&i==="/"?(n+=i,r="normal",t+=2):t++):r==="string-single"?(n+=o,o==="\\"?(n+=i||"",t+=2):(o==="'"&&(r="normal"),t++)):r==="string-double"?(n+=o,o==="\\"?(n+=i||"",t+=2):(o==='"'&&(r="normal"),t++)):r==="string-template"?(n+=o,o==="\\"?(n+=i||"",t+=2):o==="`"?(s--,r=s>0?"string-template":"normal",t++):o==="$"&&i==="{"?(n+=i,t+=2,r="normal"):t++):(n+=o,t++)}return n}function js(e){let n=e.length-1;for(;n>=0&&/\s/.test(e[n]);)n--;if(n<0)return e.length;for(;n>=0;){let t=e[n];if(/[\w$]/.test(t)){for(;n>=0&&/[\w$]/.test(e[n]);)n--;if(n>=0&&e[n]==="."){n>=1&&e[n-1]==="?"?n-=2:n--;continue}return n+1}else if(t===")"){if(n=Fn(e,n,"(",")"),n<0)return 0;if(n--,n>=0&&/[\w$]/.test(e[n]))continue;if(n>=0&&e[n]==="."){n>=1&&e[n-1]==="?"?n-=2:n--;continue}return n+1}else if(t==="]"){if(n=Fn(e,n,"[","]"),n<0)return 0;if(n--,n>=0&&/[\w$]/.test(e[n]))continue;if(n>=0&&e[n]==="."){n>=1&&e[n-1]==="?"?n-=2:n--;continue}return n+1}else return n+1}return 0}function Fn(e,n,t,r){let s=1;for(n--;n>=0&&s>0;)e[n]===r?s++:e[n]===t&&s--,s>0&&n--;return n}function ar(e){let n=new Map;if(!e.includes("let "))return{source:e,annotations:n};let t=[],r=0,s="normal",o=[];for(;r<e.length;){let a=e[r],c=e[r+1];switch(s){case"single-string":if(a==="\\"&&r+1<e.length){r+=2;continue}a==="'"&&(s="normal"),r++;continue;case"double-string":if(a==="\\"&&r+1<e.length){r+=2;continue}a==='"'&&(s="normal"),r++;continue;case"template-string":if(a==="\\"&&r+1<e.length){r+=2;continue}if(a==="$"&&c==="{"){r+=2,o.push(1),s="normal";continue}a==="`"&&(s="normal"),r++;continue;case"line-comment":a===`
45
- `&&(s="normal"),r++;continue;case"block-comment":if(a==="*"&&c==="/"){r+=2,s="normal";continue}r++;continue;case"regex":if(a==="\\"&&r+1<e.length){r+=2;continue}if(a==="["){for(r++;r<e.length&&e[r]!=="]";)e[r]==="\\"&&r+1<e.length?r+=2:r++;r<e.length&&r++;continue}if(a==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)r++;s="normal";continue}r++;continue;case"normal":if(o.length>0){if(a==="{")o[o.length-1]++;else if(a==="}"&&(o[o.length-1]--,o[o.length-1]===0)){o.pop(),r++,s="template-string";continue}}if(a==="'"){r++,s="single-string";continue}if(a==='"'){r++,s="double-string";continue}if(a==="`"){r++,s="template-string";continue}if(a==="/"&&c==="/"){r+=2,s="line-comment";continue}if(a==="/"&&c==="*"){r+=2,s="block-comment";continue}if(a==="/"){let l=r-1;for(;l>=0&&/\s/.test(e[l]);)l--;let p=l>=0?e[l]:"";if(!p||/[=(!,;:{[&|?+\-*%<>~^]/.test(p)||l>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,l-10),l+1))){r++,s="regex";continue}}if(a==="l"&&e.slice(r,r+4)==="let "&&(r===0||!/[\w$]/.test(e[r-1]))){let l=r+4;for(;l<e.length&&/\s/.test(e[l]);)l++;if(l<e.length&&/[a-zA-Z_$]/.test(e[l])){let p=l;for(;l<e.length&&/[\w$]/.test(e[l]);)l++;let f=l,u=e.slice(p,f),m=l;for(;m<e.length&&/\s/.test(e[m]);)m++;if(m<e.length&&e[m]===":"&&e[m+1]!==":"){let b=m+1;for(;b<e.length&&/[ \t]/.test(e[b]);)b++;let S=vs(e,b);if(S>b){let E=e.slice(b,S).trim();n.set(u,E),t.push({start:f,end:S,replacement:""}),r=S;continue}}}}break}r++}if(t.length===0)return{source:e,annotations:n};let i=e;for(let a=t.length-1;a>=0;a--){let c=t[a];i=i.slice(0,c.start)+c.replacement+i.slice(c.end)}return{source:i,annotations:n}}function vs(e,n){let t=n,r=0,s=0,o=0,i="normal",a=[];for(;t<e.length;){let c=e[t];if(i==="sq"){if(c==="\\"){t+=2;continue}c==="'"&&(i="normal"),t++;continue}if(i==="dq"){if(c==="\\"){t+=2;continue}c==='"'&&(i="normal"),t++;continue}if(i==="tpl"){if(c==="\\"){t+=2;continue}if(c==="$"&&e[t+1]==="{"){a.push(1),i="normal",t+=2;continue}c==="`"&&(i="normal"),t++;continue}if(a.length>0){if(c==="{")a[a.length-1]++;else if(c==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),i="tpl",t++;continue}}if(c==="'"){i="sq",t++;continue}if(c==='"'){i="dq",t++;continue}if(c==="`"){i="tpl",t++;continue}if(c==="("?r++:c===")"?r--:c==="{"?s++:c==="}"?s--:c==="["?o++:c==="]"&&o--,r===0&&s===0&&o===0&&(c==="="||c===","||c===";"||c===`
46
- `))return t;t++}return t}function ut(e,n){let t="",r=0,s,o,i="normal",a=[],c=[{type:"top-level",braceDepth:0}],l=0,p=()=>c[c.length-1]?.type||"top-level",f=()=>{let u=c[c.length-1];return u?.type==="class-body"&&l===u.braceDepth+1};for(;r<e.length;){let u=e[r],m=e[r+1];switch(i){case"single-string":if(t+=u,u==="\\"&&r+1<e.length){t+=m,r+=2;continue}u==="'"&&(i="normal"),r++;continue;case"double-string":if(t+=u,u==="\\"&&r+1<e.length){t+=m,r+=2;continue}u==='"'&&(i="normal"),r++;continue;case"template-string":if(t+=u,u==="\\"&&r+1<e.length){t+=m,r+=2;continue}if(u==="$"&&m==="{"){t+=m,r+=2,a.push(1),i="normal";continue}u==="`"&&(i="normal"),r++;continue;case"line-comment":t+=u,u===`
47
- `&&(i="normal"),r++;continue;case"block-comment":if(t+=u,u==="*"&&m==="/"){t+=m,r+=2,i="normal";continue}r++;continue;case"regex":if(t+=u,u==="\\"&&r+1<e.length){t+=m,r+=2;continue}if(u==="["){for(r++;r<e.length&&e[r]!=="]";)t+=e[r],e[r]==="\\"&&r+1<e.length?(t+=e[r+1],r+=2):r++;r<e.length&&(t+=e[r],r++);continue}if(u==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)t+=e[r],r++;i="normal";continue}r++;continue;case"normal":if(a.length>0){if(u==="{")a[a.length-1]++;else if(u==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),t+=u,r++,i="template-string";continue}}if(u==="'"){t+=u,r++,i="single-string";continue}if(u==='"'){t+=u,r++,i="double-string";continue}if(u==="`"){t+=u,r++,i="template-string";continue}if(u==="/"&&m==="/"){t+=u+m,r+=2,i="line-comment";continue}if(u==="/"&&m==="*"){t+=u+m,r+=2,i="block-comment";continue}if(u==="/"){let h=t.trimEnd();if(!h[h.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(h)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(h)){t+=u,r++,i="regex";continue}}break}if(u==="{"){l++,t+=u,r++;continue}if(u==="}"){l--;let h=c[c.length-1];h&&l===h.braceDepth&&c.pop(),t+=u,r++;continue}let y=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(y){let h=y[0].slice(0,-1);t+=h,r+=h.length,c.push({type:"class-body",braceDepth:l});continue}let b=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(b){let h=b[1],x=b[0].length,_=e[r+x],g,$=r+x;(_==="?"||_==="!")&&(g=_,$++,g==="!"?n.unsafeFunctions.add(h):n.safeFunctions.add(h)),t+=`function ${h}(`,r=$;let k=at(e,r,"(",")");if(!k){t+=e[r],r++;continue}let{content:j,endPos:A}=k;r=A;let M=Bt(j,n,!0);t+=M+")";let P=r;for(;P<e.length&&/\s/.test(e[P]);)P++;if(e[P]===":"){let I=e.slice(P,P+2),B;for(I===":?"||I===":!"?(P+=2,B=I===":?"?"safe":"unsafe"):P+=1;P<e.length&&/\s/.test(e[P]);)P++;let J=Ot(e,P);J&&(s===void 0&&(s=J.type,B&&(o=B)),r=J.endPos)}let R=r;for(;R<e.length&&/\s/.test(e[R]);)R++;if(e[R]==="="&&e[R+1]===">")throw new z("Unexpected '=>' after function declaration. Function declarations use `function name(params) { body }`, not arrow syntax. Remove the `=>`.",pe(n.originalSource,R),n.originalSource);continue}let S=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),E=(()=>{for(let h=t.length-1;h>=0;h--)if(!/\s/.test(t[h]))return t[h];return`
48
- `})(),w=E!=="="&&E!==","&&E!=="("&&E!=="["&&E!==">";if(S&&f()&&!w){let h=S[1].length;t+=e.slice(r,r+h),r+=h;continue}if(S&&f()&&w){let h=S[1],x=S[0].length,_=r+x;t+=h+"(",r=_;let g=at(e,r,"(",")");if(!g){t+=e[r],r++;continue}let{content:$,endPos:k}=g;r=k;let j=Bt($,n,!0);t+=j+")";let A=r;for(;A<e.length&&/\s/.test(e[A]);)A++;if(e[A]===":"){let P=e.slice(A,A+2);for(P===":?"||P===":!"?A+=2:A++;A<e.length&&/\s/.test(e[A]);)A++;let R=Ot(e,A);R&&(r=R.endPos)}let M=r;for(;M<e.length&&/\s/.test(e[M]);)M++;if(e[M]==="="&&e[M+1]===">")throw new z("Unexpected '=>' after method declaration. Methods use `name(params) { body }`, not arrow syntax. Remove the `=>`.",pe(n.originalSource,M),n.originalSource);continue}if(e[r]==="("){let h=at(e,r+1,"(",")");if(!h){t+=e[r],r++;continue}let x=h.content,_=h.endPos,g=_;for(;g<e.length&&/\s/.test(e[g]);)g++;let $;if(e[g]===":"){let k=e.slice(g,g+2);for(k===":?"||k===":!"?g+=2:g++;g<e.length&&/\s/.test(e[g]);)g++;let j=Ot(e,g);if(j)for($=j.type,g=j.endPos;g<e.length&&/\s/.test(e[g]);)g++}if(e.slice(g,g+2)==="=>"){let k=null,j=x,A=x.trimStart();A.startsWith("?")&&(A.length===1||/\s/.test(A[1]))?(k="?",j=A.slice(1)):A.startsWith("!")&&(A.length===1||/\s/.test(A[1]))&&(k="!",j=A.slice(1));let M=Bt(j,n,!1);for(t+=`(${k==="?"?"/* safe */ ":k==="!"?"/* unsafe */ ":""}${M})`,r=_;r<g&&/\s/.test(e[r]);)t+=e[r],r++;$&&(r=g)}else{let k=ut(x,n);t+=`(${k.source})`,r=_}continue}t+=e[r],r++}return{source:t,returnType:s,returnSafety:o}}function at(e,n,t,r){let s=1,o=n,i=!1,a="";for(;o<e.length&&s>0;){let c=e[o];!i&&(c==="'"||c==='"'||c==="`")?(i=!0,a=c):i&&c===a&&e[o-1]!=="\\"?i=!1:i||(c===t?s++:c===r&&s--),o++}return s!==0?null:{content:e.slice(n,o-1),endPos:o}}function cr(e,n){let t=n;for(;t<e.length&&/\s/.test(e[t]);)t++;if(t>=e.length)return null;let r=t,s=e[t];if(s==="{"||s==="["){let i=s==="{"?"}":"]",a=at(e,t+1,s,i);return a?{value:e.slice(r,a.endPos),endPos:a.endPos}:null}if(s==="'"||s==='"'||s==="`"){for(t++;t<e.length;){if(e[t]===s&&e[t-1]!=="\\")return t++,{value:e.slice(r,t),endPos:t};t++}return null}if(/[-+\d]/.test(s)){for(;t<e.length&&/[\d.eE+-]/.test(e[t]);)t++;return{value:e.slice(r,t),endPos:t}}let o=e.slice(t).match(/^(true|false|null|undefined)\b/);return o?{value:o[1],endPos:t+o[1].length}:null}function Je(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function Ot(e,n){let t=n,r=0,s=!1,o="",i=!1,a=c=>({type:Je(e.slice(n,c).trim()),endPos:c});for(;t<e.length;){let c=e[t];if(!s&&(c==="'"||c==='"'||c==="`")){s=!0,o=c,i=!0,t++;continue}if(s){if(c===o&&e[t-1]!=="\\"){if(s=!1,t++,r===0){let l=t;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="{"&&!e.slice(l+1).match(/^\s*(\w+)\s*:/)||e[l]!=="|"&&e[l]!=="&")return a(t)}continue}t++;continue}if(c==="{"||c==="["||c==="("){r++,i=!0,t++;continue}if(c==="}"||c==="]"||c===")"){if(r--,r===0){t++;let l=t;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="|"||e[l]==="&")continue;return a(t)}t++;continue}if(r===0&&c==="{"){if(i)return a(t);if(e.slice(t+1).match(/^\s*(\w+)\s*:/)){r++,i=!0,t++;continue}return a(t)}if(r===0&&(c==="|"||c==="&")){for(t++,t<e.length&&e[t]==="|"&&t++;t<e.length&&/\s/.test(e[t]);)t++;continue}if(r===0&&(/\d/.test(c)||c==="-"&&/\d/.test(e[t+1]))){let l=t;for(e[l]==="-"&&l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&e[l]==="."&&/\d/.test(e[l+1]))for(l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&(e[l]==="e"||e[l]==="E"))for(l++,l<e.length&&(e[l]==="+"||e[l]==="-")&&l++;l<e.length&&/\d/.test(e[l]);)l++;for(i=!0,t=l;t<e.length&&/\s/.test(e[t]);)t++;if(t<e.length&&e[t]==="{")return{type:Je(e.slice(n,l).trim()),endPos:l};if(e[t]!=="|"&&e[t]!=="&")return{type:Je(e.slice(n,l).trim()),endPos:l};continue}if(r===0&&/[a-zA-Z_]/.test(c)){let l=t;for(;l<e.length&&/\w/.test(e[l]);)l++;for(i=!0,t=l;t<e.length&&/\s/.test(e[t]);)t++;if(t<e.length&&e[t]==="("){r++,t++;continue}if(t<e.length&&e[t]==="{"&&!e.slice(t+1).match(/^\s*(\w+)\s*:/)){let f=l;for(;f>n&&/\s/.test(e[f-1]);)f--;return{type:Je(e.slice(n,f).trim()),endPos:l}}if(e[t]!=="|"&&e[t]!=="&")return{type:Je(e.slice(n,l).trim()),endPos:l};continue}t++}return i?a(t):null}function ft(e){let n=[],t="",r=0,s=!1,o=!1,i=0;for(;i<e.length;){let a=e[i],c=e[i+1];if(!o&&a==="/"&&c==="/"){s=!0,t+="//",i+=2;continue}if(!s&&a==="/"&&c==="*"){o=!0,t+="/*",i+=2;continue}if(s&&a===`
49
- `){s=!1,t+=a,i++;continue}if(o&&a==="*"&&c==="/"){o=!1,t+="*/",i+=2;continue}if(s||o){t+=a,i++;continue}a==="("||a==="{"||a==="["?(r++,t+=a):a===")"||a==="}"||a==="]"?(r--,t+=a):a===","&&r===0?(n.push(t),t=""):t+=a,i++}return t.trim()&&n.push(t),n}function Bt(e,n,t){let r=ut(e,{originalSource:e,requiredParams:n.requiredParams,unsafeFunctions:n.unsafeFunctions,safeFunctions:n.safeFunctions}).source,s=ft(r),o=!1,i=new Set,a=l=>{if(t&&/^\w+$/.test(l)){if(i.has(l))throw new Error(`Duplicate parameter name '${l}'`);i.add(l)}};return s.map(l=>{let p=l.trim();if(!p)return l;if(t&&p.startsWith("{")&&p.endsWith("}")){let m=p.slice(1,-1);return`{ ${lr(m,n)} }`}if(t&&p.startsWith("[")&&p.endsWith("]")){let m=p.slice(1,-1);return`[ ${lr(m,n)} ]`}if(p.startsWith("...")){let m=ur(p);return m!==-1?p.slice(0,m).trim():l}let f=p.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(f){let[,m,y]=f;return a(m),o=!0,`${m} = ${y}`}if(!As(p)){let m=p.match(/^(\w+)\s*=/);return m&&a(m[1]),o=!0,l}let u=ur(p);if(u!==-1){let m=p.slice(0,u).trim(),y=p.slice(u+1).trim();return a(m),o&&t&&/^\w+$/.test(m),t&&/^\w+$/.test(m)&&n.requiredParams.add(m),`${m} = ${y}`}return l}).join(",")}function lr(e,n){return ft(e).map(s=>{let o=s.trim();if(!o)return s;let i=o.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(i){let[,l,p]=i;n.requiredParams.add(l);let f=ct(p);return`${l} = ${f}`}let a=o.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(a){let[,l,p]=a;n.requiredParams.add(l);let f=lt(p);return`${l} = ${f}`}let c=o.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(c){let[,l,p]=c;return n.requiredParams.add(l),`${l} = ${p}`}return s}).join(", ")}function ct(e){let n=e.slice(1,-1).trim();return`{ ${ft(n).map(s=>{let o=s.trim();if(!o)return s;let i=o.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(i){let[,f,u]=i;return`${f}: ${ct(u)}`}let a=o.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(a){let[,f,u]=a;return`${f}: ${ct(u)}`}let c=o.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(c){let[,f,u]=c;return`${f}: ${lt(u)}`}let l=o.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,f,u]=l;return`${f}: ${lt(u)}`}let p=o.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(p){let[,f,u]=p;return`${f}: ${u}`}return s}).join(", ")} }`}function lt(e){let n=e.slice(1,-1).trim();return`[ ${ft(n).map(s=>{let o=s.trim();return o?o.startsWith("{")&&o.endsWith("}")?ct(o):o.startsWith("[")&&o.endsWith("]")?lt(o):s:s}).join(", ")} ]`}function As(e){let n=0,t=!1,r=!1,s=!1,o="";for(let i=0;i<e.length;i++){let a=e[i];if(!s&&(a==="'"||a==='"'||a==="`")){s=!0,o=a;continue}if(s){a===o&&e[i-1]!=="\\"&&(s=!1);continue}a==="("||a==="{"||a==="["?n++:a===")"||a==="}"||a==="]"?n--:n===0&&(a===":"&&(t=!0),a==="="&&e[i+1]!==">"&&(r=!0))}return t&&!r}function ur(e){let n=0,t=!1,r="";for(let s=0;s<e.length;s++){let o=e[s];if(!t&&(o==="'"||o==='"'||o==="`")){t=!0,r=o;continue}if(t){o===r&&e[s-1]!=="\\"&&(t=!1);continue}if(o==="("||o==="{"||o==="[")n++;else if(o===")"||o==="}"||o==="]")n--;else if(n===0&&o===":")return s}return-1}function Ft(e){let n="",t=0;for(;t<e.length;){let r=e[t];if(r==="'"||r==='"'||r==="`"){let s=r;for(n+=r,t++;t<e.length&&e[t]!==s;)e[t]==="\\"&&(n+=e[t++]),t<e.length&&(n+=e[t++]);t<e.length&&(n+=e[t++]);continue}if(r==="/"&&e[t+1]==="*"){let s=e.indexOf("*/",t+2),o=s===-1?e.slice(t):e.slice(t,s+2);n+=o,t+=o.length;continue}if(r==="/"&&e[t+1]==="/"){let s=e.indexOf(`
50
- `,t),o=s===-1?e.length:s;n+=" ".repeat(o-t),t=o;continue}n+=r,t++}return n}function pt(e,n={}){let t=e,r,s=new Set,o=new Set,i=new Set,a=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e),c=n.dialect==="js"?!0:n.dialect==="tjs"?!1:a||n.vmTarget,l=c?{tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1,tjsNoVar:!1,tjsSafeAssign:!1}:{tjsEquals:!0,tjsClass:!0,tjsDate:!0,tjsNoeval:!0,tjsStandard:!0,tjsSafeEval:!1,tjsNoVar:!0,tjsSafeAssign:!0};c&&(r="none");let p=e.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);p&&(r=p[2],e=e.replace(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\s*/,"$1"));let f=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsCompat|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsNoVar|TjsStandard|TjsSafeEval|TjsSafeAssign)\b/,u;for(;u=e.match(f);){let A=u[2];A==="TjsStrict"?(l.tjsEquals=!0,l.tjsClass=!0,l.tjsDate=!0,l.tjsNoeval=!0,l.tjsNoVar=!0,l.tjsStandard=!0,l.tjsSafeAssign=!0):A==="TjsCompat"?(l.tjsEquals=!1,l.tjsClass=!1,l.tjsDate=!1,l.tjsNoeval=!1,l.tjsNoVar=!1,l.tjsStandard=!1,l.tjsSafeEval=!1,l.tjsSafeAssign=!1):A==="TjsEquals"?l.tjsEquals=!0:A==="TjsClass"?l.tjsClass=!0:A==="TjsDate"?l.tjsDate=!0:A==="TjsNoeval"?l.tjsNoeval=!0:A==="TjsNoVar"?l.tjsNoVar=!0:A==="TjsStandard"?l.tjsStandard=!0:A==="TjsSafeEval"?l.tjsSafeEval=!0:A==="TjsSafeAssign"&&(l.tjsSafeAssign=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${A}\\s*`),"$1")}e=Ft(e),l.tjsStandard&&(e=Ln(e)),e=rr(e),e=or(e);let m=ar(e);e=m.source;let y=m.annotations,b=Un(e);e=b.source,e=Ue(e),l.tjsEquals&&!n.vmTarget&&(e=We(e)),e=Jn(e),e=zn(e),e=Vn(e),e=Zn(e),e=Gn(e),l.tjsSafeAssign&&(e=Xn(e));let S=Wn(e,{loader:n.moduleLoader,importerPath:n.filename});e=S.source;let{source:E,returnType:w,returnSafety:h}=ut(e,{originalSource:t,requiredParams:s,unsafeFunctions:o,safeFunctions:i});e=E;let x=Kn(e);e=x.source,e=Dn(e);let _=Yn(e,s);e=_.source;let g=qn(e);e=g.source;let $=[...b.blocks,...S.blocks,...g.blocks],k=Qn(e,n.dangerouslySkipTests);e=k.source;let j=er(e,s);e=j.source;for(let A of j.polyCtorClasses)o.add(`${A}$dispatch`);return l.tjsClass&&(e=tr(e,j.polyCtorClasses)),l.tjsDate&&(e=nr(e)),l.tjsNoeval&&(e=ir(e)),l.tjsNoVar&&(e=sr(e)),e=Le(e,x.extensions),{source:e,returnType:w,returnSafety:h,moduleSafety:r,tjsModes:l,originalSource:t,requiredParams:s,unsafeFunctions:o,safeFunctions:i,wasmBlocks:$,tests:k.tests,testErrors:k.errors,polymorphicNames:_.polymorphicNames,extensions:x.extensions,letAnnotations:y}}function xe(e,n={}){let{filename:t="<source>",colonShorthand:r=!0,vmTarget:s=!1,dialect:o}=n,{source:i,returnType:a,returnSafety:c,moduleSafety:l,originalSource:p,requiredParams:f,unsafeFunctions:u,safeFunctions:m,wasmBlocks:y,tests:b,testErrors:S,letAnnotations:E,tjsModes:w}=r?pt(e,{vmTarget:s,dialect:o,moduleLoader:n.moduleLoader,filename:n.filename}):{source:e,returnType:void 0,returnSafety:void 0,moduleSafety:void 0,originalSource:e,requiredParams:new Set,unsafeFunctions:new Set,safeFunctions:new Set,wasmBlocks:[],tests:[],testErrors:[],letAnnotations:new Map,tjsModes:{tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1,tjsNoVar:!1,tjsSafeAssign:!1}};try{return{ast:fr.parse(i,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:a,returnSafety:c,moduleSafety:l,originalSource:p,requiredParams:f,unsafeFunctions:u,safeFunctions:m,wasmBlocks:y,tests:b,testErrors:S,letAnnotations:E,tjsModes:w}}catch(h){let x=h.loc||{line:1,column:0};throw new z(h.message.replace(/\s*\(\d+:\d+\)$/,""),x,p,t)}}function pr(e,n){for(let o of e.body){if(o.type==="ImportDeclaration")throw new z("Imports are not supported. All atoms must be registered with the VM.",o.loc?.start||{line:1,column:0},void 0,n);if(o.type==="ExportNamedDeclaration"||o.type==="ExportDefaultDeclaration")throw new z("Exports are not supported. The function is automatically exported.",o.loc?.start||{line:1,column:0},void 0,n);if(o.type==="ClassDeclaration")throw new z("Classes are not supported. Agent99 uses functional composition.",o.loc?.start||{line:1,column:0},void 0,n)}let t=e.body.filter(o=>o.type==="FunctionDeclaration");if(t.length===0)throw new z("Source must contain a function declaration",{line:1,column:0},void 0,n);let r=t[t.length-1],s=new Map;for(let o=0;o<t.length-1;o++){let i=t[o],a=i.id?.name;if(!a)throw new z("Helper function must have a name",i.loc?.start||{line:1,column:0},void 0,n);if(s.has(a))throw new z(`Duplicate helper function name: ${a}`,i.loc?.start||{line:1,column:0},void 0,n);if(a===r.id?.name)throw new z(`Helper function cannot share a name with the entry function: ${a}`,i.loc?.start||{line:1,column:0},void 0,n);s.set(a,i)}return{entry:r,helpers:s}}function Ve(e,n){let t={params:{}};if(!n.loc)return t;let r=e.substring(0,n.start),s=[...r.matchAll(/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm)];if(s.length>0){let p=s[s.length-1],f=r.substring(p.index+p[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(f)){let u=p[1],m=u.split(`
51
- `),y=m.filter(b=>b.trim().length>0).reduce((b,S)=>{let E=S.match(/^(\s*)/)?.[1].length||0;return Math.min(b,E)},1/0);return y>0&&y<1/0&&(u=m.map(b=>b.slice(y)).join(`
52
- `)),t.description=u.trim(),t}}let o=r.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!o)return t;let i=o[0],a=i.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);a&&(t.description=a[1].trim());let c=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,l;for(;(l=c.exec(i))!==null;)t.params[l[1]]=l[2].trim();return t}import{parseExpressionAt as Rs}from"acorn";function Y(e){switch(e.type){case"Literal":{let n=e.value;if(n===null)return{kind:"null"};if(typeof n=="string")return{kind:"string"};if(typeof n=="number"){let t=e.raw;return t&&t.includes(".")?{kind:"number"}:{kind:"integer"}}return typeof n=="boolean"?{kind:"boolean"}:{kind:"any"}}case"ArrayExpression":{let n=e.elements;if(n.length===0)return{kind:"array",items:{kind:"any"}};let t=n.filter(i=>i!=null).map(i=>Y(i));if(t.length===0)return{kind:"array",items:{kind:"any"}};let r=new Map;for(let i of t){let a=JSON.stringify(i);r.has(a)||r.set(a,i)}let s=[...r.values()];return{kind:"array",items:s.length===1?s[0]:{kind:"union",members:s}}}case"ObjectExpression":{let n=e.properties,t={};for(let r of n)if(r.type==="Property"&&r.key.type==="Identifier"){let s=r.key.name;t[s]=Y(r.value)}return{kind:"object",shape:t}}case"LogicalExpression":{let{operator:n,left:t,right:r}=e;return n==="||"?Y(t):n==="&&"||n==="??"?Y(r):{kind:"any"}}case"BinaryExpression":{let{operator:n,left:t,right:r}=e;if(n==="|"){let s=Y(t),o=Y(r);return o.kind==="null"?{...s,nullable:!0}:s.kind==="null"?{...o,nullable:!0}:{kind:"union",members:[s,o]}}return{kind:"any"}}case"Identifier":return e.name==="undefined"?{kind:"undefined"}:{kind:"any"};case"ArrowFunctionExpression":case"FunctionExpression":{let n=e,t=n.params.map(s=>Ms(s)),r={kind:"any"};return n.type==="ArrowFunctionExpression"&&n.body&&n.body.type!=="BlockStatement"&&(r=Y(n.body)),{kind:"function",params:t,returns:r}}case"UnaryExpression":{let n=e.operator,t=e.argument;if(n==="+"&&t.type==="Literal"&&typeof t.value=="number")return{kind:"non-negative-integer"};if(n==="-"&&t.type==="Literal"&&typeof t.value=="number"){let s=t.raw;return s&&s.includes(".")?{kind:"number"}:{kind:"integer"}}return{kind:"any"}}default:return{kind:"any"}}}function Ms(e){return e.type==="Identifier"?{name:e.name,type:{kind:"any"}}:e.type==="AssignmentPattern"&&e.left?.type==="Identifier"?{name:e.left.name,type:Y(e.right)}:e.type==="RestElement"&&e.argument?.type==="Identifier"?{name:`...${e.argument.name}`,type:{kind:"array",items:{kind:"any"}}}:{name:"?",type:{kind:"any"}}}function ge(e,n){if(e.type==="Identifier")return{name:e.name,type:{kind:"any"},required:!0};if(e.type==="AssignmentPattern"){let{left:t,right:r}=e;if(t.type!=="Identifier")throw new U("Only simple parameter names are supported",W(e));let s=t.name,o=n?.has(s)??!1,i=Y(r),a=ce(r);return{name:s,type:i,required:o,default:o?null:a,example:a,loc:{start:e.start,end:e.end}}}if(e.type==="ObjectPattern"){let t=e.properties,r={},s={};for(let o of t)if(o.type==="Property"){let i=o.key.type==="Identifier"?o.key.name:String(o.key.value);if(o.value.type==="Identifier")r[i]={kind:"any"},s[i]={name:i,type:{kind:"any"},required:!0};else if(o.value.type==="AssignmentPattern"){let a=ge(o.value,n),c=n?.has(i)??!1;r[i]=a.type,s[i]={name:i,type:a.type,required:c,default:c?null:a.example,example:a.example}}}return{name:"__destructured__",type:{kind:"object",shape:r,destructuredParams:s},required:!0}}throw new U(`Unsupported parameter pattern: ${e.type}`,W(e))}function ce(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(n=>n?ce(n):null);case"ObjectExpression":{let n={};for(let t of e.properties)t.type==="Property"&&t.key.type==="Identifier"&&(n[t.key.name]=ce(t.value));return n}case"UnaryExpression":if(e.operator==="-"){let n=ce(e.argument);return typeof n=="number"?-n:void 0}if(e.operator==="+"){let n=ce(e.argument);return typeof n=="number"?+n:void 0}return;case"BinaryExpression":{let{operator:n,left:t}=e;return n==="|"?ce(t):void 0}case"LogicalExpression":{let{operator:n,left:t,right:r}=e;return n==="&&"&&t.type==="Literal"&&t.value===null?null:n==="||"||n==="??"?ce(t)??ce(r):void 0}default:return}}function mr(e){try{let n=Rs(e,0,{ecmaVersion:2022});return Y(n)}catch{return{kind:"any"}}}function Dt(e){switch(e.kind){case"string":return e.nullable?"string | null":"string";case"number":return e.nullable?"number | null":"number";case"integer":return e.nullable?"integer | null":"integer";case"non-negative-integer":return e.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return e.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let n=e.items?Dt(e.items):"any";return e.nullable?`${n}[] | null`:`${n}[]`}case"object":{if(!e.shape||Object.keys(e.shape).length===0)return e.nullable?"object | null":"object";let n=Object.entries(e.shape).map(([t,r])=>`${t}: ${Dt(r)}`).join(", ");return e.nullable?`{ ${n} } | null`:`{ ${n} }`}case"union":return e.members?.map(Dt).join(" | ")||"any";default:return"any"}}function mt(e){switch(e.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:e.items?mt(e.items):{}};case"object":if(e.shape){let n={};for(let[t,r]of Object.entries(e.shape))n[t]=mt(r);return{type:"object",properties:n,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(mt)}:{};default:return{}}}function Cs(e){let n={},t=[];for(let[r,s]of Object.entries(e))n[r]=mt(s.type),s.required&&t.push(r);return{type:"object",properties:n,required:t.length>0?t:void 0,additionalProperties:!1}}function qt(e,n,t,r={},s,o){let i=Ve(n,e),a=new Map;for(let w of e.params){let h=ge(w,s);if(h.name==="__destructured__"&&h.type.kind==="object"&&h.type.destructuredParams)for(let[x,_]of Object.entries(h.type.destructuredParams))a.set(x,{..._,description:i.params[x]});else h.description=i.params[h.name],a.set(h.name,h)}let c;t&&(c=mr(t));let l={depth:0,locals:new Map,parameters:a,atoms:new Set(Object.keys(r.atoms||{})),warnings:[],source:n,filename:r.filename||"<source>",options:r,helpers:o,helperSteps:o?new Map:void 0,helperTransforming:o?new Set:void 0},p=ie(e.body,l),f=[],u=[],m=[];for(let[w,h]of a.entries())h.required?u.push(w):h.default!==void 0?m.push({name:w,defaultValue:h.default}):u.push(w);u.length>0&&f.push({op:"varsImport",keys:u});for(let{name:w,defaultValue:h}of m)f.push({op:"varsImport",keys:[w]}),f.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:w},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:w,value:h}]});f.push(...p);let y=Object.fromEntries(a),b={name:e.id?.name||"anonymous",description:i.description,parameters:y,returns:c},S=Cs(y),E=l.helperSteps&&l.helperSteps.size>0?Object.fromEntries(l.helperSteps):void 0;return{ast:{op:"seq",steps:f,inputSchema:S,...E&&{helpers:E}},signature:b,warnings:l.warnings}}function ie(e,n){let t=[];for(let r of e.body){let s=ze(r,n);s&&(Array.isArray(s)?t.push(...s):t.push(s))}return t}function ze(e,n){switch(e.type){case"VariableDeclaration":return Ps(e,n);case"ExpressionStatement":return Ns(e,n);case"IfStatement":return Os(e,n);case"WhileStatement":return Bs(e,n);case"ForOfStatement":return Fs(e,n);case"TryStatement":return Ds(e,n);case"ReturnStatement":return qs(e,n);case"ThrowStatement":throw new U("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",W(e),n.source,n.filename);case"BlockStatement":return{op:"scope",steps:ie(e,re(n))};case"EmptyStatement":return null;default:throw new U(`Unsupported statement type: ${e.type}`,W(e),n.source,n.filename)}}function Ps(e,n){let t=[],r=e.kind==="const",s=r?"constSet":"varSet";for(let o of e.declarations){if(o.id.type!=="Identifier")throw new U("Only simple variable names are supported",W(o),n.source,n.filename);let i=o.id.name;if(o.init){let{step:a,resultVar:c}=_e(o.init,n,i,r);a?t.push(a):c!==i&&t.push({op:s,key:i,value:c});let l=Y(o.init);n.locals.set(i,l)}else{if(r)throw new U("const declarations must be initialized",W(o),n.source,n.filename);t.push({op:"varSet",key:i,value:null}),n.locals.set(i,{kind:"any",nullable:!0})}}return t}function Ns(e,n){let t=e.expression;if(t.type==="AssignmentExpression")return Is(t,n);if(t.type==="CallExpression"){let{step:r,resultVar:s}=_e(t,n);return r||(s?{op:"varSet",key:"_",value:s}:null)}return n.warnings.push({message:"Expression statement has no effect",line:W(e).line,column:W(e).column}),null}function Is(e,n){if(e.left.type!=="Identifier")throw new U("Only simple variable assignment is supported",W(e),n.source,n.filename);let t=e.left.name,{step:r,resultVar:s}=_e(e.right,n,t);return r||{op:"varSet",key:t,value:s}}function Os(e,n){let t=D(e.test,n),r=e.consequent.type==="BlockStatement"?ie(e.consequent,re(n)):[ze(e.consequent,n)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?ie(e.alternate,re(n)):[ze(e.alternate,n)].filter(Boolean)),{op:"if",condition:t,then:r,...s&&{else:s}}}function Bs(e,n){let t=D(e.test,n),r=e.body.type==="BlockStatement"?ie(e.body,re(n)):[ze(e.body,n)].filter(Boolean);return{op:"while",condition:t,body:r}}function Fs(e,n){let t;if(e.left.type==="VariableDeclaration"){let i=e.left.declarations[0];if(i.id.type!=="Identifier")throw new U("Only simple variable names are supported in for...of",W(e.left),n.source,n.filename);t=i.id.name}else if(e.left.type==="Identifier")t=e.left.name;else throw new U("Unsupported for...of left-hand side",W(e.left),n.source,n.filename);let r=K(e.right,n),s=re(n);s.locals.set(t,{kind:"any"});let o=e.body.type==="BlockStatement"?ie(e.body,s):[ze(e.body,s)].filter(Boolean);return{op:"map",items:r,as:t,steps:o}}function Ds(e,n){let t=ie(e.block,re(n)),r,s;if(e.handler){let o=re(n);e.handler.param?.type==="Identifier"&&(s=e.handler.param.name,o.locals.set(s,{kind:"any"})),r=ie(e.handler.body,o)}return{op:"try",try:t,...r&&{catch:r},...s&&{catchParam:s}}}function qs(e,n){if(!e.argument)return{op:"return",value:{}};let{step:t,resultVar:r}=_e(e.argument,n,"__returnVal__");return t?[t,{op:"return",value:r}]:{op:"return",value:K(e.argument,n)}}var yr=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),Us=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),Ze=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),Ws=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 Ls(e){if(e.callee.type==="Identifier"){let n=e.callee.name;return Us.has(n)||Ze.has(n)}if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"){let t=n.object.name;if(yr.has(t)||Ze.has(t))return!0}if(n.property.type==="Identifier"){let t=n.property.name;if(Ws.has(t))return!0}}return!1}function Js(e){if(e.object.type==="Identifier"){let n=e.object.name;return yr.has(n)||Ze.has(n)}return!1}var dr={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 Vs(e){if(e.callee.type==="Identifier"){let n=e.callee.name;if(Ze.has(n))return dr[n]||`${n} is not available in AsyncJS.`}if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"){let t=n.object.name;if(Ze.has(t))return dr[t]||`${t} is not available in AsyncJS.`}}return null}function gr(e){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."}[e]||" Use factory functions or object literals instead."}function _e(e,n,t,r){let s=r?"constSet":"varSet";if(e.type==="ChainExpression")return _e(e.expression,n,t,r);if(e.type==="NewExpression"){let i=e,a="constructor";i.callee.type==="Identifier"&&(a=i.callee.name);let c=gr(a);throw new U(`The 'new' keyword is not supported in AsyncJS.${c}`,W(e),n.source,n.filename)}if(e.type==="CallExpression"){let i=Vs(e);if(i)throw new U(i,W(e),n.source,n.filename)}if(e.type==="CallExpression"&&Ls(e)){let i=D(e,n);return t?{step:{op:s,key:t,value:i},resultVar:t}:{step:null,resultVar:i}}if(e.type==="MemberExpression"&&Js(e)){let i=D(e,n);return t?{step:{op:s,key:t,value:i},resultVar:t}:{step:null,resultVar:i}}if(e.type==="CallExpression")return zs(e,n,t,r);if(e.type==="TemplateLiteral")return Ks(e,n,t,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let i=D(e,n);return t?{step:{op:s,key:t,value:i},resultVar:t}:{step:null,resultVar:i}}return{step:null,resultVar:K(e,n)}}function zs(e,n,t,r){let s,o=!1,i;if(e.callee.type==="Identifier")s=e.callee.name;else if(e.callee.type==="MemberExpression"){let c=e.callee;if(c.property.type==="Identifier")s=c.property.name,o=!0,i=K(c.object,n);else throw new U("Computed method names are not supported",W(e),n.source,n.filename)}else throw new U("Only named function calls are supported",W(e),n.source,n.filename);if(o)return Gs(s,i,e.arguments,n,t,r);if(s==="console"&&e.callee.type,n.helpers?.has(s)){let c=Zs(s,n,e),l=e.arguments.map(p=>K(p,n));if(l.length!==c.length)throw new U(`Helper '${s}' expects ${c.length} argument(s), got ${l.length}`,W(e),n.source,n.filename);return{step:{op:"callLocal",name:s,args:l,...t&&{result:t},...t&&r&&{resultConst:!0}},resultVar:t}}let a=Hs(e,n);return{step:{op:s,...a,...t&&{result:t},...t&&r&&{resultConst:!0}},resultVar:t}}function Zs(e,n,t){let r=n.helpers.get(e),s=[];for(let o of r.params){let i;if(o.type==="Identifier"?i=o:o.type==="AssignmentPattern"&&o.left?.type==="Identifier"&&(i=o.left),!i)throw new U(`Helper '${e}' parameters must be plain identifiers (optionally with an example value); destructuring is not supported`,o.loc?.start??W(t),n.source,n.filename);s.push(i.name)}if(n.helperSteps.has(e)||n.helperTransforming.has(e))return s;n.helperTransforming.add(e);try{let o={depth:0,locals:new Map,parameters:new Map(s.map(a=>[a,{name:a,type:{kind:"any"},required:!0}])),atoms:n.atoms,warnings:n.warnings,source:n.source,filename:n.filename,options:n.options,helpers:n.helpers,helperSteps:n.helperSteps,helperTransforming:n.helperTransforming},i=ie(r.body,o);n.helperSteps.set(e,{steps:i,paramNames:s})}finally{n.helperTransforming.delete(e)}return s}function Gs(e,n,t,r,s,o){switch(e){case"map":if(t.length>0&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let i=t[0],a=i.params[0],c=a?.type==="Identifier"?a.name:"item",l=re(r);l.locals.set(c,{kind:"any"});let p;if(i.body.type==="BlockStatement")p=ie(i.body,l);else{let{step:f,resultVar:u}=_e(i.body,l,"result");p=f?[f]:[{op:"varSet",key:"result",value:u}]}return{step:{op:"map",items:n,as:c,steps:p,...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}break;case"filter":if(t.length>0&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let i=t[0],a=i.params[0],c=a?.type==="Identifier"?a.name:"item",l=re(r);l.locals.set(c,{kind:"any"});let p;if(i.body.type==="BlockStatement")throw new U("filter callback must be an expression, not a block",W(t[0]),r.source,r.filename);return p=D(i.body,l),{step:{op:"filter",items:n,as:c,condition:p,...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}break;case"find":if(t.length>0&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let i=t[0],a=i.params[0],c=a?.type==="Identifier"?a.name:"item",l=re(r);l.locals.set(c,{kind:"any"});let p;if(i.body.type==="BlockStatement")throw new U("find callback must be an expression, not a block",W(t[0]),r.source,r.filename);return p=D(i.body,l),{step:{op:"find",items:n,as:c,condition:p,...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}break;case"reduce":if(t.length>=2&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let i=t[0],a=i.params[0],c=i.params[1],l=a?.type==="Identifier"?a.name:"acc",p=c?.type==="Identifier"?c.name:"item",f=re(r);f.locals.set(l,{kind:"any"}),f.locals.set(p,{kind:"any"});let u;if(i.body.type==="BlockStatement")u=ie(i.body,f);else{let{step:y,resultVar:b}=_e(i.body,f,"result");u=y?[y]:[{op:"varSet",key:"result",value:b}]}let m=K(t[1],r);return{step:{op:"reduce",items:n,as:p,accumulator:l,initial:m,steps:u,...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}break;case"slice":break;case"push":return{step:{op:"push",list:n,item:K(t[0],r),...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s};case"join":return{step:{op:"join",list:n,sep:t.length>0?K(t[0],r):"",...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s};case"split":return{step:{op:"split",str:n,sep:t.length>0?K(t[0],r):"",...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}return r.warnings.push({message:`Unknown method '${e}' - treating as atom call`,line:0,column:0}),{step:{op:e,receiver:n,args:t.map(i=>K(i,r)),...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}function Ks(e,n,t,r){let s="",o={};for(let i=0;i<e.quasis.length;i++)if(s+=e.quasis[i].value.cooked||e.quasis[i].value.raw,i<e.expressions.length){let a=e.expressions[i],c=`_${i}`;o[c]=K(a,n),s+=`{{${c}}}`}return{step:{op:"template",tmpl:s,vars:o,...t&&{result:t},...t&&r&&{resultConst:!0}},resultVar:t}}function D(e,n){switch(e.type){case"Literal":return{$expr:"literal",value:e.value};case"Identifier":return{$expr:"ident",name:e.name};case"MemberExpression":{let t=e,r=D(t.object,n),s=t.optional===!0;if(t.computed){let i=t.property;return i.type==="Literal"?{$expr:"member",object:r,property:String(i.value),computed:!0,...s&&{optional:!0}}:{$expr:"member",object:r,property:D(i,n),computed:!0,...s&&{optional:!0}}}let o=t.property.name;return{$expr:"member",object:r,property:o,...s&&{optional:!0}}}case"ChainExpression":return D(e.expression,n);case"BinaryExpression":{let t=e;return{$expr:"binary",op:t.operator,left:D(t.left,n),right:D(t.right,n)}}case"LogicalExpression":{let t=e;return{$expr:"logical",op:t.operator,left:D(t.left,n),right:D(t.right,n)}}case"UnaryExpression":{let t=e;return{$expr:"unary",op:t.operator,argument:D(t.argument,n)}}case"ConditionalExpression":{let t=e;return{$expr:"conditional",test:D(t.test,n),consequent:D(t.consequent,n),alternate:D(t.alternate,n)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>D(r,n))};case"ObjectExpression":{let t=e,r=[];for(let s of t.properties)if(s.type==="Property"){let o=s.key.type==="Identifier"?s.key.name:String(s.key.value);r.push({key:o,value:D(s.value,n)})}return{$expr:"object",properties:r}}case"CallExpression":{let t=e;if(t.callee.type==="MemberExpression"){let r=t.callee,s=r.property.type==="Identifier"?r.property.name:String(r.property.value),o=r.optional===!0||t.optional===!0;return{$expr:"methodCall",object:D(r.object,n),method:s,arguments:t.arguments.map(i=>D(i,n)),...o&&{optional:!0}}}if(t.callee.type==="Identifier"){let r=t.callee.name;if(n.helpers?.has(r))throw new U(`Helper '${r}' cannot be called inside an expression. Assign its result to a variable first: const result = ${r}(...); then use result.`,W(e),n.source,n.filename);return{$expr:"call",callee:r,arguments:t.arguments.map(s=>D(s,n))}}throw new U("Complex function calls in expressions should be lifted to statements",W(e),n.source,n.filename)}case"NewExpression":{let t=e,r="constructor";t.callee.type==="Identifier"&&(r=t.callee.name);let s=gr(r);throw new U(`The 'new' keyword is not supported in AsyncJS.${s}`,W(e),n.source,n.filename)}case"TemplateLiteral":throw new U("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",W(e),n.source,n.filename);default:throw new U(`Unsupported expression type in condition: ${e.type}`,W(e),n.source,n.filename)}}function K(e,n){switch(e.type){case"Literal":return e.value;case"Identifier":return e.name;case"MemberExpression":{let t=e;if(t.optional===!0)return D(e,n);let s=K(t.object,n);if(s&&typeof s=="object"&&s.$expr){let i=t.computed?String(t.property.value):t.property.name;return{$expr:"member",object:s,property:i,...t.computed&&{computed:!0}}}if(t.computed)return D(e,n);let o=t.property.name;return typeof s=="string"?`${s}.${o}`:s&&s.$kind==="arg"?{$kind:"arg",path:`${s.path}.${o}`}:`${s}.${o}`}case"ChainExpression":return K(e.expression,n);case"ArrayExpression":return e.elements.map(t=>t?K(t,n):null);case"ObjectExpression":{let t={};for(let r of e.properties)if(r.type==="Property"){let s=r.key.type==="Identifier"?r.key.name:String(r.key.value);t[s]=K(r.value,n)}return t}case"TemplateLiteral":return D(e,n);case"CallExpression":return D(e,n);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return D(e,n);default:return null}}function Hs(e,n){if(e.arguments.length===1&&e.arguments[0].type==="ObjectExpression"){let t=e.arguments[0],r={};for(let s of t.properties)if(s.type==="Property"){let o=s.key.type==="Identifier"?s.key.name:String(s.key.value);r[o]=K(s.value,n)}return r}return{args:e.arguments.map(t=>K(t,n))}}import{parseExpressionAt as Yr}from"acorn";function Ys(e,n){let t=n;for(;t>0&&e[t-1]!==`
53
- `;)t--;if(e.slice(t,n).includes("//"))return!0;let s=0,o=!1;for(;s<n;)!o&&e.slice(s,s+2)==="/*"?(o=!0,s+=2):o&&e.slice(s,s+2)==="*/"?(o=!1,s+=2):s++;return o}function Xs(e){let n=[],t=/\/\*test\s+'([^']*)'\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+"([^"]*)"\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+`([^`]*)`\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,r;for(;(r=t.exec(e))!==null;){let s=r[1]||r[3]||r[5]||`embedded test ${n.length+1}`,o=(r[2]||r[4]||r[6]||r[7]||"").trim();n.push({description:s,body:o,line:Ut(e,r.index)})}return n}function Wt(e){let n=[],t=[],r=Xs(e);n.push(...r);let s=/test\s+'([^']*)'\s*\{|test\s+"([^"]*)"\s*\{|test\s+`([^`]*)`\s*\{|test\s*\(\s*'([^']*)'\s*\)\s*\{|test\s*\(\s*"([^"]*)"\s*\)\s*\{|test\s*\(\s*`([^`]*)`\s*\)\s*\{|test\s*\{/g,o=/mock\s*\{/g,i=e,a,c=[];for(;(a=s.exec(e))!==null;){let u=a.index;if(Ys(e,u))continue;let m=a[1]||a[2]||a[3]||a[4]||a[5]||a[6]||`test ${n.length+1}`,y=a.index+a[0].length,b=hr(e,y-1);if(b===-1)continue;let S=e.slice(y,b).trim();n.push({description:m,body:S,line:Ut(e,u)}),c.push({start:u,end:b+1,desc:m})}let l=[];for(;(a=o.exec(e))!==null;){let u=a.index,m=a.index+a[0].length,y=hr(e,m-1);if(y===-1)continue;let b=e.slice(m,y).trim();t.push({body:b,line:Ut(e,u)}),l.push({start:u,end:y+1})}let p=[...c,...l].sort((u,m)=>m.start-u.start);for(let u of p)i=i.slice(0,u.start)+i.slice(u.end);i=i.replace(/\n\s*\n\s*\n/g,`
45
+ `,S+=` return __tjs.typeError('${c}', 'no matching constructor', a)
46
+ `,S+=`}
47
+ `,i=i.slice(0,f)+E+i.slice(p);let h=f+E.length;i=i.slice(0,h)+S+i.slice(h)}return{source:i,polyCtorClasses:t}}function fr(e,n=new Set){let t=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,r="",s=0,o;for(;(o=t.exec(e))!==null;){let i=o[1],a=o[2]||"",c=o.index,l=c+o[0].length-1,f=1,p=l+1;for(;p<e.length&&f>0;){let u=e[p];u==="{"?f++:u==="}"&&f--,p++}if(f===0){let u=p,m=e.slice(l,u);r+=e.slice(s,c),r+=`let ${i} = class ${i}${a} ${m}; `,n.has(i)?r+=`${i} = new Proxy(${i}, { apply(t, _, a) { return ${i}$dispatch(t, a) }, construct(t, a) { return ${i}$dispatch(t, a) } });`:r+=`${i} = new Proxy(${i}, { apply(t, _, a) { return Reflect.construct(t, a) } });`,s=u}}return r+=e.slice(s),r}function pr(e){let n=[{pattern:/\bnew\s+Date\b/,message:"new Date() is not allowed in TjsDate mode. Use Timestamp.now()/Timestamp.from() for wall-clock dates, or performance.now() for a monotonic counter (timing, id generation)"},{pattern:/\bDate\.now\b/,message:"Date.now() is not allowed in TjsDate mode. Use Timestamp.now() for a wall-clock date, or performance.now() for a monotonic counter (timing, id generation)"},{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:t,message:r}of n)if(t.test(e))throw new Error(r);return e}function mr(e){let n=new Set,t=/\bconst!\s+(\w+)\b/g,r;for(;(r=t.exec(e))!==null;)n.add(r[1]);if(n.size===0)return e;e=e.replace(/\bconst!\s+/g,"const ");let s=e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"");for(let o of n){if(new RegExp(`\\b${o}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])\\s*(?:=(?!=)|\\+\\+|--|\\+=|-=|\\*=|\\/=|%=|&&=|\\|\\|=|\\?\\?=|<<=|>>=|>>>=|\\^=|&=|\\|=)`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${o}'. const! bindings are read-only at compile time.`);if(new RegExp(`(?:\\+\\+|--)\\s*${o}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${o}'. const! bindings are read-only at compile time.`);if(new RegExp(`\\bdelete\\s+${o}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${o}'. const! bindings are read-only at compile time.`);let l="push|pop|splice|shift|unshift|sort|reverse|fill|copyWithin|set";if(new RegExp(`\\b${o}\\s*\\.\\s*(?:${l})\\s*\\(`,"g").test(s))throw new Error(`Cannot call mutating method on immutable binding '${o}'. const! bindings are read-only at compile time.`)}return e}function dr(e){if(/(?<![a-zA-Z_$])\bvar\s+/.test(e))throw new Error("var is not allowed in TjsNoVar mode. Use const or let instead.");return e}function yr(e){if(/(?<![A-Za-z_$])\beval\s*\(/.test(e))throw new Error("eval() is not allowed in TjsNoeval mode. Use Eval() from TJS runtime for safe evaluation.");if(/\bnew\s+Function\s*\(/.test(e))throw new Error("new Function() is not allowed in TjsNoeval mode. Use SafeFunction() from TJS runtime.");return e}function gr(e){if(!e.includes("!."))return e;let n="",t=0,r="normal",s=0;for(;t<e.length;){let o=e[t],i=e[t+1];if(r==="normal"){if(o==="/"&&i==="/"){r="line-comment",n+=o,t++;continue}if(o==="/"&&i==="*"){r="block-comment",n+=o,t++;continue}if(o==="'"){r="string-single",n+=o,t++;continue}if(o==='"'){r="string-double",n+=o,t++;continue}if(o==="`"){r="string-template",s++,n+=o,t++;continue}if(o==="!"&&i==="."&&t+2<e.length&&/[a-zA-Z_$]/.test(e[t+2])){let a=n.length,c=Js(n);if(c<a){let l=n.slice(c);n=n.slice(0,c);let f=t+2;for(;f<e.length&&/[\w$]/.test(e[f]);)f++;let p=e.slice(t+2,f);n+=`__tjs.bang(${l},'${p}')`,t=f;continue}}n+=o,t++}else r==="line-comment"?(n+=o,o===`
48
+ `&&(r="normal"),t++):r==="block-comment"?(n+=o,o==="*"&&i==="/"?(n+=i,r="normal",t+=2):t++):r==="string-single"?(n+=o,o==="\\"?(n+=i||"",t+=2):(o==="'"&&(r="normal"),t++)):r==="string-double"?(n+=o,o==="\\"?(n+=i||"",t+=2):(o==='"'&&(r="normal"),t++)):r==="string-template"?(n+=o,o==="\\"?(n+=i||"",t+=2):o==="`"?(s--,r=s>0?"string-template":"normal",t++):o==="$"&&i==="{"?(n+=i,t+=2,r="normal"):t++):(n+=o,t++)}return n}function Js(e){let n=e.length-1;for(;n>=0&&/\s/.test(e[n]);)n--;if(n<0)return e.length;for(;n>=0;){let t=e[n];if(/[\w$]/.test(t)){for(;n>=0&&/[\w$]/.test(e[n]);)n--;if(n>=0&&e[n]==="."){n>=1&&e[n-1]==="?"?n-=2:n--;continue}return n+1}else if(t===")"){if(n=Zn(e,n,"(",")"),n<0)return 0;if(n--,n>=0&&/[\w$]/.test(e[n]))continue;if(n>=0&&e[n]==="."){n>=1&&e[n-1]==="?"?n-=2:n--;continue}return n+1}else if(t==="]"){if(n=Zn(e,n,"[","]"),n<0)return 0;if(n--,n>=0&&/[\w$]/.test(e[n]))continue;if(n>=0&&e[n]==="."){n>=1&&e[n-1]==="?"?n-=2:n--;continue}return n+1}else return n+1}return 0}function Zn(e,n,t,r){let s=1;for(n--;n>=0&&s>0;)e[n]===r?s++:e[n]===t&&s--,s>0&&n--;return n}function hr(e){let n=new Map;if(!e.includes("let "))return{source:e,annotations:n};let t=[],r=0,s="normal",o=[];for(;r<e.length;){let a=e[r],c=e[r+1];switch(s){case"single-string":if(a==="\\"&&r+1<e.length){r+=2;continue}a==="'"&&(s="normal"),r++;continue;case"double-string":if(a==="\\"&&r+1<e.length){r+=2;continue}a==='"'&&(s="normal"),r++;continue;case"template-string":if(a==="\\"&&r+1<e.length){r+=2;continue}if(a==="$"&&c==="{"){r+=2,o.push(1),s="normal";continue}a==="`"&&(s="normal"),r++;continue;case"line-comment":a===`
49
+ `&&(s="normal"),r++;continue;case"block-comment":if(a==="*"&&c==="/"){r+=2,s="normal";continue}r++;continue;case"regex":if(a==="\\"&&r+1<e.length){r+=2;continue}if(a==="["){for(r++;r<e.length&&e[r]!=="]";)e[r]==="\\"&&r+1<e.length?r+=2:r++;r<e.length&&r++;continue}if(a==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)r++;s="normal";continue}r++;continue;case"normal":if(o.length>0){if(a==="{")o[o.length-1]++;else if(a==="}"&&(o[o.length-1]--,o[o.length-1]===0)){o.pop(),r++,s="template-string";continue}}if(a==="'"){r++,s="single-string";continue}if(a==='"'){r++,s="double-string";continue}if(a==="`"){r++,s="template-string";continue}if(a==="/"&&c==="/"){r+=2,s="line-comment";continue}if(a==="/"&&c==="*"){r+=2,s="block-comment";continue}if(a==="/"){let l=r-1;for(;l>=0&&/\s/.test(e[l]);)l--;let f=l>=0?e[l]:"";if(!f||/[=(!,;:{[&|?+\-*%<>~^]/.test(f)||l>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,l-10),l+1))){r++,s="regex";continue}}if(a==="l"&&e.slice(r,r+4)==="let "&&(r===0||!/[\w$]/.test(e[r-1]))){let l=r+4;for(;l<e.length&&/\s/.test(e[l]);)l++;if(l<e.length&&/[a-zA-Z_$]/.test(e[l])){let f=l;for(;l<e.length&&/[\w$]/.test(e[l]);)l++;let p=l,u=e.slice(f,p),m=l;for(;m<e.length&&/\s/.test(e[m]);)m++;if(m<e.length&&e[m]===":"&&e[m+1]!==":"){let g=m+1;for(;g<e.length&&/[ \t]/.test(e[g]);)g++;let x=Vs(e,g);if(x>g){let E=e.slice(g,x).trim();n.set(u,E),t.push({start:p,end:x,replacement:""}),r=x;continue}}}}break}r++}if(t.length===0)return{source:e,annotations:n};let i=e;for(let a=t.length-1;a>=0;a--){let c=t[a];i=i.slice(0,c.start)+c.replacement+i.slice(c.end)}return{source:i,annotations:n}}function Vs(e,n){let t=n,r=0,s=0,o=0,i="normal",a=[];for(;t<e.length;){let c=e[t];if(i==="sq"){if(c==="\\"){t+=2;continue}c==="'"&&(i="normal"),t++;continue}if(i==="dq"){if(c==="\\"){t+=2;continue}c==='"'&&(i="normal"),t++;continue}if(i==="tpl"){if(c==="\\"){t+=2;continue}if(c==="$"&&e[t+1]==="{"){a.push(1),i="normal",t+=2;continue}c==="`"&&(i="normal"),t++;continue}if(a.length>0){if(c==="{")a[a.length-1]++;else if(c==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),i="tpl",t++;continue}}if(c==="'"){i="sq",t++;continue}if(c==='"'){i="dq",t++;continue}if(c==="`"){i="tpl",t++;continue}if(c==="("?r++:c===")"?r--:c==="{"?s++:c==="}"?s--:c==="["?o++:c==="]"&&o--,r===0&&s===0&&o===0&&(c==="="||c===","||c===";"||c===`
50
+ `))return t;t++}return t}function gt(e,n){let t="",r=0,s,o,i="normal",a=[],c=[{type:"top-level",braceDepth:0}],l=0,f=()=>c[c.length-1]?.type||"top-level",p=()=>{let u=c[c.length-1];return u?.type==="class-body"&&l===u.braceDepth+1};for(;r<e.length;){let u=e[r],m=e[r+1];switch(i){case"single-string":if(t+=u,u==="\\"&&r+1<e.length){t+=m,r+=2;continue}u==="'"&&(i="normal"),r++;continue;case"double-string":if(t+=u,u==="\\"&&r+1<e.length){t+=m,r+=2;continue}u==='"'&&(i="normal"),r++;continue;case"template-string":if(t+=u,u==="\\"&&r+1<e.length){t+=m,r+=2;continue}if(u==="$"&&m==="{"){t+=m,r+=2,a.push(1),i="normal";continue}u==="`"&&(i="normal"),r++;continue;case"line-comment":t+=u,u===`
51
+ `&&(i="normal"),r++;continue;case"block-comment":if(t+=u,u==="*"&&m==="/"){t+=m,r+=2,i="normal";continue}r++;continue;case"regex":if(t+=u,u==="\\"&&r+1<e.length){t+=m,r+=2;continue}if(u==="["){for(r++;r<e.length&&e[r]!=="]";)t+=e[r],e[r]==="\\"&&r+1<e.length?(t+=e[r+1],r+=2):r++;r<e.length&&(t+=e[r],r++);continue}if(u==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)t+=e[r],r++;i="normal";continue}r++;continue;case"normal":if(a.length>0){if(u==="{")a[a.length-1]++;else if(u==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),t+=u,r++,i="template-string";continue}}if(u==="'"){t+=u,r++,i="single-string";continue}if(u==='"'){t+=u,r++,i="double-string";continue}if(u==="`"){t+=u,r++,i="template-string";continue}if(u==="/"&&m==="/"){t+=u+m,r+=2,i="line-comment";continue}if(u==="/"&&m==="*"){t+=u+m,r+=2,i="block-comment";continue}if(u==="/"){let b=t.trimEnd();if(!b[b.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(b)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(b)){t+=u,r++,i="regex";continue}}break}if(u==="{"){l++,t+=u,r++;continue}if(u==="}"){l--;let b=c[c.length-1];b&&l===b.braceDepth&&c.pop(),t+=u,r++;continue}let y=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(y){let b=y[0].slice(0,-1);t+=b,r+=b.length,c.push({type:"class-body",braceDepth:l});continue}let g=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(g){let b=g[1],h=g[0].length,w=e[r+h],_,$=r+h;(w==="?"||w==="!")&&(_=w,$++,_==="!"?n.unsafeFunctions.add(b):n.safeFunctions.add(b)),t+=`function ${b}(`,r=$;let T=mt(e,r,"(",")");if(!T){t+=e[r],r++;continue}let{content:j,endPos:P}=T;r=P;let A=Vt(j,n,!0);t+=A+")";let C=r;for(;C<e.length&&/\s/.test(e[C]);)C++;if(e[C]===":"){let I=e.slice(C,C+2),B;for(I===":?"||I===":!"?(C+=2,B=I===":?"?"safe":"unsafe"):C+=1;C<e.length&&/\s/.test(e[C]);)C++;let J=Jt(e,C);J&&(s===void 0&&(s=J.type,B&&(o=B)),r=J.endPos)}let R=r;for(;R<e.length&&/\s/.test(e[R]);)R++;if(e[R]==="="&&e[R+1]===">")throw new z("Unexpected '=>' after function declaration. Function declarations use `function name(params) { body }`, not arrow syntax. Remove the `=>`.",pe(n.originalSource,R),n.originalSource);continue}let x=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),E=(()=>{for(let b=t.length-1;b>=0;b--)if(!/\s/.test(t[b]))return t[b];return`
52
+ `})(),S=E!=="="&&E!==","&&E!=="("&&E!=="["&&E!==">";if(x&&p()&&!S){let b=x[1].length;t+=e.slice(r,r+b),r+=b;continue}if(x&&p()&&S){let b=x[1],h=x[0].length,w=r+h;t+=b+"(",r=w;let _=mt(e,r,"(",")");if(!_){t+=e[r],r++;continue}let{content:$,endPos:T}=_;r=T;let j=Vt($,n,!0);t+=j+")";let P=r;for(;P<e.length&&/\s/.test(e[P]);)P++;if(e[P]===":"){let C=e.slice(P,P+2);for(C===":?"||C===":!"?P+=2:P++;P<e.length&&/\s/.test(e[P]);)P++;let R=Jt(e,P);R&&(r=R.endPos)}let A=r;for(;A<e.length&&/\s/.test(e[A]);)A++;if(e[A]==="="&&e[A+1]===">")throw new z("Unexpected '=>' after method declaration. Methods use `name(params) { body }`, not arrow syntax. Remove the `=>`.",pe(n.originalSource,A),n.originalSource);continue}if(e[r]==="("){let b=mt(e,r+1,"(",")");if(!b){t+=e[r],r++;continue}let h=b.content,w=b.endPos,_=w;for(;_<e.length&&/\s/.test(e[_]);)_++;let $;if(e[_]===":"){let T=e.slice(_,_+2);for(T===":?"||T===":!"?_+=2:_++;_<e.length&&/\s/.test(e[_]);)_++;let j=Jt(e,_);if(j)for($=j.type,_=j.endPos;_<e.length&&/\s/.test(e[_]);)_++}if(e.slice(_,_+2)==="=>"){let T=null,j=h,P=h.trimStart();P.startsWith("?")&&(P.length===1||/\s/.test(P[1]))?(T="?",j=P.slice(1)):P.startsWith("!")&&(P.length===1||/\s/.test(P[1]))&&(T="!",j=P.slice(1));let A=Vt(j,n,!1);for(t+=`(${T==="?"?"/* safe */ ":T==="!"?"/* unsafe */ ":""}${A})`,r=w;r<_&&/\s/.test(e[r]);)t+=e[r],r++;$&&(r=_)}else{let T=gt(h,n);t+=`(${T.source})`,r=w}continue}t+=e[r],r++}return{source:t,returnType:s,returnSafety:o}}function mt(e,n,t,r){let s=1,o=n,i=!1,a="";for(;o<e.length&&s>0;){let c=e[o];!i&&(c==="'"||c==='"'||c==="`")?(i=!0,a=c):i&&c===a&&e[o-1]!=="\\"?i=!1:i||(c===t?s++:c===r&&s--),o++}return s!==0?null:{content:e.slice(n,o-1),endPos:o}}function br(e,n){let t=n;for(;t<e.length&&/\s/.test(e[t]);)t++;if(t>=e.length)return null;let r=t,s=e[t];if(s==="{"||s==="["){let i=s==="{"?"}":"]",a=mt(e,t+1,s,i);return a?{value:e.slice(r,a.endPos),endPos:a.endPos}:null}if(s==="'"||s==='"'||s==="`"){for(t++;t<e.length;){if(e[t]===s&&e[t-1]!=="\\")return t++,{value:e.slice(r,t),endPos:t};t++}return null}if(/[-+\d]/.test(s)){for(;t<e.length&&/[\d.eE+-]/.test(e[t]);)t++;return{value:e.slice(r,t),endPos:t}}let o=e.slice(t).match(/^(true|false|null|undefined)\b/);return o?{value:o[1],endPos:t+o[1].length}:null}function Ke(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function Jt(e,n){let t=n,r=0,s=!1,o="",i=!1,a=c=>({type:Ke(e.slice(n,c).trim()),endPos:c});for(;t<e.length;){let c=e[t];if(!s&&(c==="'"||c==='"'||c==="`")){s=!0,o=c,i=!0,t++;continue}if(s){if(c===o&&e[t-1]!=="\\"){if(s=!1,t++,r===0){let l=t;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="{"&&!e.slice(l+1).match(/^\s*(\w+)\s*:/)||e[l]!=="|"&&e[l]!=="&")return a(t)}continue}t++;continue}if(c==="{"||c==="["||c==="("){r++,i=!0,t++;continue}if(c==="}"||c==="]"||c===")"){if(r--,r===0){t++;let l=t;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="|"||e[l]==="&")continue;return a(t)}t++;continue}if(r===0&&c==="{"){if(i)return a(t);if(e.slice(t+1).match(/^\s*(\w+)\s*:/)){r++,i=!0,t++;continue}return a(t)}if(r===0&&(c==="|"||c==="&")){for(t++,t<e.length&&e[t]==="|"&&t++;t<e.length&&/\s/.test(e[t]);)t++;continue}if(r===0&&(/\d/.test(c)||c==="-"&&/\d/.test(e[t+1]))){let l=t;for(e[l]==="-"&&l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&e[l]==="."&&/\d/.test(e[l+1]))for(l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&(e[l]==="e"||e[l]==="E"))for(l++,l<e.length&&(e[l]==="+"||e[l]==="-")&&l++;l<e.length&&/\d/.test(e[l]);)l++;for(i=!0,t=l;t<e.length&&/\s/.test(e[t]);)t++;if(t<e.length&&e[t]==="{")return{type:Ke(e.slice(n,l).trim()),endPos:l};if(e[t]!=="|"&&e[t]!=="&")return{type:Ke(e.slice(n,l).trim()),endPos:l};continue}if(r===0&&/[a-zA-Z_]/.test(c)){let l=t;for(;l<e.length&&/\w/.test(e[l]);)l++;for(i=!0,t=l;t<e.length&&/\s/.test(e[t]);)t++;if(t<e.length&&e[t]==="("){r++,t++;continue}if(t<e.length&&e[t]==="{"&&!e.slice(t+1).match(/^\s*(\w+)\s*:/)){let p=l;for(;p>n&&/\s/.test(e[p-1]);)p--;return{type:Ke(e.slice(n,p).trim()),endPos:l}}if(e[t]!=="|"&&e[t]!=="&")return{type:Ke(e.slice(n,l).trim()),endPos:l};continue}t++}return i?a(t):null}function ht(e){let n=[],t="",r=0,s=!1,o=!1,i=0;for(;i<e.length;){let a=e[i],c=e[i+1];if(!o&&a==="/"&&c==="/"){s=!0,t+="//",i+=2;continue}if(!s&&a==="/"&&c==="*"){o=!0,t+="/*",i+=2;continue}if(s&&a===`
53
+ `){s=!1,t+=a,i++;continue}if(o&&a==="*"&&c==="/"){o=!1,t+="*/",i+=2;continue}if(s||o){t+=a,i++;continue}a==="("||a==="{"||a==="["?(r++,t+=a):a===")"||a==="}"||a==="]"?(r--,t+=a):a===","&&r===0?(n.push(t),t=""):t+=a,i++}return t.trim()&&n.push(t),n}function Vt(e,n,t){let r=gt(e,{originalSource:e,requiredParams:n.requiredParams,unsafeFunctions:n.unsafeFunctions,safeFunctions:n.safeFunctions}).source,s=ht(r),o=!1,i=new Set,a=l=>{if(t&&/^\w+$/.test(l)){if(i.has(l))throw new Error(`Duplicate parameter name '${l}'`);i.add(l)}};return s.map(l=>{let f=l.trim();if(!f)return l;if(t&&f.startsWith("{")&&f.endsWith("}")){let m=f.slice(1,-1);return`{ ${xr(m,n)} }`}if(t&&f.startsWith("[")&&f.endsWith("]")){let m=f.slice(1,-1);return`[ ${xr(m,n)} ]`}if(f.startsWith("...")){let m=_r(f);return m!==-1?f.slice(0,m).trim():l}let p=f.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(p){let[,m,y]=p;return a(m),o=!0,`${m} = ${y}`}if(!zs(f)){let m=f.match(/^(\w+)\s*=/);return m&&a(m[1]),o=!0,l}let u=_r(f);if(u!==-1){let m=f.slice(0,u).trim(),y=f.slice(u+1).trim();return a(m),o&&t&&/^\w+$/.test(m),t&&/^\w+$/.test(m)&&n.requiredParams.add(m),`${m} = ${y}`}return l}).join(",")}function xr(e,n){return ht(e).map(s=>{let o=s.trim();if(!o)return s;let i=o.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(i){let[,l,f]=i;n.requiredParams.add(l);let p=dt(f);return`${l} = ${p}`}let a=o.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(a){let[,l,f]=a;n.requiredParams.add(l);let p=yt(f);return`${l} = ${p}`}let c=o.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(c){let[,l,f]=c;return n.requiredParams.add(l),`${l} = ${f}`}return s}).join(", ")}function dt(e){let n=e.slice(1,-1).trim();return`{ ${ht(n).map(s=>{let o=s.trim();if(!o)return s;let i=o.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(i){let[,p,u]=i;return`${p}: ${dt(u)}`}let a=o.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(a){let[,p,u]=a;return`${p}: ${dt(u)}`}let c=o.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(c){let[,p,u]=c;return`${p}: ${yt(u)}`}let l=o.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,p,u]=l;return`${p}: ${yt(u)}`}let f=o.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(f){let[,p,u]=f;return`${p}: ${u}`}return s}).join(", ")} }`}function yt(e){let n=e.slice(1,-1).trim();return`[ ${ht(n).map(s=>{let o=s.trim();return o?o.startsWith("{")&&o.endsWith("}")?dt(o):o.startsWith("[")&&o.endsWith("]")?yt(o):s:s}).join(", ")} ]`}function zs(e){let n=0,t=!1,r=!1,s=!1,o="";for(let i=0;i<e.length;i++){let a=e[i];if(!s&&(a==="'"||a==='"'||a==="`")){s=!0,o=a;continue}if(s){a===o&&e[i-1]!=="\\"&&(s=!1);continue}a==="("||a==="{"||a==="["?n++:a===")"||a==="}"||a==="]"?n--:n===0&&(a===":"&&(t=!0),a==="="&&e[i+1]!==">"&&(r=!0))}return t&&!r}function _r(e){let n=0,t=!1,r="";for(let s=0;s<e.length;s++){let o=e[s];if(!t&&(o==="'"||o==='"'||o==="`")){t=!0,r=o;continue}if(t){o===r&&e[s-1]!=="\\"&&(t=!1);continue}if(o==="("||o==="{"||o==="[")n++;else if(o===")"||o==="}"||o==="]")n--;else if(n===0&&o===":")return s}return-1}function zt(e){let n="",t=0;for(;t<e.length;){let r=e[t];if(r==="'"||r==='"'||r==="`"){let s=r;for(n+=r,t++;t<e.length&&e[t]!==s;)e[t]==="\\"&&(n+=e[t++]),t<e.length&&(n+=e[t++]);t<e.length&&(n+=e[t++]);continue}if(r==="/"&&e[t+1]==="*"){let s=e.indexOf("*/",t+2),o=s===-1?e.slice(t):e.slice(t,s+2);n+=o,t+=o.length;continue}if(r==="/"&&e[t+1]==="/"){let s=e.indexOf(`
54
+ `,t),o=s===-1?e.length:s;n+=" ".repeat(o-t),t=o;continue}n+=r,t++}return n}function bt(e,n={}){let t=e,r,s=new Set,o=new Set,i=new Set,a=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e),c=n.dialect==="js"?!0:n.dialect==="tjs"?!1:a||n.vmTarget,l=c?{tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1,tjsNoVar:!1,tjsSafeAssign:!1}:{tjsEquals:!0,tjsClass:!0,tjsDate:!0,tjsNoeval:!0,tjsStandard:!0,tjsSafeEval:!1,tjsNoVar:!0,tjsSafeAssign:!0};c&&(r="none");let f=e.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);f&&(r=f[2],e=e.replace(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\s*/,"$1"));let p=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsCompat|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsNoVar|TjsStandard|TjsSafeEval|TjsSafeAssign)\b/,u;for(;u=e.match(p);){let A=u[2];A==="TjsStrict"?(l.tjsEquals=!0,l.tjsClass=!0,l.tjsDate=!0,l.tjsNoeval=!0,l.tjsNoVar=!0,l.tjsStandard=!0,l.tjsSafeAssign=!0):A==="TjsCompat"?(l.tjsEquals=!1,l.tjsClass=!1,l.tjsDate=!1,l.tjsNoeval=!1,l.tjsNoVar=!1,l.tjsStandard=!1,l.tjsSafeEval=!1,l.tjsSafeAssign=!1):A==="TjsEquals"?l.tjsEquals=!0:A==="TjsClass"?l.tjsClass=!0:A==="TjsDate"?l.tjsDate=!0:A==="TjsNoeval"?l.tjsNoeval=!0:A==="TjsNoVar"?l.tjsNoVar=!0:A==="TjsStandard"?l.tjsStandard=!0:A==="TjsSafeEval"?l.tjsSafeEval=!0:A==="TjsSafeAssign"&&(l.tjsSafeAssign=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${A}\\s*`),"$1")}e=zt(e),l.tjsStandard&&(e=Qn(e)),e=mr(e),e=gr(e);let m=hr(e);e=m.source;let y=m.annotations,g=Yn(e);e=g.source,e=ze(e),l.tjsEquals&&!n.vmTarget&&(e=Ge(e));let x=[];e=er(e,x),e=nr(e,x),e=tr(e),e=rr(e),e=sr(e),l.tjsSafeAssign&&(e=cr(e));let E=Xn(e,{loader:n.moduleLoader,importerPath:n.filename});e=E.source;let{source:S,returnType:b,returnSafety:h}=gt(e,{originalSource:t,requiredParams:s,unsafeFunctions:o,safeFunctions:i});e=S;let w=ir(e);e=w.source,e=Kn(e);let _=ar(e,s);e=_.source;let $=Hn(e);e=$.source;let T=[...g.blocks,...E.blocks,...$.blocks],j=lr(e,n.dangerouslySkipTests);e=j.source;let P=ur(e,s);e=P.source;for(let A of P.polyCtorClasses)o.add(`${A}$dispatch`);return l.tjsClass&&(e=fr(e,P.polyCtorClasses)),l.tjsDate&&(e=pr(e)),l.tjsNoeval&&(e=yr(e)),l.tjsNoVar&&(e=dr(e)),e=Ze(e,w.extensions),{source:e,returnType:b,returnSafety:h,moduleSafety:r,tjsModes:l,originalSource:t,requiredParams:s,unsafeFunctions:o,safeFunctions:i,wasmBlocks:T,tests:j.tests,testErrors:j.errors,polymorphicNames:_.polymorphicNames,extensions:w.extensions,letAnnotations:y,predicates:x}}function Se(e,n={}){let{filename:t="<source>",colonShorthand:r=!0,vmTarget:s=!1,dialect:o}=n,{source:i,returnType:a,returnSafety:c,moduleSafety:l,originalSource:f,requiredParams:p,unsafeFunctions:u,safeFunctions:m,wasmBlocks:y,tests:g,testErrors:x,letAnnotations:E,tjsModes:S}=r?bt(e,{vmTarget:s,dialect:o,moduleLoader:n.moduleLoader,filename:n.filename}):{source:e,returnType:void 0,returnSafety:void 0,moduleSafety:void 0,originalSource:e,requiredParams:new Set,unsafeFunctions:new Set,safeFunctions:new Set,wasmBlocks:[],tests:[],testErrors:[],letAnnotations:new Map,tjsModes:{tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1,tjsNoVar:!1,tjsSafeAssign:!1}};try{return{ast:wr.parse(i,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:a,returnSafety:c,moduleSafety:l,originalSource:f,requiredParams:p,unsafeFunctions:u,safeFunctions:m,wasmBlocks:y,tests:g,testErrors:x,letAnnotations:E,tjsModes:S}}catch(b){let h=b.loc||{line:1,column:0};throw new z(b.message.replace(/\s*\(\d+:\d+\)$/,""),h,f,t)}}function $r(e,n){for(let o of e.body){if(o.type==="ImportDeclaration")throw new z("Imports are not supported. All atoms must be registered with the VM.",o.loc?.start||{line:1,column:0},void 0,n);if(o.type==="ExportNamedDeclaration"||o.type==="ExportDefaultDeclaration")throw new z("Exports are not supported. The function is automatically exported.",o.loc?.start||{line:1,column:0},void 0,n);if(o.type==="ClassDeclaration")throw new z("Classes are not supported. Agent99 uses functional composition.",o.loc?.start||{line:1,column:0},void 0,n)}let t=e.body.filter(o=>o.type==="FunctionDeclaration");if(t.length===0)throw new z("Source must contain a function declaration",{line:1,column:0},void 0,n);let r=t[t.length-1],s=new Map;for(let o=0;o<t.length-1;o++){let i=t[o],a=i.id?.name;if(!a)throw new z("Helper function must have a name",i.loc?.start||{line:1,column:0},void 0,n);if(s.has(a))throw new z(`Duplicate helper function name: ${a}`,i.loc?.start||{line:1,column:0},void 0,n);if(a===r.id?.name)throw new z(`Helper function cannot share a name with the entry function: ${a}`,i.loc?.start||{line:1,column:0},void 0,n);s.set(a,i)}return{entry:r,helpers:s}}function He(e,n){let t={params:{}};if(!n.loc)return t;let r=e.substring(0,n.start),s=[...r.matchAll(/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm)];if(s.length>0){let f=s[s.length-1],p=r.substring(f.index+f[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(p)){let u=f[1],m=u.split(`
55
+ `),y=m.filter(g=>g.trim().length>0).reduce((g,x)=>{let E=x.match(/^(\s*)/)?.[1].length||0;return Math.min(g,E)},1/0);return y>0&&y<1/0&&(u=m.map(g=>g.slice(y)).join(`
56
+ `)),t.description=u.trim(),t}}let o=r.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!o)return t;let i=o[0],a=i.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);a&&(t.description=a[1].trim());let c=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,l;for(;(l=c.exec(i))!==null;)t.params[l[1]]=l[2].trim();return t}import{parseExpressionAt as Gs}from"acorn";function Y(e){switch(e.type){case"Literal":{let n=e.value;if(n===null)return{kind:"null"};if(typeof n=="string")return{kind:"string"};if(typeof n=="number"){let t=e.raw;return t&&t.includes(".")?{kind:"number"}:{kind:"integer"}}return typeof n=="boolean"?{kind:"boolean"}:{kind:"any"}}case"ArrayExpression":{let n=e.elements;if(n.length===0)return{kind:"array",items:{kind:"any"}};let t=n.filter(i=>i!=null).map(i=>Y(i));if(t.length===0)return{kind:"array",items:{kind:"any"}};let r=new Map;for(let i of t){let a=JSON.stringify(i);r.has(a)||r.set(a,i)}let s=[...r.values()];return{kind:"array",items:s.length===1?s[0]:{kind:"union",members:s}}}case"ObjectExpression":{let n=e.properties,t={};for(let r of n)if(r.type==="Property"&&r.key.type==="Identifier"){let s=r.key.name;t[s]=Y(r.value)}return{kind:"object",shape:t}}case"LogicalExpression":{let{operator:n,left:t,right:r}=e;return n==="||"?Y(t):n==="&&"||n==="??"?Y(r):{kind:"any"}}case"BinaryExpression":{let{operator:n,left:t,right:r}=e;if(n==="|"){let s=Y(t),o=Y(r);return o.kind==="null"?{...s,nullable:!0}:s.kind==="null"?{...o,nullable:!0}:{kind:"union",members:[s,o]}}return{kind:"any"}}case"Identifier":return e.name==="undefined"?{kind:"undefined"}:{kind:"any"};case"ArrowFunctionExpression":case"FunctionExpression":{let n=e,t=n.params.map(s=>Zs(s)),r={kind:"any"};return n.type==="ArrowFunctionExpression"&&n.body&&n.body.type!=="BlockStatement"&&(r=Y(n.body)),{kind:"function",params:t,returns:r}}case"UnaryExpression":{let n=e.operator,t=e.argument;if(n==="+"&&t.type==="Literal"&&typeof t.value=="number")return{kind:"non-negative-integer"};if(n==="-"&&t.type==="Literal"&&typeof t.value=="number"){let s=t.raw;return s&&s.includes(".")?{kind:"number"}:{kind:"integer"}}return{kind:"any"}}default:return{kind:"any"}}}function Zs(e){return e.type==="Identifier"?{name:e.name,type:{kind:"any"}}:e.type==="AssignmentPattern"&&e.left?.type==="Identifier"?{name:e.left.name,type:Y(e.right)}:e.type==="RestElement"&&e.argument?.type==="Identifier"?{name:`...${e.argument.name}`,type:{kind:"array",items:{kind:"any"}}}:{name:"?",type:{kind:"any"}}}function ge(e,n){if(e.type==="Identifier")return{name:e.name,type:{kind:"any"},required:!0};if(e.type==="AssignmentPattern"){let{left:t,right:r}=e;if(t.type!=="Identifier")throw new W("Only simple parameter names are supported",U(e));let s=t.name,o=n?.has(s)??!1,i=Y(r),a=ce(r);return{name:s,type:i,required:o,default:o?null:a,example:a,loc:{start:e.start,end:e.end}}}if(e.type==="ObjectPattern"){let t=e.properties,r={},s={};for(let o of t)if(o.type==="Property"){let i=o.key.type==="Identifier"?o.key.name:String(o.key.value);if(o.value.type==="Identifier")r[i]={kind:"any"},s[i]={name:i,type:{kind:"any"},required:!0};else if(o.value.type==="AssignmentPattern"){let a=ge(o.value,n),c=n?.has(i)??!1;r[i]=a.type,s[i]={name:i,type:a.type,required:c,default:c?null:a.example,example:a.example}}}return{name:"__destructured__",type:{kind:"object",shape:r,destructuredParams:s},required:!0}}throw new W(`Unsupported parameter pattern: ${e.type}`,U(e))}function ce(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(n=>n?ce(n):null);case"ObjectExpression":{let n={};for(let t of e.properties)t.type==="Property"&&t.key.type==="Identifier"&&(n[t.key.name]=ce(t.value));return n}case"UnaryExpression":if(e.operator==="-"){let n=ce(e.argument);return typeof n=="number"?-n:void 0}if(e.operator==="+"){let n=ce(e.argument);return typeof n=="number"?+n:void 0}return;case"BinaryExpression":{let{operator:n,left:t}=e;return n==="|"?ce(t):void 0}case"LogicalExpression":{let{operator:n,left:t,right:r}=e;return n==="&&"&&t.type==="Literal"&&t.value===null?null:n==="||"||n==="??"?ce(t)??ce(r):void 0}default:return}}function Sr(e){try{let n=Gs(e,0,{ecmaVersion:2022});return Y(n)}catch{return{kind:"any"}}}function Gt(e){switch(e.kind){case"string":return e.nullable?"string | null":"string";case"number":return e.nullable?"number | null":"number";case"integer":return e.nullable?"integer | null":"integer";case"non-negative-integer":return e.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return e.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let n=e.items?Gt(e.items):"any";return e.nullable?`${n}[] | null`:`${n}[]`}case"object":{if(!e.shape||Object.keys(e.shape).length===0)return e.nullable?"object | null":"object";let n=Object.entries(e.shape).map(([t,r])=>`${t}: ${Gt(r)}`).join(", ");return e.nullable?`{ ${n} } | null`:`{ ${n} }`}case"union":return e.members?.map(Gt).join(" | ")||"any";default:return"any"}}function xt(e){switch(e.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:e.items?xt(e.items):{}};case"object":if(e.shape){let n={};for(let[t,r]of Object.entries(e.shape))n[t]=xt(r);return{type:"object",properties:n,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(xt)}:{};default:return{}}}function Ks(e){let n={},t=[];for(let[r,s]of Object.entries(e))n[r]=xt(s.type),s.required&&t.push(r);return{type:"object",properties:n,required:t.length>0?t:void 0,additionalProperties:!1}}function Zt(e,n,t,r={},s,o){let i=He(n,e),a=new Map;for(let S of e.params){let b=ge(S,s);if(b.name==="__destructured__"&&b.type.kind==="object"&&b.type.destructuredParams)for(let[h,w]of Object.entries(b.type.destructuredParams))a.set(h,{...w,description:i.params[h]});else b.description=i.params[b.name],a.set(b.name,b)}let c;t&&(c=Sr(t));let l={depth:0,locals:new Map,parameters:a,atoms:new Set(Object.keys(r.atoms||{})),warnings:[],source:n,filename:r.filename||"<source>",options:r,helpers:o,helperSteps:o?new Map:void 0,helperTransforming:o?new Set:void 0},f=oe(e.body,l),p=[],u=[],m=[];for(let[S,b]of a.entries())b.required?u.push(S):b.default!==void 0?m.push({name:S,defaultValue:b.default}):u.push(S);u.length>0&&p.push({op:"varsImport",keys:u});for(let{name:S,defaultValue:b}of m)p.push({op:"varsImport",keys:[S]}),p.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:S},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:S,value:b}]});p.push(...f);let y=Object.fromEntries(a),g={name:e.id?.name||"anonymous",description:i.description,parameters:y,returns:c},x=Ks(y),E=l.helperSteps&&l.helperSteps.size>0?Object.fromEntries(l.helperSteps):void 0;return{ast:{op:"seq",steps:p,inputSchema:x,...E&&{helpers:E}},signature:g,warnings:l.warnings}}function oe(e,n){let t=[];for(let r of e.body){let s=Ye(r,n);s&&(Array.isArray(s)?t.push(...s):t.push(s))}return t}function Ye(e,n){switch(e.type){case"VariableDeclaration":return Hs(e,n);case"ExpressionStatement":return Ys(e,n);case"IfStatement":return Qs(e,n);case"WhileStatement":return ei(e,n);case"ForOfStatement":return ti(e,n);case"TryStatement":return ni(e,n);case"ReturnStatement":return ri(e,n);case"ThrowStatement":throw new W("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",U(e),n.source,n.filename);case"BlockStatement":return{op:"scope",steps:oe(e,re(n))};case"EmptyStatement":return null;default:throw new W(`Unsupported statement type: ${e.type}`,U(e),n.source,n.filename)}}function Hs(e,n){let t=[],r=e.kind==="const",s=r?"constSet":"varSet";for(let o of e.declarations){if(o.id.type!=="Identifier")throw new W("Only simple variable names are supported",U(o),n.source,n.filename);let i=o.id.name;if(o.init){let{step:a,resultVar:c}=Ee(o.init,n,i,r);a?t.push(a):c!==i&&t.push({op:s,key:i,value:c});let l=Y(o.init);n.locals.set(i,l)}else{if(r)throw new W("const declarations must be initialized",U(o),n.source,n.filename);t.push({op:"varSet",key:i,value:null}),n.locals.set(i,{kind:"any",nullable:!0})}}return t}function Ys(e,n){let t=e.expression;if(t.type==="AssignmentExpression")return Xs(t,n);if(t.type==="CallExpression"){let{step:r,resultVar:s}=Ee(t,n);return r||(s?{op:"varSet",key:"_",value:s}:null)}return n.warnings.push({message:"Expression statement has no effect",line:U(e).line,column:U(e).column}),null}function Xs(e,n){if(e.left.type!=="Identifier")throw new W("Only simple variable assignment is supported",U(e),n.source,n.filename);let t=e.left.name,{step:r,resultVar:s}=Ee(e.right,n,t);return r||{op:"varSet",key:t,value:s}}function Qs(e,n){let t=F(e.test,n),r=e.consequent.type==="BlockStatement"?oe(e.consequent,re(n)):[Ye(e.consequent,n)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?oe(e.alternate,re(n)):[Ye(e.alternate,n)].filter(Boolean)),{op:"if",condition:t,then:r,...s&&{else:s}}}function ei(e,n){let t=F(e.test,n),r=e.body.type==="BlockStatement"?oe(e.body,re(n)):[Ye(e.body,n)].filter(Boolean);return{op:"while",condition:t,body:r}}function ti(e,n){let t;if(e.left.type==="VariableDeclaration"){let i=e.left.declarations[0];if(i.id.type!=="Identifier")throw new W("Only simple variable names are supported in for...of",U(e.left),n.source,n.filename);t=i.id.name}else if(e.left.type==="Identifier")t=e.left.name;else throw new W("Unsupported for...of left-hand side",U(e.left),n.source,n.filename);let r=K(e.right,n),s=re(n);s.locals.set(t,{kind:"any"});let o=e.body.type==="BlockStatement"?oe(e.body,s):[Ye(e.body,s)].filter(Boolean);return{op:"map",items:r,as:t,steps:o}}function ni(e,n){let t=oe(e.block,re(n)),r,s;if(e.handler){let o=re(n);e.handler.param?.type==="Identifier"&&(s=e.handler.param.name,o.locals.set(s,{kind:"any"})),r=oe(e.handler.body,o)}return{op:"try",try:t,...r&&{catch:r},...s&&{catchParam:s}}}function ri(e,n){if(!e.argument)return{op:"return",value:{}};let{step:t,resultVar:r}=Ee(e.argument,n,"__returnVal__");return t?[t,{op:"return",value:r}]:{op:"return",value:K(e.argument,n)}}var Tr=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),si=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),Xe=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),ii=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 oi(e){if(e.callee.type==="Identifier"){let n=e.callee.name;return si.has(n)||Xe.has(n)}if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"){let t=n.object.name;if(Tr.has(t)||Xe.has(t))return!0}if(n.property.type==="Identifier"){let t=n.property.name;if(ii.has(t))return!0}}return!1}function ai(e){if(e.object.type==="Identifier"){let n=e.object.name;return Tr.has(n)||Xe.has(n)}return!1}var Er={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 ci(e){if(e.callee.type==="Identifier"){let n=e.callee.name;if(Xe.has(n))return Er[n]||`${n} is not available in AsyncJS.`}if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"){let t=n.object.name;if(Xe.has(t))return Er[t]||`${t} is not available in AsyncJS.`}}return null}function kr(e){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."}[e]||" Use factory functions or object literals instead."}function Ee(e,n,t,r){let s=r?"constSet":"varSet";if(e.type==="ChainExpression")return Ee(e.expression,n,t,r);if(e.type==="NewExpression"){let i=e,a="constructor";i.callee.type==="Identifier"&&(a=i.callee.name);let c=kr(a);throw new W(`The 'new' keyword is not supported in AsyncJS.${c}`,U(e),n.source,n.filename)}if(e.type==="CallExpression"){let i=ci(e);if(i)throw new W(i,U(e),n.source,n.filename)}if(e.type==="CallExpression"&&oi(e)){let i=F(e,n);return t?{step:{op:s,key:t,value:i},resultVar:t}:{step:null,resultVar:i}}if(e.type==="MemberExpression"&&ai(e)){let i=F(e,n);return t?{step:{op:s,key:t,value:i},resultVar:t}:{step:null,resultVar:i}}if(e.type==="CallExpression")return li(e,n,t,r);if(e.type==="TemplateLiteral")return pi(e,n,t,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let i=F(e,n);return t?{step:{op:s,key:t,value:i},resultVar:t}:{step:null,resultVar:i}}return{step:null,resultVar:K(e,n)}}function li(e,n,t,r){let s,o=!1,i;if(e.callee.type==="Identifier")s=e.callee.name;else if(e.callee.type==="MemberExpression"){let c=e.callee;if(c.property.type==="Identifier")s=c.property.name,o=!0,i=K(c.object,n);else throw new W("Computed method names are not supported",U(e),n.source,n.filename)}else throw new W("Only named function calls are supported",U(e),n.source,n.filename);if(o)return fi(s,i,e.arguments,n,t,r);if(s==="console"&&e.callee.type,n.helpers?.has(s)){let c=ui(s,n,e),l=e.arguments.map(f=>K(f,n));if(l.length!==c.length)throw new W(`Helper '${s}' expects ${c.length} argument(s), got ${l.length}`,U(e),n.source,n.filename);return{step:{op:"callLocal",name:s,args:l,...t&&{result:t},...t&&r&&{resultConst:!0}},resultVar:t}}let a=mi(e,n);return{step:{op:s,...a,...t&&{result:t},...t&&r&&{resultConst:!0}},resultVar:t}}function ui(e,n,t){let r=n.helpers.get(e),s=[];for(let o of r.params){let i;if(o.type==="Identifier"?i=o:o.type==="AssignmentPattern"&&o.left?.type==="Identifier"&&(i=o.left),!i)throw new W(`Helper '${e}' parameters must be plain identifiers (optionally with an example value); destructuring is not supported`,o.loc?.start??U(t),n.source,n.filename);s.push(i.name)}if(n.helperSteps.has(e)||n.helperTransforming.has(e))return s;n.helperTransforming.add(e);try{let o={depth:0,locals:new Map,parameters:new Map(s.map(a=>[a,{name:a,type:{kind:"any"},required:!0}])),atoms:n.atoms,warnings:n.warnings,source:n.source,filename:n.filename,options:n.options,helpers:n.helpers,helperSteps:n.helperSteps,helperTransforming:n.helperTransforming},i=oe(r.body,o);n.helperSteps.set(e,{steps:i,paramNames:s})}finally{n.helperTransforming.delete(e)}return s}function fi(e,n,t,r,s,o){switch(e){case"map":if(t.length>0&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let i=t[0],a=i.params[0],c=a?.type==="Identifier"?a.name:"item",l=re(r);l.locals.set(c,{kind:"any"});let f;if(i.body.type==="BlockStatement")f=oe(i.body,l);else{let{step:p,resultVar:u}=Ee(i.body,l,"result");f=p?[p]:[{op:"varSet",key:"result",value:u}]}return{step:{op:"map",items:n,as:c,steps:f,...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}break;case"filter":if(t.length>0&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let i=t[0],a=i.params[0],c=a?.type==="Identifier"?a.name:"item",l=re(r);l.locals.set(c,{kind:"any"});let f;if(i.body.type==="BlockStatement")throw new W("filter callback must be an expression, not a block",U(t[0]),r.source,r.filename);return f=F(i.body,l),{step:{op:"filter",items:n,as:c,condition:f,...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}break;case"find":if(t.length>0&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let i=t[0],a=i.params[0],c=a?.type==="Identifier"?a.name:"item",l=re(r);l.locals.set(c,{kind:"any"});let f;if(i.body.type==="BlockStatement")throw new W("find callback must be an expression, not a block",U(t[0]),r.source,r.filename);return f=F(i.body,l),{step:{op:"find",items:n,as:c,condition:f,...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}break;case"reduce":if(t.length>=2&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let i=t[0],a=i.params[0],c=i.params[1],l=a?.type==="Identifier"?a.name:"acc",f=c?.type==="Identifier"?c.name:"item",p=re(r);p.locals.set(l,{kind:"any"}),p.locals.set(f,{kind:"any"});let u;if(i.body.type==="BlockStatement")u=oe(i.body,p);else{let{step:y,resultVar:g}=Ee(i.body,p,"result");u=y?[y]:[{op:"varSet",key:"result",value:g}]}let m=K(t[1],r);return{step:{op:"reduce",items:n,as:f,accumulator:l,initial:m,steps:u,...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}break;case"slice":break;case"push":return{step:{op:"push",list:n,item:K(t[0],r),...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s};case"join":return{step:{op:"join",list:n,sep:t.length>0?K(t[0],r):"",...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s};case"split":return{step:{op:"split",str:n,sep:t.length>0?K(t[0],r):"",...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}return r.warnings.push({message:`Unknown method '${e}' - treating as atom call`,line:0,column:0}),{step:{op:e,receiver:n,args:t.map(i=>K(i,r)),...s&&{result:s},...s&&o&&{resultConst:!0}},resultVar:s}}function pi(e,n,t,r){let s="",o={};for(let i=0;i<e.quasis.length;i++)if(s+=e.quasis[i].value.cooked||e.quasis[i].value.raw,i<e.expressions.length){let a=e.expressions[i],c=`_${i}`;o[c]=K(a,n),s+=`{{${c}}}`}return{step:{op:"template",tmpl:s,vars:o,...t&&{result:t},...t&&r&&{resultConst:!0}},resultVar:t}}function F(e,n){switch(e.type){case"Literal":return{$expr:"literal",value:e.value};case"Identifier":return{$expr:"ident",name:e.name};case"MemberExpression":{let t=e,r=F(t.object,n),s=t.optional===!0;if(t.computed){let i=t.property;return i.type==="Literal"?{$expr:"member",object:r,property:String(i.value),computed:!0,...s&&{optional:!0}}:{$expr:"member",object:r,property:F(i,n),computed:!0,...s&&{optional:!0}}}let o=t.property.name;return{$expr:"member",object:r,property:o,...s&&{optional:!0}}}case"ChainExpression":return F(e.expression,n);case"BinaryExpression":{let t=e;return{$expr:"binary",op:t.operator,left:F(t.left,n),right:F(t.right,n)}}case"LogicalExpression":{let t=e;return{$expr:"logical",op:t.operator,left:F(t.left,n),right:F(t.right,n)}}case"UnaryExpression":{let t=e;return{$expr:"unary",op:t.operator,argument:F(t.argument,n)}}case"ConditionalExpression":{let t=e;return{$expr:"conditional",test:F(t.test,n),consequent:F(t.consequent,n),alternate:F(t.alternate,n)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>F(r,n))};case"ObjectExpression":{let t=e,r=[];for(let s of t.properties)if(s.type==="Property"){let o=s.key.type==="Identifier"?s.key.name:String(s.key.value);r.push({key:o,value:F(s.value,n)})}return{$expr:"object",properties:r}}case"CallExpression":{let t=e;if(t.callee.type==="MemberExpression"){let r=t.callee,s=r.property.type==="Identifier"?r.property.name:String(r.property.value),o=r.optional===!0||t.optional===!0;return{$expr:"methodCall",object:F(r.object,n),method:s,arguments:t.arguments.map(i=>F(i,n)),...o&&{optional:!0}}}if(t.callee.type==="Identifier"){let r=t.callee.name;if(n.helpers?.has(r))throw new W(`Helper '${r}' cannot be called inside an expression. Assign its result to a variable first: const result = ${r}(...); then use result.`,U(e),n.source,n.filename);return{$expr:"call",callee:r,arguments:t.arguments.map(s=>F(s,n))}}throw new W("Complex function calls in expressions should be lifted to statements",U(e),n.source,n.filename)}case"NewExpression":{let t=e,r="constructor";t.callee.type==="Identifier"&&(r=t.callee.name);let s=kr(r);throw new W(`The 'new' keyword is not supported in AsyncJS.${s}`,U(e),n.source,n.filename)}case"TemplateLiteral":throw new W("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",U(e),n.source,n.filename);default:throw new W(`Unsupported expression type in condition: ${e.type}`,U(e),n.source,n.filename)}}function K(e,n){switch(e.type){case"Literal":return e.value;case"Identifier":return e.name;case"MemberExpression":{let t=e;if(t.optional===!0)return F(e,n);let s=K(t.object,n);if(s&&typeof s=="object"&&s.$expr){let i=t.computed?String(t.property.value):t.property.name;return{$expr:"member",object:s,property:i,...t.computed&&{computed:!0}}}if(t.computed)return F(e,n);let o=t.property.name;return typeof s=="string"?`${s}.${o}`:s&&s.$kind==="arg"?{$kind:"arg",path:`${s.path}.${o}`}:`${s}.${o}`}case"ChainExpression":return K(e.expression,n);case"ArrayExpression":return e.elements.map(t=>t?K(t,n):null);case"ObjectExpression":{let t={};for(let r of e.properties)if(r.type==="Property"){let s=r.key.type==="Identifier"?r.key.name:String(r.key.value);t[s]=K(r.value,n)}return t}case"TemplateLiteral":return F(e,n);case"CallExpression":return F(e,n);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return F(e,n);default:return null}}function mi(e,n){if(e.arguments.length===1&&e.arguments[0].type==="ObjectExpression"){let t=e.arguments[0],r={};for(let s of t.properties)if(s.type==="Property"){let o=s.key.type==="Identifier"?s.key.name:String(s.key.value);r[o]=K(s.value,n)}return r}return{args:e.arguments.map(t=>K(t,n))}}import{parseExpressionAt as as}from"acorn";function di(e,n){let t=n;for(;t>0&&e[t-1]!==`
57
+ `;)t--;if(e.slice(t,n).includes("//"))return!0;let s=0,o=!1;for(;s<n;)!o&&e.slice(s,s+2)==="/*"?(o=!0,s+=2):o&&e.slice(s,s+2)==="*/"?(o=!1,s+=2):s++;return o}function yi(e){let n=[],t=/\/\*test\s+'([^']*)'\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+"([^"]*)"\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+`([^`]*)`\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,r;for(;(r=t.exec(e))!==null;){let s=r[1]||r[3]||r[5]||`embedded test ${n.length+1}`,o=(r[2]||r[4]||r[6]||r[7]||"").trim();n.push({description:s,body:o,line:Kt(e,r.index)})}return n}function Ht(e){let n=[],t=[],r=yi(e);n.push(...r);let s=/test\s+'([^']*)'\s*\{|test\s+"([^"]*)"\s*\{|test\s+`([^`]*)`\s*\{|test\s*\(\s*'([^']*)'\s*\)\s*\{|test\s*\(\s*"([^"]*)"\s*\)\s*\{|test\s*\(\s*`([^`]*)`\s*\)\s*\{|test\s*\{/g,o=/mock\s*\{/g,i=e,a,c=[];for(;(a=s.exec(e))!==null;){let u=a.index;if(di(e,u))continue;let m=a[1]||a[2]||a[3]||a[4]||a[5]||a[6]||`test ${n.length+1}`,y=a.index+a[0].length,g=jr(e,y-1);if(g===-1)continue;let x=e.slice(y,g).trim();n.push({description:m,body:x,line:Kt(e,u)}),c.push({start:u,end:g+1,desc:m})}let l=[];for(;(a=o.exec(e))!==null;){let u=a.index,m=a.index+a[0].length,y=jr(e,m-1);if(y===-1)continue;let g=e.slice(m,y).trim();t.push({body:g,line:Kt(e,u)}),l.push({start:u,end:y+1})}let f=[...c,...l].sort((u,m)=>m.start-u.start);for(let u of f)i=i.slice(0,u.start)+i.slice(u.end);i=i.replace(/\n\s*\n\s*\n/g,`
54
58
 
55
- `).trim();let f=Qs(n,t);return{code:i,tests:n,mocks:t,testRunner:f}}function hr(e,n){let t=0,r=null,s=!1;for(let o=n;o<e.length;o++){let i=e[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(!r&&(i==='"'||i==="'"||i==="`")){r=i;continue}if(r===i){r=null;continue}if(!r&&(i==="{"&&t++,i==="}"&&(t--,t===0)))return o}return-1}function Ut(e,n){return e.slice(0,n).split(`
56
- `).length}function Qs(e,n){if(e.length===0)return"// No tests defined";let t=n.map(s=>s.body).join(`
59
+ `).trim();let p=gi(n,t);return{code:i,tests:n,mocks:t,testRunner:p}}function jr(e,n){let t=0,r=null,s=!1;for(let o=n;o<e.length;o++){let i=e[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(!r&&(i==='"'||i==="'"||i==="`")){r=i;continue}if(r===i){r=null;continue}if(!r&&(i==="{"&&t++,i==="}"&&(t--,t===0)))return o}return-1}function Kt(e,n){return e.slice(0,n).split(`
60
+ `).length}function gi(e,n){if(e.length===0)return"// No tests defined";let t=n.map(s=>s.body).join(`
57
61
  `);return`(async () => {
58
62
  const __results = []
59
63
 
@@ -76,13 +80,13 @@ const __failed = __results.filter(r => !r.passed).length
76
80
 
77
81
  // Return summary
78
82
  return { passed: __passed, failed: __failed, results: __results }
79
- })()`.trim()}var br=`
83
+ })()`.trim()}var vr=`
80
84
  function assert(condition, message) {
81
85
  if (!condition) {
82
86
  throw new Error(message || 'Assertion failed')
83
87
  }
84
88
  }
85
- `,xr=`
89
+ `,Ar=`
86
90
  function expect(actual) {
87
91
  const deepEqual = (a, b) => {
88
92
  if (a === b) return true
@@ -173,52 +177,52 @@ function expect(actual) {
173
177
  }
174
178
  }
175
179
  }
176
- `,ei=br+`
177
- `+xr;import{validate as jr,s as ht}from"tosijs-schema";function Me(e){if(e.nullable)return{anyOf:[Me({...e,nullable:!1}),{type:"null"}]};switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"integer":return{type:"integer"};case"non-negative-integer":return{type:"integer",minimum:0};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"undefined":return{};case"any":return{};case"array":return e.items?{type:"array",items:Me(e.items)}:{type:"array"};case"object":if(e.shape){let n={},t=[];for(let[r,s]of Object.entries(e.shape))n[r]=Me(s),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(Me)}:{};default:return{}}}function Ce(e){if(e===null)return{type:"null"};if(e===void 0)return{};switch(typeof e){case"string":return{type:"string"};case"number":return Number.isInteger(e)?{type:"integer"}:{type:"number"};case"boolean":return{type:"boolean"};case"object":{if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:Ce(e[0])};let n={},t=[];for(let[r,s]of Object.entries(e))n[r]=Ce(s),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}default:return{}}}function Lt(e){let n={},t=[];for(let[o,i]of Object.entries(e.params))i?.type?.kind?n[o]=Me(i.type):i?.example!==void 0?n[o]=Ce(i.example):n[o]={},i?.required!==!1&&t.push(o),i?.example!==void 0&&(n[o].examples=[i.example]);let r={type:"object",properties:n,required:t},s;return e.returns&&(e.returns.type?.kind?s=Me(e.returns.type):e.returns.example!==void 0&&(s=Ce(e.returns.example))),{input:r,output:s}}import{validate as Jt,filter as ti,s as dt}from"tosijs-schema";function we(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function _r(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function ni(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function G(e,n,t,r){let s,o,i,a=t,c=r;if(typeof e=="string")if(s=e,typeof n=="function")o=n,a!==void 0&&(i=dt.infer(a));else if(n===void 0&&a!==void 0)i=dt.infer(a);else if(_r(n))i=n;else if(ni(n))i=n;else if(n!==void 0)a=n,c=a,i=dt.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else _r(e),i=e,s=ri(i);let l;if(i){let f=i?.schema??i;f&&typeof f=="object"&&Array.isArray(f.examples)&&(l=f.examples)}return a===void 0&&l&&l.length>0&&(a=l[0]),{description:s,check:f=>o?o(f):i?Jt(f,i):!1,schema:i,predicate:o,example:a,examples:l,default:c,toJSONSchema(){if(i){let f=i?.schema??i;if(f&&typeof f=="object"&&"type"in f)return f}return a!==void 0?Ce(a):{description:s}},strip(f){return i?ti(f,i):f},__runtimeType:!0}}function ri(e){let n=e?.schema??e;if(n&&typeof n=="object"&&"type"in n){let t=n;switch(t.type){case"string":return t.format?`string (${t.format})`:t.pattern?`string matching ${t.pattern}`:t.minLength!==void 0&&t.maxLength!==void 0?`string (${t.minLength}-${t.maxLength} chars)`:"string";case"number":case"integer":return t.minimum!==void 0&&t.maximum!==void 0?`${t.type} (${t.minimum}-${t.maximum})`:t.minimum!==void 0?`${t.type} >= ${t.minimum}`:t.maximum!==void 0?`${t.type} <= ${t.maximum}`:t.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var Vt=G("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),zt=G("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),Zt=G("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),Gt=G("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),Kt=G("positive integer",e=>typeof e!="number"?`expected positive integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?e<=0?`${e} is not positive`:!0:`${e} is not an integer`),Ht=G("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),Yt=G("email address",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?!0:`"${e}" is not a valid email`),wr=e=>{try{return new URL(e),!0}catch{return!1}},Xt=G("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:wr(e)?!0:`"${e}" is not a valid URL`),Qt=G("UUID",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?!0:`"${e}" is not a valid UUID`),Sr=e=>{let n=new Date(e);return!isNaN(n.getTime())&&e.includes("T")},$r=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let n=new Date(e+"T00:00:00Z");return!isNaN(n.getTime())},Er=G("ISO 8601 timestamp",e=>typeof e=="string"&&Sr(e)),Tr=G("date (YYYY-MM-DD)",e=>typeof e=="string"&&$r(e));function en(e){return G(`${e.description} or null`,n=>n===null||e.check(n)===!0)}function tn(e){return G(`${e.description} (optional)`,n=>n==null||e.check(n)===!0)}function nn(e,n,...t){if(typeof e=="string"&&Array.isArray(n)){let o=e,i=n,a=new Set(i);return{description:o,check:l=>a.has(l),toJSONSchema:()=>({enum:i}),strip:l=>l,__runtimeType:!0,values:i}}let r=[];we(e)&&r.push(e),we(n)&&r.push(n),r.push(...t);let s=r.map(o=>o.description).join(" | ");return G(s,o=>r.some(i=>i.check(o)===!0))}function rn(e){return G(`array of ${e.description}`,n=>Array.isArray(n)&&n.every(t=>e.check(t)===!0))}function si(e){if(we(e))return t=>e.check(t)===!0;if(e&&typeof e=="object"&&"schema"in e)return t=>Jt(t,e);let n=dt.infer(e);return t=>Jt(t,n)}function Ge(e,n,t){let r=[],s=[];for(let i of e)typeof i=="string"?(r.push(i),s.push(void 0)):(r.push(i[0]),s.push(i[1]));let o=(...i)=>{let a=r.map((l,p)=>{let f=p<i.length?i[p]:s[p];return f===void 0?()=>!0:si(f)}),c=t;return r.forEach((l,p)=>{let f=p<i.length?i[p]:s[p],u="any";we(f)?u=f.description:f!==void 0&&(u=typeof f=="string"?"string":JSON.stringify(f)),c=c.replace(new RegExp(`\\b${l}\\b`,"g"),u)}),G(c,l=>n(l,...a))};return o.params=r,o.description=t,o}var sn=Ge(["T","U"],(e,n,t)=>Array.isArray(e)&&e.length===2&&n(e[0])&&t(e[1]),"Pair<T, U>"),on=Ge(["V"],(e,n)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(n),"Record<string, V>");function an(e,n){let t=Object.values(n),r=new Set(t),s=Object.keys(n),o={};for(let[a,c]of Object.entries(n))o[c]=a;return{description:e,check:a=>r.has(a),toJSONSchema:()=>({enum:t}),strip:a=>a,__runtimeType:!0,members:n,names:o,values:t,keys:s}}function ii(e){if(e===null)return"null";if(e===void 0)return"undefined";switch(typeof e){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger(e)?"integer":"number";case"object":return Array.isArray(e)?"array":"object";default:return null}}function yt(e,n,t){if(Array.isArray(n)&&t){let r=n,s=[],o=[];for(let a of r)Array.isArray(a)?(s.push(a[0]),o.push(a[1])):(s.push(a),o.push(void 0));let i=((...a)=>{let c=s.map((p,f)=>f<a.length?a[f]:o[f]),l=t(...c);return yt(e,l)});return Object.defineProperties(i,{typeParamNames:{value:s,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),i}return oi(e,n)}function oi(e,n){let t={},r,s="assertReturns";if(typeof n=="function"){let i=n.__tjs;if(i){if(i.params)for(let[a,c]of Object.entries(i.params))t[a]=c?.example??null;i.returns&&(r=i.returns?.example??null),i.safeReturn?s="checkedReturns":i.unsafe?s="assertReturns":s="returns"}}else t=n.params??{},r=n.returns,s=n.returnContract??"assertReturns";return{description:e,params:t,returns:r,returnContract:s,toJSONSchema:()=>({description:e,type:"function"}),strip:i=>i,check:i=>{if(typeof i!="function")return`expected function, got ${i===null?"null":typeof i}`;let a=Object.keys(t).length;if(a>0){let l=i.__tjs;if(l?.params){let p=Object.keys(l.params).length;if(p!==a)return`expected ${a} params, got ${p}`;let f=Object.keys(t),u=Object.keys(l.params);for(let m=0;m<f.length;m++){let y=l.params[u[m]],b=t[f[m]];if(y?.type?.kind&&b!==void 0){let S=ii(b);if(S&&y.type.kind!==S&&y.type.kind!=="any")return`param '${f[m]}' expected ${S}, got ${y.type.kind}`}}}}return!0},__runtimeType:!0}}var ci=kr(),me=ci.version,Ke=Symbol.for("tjs.equals");function bt(e){let[n=0,t=0,r=0]=e.split(".").map(Number);return{major:n,minor:t,patch:r}}function ln(e,n){let t=bt(e),r=bt(n);return t.major!==r.major?t.major<r.major?-1:1:t.minor!==r.minor?t.minor<r.minor?-1:1:t.patch!==r.patch?t.patch<r.patch?-1:1:0}function un(e,n){let t=bt(e),r=bt(n);return t.major===r.major}var he=class e extends Error{path;expected;actual;callStack;reason;constructor(n,t,r,s,o,i){super(n),this.name="MonadicError",this.path=t,this.expected=r,this.actual=s,this.callStack=o,this.reason=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function li(e,n,t,r){let s=t===null?"null":typeof t,o=q.callStacks||q.debug?pn():void 0,i=r?`Expected ${n} for '${e}': ${r}`:`Expected ${n} for '${e}', got ${s}`,a=new he(i,e,n,s,o,r);if(q.trackErrors!==!1){let c=q.maxErrors??xt;Ar[Pe]=a,Pe=(Pe+1)%c,Ee<c&&Ee++,_t++}if(q.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),q.throwTypeErrors)throw a;return a}function cn(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var fn={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},q={...fn},He=64,vr=new Array(He).fill(""),$e=0,ye=0,xt=64,Ar=new Array(xt).fill(null),Pe=0,Ee=0,_t=0,Oe=0;function ui(){Oe++}function fi(){Oe>0&&Oe--}function pi(){return Oe>0}function mi(e){q={...q,...e}}function di(){return{...q}}function Rr(e){if((q.callStacks||q.debug)&&e){let n=q.maxStackSize??He;vr[$e]=e,$e=($e+1)%n,ye<n&&ye++}}function gt(){if((q.callStacks||q.debug)&&ye>0){let e=q.maxStackSize??He;$e=($e-1+e)%e,ye--}}function pn(){if(ye===0)return[];let e=q.maxStackSize??He,n=[],t=($e-ye+e)%e;for(let r=0;r<ye;r++)n.push(vr[(t+r)%e]);return n}function Mr(){if(q.trackErrors===!1||Ee===0)return[];let e=q.maxErrors??xt,n=[],t=(Pe-Ee+e)%e;for(let r=0;r<Ee;r++)n.push(Ar[(t+r)%e]);return n}function yi(){let e=Mr();return Pe=0,Ee=0,_t=0,e}function gi(){return _t}function hi(){q={...fn},$e=0,ye=0,Pe=0,Ee=0,_t=0,Oe=0}function Ne(e,n){if(e!==null&&typeof e=="object"&&typeof e[Ke]=="function")return e[Ke](n);if(n!==null&&typeof n=="object"&&typeof n[Ke]=="function")return n[Ke](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(n);if(n!==null&&typeof n=="object"&&typeof n.Equals=="function")return n.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)return!0;if(e==null||n===null||n===void 0||typeof e!=typeof n||typeof e!="object")return!1;if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(let s of e)if(!n.has(s))return!1;return!0}if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(let[s,o]of e)if(!n.has(s)||!Ne(o,n.get(s)))return!1;return!0}if(e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(e instanceof RegExp&&n instanceof RegExp)return e.toString()===n.toString();if(Array.isArray(e)&&Array.isArray(n))return e.length!==n.length?!1:e.every((s,o)=>Ne(s,n[o]));if(Array.isArray(e)!==Array.isArray(n))return!1;let t=Object.keys(e),r=Object.keys(n);return t.length!==r.length?!1:t.every(s=>Ne(e[s],n[s]))}function Cr(e,n){return!Ne(e,n)}function Pr(e){return e===null?"null":typeof e}function Nr(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function mn(e,n){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),!!(e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)}function Ir(e,n){return!mn(e,n)}function de(e){return e!==null&&typeof e=="object"&&e.$error===!0}function le(e,n){let t={$error:!0,message:e,...n};if((q.callStacks||q.debug)&&ye>0){let r=pn(),s=n?.path?[...r,n.path]:r;t.stack=s}return t}function dn(e,n){if(e.length===0)return le("Unknown error");if(e.length===1)return e[0];let t=e.map(s=>{if(s.path){let o=s.path.split(".");return o[o.length-1]}return"unknown"}).join(", "),r=`Multiple parameter errors in ${n||"function"}: ${t}`;return le(r,{path:n,errors:e})}function Ie(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let n=typeof e;if(n!=="object")return n;let t=e.constructor?.name;return t&&t!=="Object"?t:"object"}function Or(e,n){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let t=e;for(;t!==null;){if(t.constructor?.name===n)return!0;t=Object.getPrototypeOf(t)}return!1}function Te(e,n,t){if(de(e))return e;if(typeof n=="object"&&n!==null&&"check"in n){let s=n.check(e);if(s===!0)return null;let o=typeof s=="string"?s:void 0,i=o?`Expected ${n.description} for '${t}': ${o}`:`Expected ${n.description} but got ${Ie(e)}`;return le(i,{path:t,expected:n.description,actual:Ie(e),reason:o})}let r=Ie(e);return n==="any"||n===r||n==="number"&&r==="number"||n==="integer"&&r==="number"&&Number.isInteger(e)||n==="non-negative-integer"&&r==="number"&&Number.isInteger(e)&&e>=0||n==="object"&&r==="object"?null:le(`Expected ${n} but got ${r}`,{path:t,expected:n,actual:r})}function Br(e,n,t,r){if(typeof e!="function")return e;let s=e.__tjs;if(!s||!s.params)return e;let o=Object.entries(s.params);for(let i=0;i<n.length;i++){let a=n[i];if(a==="any")continue;let c=o[i];if(!c)continue;let l=c[1]?.type?.kind;if(!(!l||l==="any")&&l!==a)return new he(`Expected (...arg${i}: ${a}, ...) for '${r}', but callback declares arg${i} as ${l}`,`${r}(arg${i})`,a,l)}if(t!=="any"&&s.returns){let i=s.returns.type?.kind??s.returns.kind;if(i&&i!=="any"&&i!==t)return new he(`Expected callback returning ${t} for '${r}', but callback returns ${i}`,`${r}(return)`,t,i)}return e}function yn(e,n,t){for(let[r,s]of Object.entries(n.params)){let o=e[r];if(de(o))return o;if(s.required&&o===void 0){let a=typeof s.type=="string"?s.type:s.type.description;return le(`Missing required parameter '${r}'`,{path:t?`${t}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(o===void 0)continue;let i=Te(o,s.type,t?`${t}.${r}`:r);if(i)return s.loc&&(i.loc=s.loc),i}return null}function gn(e,n){if(e.__tjs=n,e.__tjs.schema=()=>Lt(n),!(!n.polymorphic&&(n.safe||n.safeReturn||q.safety!=="none"&&!n.unsafe||n.returns&&q.safety==="all"&&!n.unsafeReturn)))return e;let r=!!n.returns,s=!!n.unsafe,o=!!n.safe,i=!!n.unsafeReturn,a=!!n.safeReturn,c=n.returns?.defaults,l=Object.entries(n.params),p=l.length,f=e.name||n.name||"anonymous",u=function(...m){if(Oe>0)return e.apply(this,m);let y=o||!s&&q.safety!=="none",b=r&&(a||!i&&q.safety==="all");if(!y&&!b)return e.apply(this,m);if(m.length>0&&de(m[0]))return m[0];if(y){let E=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),w=[];if(E){let h=m[0];for(let x=0;x<p;x++){let[_,g]=l[x],$=h[_];if(de($)){w.push($);continue}if(g.required&&$===void 0){w.push(le(`Missing required parameter '${_}'`,{path:`${f}.${_}`,expected:typeof g.type=="string"?g.type:g.type?.description||"value",actual:"undefined",loc:g.loc}));continue}if($!==void 0){let k=Te($,g.type,`${f}.${_}`);k&&(g.loc&&(k.loc=g.loc),w.push(k))}}}else for(let h=0;h<p;h++){let[x,_]=l[h],g=m[h];if(de(g)){w.push(g);continue}if(_.required&&g===void 0){w.push(le(`Missing required parameter '${x}'`,{path:`${f}.${x}`,expected:typeof _.type=="string"?_.type:_.type?.description||"value",actual:"undefined",loc:_.loc}));continue}if(g!==void 0){let $=Te(g,_.type,`${f}.${x}`);$&&(_.loc&&($.loc=_.loc),w.push($))}}if(w.length>0)return dn(w,f)}let S=q.callStacks||q.debug;S&&Rr(f);try{let E=e.apply(this,m);if(b&&n.returns&&!de(E)){let w=c&&typeof E=="object"&&E!==null?Object.assign({},c,E):E,h=Te(w,n.returns.type,`${f}()`);if(h)return S&&gt(),h}return S&&gt(),E}catch(E){return S&&gt(),le(E.message||String(E),{path:f,cause:E})}};return Object.defineProperty(u,"name",{value:e.name}),u.__tjs=n,u.__tjs.schema=()=>Lt(n),u}function Fr(e){let n=new Proxy(e,{construct(t,r,s){return Reflect.construct(t,r,s)},apply(t,r,s){return Reflect.construct(t,s)}});Object.defineProperty(n,"name",{value:e.name});for(let t of Object.getOwnPropertyNames(e))t!=="length"&&t!=="name"&&t!=="prototype"&&Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n}function Dr(){let e={...q},n=e.maxStackSize??He,t=new Array(n).fill(""),r=0,s=0,o=e.maxErrors??xt,i=new Array(o).fill(null),a=0,c=0,l=0,p=0;function f(R){e={...e,...R}}function u(){return{...e}}function m(R){(e.callStacks||e.debug)&&R&&(t[r]=R,r=(r+1)%n,s<n&&s++)}function y(){(e.callStacks||e.debug)&&s>0&&(r=(r-1+n)%n,s--)}function b(){if(s===0)return[];let R=[],I=(r-s+n)%n;for(let B=0;B<s;B++)R.push(t[(I+B)%n]);return R}function S(){e={...fn},r=0,s=0,a=0,c=0,l=0,p=0}function E(){p++}function w(){p>0&&p--}function h(){return p>0}let x=new Map;function _(R,I,B){x.has(R)||x.set(R,new Map),x.get(R).set(I,B)}function g(R,I){let B=typeof R,J;if(R==null)return;if(B==="string")J="String";else if(B==="number")J="Number";else if(B==="boolean")J="Boolean";else if(Array.isArray(R))J="Array";else if(B==="object")J=R.constructor?.name||"Object";else return;let V=J;for(;V;){let Ae=x.get(V);if(Ae?.has(I))return Ae.get(I);if(B==="object"&&!Array.isArray(R)){if(V=Object.getPrototypeOf(V===J?R:Object.getPrototypeOf(R))?.constructor?.name,V==="Object"||V===J)break}else break}let X=x.get("Object");if(X?.has(I))return X.get(I)}function $(R,I,B){let J=B===null?"null":typeof B,V=e.callStacks||e.debug?b():void 0,X=new he(`Expected ${I} for '${R}', got ${J}`,R,I,J,V);if(e.trackErrors!==!1&&(i[a]=X,a=(a+1)%o,c<o&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${X.message}`),e.throwTypeErrors)throw X;return X}function k(){if(e.trackErrors===!1||c===0)return[];let R=[],I=(a-c+o)%o;for(let B=0;B<c;B++)R.push(i[(I+B)%o]);return R}function j(){let R=k();return a=0,c=0,l=0,R}function A(){return l}function M(R,I){let B={$error:!0,message:R,...I};if((e.callStacks||e.debug)&&s>0){let J=I?.path?[...b(),I.path]:b();B.stack=J}return B}function P(R,I){return R==null?$(`bang.${I}`,"non-null",R):cn(R)?R:R[I]}return{version:me,MonadicError:he,typeError:$,isMonadicError:cn,bang:P,isError:de,error:M,composeErrors:dn,typeOf:Ie,isNativeType:Or,checkType:Te,validateArgs:yn,wrap:gn,checkFnShape:Br,wrapClass:Fr,compareVersions:ln,versionsCompatible:un,createRuntime:Dr,configure:f,getConfig:u,pushStack:m,popStack:y,getStack:b,errors:k,clearErrors:j,getErrorCount:A,resetRuntime:S,enterUnsafe:E,exitUnsafe:w,isUnsafeMode:h,validate:jr,infer:ht.infer.bind(ht),Type:G,isRuntimeType:we,Union:nn,Generic:Ge,Enum:an,FunctionPredicate:yt,Nullable:en,Optional:tn,TArray:rn,TString:Vt,TNumber:zt,TBoolean:Zt,TInteger:Gt,TPositiveInt:Kt,TNonEmptyString:Ht,TEmail:Yt,TUrl:Xt,TUuid:Qt,TPair:sn,TRecord:on,Is:Ne,IsNot:Cr,Eq:mn,NotEq:Ir,TypeOf:Pr,toBool:Nr,tjsEquals:Ke,registerExtension:_,resolveExtension:g}}var Se={version:me,MonadicError:he,typeError:li,isMonadicError:cn,isError:de,error:le,composeErrors:dn,typeOf:Ie,isNativeType:Or,checkType:Te,validateArgs:yn,wrap:gn,checkFnShape:Br,wrapClass:Fr,compareVersions:ln,versionsCompatible:un,configure:mi,getConfig:di,pushStack:Rr,popStack:gt,getStack:pn,errors:Mr,clearErrors:yi,getErrorCount:gi,resetRuntime:hi,enterUnsafe:ui,exitUnsafe:fi,isUnsafeMode:pi,createRuntime:Dr,validate:jr,infer:ht.infer.bind(ht),Type:G,isRuntimeType:we,Union:nn,Generic:Ge,Enum:an,FunctionPredicate:yt,Nullable:en,Optional:tn,TArray:rn,TString:Vt,TNumber:zt,TBoolean:Zt,TInteger:Gt,TPositiveInt:Kt,TNonEmptyString:Ht,TEmail:Yt,TUrl:Xt,TUuid:Qt,Timestamp:Er,LegalDate:Tr,TPair:sn,TRecord:on,Is:Ne,IsNot:Cr,Eq:mn,NotEq:Ir,TypeOf:Pr,toBool:Nr};function hn(){let e=globalThis;if(e.__tjs){let n=e.__tjs.version;if(typeof n!="string")return e.__tjs=Se,Se;let t=ln(me,n);return t===0||(un(me,n)?t>0?(console.info(`TJS runtime: upgrading ${n} \u2192 ${me}`),e.__tjs=Se):console.info(`TJS runtime: keeping ${n} (newer than ${me})`):(console.warn(`TJS runtime version conflict: ${n} vs ${me} (major version mismatch)`),t>0&&(console.warn(`Upgrading to ${me} - check for breaking changes`),e.__tjs=Se))),e.__tjs}return e.__tjs=Se,Se}function bi(e){return`
180
+ `,hi=vr+`
181
+ `+Ar;import{validate as Br,s as St}from"tosijs-schema";function Ne(e){if(e.nullable)return{anyOf:[Ne({...e,nullable:!1}),{type:"null"}]};switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"integer":return{type:"integer"};case"non-negative-integer":return{type:"integer",minimum:0};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"undefined":return{};case"any":return{};case"array":return e.items?{type:"array",items:Ne(e.items)}:{type:"array"};case"object":if(e.shape){let n={},t=[];for(let[r,s]of Object.entries(e.shape))n[r]=Ne(s),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(Ne)}:{};default:return{}}}function Ie(e){if(e===null)return{type:"null"};if(e===void 0)return{};switch(typeof e){case"string":return{type:"string"};case"number":return Number.isInteger(e)?{type:"integer"}:{type:"number"};case"boolean":return{type:"boolean"};case"object":{if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:Ie(e[0])};let n={},t=[];for(let[r,s]of Object.entries(e))n[r]=Ie(s),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}default:return{}}}function Yt(e){let n={},t=[];for(let[o,i]of Object.entries(e.params))i?.type?.kind?n[o]=Ne(i.type):i?.example!==void 0?n[o]=Ie(i.example):n[o]={},i?.required!==!1&&t.push(o),i?.example!==void 0&&(n[o].examples=[i.example]);let r={type:"object",properties:n,required:t},s;return e.returns&&(e.returns.type?.kind?s=Ne(e.returns.type):e.returns.example!==void 0&&(s=Ie(e.returns.example))),{input:r,output:s}}import{validate as Xt,filter as bi,s as _t}from"tosijs-schema";function Te(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function Pr(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function xi(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function Z(e,n,t,r){let s,o,i,a=t,c=r;if(typeof e=="string")if(s=e,typeof n=="function")o=n,a!==void 0&&(i=_t.infer(a));else if(n===void 0&&a!==void 0)i=_t.infer(a);else if(Pr(n))i=n;else if(xi(n))i=n;else if(n!==void 0)a=n,c=a,i=_t.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else Pr(e),i=e,s=_i(i);let l;if(i){let p=i?.schema??i;p&&typeof p=="object"&&Array.isArray(p.examples)&&(l=p.examples)}return a===void 0&&l&&l.length>0&&(a=l[0]),{description:s,check:p=>o?o(p):i?Xt(p,i):!1,schema:i,predicate:o,example:a,examples:l,default:c,toJSONSchema(){if(i){let p=i?.schema??i;if(p&&typeof p=="object"&&"type"in p)return p}return a!==void 0?Ie(a):{description:s}},strip(p){return i?bi(p,i):p},__runtimeType:!0}}function _i(e){let n=e?.schema??e;if(n&&typeof n=="object"&&"type"in n){let t=n;switch(t.type){case"string":return t.format?`string (${t.format})`:t.pattern?`string matching ${t.pattern}`:t.minLength!==void 0&&t.maxLength!==void 0?`string (${t.minLength}-${t.maxLength} chars)`:"string";case"number":case"integer":return t.minimum!==void 0&&t.maximum!==void 0?`${t.type} (${t.minimum}-${t.maximum})`:t.minimum!==void 0?`${t.type} >= ${t.minimum}`:t.maximum!==void 0?`${t.type} <= ${t.maximum}`:t.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var Qt=Z("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),en=Z("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),tn=Z("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),nn=Z("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),rn=Z("positive integer",e=>typeof e!="number"?`expected positive integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?e<=0?`${e} is not positive`:!0:`${e} is not an integer`),sn=Z("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),on=Z("email address",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?!0:`"${e}" is not a valid email`),Rr=e=>{try{return new URL(e),!0}catch{return!1}},an=Z("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:Rr(e)?!0:`"${e}" is not a valid URL`),cn=Z("UUID",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?!0:`"${e}" is not a valid UUID`),Mr=e=>{let n=new Date(e);return!isNaN(n.getTime())&&e.includes("T")},Cr=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let n=new Date(e+"T00:00:00Z");return!isNaN(n.getTime())},Nr=Z("ISO 8601 timestamp",e=>typeof e=="string"&&Mr(e)),Ir=Z("date (YYYY-MM-DD)",e=>typeof e=="string"&&Cr(e));function ln(e){return Z(`${e.description} or null`,n=>n===null||e.check(n)===!0)}function un(e){return Z(`${e.description} (optional)`,n=>n==null||e.check(n)===!0)}function fn(e,n,...t){if(typeof e=="string"&&Array.isArray(n)){let o=e,i=n,a=new Set(i);return{description:o,check:l=>a.has(l),toJSONSchema:()=>({enum:i}),strip:l=>l,__runtimeType:!0,values:i}}let r=[];Te(e)&&r.push(e),Te(n)&&r.push(n),r.push(...t);let s=r.map(o=>o.description).join(" | ");return Z(s,o=>r.some(i=>i.check(o)===!0))}function pn(e){return Z(`array of ${e.description}`,n=>Array.isArray(n)&&n.every(t=>e.check(t)===!0))}function wi(e){if(Te(e))return t=>e.check(t)===!0;if(e&&typeof e=="object"&&"schema"in e)return t=>Xt(t,e);let n=_t.infer(e);return t=>Xt(t,n)}function Qe(e,n,t){let r=[],s=[];for(let i of e)typeof i=="string"?(r.push(i),s.push(void 0)):(r.push(i[0]),s.push(i[1]));let o=(...i)=>{let a=r.map((l,f)=>{let p=f<i.length?i[f]:s[f];return p===void 0?()=>!0:wi(p)}),c=t;return r.forEach((l,f)=>{let p=f<i.length?i[f]:s[f],u="any";Te(p)?u=p.description:p!==void 0&&(u=typeof p=="string"?"string":JSON.stringify(p)),c=c.replace(new RegExp(`\\b${l}\\b`,"g"),u)}),Z(c,l=>n(l,...a))};return o.params=r,o.description=t,o}var mn=Qe(["T","U"],(e,n,t)=>Array.isArray(e)&&e.length===2&&n(e[0])&&t(e[1]),"Pair<T, U>"),dn=Qe(["V"],(e,n)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(n),"Record<string, V>");function yn(e,n){let t=Object.values(n),r=new Set(t),s=Object.keys(n),o={};for(let[a,c]of Object.entries(n))o[c]=a;return{description:e,check:a=>r.has(a),toJSONSchema:()=>({enum:t}),strip:a=>a,__runtimeType:!0,members:n,names:o,values:t,keys:s}}function $i(e){if(e===null)return"null";if(e===void 0)return"undefined";switch(typeof e){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger(e)?"integer":"number";case"object":return Array.isArray(e)?"array":"object";default:return null}}function wt(e,n,t){if(Array.isArray(n)&&t){let r=n,s=[],o=[];for(let a of r)Array.isArray(a)?(s.push(a[0]),o.push(a[1])):(s.push(a),o.push(void 0));let i=((...a)=>{let c=s.map((f,p)=>p<a.length?a[p]:o[p]),l=t(...c);return wt(e,l)});return Object.defineProperties(i,{typeParamNames:{value:s,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),i}return Si(e,n)}function Si(e,n){let t={},r,s="assertReturns";if(typeof n=="function"){let i=n.__tjs;if(i){if(i.params)for(let[a,c]of Object.entries(i.params))t[a]=c?.example??null;i.returns&&(r=i.returns?.example??null),i.safeReturn?s="checkedReturns":i.unsafe?s="assertReturns":s="returns"}}else t=n.params??{},r=n.returns,s=n.returnContract??"assertReturns";return{description:e,params:t,returns:r,returnContract:s,toJSONSchema:()=>({description:e,type:"function"}),strip:i=>i,check:i=>{if(typeof i!="function")return`expected function, got ${i===null?"null":typeof i}`;let a=Object.keys(t).length;if(a>0){let l=i.__tjs;if(l?.params){let f=Object.keys(l.params).length;if(f!==a)return`expected ${a} params, got ${f}`;let p=Object.keys(t),u=Object.keys(l.params);for(let m=0;m<p.length;m++){let y=l.params[u[m]],g=t[p[m]];if(y?.type?.kind&&g!==void 0){let x=$i(g);if(x&&y.type.kind!==x&&y.type.kind!=="any")return`param '${p[m]}' expected ${x}, got ${y.type.kind}`}}}}return!0},__runtimeType:!0}}var Ti=Or(),me=Ti.version,et=Symbol.for("tjs.equals");function Et(e){let[n=0,t=0,r=0]=e.split(".").map(Number);return{major:n,minor:t,patch:r}}function hn(e,n){let t=Et(e),r=Et(n);return t.major!==r.major?t.major<r.major?-1:1:t.minor!==r.minor?t.minor<r.minor?-1:1:t.patch!==r.patch?t.patch<r.patch?-1:1:0}function bn(e,n){let t=Et(e),r=Et(n);return t.major===r.major}var he=class e extends Error{path;expected;actual;callStack;reason;constructor(n,t,r,s,o,i){super(n),this.name="MonadicError",this.path=t,this.expected=r,this.actual=s,this.callStack=o,this.reason=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function ki(e,n,t,r){let s=t===null?"null":typeof t,o=q.callStacks||q.debug?_n():void 0,i=r?`Expected ${n} for '${e}': ${r}`:`Expected ${n} for '${e}', got ${s}`,a=new he(i,e,n,s,o,r);if(q.trackErrors!==!1){let c=q.maxErrors??Tt;Fr[Oe]=a,Oe=(Oe+1)%c,ve<c&&ve++,kt++}if(q.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),q.throwTypeErrors)throw a;return a}function gn(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var xn={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},q={...xn},tt=64,Dr=new Array(tt).fill(""),je=0,ye=0,Tt=64,Fr=new Array(Tt).fill(null),Oe=0,ve=0,kt=0,Fe=0;function ji(){Fe++}function vi(){Fe>0&&Fe--}function Ai(){return Fe>0}function Pi(e){q={...q,...e}}function Ri(){return{...q}}function qr(e){if((q.callStacks||q.debug)&&e){let n=q.maxStackSize??tt;Dr[je]=e,je=(je+1)%n,ye<n&&ye++}}function $t(){if((q.callStacks||q.debug)&&ye>0){let e=q.maxStackSize??tt;je=(je-1+e)%e,ye--}}function _n(){if(ye===0)return[];let e=q.maxStackSize??tt,n=[],t=(je-ye+e)%e;for(let r=0;r<ye;r++)n.push(Dr[(t+r)%e]);return n}function Wr(){if(q.trackErrors===!1||ve===0)return[];let e=q.maxErrors??Tt,n=[],t=(Oe-ve+e)%e;for(let r=0;r<ve;r++)n.push(Fr[(t+r)%e]);return n}function Mi(){let e=Wr();return Oe=0,ve=0,kt=0,e}function Ci(){return kt}function Ni(){q={...xn},je=0,ye=0,Oe=0,ve=0,kt=0,Fe=0}function Be(e,n){if(e!==null&&typeof e=="object"&&typeof e[et]=="function")return e[et](n);if(n!==null&&typeof n=="object"&&typeof n[et]=="function")return n[et](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(n);if(n!==null&&typeof n=="object"&&typeof n.Equals=="function")return n.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)return!0;if(e==null||n===null||n===void 0||typeof e!=typeof n||typeof e!="object")return!1;if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(let s of e)if(!n.has(s))return!1;return!0}if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(let[s,o]of e)if(!n.has(s)||!Be(o,n.get(s)))return!1;return!0}if(e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(e instanceof RegExp&&n instanceof RegExp)return e.toString()===n.toString();if(Array.isArray(e)&&Array.isArray(n))return e.length!==n.length?!1:e.every((s,o)=>Be(s,n[o]));if(Array.isArray(e)!==Array.isArray(n))return!1;let t=Object.keys(e),r=Object.keys(n);return t.length!==r.length?!1:t.every(s=>Be(e[s],n[s]))}function Ur(e,n){return!Be(e,n)}function Lr(e){return e===null?"null":typeof e}function Jr(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function wn(e,n){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),!!(e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)}function Vr(e,n){return!wn(e,n)}function de(e){return e!==null&&typeof e=="object"&&e.$error===!0}function le(e,n){let t={$error:!0,message:e,...n};if((q.callStacks||q.debug)&&ye>0){let r=_n(),s=n?.path?[...r,n.path]:r;t.stack=s}return t}function $n(e,n){if(e.length===0)return le("Unknown error");if(e.length===1)return e[0];let t=e.map(s=>{if(s.path){let o=s.path.split(".");return o[o.length-1]}return"unknown"}).join(", "),r=`Multiple parameter errors in ${n||"function"}: ${t}`;return le(r,{path:n,errors:e})}function De(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let n=typeof e;if(n!=="object")return n;let t=e.constructor?.name;return t&&t!=="Object"?t:"object"}function zr(e,n){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let t=e;for(;t!==null;){if(t.constructor?.name===n)return!0;t=Object.getPrototypeOf(t)}return!1}function Ae(e,n,t){if(de(e))return e;if(typeof n=="object"&&n!==null&&"check"in n){let s=n.check(e);if(s===!0)return null;let o=typeof s=="string"?s:void 0,i=o?`Expected ${n.description} for '${t}': ${o}`:`Expected ${n.description} but got ${De(e)}`;return le(i,{path:t,expected:n.description,actual:De(e),reason:o})}let r=De(e);return n==="any"||n===r||n==="number"&&r==="number"||n==="integer"&&r==="number"&&Number.isInteger(e)||n==="non-negative-integer"&&r==="number"&&Number.isInteger(e)&&e>=0||n==="object"&&r==="object"?null:le(`Expected ${n} but got ${r}`,{path:t,expected:n,actual:r})}function Gr(e,n,t,r){if(typeof e!="function")return e;let s=e.__tjs;if(!s||!s.params)return e;let o=Object.entries(s.params);for(let i=0;i<n.length;i++){let a=n[i];if(a==="any")continue;let c=o[i];if(!c)continue;let l=c[1]?.type?.kind;if(!(!l||l==="any")&&l!==a)return new he(`Expected (...arg${i}: ${a}, ...) for '${r}', but callback declares arg${i} as ${l}`,`${r}(arg${i})`,a,l)}if(t!=="any"&&s.returns){let i=s.returns.type?.kind??s.returns.kind;if(i&&i!=="any"&&i!==t)return new he(`Expected callback returning ${t} for '${r}', but callback returns ${i}`,`${r}(return)`,t,i)}return e}function Sn(e,n,t){for(let[r,s]of Object.entries(n.params)){let o=e[r];if(de(o))return o;if(s.required&&o===void 0){let a=typeof s.type=="string"?s.type:s.type.description;return le(`Missing required parameter '${r}'`,{path:t?`${t}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(o===void 0)continue;let i=Ae(o,s.type,t?`${t}.${r}`:r);if(i)return s.loc&&(i.loc=s.loc),i}return null}function En(e,n){if(e.__tjs=n,e.__tjs.schema=()=>Yt(n),!(!n.polymorphic&&(n.safe||n.safeReturn||q.safety!=="none"&&!n.unsafe||n.returns&&q.safety==="all"&&!n.unsafeReturn)))return e;let r=!!n.returns,s=!!n.unsafe,o=!!n.safe,i=!!n.unsafeReturn,a=!!n.safeReturn,c=n.returns?.defaults,l=Object.entries(n.params),f=l.length,p=e.name||n.name||"anonymous",u=function(...m){if(Fe>0)return e.apply(this,m);let y=o||!s&&q.safety!=="none",g=r&&(a||!i&&q.safety==="all");if(!y&&!g)return e.apply(this,m);if(m.length>0&&de(m[0]))return m[0];if(y){let E=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),S=[];if(E){let b=m[0];for(let h=0;h<f;h++){let[w,_]=l[h],$=b[w];if(de($)){S.push($);continue}if(_.required&&$===void 0){S.push(le(`Missing required parameter '${w}'`,{path:`${p}.${w}`,expected:typeof _.type=="string"?_.type:_.type?.description||"value",actual:"undefined",loc:_.loc}));continue}if($!==void 0){let T=Ae($,_.type,`${p}.${w}`);T&&(_.loc&&(T.loc=_.loc),S.push(T))}}}else for(let b=0;b<f;b++){let[h,w]=l[b],_=m[b];if(de(_)){S.push(_);continue}if(w.required&&_===void 0){S.push(le(`Missing required parameter '${h}'`,{path:`${p}.${h}`,expected:typeof w.type=="string"?w.type:w.type?.description||"value",actual:"undefined",loc:w.loc}));continue}if(_!==void 0){let $=Ae(_,w.type,`${p}.${h}`);$&&(w.loc&&($.loc=w.loc),S.push($))}}if(S.length>0)return $n(S,p)}let x=q.callStacks||q.debug;x&&qr(p);try{let E=e.apply(this,m);if(g&&n.returns&&!de(E)){let S=c&&typeof E=="object"&&E!==null?Object.assign({},c,E):E,b=Ae(S,n.returns.type,`${p}()`);if(b)return x&&$t(),b}return x&&$t(),E}catch(E){return x&&$t(),le(E.message||String(E),{path:p,cause:E})}};return Object.defineProperty(u,"name",{value:e.name}),u.__tjs=n,u.__tjs.schema=()=>Yt(n),u}function Zr(e){let n=new Proxy(e,{construct(t,r,s){return Reflect.construct(t,r,s)},apply(t,r,s){return Reflect.construct(t,s)}});Object.defineProperty(n,"name",{value:e.name});for(let t of Object.getOwnPropertyNames(e))t!=="length"&&t!=="name"&&t!=="prototype"&&Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n}function Kr(){let e={...q},n=e.maxStackSize??tt,t=new Array(n).fill(""),r=0,s=0,o=e.maxErrors??Tt,i=new Array(o).fill(null),a=0,c=0,l=0,f=0;function p(R){e={...e,...R}}function u(){return{...e}}function m(R){(e.callStacks||e.debug)&&R&&(t[r]=R,r=(r+1)%n,s<n&&s++)}function y(){(e.callStacks||e.debug)&&s>0&&(r=(r-1+n)%n,s--)}function g(){if(s===0)return[];let R=[],I=(r-s+n)%n;for(let B=0;B<s;B++)R.push(t[(I+B)%n]);return R}function x(){e={...xn},r=0,s=0,a=0,c=0,l=0,f=0}function E(){f++}function S(){f>0&&f--}function b(){return f>0}let h=new Map;function w(R,I,B){h.has(R)||h.set(R,new Map),h.get(R).set(I,B)}function _(R,I){let B=typeof R,J;if(R==null)return;if(B==="string")J="String";else if(B==="number")J="Number";else if(B==="boolean")J="Boolean";else if(Array.isArray(R))J="Array";else if(B==="object")J=R.constructor?.name||"Object";else return;let V=J;for(;V;){let Me=h.get(V);if(Me?.has(I))return Me.get(I);if(B==="object"&&!Array.isArray(R)){if(V=Object.getPrototypeOf(V===J?R:Object.getPrototypeOf(R))?.constructor?.name,V==="Object"||V===J)break}else break}let X=h.get("Object");if(X?.has(I))return X.get(I)}function $(R,I,B){let J=B===null?"null":typeof B,V=e.callStacks||e.debug?g():void 0,X=new he(`Expected ${I} for '${R}', got ${J}`,R,I,J,V);if(e.trackErrors!==!1&&(i[a]=X,a=(a+1)%o,c<o&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${X.message}`),e.throwTypeErrors)throw X;return X}function T(){if(e.trackErrors===!1||c===0)return[];let R=[],I=(a-c+o)%o;for(let B=0;B<c;B++)R.push(i[(I+B)%o]);return R}function j(){let R=T();return a=0,c=0,l=0,R}function P(){return l}function A(R,I){let B={$error:!0,message:R,...I};if((e.callStacks||e.debug)&&s>0){let J=I?.path?[...g(),I.path]:g();B.stack=J}return B}function C(R,I){return R==null?$(`bang.${I}`,"non-null",R):gn(R)?R:R[I]}return{version:me,MonadicError:he,typeError:$,isMonadicError:gn,bang:C,isError:de,error:A,composeErrors:$n,typeOf:De,isNativeType:zr,checkType:Ae,validateArgs:Sn,wrap:En,checkFnShape:Gr,wrapClass:Zr,compareVersions:hn,versionsCompatible:bn,createRuntime:Kr,configure:p,getConfig:u,pushStack:m,popStack:y,getStack:g,errors:T,clearErrors:j,getErrorCount:P,resetRuntime:x,enterUnsafe:E,exitUnsafe:S,isUnsafeMode:b,validate:Br,infer:St.infer.bind(St),Type:Z,isRuntimeType:Te,Union:fn,Generic:Qe,Enum:yn,FunctionPredicate:wt,Nullable:ln,Optional:un,TArray:pn,TString:Qt,TNumber:en,TBoolean:tn,TInteger:nn,TPositiveInt:rn,TNonEmptyString:sn,TEmail:on,TUrl:an,TUuid:cn,TPair:mn,TRecord:dn,Is:Be,IsNot:Ur,Eq:wn,NotEq:Vr,TypeOf:Lr,toBool:Jr,tjsEquals:et,registerExtension:w,resolveExtension:_}}var ke={version:me,MonadicError:he,typeError:ki,isMonadicError:gn,isError:de,error:le,composeErrors:$n,typeOf:De,isNativeType:zr,checkType:Ae,validateArgs:Sn,wrap:En,checkFnShape:Gr,wrapClass:Zr,compareVersions:hn,versionsCompatible:bn,configure:Pi,getConfig:Ri,pushStack:qr,popStack:$t,getStack:_n,errors:Wr,clearErrors:Mi,getErrorCount:Ci,resetRuntime:Ni,enterUnsafe:ji,exitUnsafe:vi,isUnsafeMode:Ai,createRuntime:Kr,validate:Br,infer:St.infer.bind(St),Type:Z,isRuntimeType:Te,Union:fn,Generic:Qe,Enum:yn,FunctionPredicate:wt,Nullable:ln,Optional:un,TArray:pn,TString:Qt,TNumber:en,TBoolean:tn,TInteger:nn,TPositiveInt:rn,TNonEmptyString:sn,TEmail:on,TUrl:an,TUuid:cn,Timestamp:Nr,LegalDate:Ir,TPair:mn,TRecord:dn,Is:Be,IsNot:Ur,Eq:wn,NotEq:Vr,TypeOf:Lr,toBool:Jr};function Tn(){let e=globalThis;if(e.__tjs){let n=e.__tjs.version;if(typeof n!="string")return e.__tjs=ke,ke;let t=hn(me,n);return t===0||(bn(me,n)?t>0?(console.info(`TJS runtime: upgrading ${n} \u2192 ${me}`),e.__tjs=ke):console.info(`TJS runtime: keeping ${n} (newer than ${me})`):(console.warn(`TJS runtime version conflict: ${n} vs ${me} (major version mismatch)`),t>0&&(console.warn(`Upgrading to ${me} - check for breaking changes`),e.__tjs=ke))),e.__tjs}return e.__tjs=ke,ke}function Ii(e){return`
178
182
  // TJS runtime wrapper (skips unsafe functions)
179
183
  if (typeof ${e}.__tjs === 'object' && !${e}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
180
184
  ${e} = globalThis.__tjs.wrap(${e}, ${e}.__tjs)
181
185
  }
182
- `.trim()}function xi(e,n,t=1e-9){if(e===n)return!0;if(typeof e=="number"&&typeof n=="number"&&(!Number.isInteger(e)||!Number.isInteger(n))){let r=Math.abs(e-n),s=Math.max(Math.abs(e),Math.abs(n),1);return r/s<t}return!1}function xn(e,n){if(e===n||typeof e=="number"&&typeof n=="number"&&Number.isNaN(e)&&Number.isNaN(n)||xi(e,n))return!0;if(e===null||n===null||e===void 0||n===void 0)return e===n;if(typeof e!=typeof n||typeof e!="object")return!1;if(Array.isArray(e)&&Array.isArray(n))return e.length!==n.length?!1:e.every((s,o)=>xn(s,n[o]));if(Array.isArray(e)!==Array.isArray(n))return!1;let t=Object.keys(e),r=Object.keys(n);return t.length!==r.length?!1:t.every(s=>xn(e[s],n[s]))}function _n(e,n,t=""){if(n===null)return e===null?{matches:!0}:{matches:!1,error:`Expected null at '${t}', got ${ke(e)}`};if(n===void 0)return e===void 0?{matches:!0}:{matches:!1,error:`Expected undefined at '${t}', got ${ke(e)}`};if(typeof n=="number")return typeof e=="number"?{matches:!0}:{matches:!1,error:`Expected number at '${t}', got ${ke(e)}`};if(typeof n=="string")return typeof e=="string"?{matches:!0}:{matches:!1,error:`Expected string at '${t}', got ${ke(e)}`};if(typeof n=="boolean")return typeof e=="boolean"?{matches:!0}:{matches:!1,error:`Expected boolean at '${t}', got ${ke(e)}`};if(Array.isArray(n)){if(!Array.isArray(e))return{matches:!1,error:`Expected array at '${t}', got ${ke(e)}`};if(n.length===0)return{matches:!0};let r=n[0];for(let s=0;s<e.length;s++){let o=_n(e[s],r,`${t}[${s}]`);if(!o.matches)return o}return{matches:!0}}if(typeof n=="object"&&n!==null){if(typeof e!="object"||e===null||Array.isArray(e))return{matches:!1,error:`Expected object at '${t}', got ${ke(e)}`};for(let r of Object.keys(n)){let s=t?`${t}.${r}`:r;if(!(r in e))return{matches:!1,error:`Missing property '${s}'`};let o=_n(e[r],n[r],s);if(!o.matches)return o}return{matches:!0}}return e===n?{matches:!0}:{matches:!1,error:`Type mismatch at '${t}'`}}function ke(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function Ye(e,n=0){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="string")return JSON.stringify(e);if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return e.length===0?"[]":e.length<=3?`[${e.map(t=>Ye(t,n)).join(", ")}]`:`[${e.slice(0,3).map(t=>Ye(t,n)).join(", ")}, ...]`;if(typeof e=="object"){let t=Object.entries(e);if(t.length===0)return"{}";let r=c=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(c)?c:JSON.stringify(c);if(t.length<=2)return`{${t.map(([l,p])=>`${r(l)}: ${Ye(p,n)}`).join(", ")}}`;let s=" ".repeat(n+1),o=" ".repeat(n),i=t.slice(0,8).map(([c,l])=>`${s}${r(c)}: ${Ye(l,n+1)}`).join(`,
186
+ `.trim()}function Oi(e,n,t=1e-9){if(e===n)return!0;if(typeof e=="number"&&typeof n=="number"&&(!Number.isInteger(e)||!Number.isInteger(n))){let r=Math.abs(e-n),s=Math.max(Math.abs(e),Math.abs(n),1);return r/s<t}return!1}function jn(e,n){if(e===n||typeof e=="number"&&typeof n=="number"&&Number.isNaN(e)&&Number.isNaN(n)||Oi(e,n))return!0;if(e===null||n===null||e===void 0||n===void 0)return e===n;if(typeof e!=typeof n||typeof e!="object")return!1;if(Array.isArray(e)&&Array.isArray(n))return e.length!==n.length?!1:e.every((s,o)=>jn(s,n[o]));if(Array.isArray(e)!==Array.isArray(n))return!1;let t=Object.keys(e),r=Object.keys(n);return t.length!==r.length?!1:t.every(s=>jn(e[s],n[s]))}function vn(e,n,t=""){if(n===null)return e===null?{matches:!0}:{matches:!1,error:`Expected null at '${t}', got ${Pe(e)}`};if(n===void 0)return e===void 0?{matches:!0}:{matches:!1,error:`Expected undefined at '${t}', got ${Pe(e)}`};if(typeof n=="number")return typeof e=="number"?{matches:!0}:{matches:!1,error:`Expected number at '${t}', got ${Pe(e)}`};if(typeof n=="string")return typeof e=="string"?{matches:!0}:{matches:!1,error:`Expected string at '${t}', got ${Pe(e)}`};if(typeof n=="boolean")return typeof e=="boolean"?{matches:!0}:{matches:!1,error:`Expected boolean at '${t}', got ${Pe(e)}`};if(Array.isArray(n)){if(!Array.isArray(e))return{matches:!1,error:`Expected array at '${t}', got ${Pe(e)}`};if(n.length===0)return{matches:!0};let r=n[0];for(let s=0;s<e.length;s++){let o=vn(e[s],r,`${t}[${s}]`);if(!o.matches)return o}return{matches:!0}}if(typeof n=="object"&&n!==null){if(typeof e!="object"||e===null||Array.isArray(e))return{matches:!1,error:`Expected object at '${t}', got ${Pe(e)}`};for(let r of Object.keys(n)){let s=t?`${t}.${r}`:r;if(!(r in e))return{matches:!1,error:`Missing property '${s}'`};let o=vn(e[r],n[r],s);if(!o.matches)return o}return{matches:!0}}return e===n?{matches:!0}:{matches:!1,error:`Type mismatch at '${t}'`}}function Pe(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function nt(e,n=0){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="string")return JSON.stringify(e);if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return e.length===0?"[]":e.length<=3?`[${e.map(t=>nt(t,n)).join(", ")}]`:`[${e.slice(0,3).map(t=>nt(t,n)).join(", ")}, ...]`;if(typeof e=="object"){let t=Object.entries(e);if(t.length===0)return"{}";let r=c=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(c)?c:JSON.stringify(c);if(t.length<=2)return`{${t.map(([l,f])=>`${r(l)}: ${nt(f,n)}`).join(", ")}}`;let s=" ".repeat(n+1),o=" ".repeat(n),i=t.slice(0,8).map(([c,l])=>`${s}${r(c)}: ${nt(l,n+1)}`).join(`,
183
187
  `),a=t.length>8?`,
184
188
  ${s}...`:"";return`{
185
189
  ${i}${a}
186
- ${o}}`}return String(e)}function _i(e){let n=e.replace(/\/\*[\s\S]*?\*\//g,t=>{let r=t.split(`
190
+ ${o}}`}return String(e)}function Bi(e){let n=e.replace(/\/\*[\s\S]*?\*\//g,t=>{let r=t.split(`
187
191
  `).length-1;return`
188
- `.repeat(r)});return n=n.replace(/\/\/[^\n]*/g,""),n}function Ur(e){let n=e.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return n=n.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),n=n.replace(/^export\s+default\s+/gm,""),n=n.replace(/^export\s+/gm,""),n=n.replace(/^(\s*)((?:const|let|var)\s+\w+\s*=\s*)?await\s+.+$/gm,"$1/* top-level await removed for test execution */"),n}function wi(e){if(Object.keys(e).length===0)return"";let n=[];for(let[t,r]of Object.entries(e)){let s=Ur(r);n.push(`// Resolved import: ${t}`),n.push(s)}return n.join(`
189
- `)}function qr(e){let n={},t=e.trim();if(!t.startsWith("{")||!t.includes("="))try{return{pattern:new Function(`return ${e}`)(),defaults:n}}catch{return null}let r="",s=0,o=0;for(;o<t.length;){let i=t[o];if(i==="{"||i==="["||i==="(")s++,r+=i,o++;else if(i==="}"||i==="]"||i===")")s--,r+=i,o++;else if(i==="'"||i==='"'||i==="`"){let a=i;for(r+=i,o++;o<t.length&&t[o]!==a;)t[o]==="\\"&&(r+=t[o++]),r+=t[o++];o<t.length&&(r+=t[o++])}else if(s===1&&i==="="){let l=(r.slice(r.lastIndexOf("{")+1).split(",").pop()||"").match(/\s*(\w+)\s*$/);if(l){let p=o+1;for(;p<t.length&&/\s/.test(t[p]);)p++;let f="",u=0;for(;p<t.length;){let m=t[p];if(m==="{"||m==="["||m==="(")u++;else if(m==="}"||m==="]"||m===")"){if(u===0)break;u--}else if(m===","&&u===0)break;f+=m,p++}try{n[l[1]]=new Function(`return ${f.trim()}`)()}catch{}r+=":",o++;continue}r+=i,o++}else r+=i,o++}try{return{pattern:new Function(`return ${r}`)(),defaults:n}}catch{return null}}function Wr(e){let n=[],t=_i(e),r=/(async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,s;for(;(s=r.exec(t))!==null;){let a=!!s[1],c=s[2],l=s[3],p=s[4],f=t.slice(0,s.index).split(`
190
- `).length;if(p===":!")continue;let u=t.slice(s.index+s[0].length),m=wt(u);if(!m)continue;let y=bn(l);if(!(l.trim()&&y.length===0))try{let b=qr(m);if(!b)continue;let S=y.map(E=>new Function(`return ${E}`)());n.push({funcName:c,args:S,expected:b.pattern,defaults:Object.keys(b.defaults).length>0?b.defaults:void 0,line:f,isAsync:a})}catch{}}let o=/class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/g,i;for(;(i=o.exec(t))!==null;){let a=i[1],c=i.index+i[0].length,l=1,p=c;for(let h=c;h<t.length;h++)if(t[h]==="{")l++;else if(t[h]==="}"&&(l--,l===0)){p=h;break}let f=t.slice(c,p),m=/constructor\s*\(([^)]*)\)/.exec(f);if(!m)continue;let y=m[1],b=bn(y);if(y.trim()&&b.length===0)continue;let S;try{S=b.map(h=>new Function(`return ${h}`)())}catch{continue}let E=/(async\s+)?(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,w;for(;(w=E.exec(f))!==null;){let h=w[2];if(h==="constructor")continue;let x=!!w[1],_=w[3];if(w[4]===":!")continue;let $=c+w.index,k=t.slice(0,$).split(`
191
- `).length,j=f.slice(w.index+w[0].length),A=wt(j);if(!A)continue;let M=bn(_);if(!(_.trim()&&M.length===0))try{let P=qr(A);if(!P)continue;let R=M.map(I=>new Function(`return ${I}`)());n.push({funcName:h,args:R,expected:P.pattern,defaults:Object.keys(P.defaults).length>0?P.defaults:void 0,line:k,isAsync:x,className:a,constructorArgs:S})}catch{}}}return n}function Lr(e,n,t,r,s={},o=new Map){let i=[];if(e.length===0&&t.length===0)return i;let a=r.match(/^import\s+.*?from\s+['"]([^'"]+)['"];?\s*$/gm)||[],c=a.length>0&&a.some(x=>{let _=x.match(/from\s+['"]([^'"]+)['"]/);return _&&!(_[1]in s)}),l=Ur(r),p=wi(s),f=n.map(x=>x.body).join(`
192
- `),u="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((x,_)=>{let g=o.size>0?Le(x.body,o):x.body;return`
193
- // Test ${_}: ${x.description}
192
+ `.repeat(r)});return n=n.replace(/\/\/[^\n]*/g,""),n}function Yr(e){let n=e.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return n=n.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),n=n.replace(/^export\s+default\s+/gm,""),n=n.replace(/^export\s+/gm,""),n=n.replace(/^(\s*)((?:const|let|var)\s+\w+\s*=\s*)?await\s+.+$/gm,"$1/* top-level await removed for test execution */"),n}function Di(e){if(Object.keys(e).length===0)return"";let n=[];for(let[t,r]of Object.entries(e)){let s=Yr(r);n.push(`// Resolved import: ${t}`),n.push(s)}return n.join(`
193
+ `)}function Hr(e){let n={},t=e.trim();if(!t.startsWith("{")||!t.includes("="))try{return{pattern:new Function(`return ${e}`)(),defaults:n}}catch{return null}let r="",s=0,o=0;for(;o<t.length;){let i=t[o];if(i==="{"||i==="["||i==="(")s++,r+=i,o++;else if(i==="}"||i==="]"||i===")")s--,r+=i,o++;else if(i==="'"||i==='"'||i==="`"){let a=i;for(r+=i,o++;o<t.length&&t[o]!==a;)t[o]==="\\"&&(r+=t[o++]),r+=t[o++];o<t.length&&(r+=t[o++])}else if(s===1&&i==="="){let l=(r.slice(r.lastIndexOf("{")+1).split(",").pop()||"").match(/\s*(\w+)\s*$/);if(l){let f=o+1;for(;f<t.length&&/\s/.test(t[f]);)f++;let p="",u=0;for(;f<t.length;){let m=t[f];if(m==="{"||m==="["||m==="(")u++;else if(m==="}"||m==="]"||m===")"){if(u===0)break;u--}else if(m===","&&u===0)break;p+=m,f++}try{n[l[1]]=new Function(`return ${p.trim()}`)()}catch{}r+=":",o++;continue}r+=i,o++}else r+=i,o++}try{return{pattern:new Function(`return ${r}`)(),defaults:n}}catch{return null}}function Xr(e){let n=[],t=Bi(e),r=/(async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,s;for(;(s=r.exec(t))!==null;){let a=!!s[1],c=s[2],l=s[3],f=s[4],p=t.slice(0,s.index).split(`
194
+ `).length;if(f===":!")continue;let u=t.slice(s.index+s[0].length),m=jt(u);if(!m)continue;let y=kn(l);if(!(l.trim()&&y.length===0))try{let g=Hr(m);if(!g)continue;let x=y.map(E=>new Function(`return ${E}`)());n.push({funcName:c,args:x,expected:g.pattern,defaults:Object.keys(g.defaults).length>0?g.defaults:void 0,line:p,isAsync:a})}catch{}}let o=/class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/g,i;for(;(i=o.exec(t))!==null;){let a=i[1],c=i.index+i[0].length,l=1,f=c;for(let b=c;b<t.length;b++)if(t[b]==="{")l++;else if(t[b]==="}"&&(l--,l===0)){f=b;break}let p=t.slice(c,f),m=/constructor\s*\(([^)]*)\)/.exec(p);if(!m)continue;let y=m[1],g=kn(y);if(y.trim()&&g.length===0)continue;let x;try{x=g.map(b=>new Function(`return ${b}`)())}catch{continue}let E=/(async\s+)?(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,S;for(;(S=E.exec(p))!==null;){let b=S[2];if(b==="constructor")continue;let h=!!S[1],w=S[3];if(S[4]===":!")continue;let $=c+S.index,T=t.slice(0,$).split(`
195
+ `).length,j=p.slice(S.index+S[0].length),P=jt(j);if(!P)continue;let A=kn(w);if(!(w.trim()&&A.length===0))try{let C=Hr(P);if(!C)continue;let R=A.map(I=>new Function(`return ${I}`)());n.push({funcName:b,args:R,expected:C.pattern,defaults:Object.keys(C.defaults).length>0?C.defaults:void 0,line:T,isAsync:h,className:a,constructorArgs:x})}catch{}}}return n}function Qr(e,n,t,r,s={},o=new Map){let i=[];if(e.length===0&&t.length===0)return i;let a=r.match(/^import\s+.*?from\s+['"]([^'"]+)['"];?\s*$/gm)||[],c=a.length>0&&a.some(h=>{let w=h.match(/from\s+['"]([^'"]+)['"]/);return w&&!(w[1]in s)}),l=Yr(r),f=Di(s),p=n.map(h=>h.body).join(`
196
+ `),u="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((h,w)=>{let _=o.size>0?Ze(h.body,o):h.body;return`
197
+ // Test ${w}: ${h.description}
194
198
  try {
195
199
  ${u}
196
- ${g}
197
- __testResults.push({ idx: ${_}, passed: true });
200
+ ${_}
201
+ __testResults.push({ idx: ${w}, passed: true });
198
202
  } catch (e) {
199
- __testResults.push({ idx: ${_}, passed: false, isRef: e instanceof ReferenceError, error: e.message || String(e) });
203
+ __testResults.push({ idx: ${w}, passed: false, isRef: e instanceof ReferenceError, error: e.message || String(e) });
200
204
  }
201
205
  `}).join(`
202
- `),y=t.filter(x=>!x.isAsync),b=t.filter(x=>x.isAsync),S=y.map((x,_)=>{let g=x.className?`${x.className}.${x.funcName}`:x.funcName,$=x.className?`new ${x.className}(${(x.constructorArgs||[]).map(k=>JSON.stringify(k)).join(", ")}).${x.funcName}(${x.args.map(k=>JSON.stringify(k)).join(", ")})`:`${x.funcName}(${x.args.map(k=>JSON.stringify(k)).join(", ")})`;return`
203
- // Signature test ${_}: ${g}
206
+ `),y=t.filter(h=>!h.isAsync),g=t.filter(h=>h.isAsync),x=y.map((h,w)=>{let _=h.className?`${h.className}.${h.funcName}`:h.funcName,$=h.className?`new ${h.className}(${(h.constructorArgs||[]).map(T=>JSON.stringify(T)).join(", ")}).${h.funcName}(${h.args.map(T=>JSON.stringify(T)).join(", ")})`:`${h.funcName}(${h.args.map(T=>JSON.stringify(T)).join(", ")})`;return`
207
+ // Signature test ${w}: ${_}
204
208
  try {
205
209
  let __actual = ${$};
206
- const __expected = ${JSON.stringify(x.expected)};${x.defaults?`
207
- const __defaults = ${JSON.stringify(x.defaults)};
210
+ const __expected = ${JSON.stringify(h.expected)};${h.defaults?`
211
+ const __defaults = ${JSON.stringify(h.defaults)};
208
212
  if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
209
213
  if (__deepEqual(__actual, __expected)) {
210
- __sigTestResults.push({ idx: ${_}, passed: true });
214
+ __sigTestResults.push({ idx: ${w}, passed: true });
211
215
  } else {
212
- __sigTestResults.push({ idx: ${_}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${g}\\', got ' + __format(__actual) });
216
+ __sigTestResults.push({ idx: ${w}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${_}\\', got ' + __format(__actual) });
213
217
  }
214
218
  } catch (e) {
215
219
  // The function threw on its example inputs \u2014 the example couldn't be
216
220
  // *evaluated* (e.g. it calls an atom that doesn't exist at build time).
217
221
  // That's inconclusive, not a mismatch. Never block transpilation on it.
218
- __sigTestResults.push({ idx: ${_}, passed: false, threw: true, error: e.message || String(e) });
222
+ __sigTestResults.push({ idx: ${w}, passed: false, threw: true, error: e.message || String(e) });
219
223
  }
220
224
  `}).join(`
221
- `);hn();let h=`
225
+ `);Tn();let b=`
222
226
 
223
227
  const __saved_tjs = globalThis.__tjs;
224
228
 
@@ -286,30 +290,30 @@ ${o}}`}return String(e)}function _i(e){let n=e.replace(/\/\*[\s\S]*?\*\//g,t=>{l
286
290
  }
287
291
 
288
292
  // Inject resolved imports first (they may be dependencies)
289
- ${p}
293
+ ${f}
290
294
 
291
295
  // Execute the module code ONCE
292
296
  ${l}
293
- ${f}
297
+ ${p}
294
298
 
295
299
  // Run explicit test blocks
296
300
  ${m}
297
301
 
298
302
  // Run signature tests
299
- ${S}
303
+ ${x}
300
304
 
301
305
  } finally {
302
306
  globalThis.__tjs = __saved_tjs;
303
307
  }
304
308
  return { testResults: __testResults, sigTestResults: __sigTestResults };
305
- `;try{let x=new Function("__deepEqual","__format","__typeMatches",h),{testResults:_,sigTestResults:g}=x(xn,Ye,_n);for(let $ of _){let k=e[$.idx],j=!$.passed&&($.isRef||c&&$.error&&/is not defined$/.test($.error));i.push({description:k.description,passed:$.passed,inconclusive:j||void 0,error:$.error,line:k.line})}for(let $ of g){let k=y[$.idx],j=!$.passed&&($.threw||c&&$.error&&/is not defined$/.test($.error)),A=k.className?`${k.className}.${k.funcName}`:k.funcName;i.push({description:`${A} signature example`,passed:$.passed,inconclusive:j||void 0,error:$.error,isSignatureTest:!0,line:k.line})}}catch(x){let _=`Module could not be executed for testing: ${x.message}`;for(let g of e)i.push({description:g.description,passed:!1,inconclusive:!0,error:_});for(let g of y){let $=g.className?`${g.className}.${g.funcName}`:g.funcName;i.push({description:`${$} signature example`,passed:!1,inconclusive:!0,error:_,isSignatureTest:!0})}}for(let x of b){let _=x.className?`${x.className}.${x.funcName}`:x.funcName;i.push({description:`${_} signature example`,passed:!0,isSignatureTest:!0,line:x.line})}return i}function wt(e){let n="",t=0,r=!1;for(let o=0;o<e.length;o++){let i=e[o];if(i==="{"||i==="["||i==="("){if(i==="{"&&t===0&&r)break;t++,n+=i,r=!0}else i==="}"||i==="]"||i===")"?(t--,n+=i):/\s/.test(i)?n+=i:(n+=i,r=!0)}return n.trim()||null}function bn(e){if(!e.trim())return[];let n=[],t=Si(e);for(let r of t){let s=r.trim(),o=s.match(/^\.\.\.(\w+)\s*[:=]\s*(\[.+\])$/);if(o){try{let a=new Function(`return ${o[2]}`)();if(Array.isArray(a))for(let c of a)n.push(JSON.stringify(c))}catch{}continue}if(s.startsWith("..."))continue;let i=s.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(i)n.push(i[2].trim());else return[]}return n}function Si(e){let n=[],t="",r=0;for(let s of e){if(s==="("||s==="["||s==="{")r++;else if(s===")"||s==="]"||s==="}")r--;else if(s===","&&r===0){n.push(t.trim()),t="";continue}t+=s}return t.trim()&&n.push(t.trim()),n}import*as Vr from"acorn";var oe={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},Xe={custom:0,type:1,import:2,function:3,table:4,memory:5,global:6,export:7,start:8,element:9,code:10,data:11},d={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},$i=Object.fromEntries(Object.entries(d).map(([e,n])=>[n,e.replace(/_/g,".")])),et=253,H={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},Ei=Object.fromEntries(Object.entries(H).map(([e,n])=>[n,e.replace(/_/g,".")]));function wn(e){return[et,...C(e)]}function Jr(e,n,t){return[et,...C(e),...C(n),...C(t)]}function C(e){let n=[];do{let t=e&127;e>>>=7,e!==0&&(t|=128),n.push(t)}while(e!==0);return n}function tt(e){let n=[],t=!0;for(;t;){let r=e&127;e>>=7,e===0&&(r&64)===0||e===-1&&(r&64)!==0?t=!1:r|=128,n.push(r)}return n}function Sn(e){let n=new ArrayBuffer(4);return new Float32Array(n)[0]=e,[...new Uint8Array(n)]}function ne(e){let n=new ArrayBuffer(8);return new Float64Array(n)[0]=e,[...new Uint8Array(n)]}function $n(e){let n=new TextEncoder().encode(e);return[...C(n.length),...n]}function Qe(e,n){return[e,...C(n.length),...n]}function be(e,n){let t=0,r=0,s=n;for(;s<e.length;){let o=e[s];if(t|=(o&127)<<r,s++,(o&128)===0)break;r+=7}return[t,s-n]}function Ti(e,n){let t=new ArrayBuffer(8),r=new Uint8Array(t);for(let s=0;s<8;s++)r[s]=e[n+s];return new Float64Array(t)[0]}function ki(e,n,t){let r=[],s=1,o=()=>" ".repeat(s),i=n.map((l,p)=>`(param $${l.name} ${l.type})`).join(" "),a=t.map((l,p)=>`(local $L${n.length+p} ${l})`).join(" ");r.push(`(func (export "compute") ${i} (result f64)`),a&&r.push(` ${a}`);let c=0;for(;c<e.length;){let l=e[c],p=$i[l]||`unknown(0x${l.toString(16)})`;if(c++,l===d.local_get||l===d.local_set||l===d.local_tee){let[f,u]=be(e,c);c+=u;let m=f<n.length?`$${n[f].name}`:`$L${f}`;r.push(`${o()}${p} ${m}`)}else if(l===d.br||l===d.br_if){let[f,u]=be(e,c);c+=u,r.push(`${o()}${p} ${f}`)}else if(l===d.i32_const){let[f,u]=be(e,c);c+=u,r.push(`${o()}i32.const ${f}`)}else if(l===d.f32_const){let f=new ArrayBuffer(4),u=new Uint8Array(f);for(let y=0;y<4;y++)u[y]=e[c+y];let m=new Float32Array(f)[0];c+=4,r.push(`${o()}f32.const ${m}`)}else if(l===d.f64_const){let f=Ti(e,c);c+=8,r.push(`${o()}f64.const ${f}`)}else if(l===d.block||l===d.loop){let f=e[c];c++,r.push(`${o()}${p}${f===oe.void?"":` (result ${f===oe.f64?"f64":"i32"})`}`),s++}else if(l===d.if){let f=e[c];c++,r.push(`${o()}if${f===oe.void?"":` (result ${f===oe.f64?"f64":"i32"})`}`),s++}else if(l===d.else)s--,r.push(`${o()}else`),s++;else if(l===d.end)s=Math.max(1,s-1),r.push(`${o()}end`);else if(l===d.f64_load||l===d.f64_store||l===d.f32_load||l===d.f32_store||l===d.i32_load||l===d.i32_store){let[f,u]=be(e,c);c+=u;let[m,y]=be(e,c);c+=y,r.push(`${o()}${p}${m?` offset=${m}`:""}`)}else if(l===et){let[f,u]=be(e,c);c+=u;let m=Ei[f]||`simd.unknown(0x${f.toString(16)})`;if(f===H.v128_load||f===H.v128_store){let[y,b]=be(e,c);c+=b;let[S,E]=be(e,c);c+=E,r.push(`${o()}${m}${S?` offset=${S}`:""}`)}else if(f===H.v128_const){let y=e.slice(c,c+16);c+=16,r.push(`${o()}v128.const ${y.map(b=>"0x"+b.toString(16).padStart(2,"0")).join(" ")}`)}else if(f===H.f32x4_extract_lane||f===H.f32x4_replace_lane){let y=e[c];c++,r.push(`${o()}${m} ${y}`)}else r.push(`${o()}${m}`)}else r.push(`${o()}${p}`)}return r.push(")"),r.join(`
306
- `)}var $t={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:d.i32_load8_s,storeOp:d.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:d.i32_load8_u,storeOp:d.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:d.i32_load8_u,storeOp:d.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:d.i32_load16_s,storeOp:d.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:d.i32_load16_u,storeOp:d.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:d.i32_load,storeOp:d.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:d.i32_load,storeOp:d.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:d.f32_load,storeOp:d.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:d.f64_load,storeOp:d.f64_store}};function ji(e,n=new Map){let t={params:e,locals:new Map,nextLocalIndex:e.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1,moduleFunctions:n};return e.forEach((r,s)=>{t.locals.set(r.name,{index:s,type:r.type})}),t}function St(e,n,t){if(e.locals.has(n))return e.errors.push(`Duplicate local declaration: ${n}`),e.locals.get(n).index;let r=e.nextLocalIndex++;return e.locals.set(n,{index:r,type:t}),e.localTypes.push(t),r}function je(e,n){return e.locals.get(n)}function Be(e,n){switch(e.type){case"ExpressionStatement":{let t=e.expression;return[...F(t,n),d.drop]}case"ReturnStatement":{let t=e;if(n.hasReturn=!0,!t.argument)return[d.return];let r=F(t.argument,n),s=L(t.argument,n);return s==="i32"?r.push(d.f64_convert_i32_s):s==="f32"&&r.push(d.f64_promote_f32),r.push(d.return),r}case"VariableDeclaration":{let t=e,r=[];for(let s of t.declarations){if(s.id.type!=="Identifier"){n.errors.push("Destructuring not supported in WASM blocks");continue}let o=s.id.name,i="f64";s.init&&(i=L(s.init,n));let a=St(n,o,i);s.init&&(r.push(...F(s.init,n)),r.push(d.local_set,...C(a)))}return r}case"ForStatement":return vi(e,n);case"IfStatement":return Ai(e,n);case"BlockStatement":{let t=e,r=[];for(let s of t.body)r.push(...Be(s,n));return r}default:return n.errors.push(`Unsupported statement type: ${e.type}`),[]}}function vi(e,n){let t=[];return e.init&&(e.init.type==="VariableDeclaration"?t.push(...Be(e.init,n)):t.push(...F(e.init,n))),t.push(d.block,oe.void),t.push(d.loop,oe.void),e.test&&(t.push(...F(e.test,n)),t.push(d.i32_eqz),t.push(d.br_if,1)),n.loopDepth++,e.body&&t.push(...Be(e.body,n)),n.loopDepth--,e.update&&(t.push(...F(e.update,n)),t.push(d.drop)),t.push(d.br,0),t.push(d.end),t.push(d.end),t}function Ai(e,n){let t=[];return t.push(...F(e.test,n)),t.push(d.if,oe.void),t.push(...Be(e.consequent,n)),e.alternate&&(t.push(d.else),t.push(...Be(e.alternate,n))),t.push(d.end),t}function L(e,n){switch(e.type){case"Literal":{let t=e;return typeof t.value=="number"?t.raw&&(t.raw.includes(".")||t.raw.includes("e"))?"f64":Number.isInteger(t.value)&&t.value>=-2147483648&&t.value<=2147483647?"i32":"f64":"f64"}case"Identifier":return je(n,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let t=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(t.operator)||["|","&","^","<<",">>",">>>"].includes(t.operator))return"i32";let r=L(t.left,n),s=L(t.right,n);return r==="v128"||s==="v128"?"v128":r==="f64"||s==="f64"?"f64":r==="f32"||s==="f32"?"f32":"i32"}case"UnaryExpression":{let t=e;return t.operator==="!"?"i32":L(t.argument,n)}case"MemberExpression":{let t=e;if(t.object.type==="Identifier"&&je(n,t.object.name)){let s=n.params.find(o=>o.name===t.object.name);if(s?.arrayType){let o=$t[s.arrayType];if(o)return o.elementType}}return"f64"}case"CallExpression":{let t=e;if(t.callee.type==="MemberExpression"){let r=t.callee;if(r.object.type==="Identifier"&&r.object.name==="Math")return"f64"}if(t.callee.type==="Identifier"){let r=t.callee.name;if(r==="f32x4_extract_lane")return"f32";if(r.startsWith("f32x4_")||r==="v128_load")return"v128";let s=n.moduleFunctions.get(r);if(s)return s.hasReturn?"f64":"i32"}return"f64"}default:return"f64"}}function F(e,n){switch(e.type){case"Literal":{let t=e;if(typeof t.value=="number"){let r=L(e,n);return r==="i32"?[d.i32_const,...tt(t.value|0)]:r==="f32"?[d.f32_const,...Sn(t.value)]:[d.f64_const,...ne(t.value)]}return n.errors.push(`Unsupported literal type: ${typeof t.value}`),[d.f64_const,...ne(0)]}case"Identifier":{let t=e.name,r=je(n,t);return r?[d.local_get,...C(r.index)]:(n.errors.push(`Unknown identifier: ${t}`),[d.f64_const,...ne(0)])}case"BinaryExpression":return Ri(e,n);case"UnaryExpression":return Mi(e,n);case"AssignmentExpression":return Ci(e,n);case"UpdateExpression":return Pi(e,n);case"MemberExpression":return Ni(e,n);case"CallExpression":return Oi(e,n);case"SequenceExpression":{let t=e,r=[];for(let s=0;s<t.expressions.length;s++)r.push(...F(t.expressions[s],n)),s<t.expressions.length-1&&r.push(d.drop);return r}default:return n.errors.push(`Unsupported expression type: ${e.type}`),[d.f64_const,...ne(0)]}}function Ri(e,n){let t=F(e.left,n),r=F(e.right,n),s=L(e,n),o=L(e.left,n),i=L(e.right,n),a=["<",">","<=",">=","==","===","!=","!=="].includes(e.operator),c;o==="f64"||i==="f64"?c="f64":o==="f32"||i==="f32"?c="f32":c="i32",!a&&s==="f64"&&(c="f64");let l=t,p=r;c==="f64"?(o==="i32"?l=[...t,d.f64_convert_i32_s]:o==="f32"&&(l=[...t,d.f64_promote_f32]),i==="i32"?p=[...r,d.f64_convert_i32_s]:i==="f32"&&(p=[...r,d.f64_promote_f32])):c==="f32"&&(o==="i32"&&(l=[...t,d.f32_convert_i32_s]),i==="i32"&&(p=[...r,d.f32_convert_i32_s]));let u={"+":{i32:d.i32_add,f32:d.f32_add,f64:d.f64_add},"-":{i32:d.i32_sub,f32:d.f32_sub,f64:d.f64_sub},"*":{i32:d.i32_mul,f32:d.f32_mul,f64:d.f64_mul},"/":{i32:d.i32_div_s,f32:d.f32_div,f64:d.f64_div},"%":{i32:d.i32_rem_s},"<":{i32:d.i32_lt_s,f32:d.f32_lt,f64:d.f64_lt},">":{i32:d.i32_gt_s,f32:d.f32_gt,f64:d.f64_gt},"<=":{i32:d.i32_le_s,f32:d.f32_le,f64:d.f64_le},">=":{i32:d.i32_ge_s,f32:d.f32_ge,f64:d.f64_ge},"==":{i32:d.i32_eq,f32:d.f32_eq,f64:d.f64_eq},"===":{i32:d.i32_eq,f32:d.f32_eq,f64:d.f64_eq},"!=":{i32:d.i32_ne,f32:d.f32_ne,f64:d.f64_ne},"!==":{i32:d.i32_ne,f32:d.f32_ne,f64:d.f64_ne},"|":{i32:d.i32_or},"&":{i32:d.i32_and},"^":{i32:d.i32_xor},"<<":{i32:d.i32_shl},">>":{i32:d.i32_shr_s},">>>":{i32:d.i32_shr_u}}[e.operator];if(!u)return n.errors.push(`Unsupported operator: ${e.operator}`),[d.f64_const,...ne(0)];let m=u[c]??u.f64??u.i32;return m===void 0?(n.errors.push(`Operator ${e.operator} not supported for type ${c}`),[d.f64_const,...ne(0)]):[...l,...p,m]}function Mi(e,n){let t=F(e.argument,n),r=L(e.argument,n);switch(e.operator){case"-":return r==="i32"?[d.i32_const,0,...t,d.i32_sub]:r==="f32"?[...t,d.f32_neg]:[...t,d.f64_neg];case"!":return[...t,d.i32_eqz];case"~":return[...t,d.i32_const,...tt(-1),d.i32_xor];default:return n.errors.push(`Unsupported unary operator: ${e.operator}`),t}}function Ci(e,n){if(e.left.type==="MemberExpression")return Ii(e.left,e.right,e.operator,n);if(e.left.type!=="Identifier")return n.errors.push("Assignment target must be identifier or array element"),[];let t=e.left.name,r=je(n,t);if(!r)return n.errors.push(`Unknown variable: ${t}`),[];let s=[];if(e.operator==="="){s.push(...F(e.right,n));let o=L(e.right,n);r.type==="f64"&&o==="i32"?s.push(d.f64_convert_i32_s):r.type==="f64"&&o==="f32"?s.push(d.f64_promote_f32):r.type==="i32"&&o==="f64"?s.push(d.i32_trunc_f64_s):r.type==="i32"&&o==="f32"?s.push(d.i32_trunc_f32_s):r.type==="f32"&&o==="i32"?s.push(d.f32_convert_i32_s):r.type==="f32"&&o==="f64"&&s.push(d.f32_demote_f64)}else{let o=L(e.right,n),i=r.type;o==="f64"||r.type==="f64"?i="f64":(o==="f32"||r.type==="f32")&&(i="f32"),s.push(d.local_get,...C(r.index)),i==="f64"&&r.type==="i32"?s.push(d.f64_convert_i32_s):i==="f64"&&r.type==="f32"?s.push(d.f64_promote_f32):i==="f32"&&r.type==="i32"&&s.push(d.f32_convert_i32_s),s.push(...F(e.right,n)),i==="f64"&&o==="i32"?s.push(d.f64_convert_i32_s):i==="f64"&&o==="f32"?s.push(d.f64_promote_f32):i==="f32"&&o==="i32"&&s.push(d.f32_convert_i32_s);let a=e.operator.slice(0,-1),l={"+":{i32:d.i32_add,f32:d.f32_add,f64:d.f64_add},"-":{i32:d.i32_sub,f32:d.f32_sub,f64:d.f64_sub},"*":{i32:d.i32_mul,f32:d.f32_mul,f64:d.f64_mul},"/":{i32:d.i32_div_s,f32:d.f32_div,f64:d.f64_div}}[a]?.[i];if(!l)return n.errors.push(`Unsupported compound assignment: ${e.operator}`),[];s.push(l),r.type==="i32"&&i==="f64"?s.push(d.i32_trunc_f64_s):r.type==="i32"&&i==="f32"?s.push(d.i32_trunc_f32_s):r.type==="f32"&&i==="f64"&&s.push(d.f32_demote_f64)}return s.push(d.local_tee,...C(r.index)),s}function Pi(e,n){if(e.argument.type!=="Identifier")return n.errors.push("Update expression argument must be identifier"),[];let t=e.argument.name,r=je(n,t);if(!r)return n.errors.push(`Unknown variable: ${t}`),[];let s=[],o=r.type==="i32";return e.prefix?(s.push(d.local_get,...C(r.index)),o?(s.push(d.i32_const,1),s.push(e.operator==="++"?d.i32_add:d.i32_sub)):(s.push(d.f64_const,...ne(1)),s.push(e.operator==="++"?d.f64_add:d.f64_sub)),s.push(d.local_tee,...C(r.index))):(s.push(d.local_get,...C(r.index)),s.push(d.local_get,...C(r.index)),o?(s.push(d.i32_const,1),s.push(e.operator==="++"?d.i32_add:d.i32_sub)):(s.push(d.f64_const,...ne(1)),s.push(e.operator==="++"?d.f64_add:d.f64_sub)),s.push(d.local_set,...C(r.index))),s}function Ni(e,n){if(e.object.type!=="Identifier")return n.errors.push("Array access requires identifier"),[];let t=e.object.name,r=n.params.find(l=>l.name===t);if(!r?.isArray||!r.arrayType)return n.errors.push(`${t} is not a typed array parameter`),[];let s=$t[r.arrayType];if(!s)return n.errors.push(`Unknown array type: ${r.arrayType}`),[];n.needsMemory=!0;let o=[],i=je(n,t);if(!i)return n.errors.push(`Unknown array: ${t}`),[];if(o.push(d.local_get,...C(i.index)),!e.computed||!e.property)return n.errors.push("Array access requires computed index"),[];let a=F(e.property,n),c=L(e.property,n);return o.push(...a),c==="f64"&&o.push(d.i32_trunc_f64_s),s.bytesPerElement>1&&(o.push(d.i32_const,...tt(s.bytesPerElement)),o.push(d.i32_mul)),o.push(d.i32_add),o.push(s.loadOp,0,0),o}function Ii(e,n,t,r){if(e.object.type!=="Identifier")return r.errors.push("Array store requires identifier"),[];let s=e.object.name,o=r.params.find(y=>y.name===s);if(!o?.isArray||!o.arrayType)return r.errors.push(`${s} is not a typed array parameter`),[];let i=$t[o.arrayType];if(!i)return r.errors.push(`Unknown array type: ${o.arrayType}`),[];r.needsMemory=!0;let a=[],c=je(r,s);if(!c)return[];if(!e.computed||!e.property)return r.errors.push("Array store requires computed index"),[];let l=F(e.property,r),p=L(e.property,r),f=()=>{let y=[];return y.push(d.local_get,...C(c.index)),y.push(...l),p==="f64"&&y.push(d.i32_trunc_f64_s),i.bytesPerElement>1&&(y.push(d.i32_const,...tt(i.bytesPerElement)),y.push(d.i32_mul)),y.push(d.i32_add),y};if(t==="=")a.push(...F(n,r));else{let y=St(r,`__addr_${r.nextLocalIndex}`,"i32");a.push(...f()),a.push(d.local_tee,...C(y)),a.push(i.loadOp,0,0),a.push(...F(n,r));let b=L(n,r);i.elementType==="f32"&&b==="f64"?a.push(d.f32_demote_f64):i.elementType==="f64"&&b==="f32"?a.push(d.f64_promote_f32):i.elementType==="f32"&&b==="i32"?a.push(d.f32_convert_i32_s):i.elementType==="f64"&&b==="i32"?a.push(d.f64_convert_i32_s):i.elementType==="i32"&&b==="f64"?a.push(d.i32_trunc_f64_s):i.elementType==="i32"&&b==="f32"&&a.push(d.i32_trunc_f32_s);let S=t.slice(0,-1),E={"+":i.elementType==="i32"?d.i32_add:i.elementType==="f32"?d.f32_add:d.f64_add,"-":i.elementType==="i32"?d.i32_sub:i.elementType==="f32"?d.f32_sub:d.f64_sub,"*":i.elementType==="i32"?d.i32_mul:i.elementType==="f32"?d.f32_mul:d.f64_mul};a.push(E[S]??d.f64_add);let w=St(r,`__val_${r.nextLocalIndex}`,i.elementType);return a.push(d.local_set,...C(w)),a.push(d.local_get,...C(y)),a.push(d.local_get,...C(w)),a.push(i.storeOp,0,0),a.push(d.local_get,...C(w)),a}let u=L(n,r);i.elementType==="f32"&&u==="f64"?a.push(d.f32_demote_f64):i.elementType==="f64"&&u==="f32"?a.push(d.f64_promote_f32):i.elementType==="i32"&&u==="f64"&&a.push(d.i32_trunc_f64_s);let m=St(r,`__tmp_${r.nextLocalIndex}`,i.elementType);return a.push(d.local_set,...C(m)),a.push(d.local_get,...C(c.index)),a.push(...l),p==="f64"&&a.push(d.i32_trunc_f64_s),i.bytesPerElement>1&&(a.push(d.i32_const,...tt(i.bytesPerElement)),a.push(d.i32_mul)),a.push(d.i32_add),a.push(d.local_get,...C(m)),a.push(i.storeOp,0,0),a.push(d.local_get,...C(m)),a}function Oi(e,n){if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"&&t.object.name==="Math"&&t.property.type==="Identifier"){let r=t.property.name;return qi(r,e.arguments,n)}}if(e.callee.type==="Identifier"){let t=e.callee.name;if(t.startsWith("f32x4_")||t.startsWith("v128_"))return Di(t,e.arguments,n);let r=n.moduleFunctions.get(t);if(r)return Bi(r,t,e.arguments,n)}return n.errors.push(`Unsupported function call: ${e.callee.type}`),[d.f64_const,...ne(0)]}function Bi(e,n,t,r){if(t.length!==e.params.length)return r.errors.push(`wasm function ${n} expects ${e.params.length} arguments, got ${t.length}`),[d.f64_const,...ne(0)];let s=[];for(let o=0;o<t.length;o++){let i=t[o],a=e.params[o].type,c=L(i,r);if(s.push(...F(i,r)),c!==a){let l=Fi(c,a);l===void 0?r.errors.push(`wasm function ${n} param ${o} expects ${a}, got ${c} (no conversion available)`):l!==null&&s.push(l)}}return s.push(d.call,...C(e.index)),e.hasReturn||s.push(d.i32_const,0),s}function Fi(e,n){if(e===n)return null;if(!(e==="v128"||n==="v128")&&!(e==="i64"||n==="i64"))switch(`${e}->${n}`){case"f64->i32":return d.i32_trunc_f64_s;case"f32->i32":return d.i32_trunc_f32_s;case"i32->f64":return d.f64_convert_i32_s;case"i32->f32":return d.f32_convert_i32_s;case"f32->f64":return d.f64_promote_f32;case"f64->f32":return d.f32_demote_f64;default:return}}function Di(e,n,t){t.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...F(n[0],t)),L(n[0],t)==="f64"&&r.push(d.i32_trunc_f64_s),r.push(...F(n[1],t));let o=L(n[1],t);return o==="f64"?r.push(d.i32_trunc_f64_s):o==="f32"&&r.push(d.i32_trunc_f32_s),r.push(d.i32_add),r.push(...Jr(H.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...F(n[0],t)),L(n[0],t)==="f64"&&r.push(d.i32_trunc_f64_s),r.push(...F(n[1],t));let o=L(n[1],t);return o==="f64"?r.push(d.i32_trunc_f64_s):o==="f32"&&r.push(d.i32_trunc_f32_s),r.push(d.i32_add),r.push(...F(n[2],t)),r.push(...Jr(H.v128_store,2,0)),r.push(d.i32_const,0),r}case"f32x4_splat":{r.push(...F(n[0],t));let s=L(n[0],t);return s==="i32"?r.push(d.f32_convert_i32_s):s==="f64"&&r.push(d.f32_demote_f64),r.push(...wn(H.f32x4_splat)),r}case"f32x4_extract_lane":{r.push(...F(n[0],t));let s=n[1].value;return!Number.isInteger(s)||s<0||s>3?(t.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${s}`),[d.f32_const,...Sn(0)]):(r.push(et,...C(H.f32x4_extract_lane),s),r)}case"f32x4_replace_lane":{r.push(...F(n[0],t));let s=n[1].value;if(!Number.isInteger(s)||s<0||s>3)return t.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${s}`),[d.f32_const,...Sn(0)];r.push(...F(n[2],t));let o=L(n[2],t);return o==="i32"?r.push(d.f32_convert_i32_s):o==="f64"&&r.push(d.f32_demote_f64),r.push(et,...C(H.f32x4_replace_lane),s),r}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{r.push(...F(n[0],t)),r.push(...F(n[1],t));let s={f32x4_add:H.f32x4_add,f32x4_sub:H.f32x4_sub,f32x4_mul:H.f32x4_mul,f32x4_div:H.f32x4_div};return r.push(...wn(s[e])),r}case"f32x4_neg":case"f32x4_sqrt":{r.push(...F(n[0],t));let s={f32x4_neg:H.f32x4_neg,f32x4_sqrt:H.f32x4_sqrt};return r.push(...wn(s[e])),r}default:return t.errors.push(`Unknown SIMD intrinsic: ${e}`),[d.f64_const,...ne(0)]}}function qi(e,n,t){let r=[];for(let a of n){r.push(...F(a,t));let c=L(a,t);c==="i32"?r.push(d.f64_convert_i32_s):c==="f32"&&r.push(d.f64_promote_f32)}let o={abs:d.f64_abs,ceil:d.f64_ceil,floor:d.f64_floor,trunc:d.f64_trunc,sqrt:d.f64_sqrt,min:d.f64_min,max:d.f64_max}[e];return o!==void 0?(r.push(o),r):["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(e)?(t.needsMathImports.add(e),t.errors.push(`Math.${e} requires JS import (not yet implemented)`),[d.f64_const,...ne(0)]):(t.errors.push(`Unknown Math method: ${e}`),[d.f64_const,...ne(0)])}function zr(e){let n=e.split(":").map(o=>o.trim()),t=n[0];if(n.length===1)return{name:t,type:"f64"};let r=n[1];return $t[r]?{name:t,type:"i32",isArray:!0,arrayType:r}:{name:t,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[r]??"f64"}}function Ui(e,n){let t=e.map(s=>oe[s.type]),r=n?[1,oe.f64]:[0];return[96,...C(e.length),...t,...r]}function Wi(e,n){let t=[];if(n.length>0){let o=n[0],i=1;for(let a=1;a<n.length;a++)n[a]===o?i++:(t.push([...C(i),oe[o]]),o=n[a],i=1);t.push([...C(i),oe[o]])}let s=[...[...C(t.length),...t.flat()],...e,d.end];return[...C(s.length),...s]}function Li(){return Qe(Xe.import,[1,...$n("env"),...$n("memory"),2,0,1])}function Ji(e,n){if(e.length!==n.length)throw new Error("functions and exportNames length mismatch");let t=[0,97,115,109,1,0,0,0],r=e.map(u=>Ui(u.params,u.hasReturn)),s=Qe(Xe.type,[...C(r.length),...r.flat()]),i=e.some(u=>u.needsMemory)?Li():[],a=Qe(Xe.function,[...C(e.length),...e.map((u,m)=>C(m)).flat()]),c=Qe(Xe.export,[...C(e.length),...n.map((u,m)=>[...$n(u),0,...C(m)]).flat()]),l=e.map(u=>Wi(u.bodyCode,u.localTypes)),p=Qe(Xe.code,[...C(l.length),...l.flat()]),f=[...t,...s];return i.length>0&&f.push(...i),f.push(...a,...c,...p),f}function Vi(e,n=new Map){try{let t=e.captures.map(zr),r;try{let c=`function __wasm__(${t.map(l=>l.name).join(", ")}) { ${e.body} }`;r=Vr.parse(c,{ecmaVersion:2022})}catch(c){return{success:!1,warnings:[],error:`Parse error: ${c.message}`}}let o=r.body[0].body.body,i=ji(t,n),a=[];for(let c of o)a.push(...Be(c,i));return i.errors.length>0?{success:!1,warnings:i.warnings,error:i.errors.join("; ")}:{success:!0,fn:{params:t,bodyCode:a,localTypes:i.localTypes,needsMemory:i.needsMemory,hasReturn:i.hasReturn},wat:ki(a,t,i.localTypes),warnings:i.warnings}}catch(t){return{success:!1,warnings:[],error:t.message}}}function Zr(e){let n=new Map,t=[];for(let c=0;c<e.length;c++){let l=e[c],p=l.captures.map(zr),f=l.returnType!==void 0;t.push({params:p,hasReturn:f}),l.name&&n.set(l.name,{index:c,params:p,hasReturn:f})}let r=[],s=[],o=[],i=[];for(let c=0;c<e.length;c++){let l=e[c],p=Vi(l,n);if(i.push(...p.warnings),!p.success||!p.fn){r.push({id:l.id,success:!1,error:p.error}),s.push(zi(t[c])),o.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:!1,wat:`(failed: ${p.error??"unknown error"})`});continue}s.push(p.fn),o.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:p.fn.needsMemory,wat:p.wat??""}),r.push({id:l.id,success:!0,exportIndex:c})}if(s.length===0)return{bytes:new Uint8Array,results:r,exports:[],needsMemory:!1,warnings:i};let a=Ji(s,o.map(c=>c.exportName));return{bytes:new Uint8Array(a),results:r,exports:o,needsMemory:o.some(c=>c.needsMemory),warnings:i}}function zi(e){let n=e.hasReturn?[d.f64_const,...ne(0)]:[];return{params:e.params,bodyCode:n,localTypes:[],needsMemory:!1,hasReturn:e.hasReturn}}function Gr(e){let n=Zr(e),t=new Map(n.exports.map(p=>[p.id,p])),r=n.results.map(p=>{if(!p.success)return{id:p.id,success:!1,error:p.error};let f=t.get(p.id);return{id:p.id,success:!0,byteLength:n.bytes.length,_exportName:f.exportName}});if(n.exports.length===0)return{code:"",results:r};let s=n.exports.map(p=>{let f=p.wat.split(`
309
+ `;try{let h=new Function("__deepEqual","__format","__typeMatches",b),{testResults:w,sigTestResults:_}=h(jn,nt,vn);for(let $ of w){let T=e[$.idx],j=!$.passed&&($.isRef||c&&$.error&&/is not defined$/.test($.error));i.push({description:T.description,passed:$.passed,inconclusive:j||void 0,error:$.error,line:T.line})}for(let $ of _){let T=y[$.idx],j=!$.passed&&($.threw||c&&$.error&&/is not defined$/.test($.error)),P=T.className?`${T.className}.${T.funcName}`:T.funcName;i.push({description:`${P} signature example`,passed:$.passed,inconclusive:j||void 0,error:$.error,isSignatureTest:!0,line:T.line})}}catch(h){let w=`Module could not be executed for testing: ${h.message}`;for(let _ of e)i.push({description:_.description,passed:!1,inconclusive:!0,error:w});for(let _ of y){let $=_.className?`${_.className}.${_.funcName}`:_.funcName;i.push({description:`${$} signature example`,passed:!1,inconclusive:!0,error:w,isSignatureTest:!0})}}for(let h of g){let w=h.className?`${h.className}.${h.funcName}`:h.funcName;i.push({description:`${w} signature example`,passed:!0,isSignatureTest:!0,line:h.line})}return i}function jt(e){let n="",t=0,r=!1;for(let o=0;o<e.length;o++){let i=e[o];if(i==="{"||i==="["||i==="("){if(i==="{"&&t===0&&r)break;t++,n+=i,r=!0}else i==="}"||i==="]"||i===")"?(t--,n+=i):/\s/.test(i)?n+=i:(n+=i,r=!0)}return n.trim()||null}function kn(e){if(!e.trim())return[];let n=[],t=Fi(e);for(let r of t){let s=r.trim(),o=s.match(/^\.\.\.(\w+)\s*[:=]\s*(\[.+\])$/);if(o){try{let a=new Function(`return ${o[2]}`)();if(Array.isArray(a))for(let c of a)n.push(JSON.stringify(c))}catch{}continue}if(s.startsWith("..."))continue;let i=s.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(i)n.push(i[2].trim());else return[]}return n}function Fi(e){let n=[],t="",r=0;for(let s of e){if(s==="("||s==="["||s==="{")r++;else if(s===")"||s==="]"||s==="}")r--;else if(s===","&&r===0){n.push(t.trim()),t="";continue}t+=s}return t.trim()&&n.push(t.trim()),n}import*as ts from"acorn";var ae={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},rt={custom:0,type:1,import:2,function:3,table:4,memory:5,global:6,export:7,start:8,element:9,code:10,data:11},d={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},qi=Object.fromEntries(Object.entries(d).map(([e,n])=>[n,e.replace(/_/g,".")])),it=253,H={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},Wi=Object.fromEntries(Object.entries(H).map(([e,n])=>[n,e.replace(/_/g,".")]));function An(e){return[it,...M(e)]}function es(e,n,t){return[it,...M(e),...M(n),...M(t)]}function M(e){let n=[];do{let t=e&127;e>>>=7,e!==0&&(t|=128),n.push(t)}while(e!==0);return n}function ot(e){let n=[],t=!0;for(;t;){let r=e&127;e>>=7,e===0&&(r&64)===0||e===-1&&(r&64)!==0?t=!1:r|=128,n.push(r)}return n}function Pn(e){let n=new ArrayBuffer(4);return new Float32Array(n)[0]=e,[...new Uint8Array(n)]}function ne(e){let n=new ArrayBuffer(8);return new Float64Array(n)[0]=e,[...new Uint8Array(n)]}function Rn(e){let n=new TextEncoder().encode(e);return[...M(n.length),...n]}function st(e,n){return[e,...M(n.length),...n]}function be(e,n){let t=0,r=0,s=n;for(;s<e.length;){let o=e[s];if(t|=(o&127)<<r,s++,(o&128)===0)break;r+=7}return[t,s-n]}function Ui(e,n){let t=new ArrayBuffer(8),r=new Uint8Array(t);for(let s=0;s<8;s++)r[s]=e[n+s];return new Float64Array(t)[0]}function Li(e,n,t){let r=[],s=1,o=()=>" ".repeat(s),i=n.map((l,f)=>`(param $${l.name} ${l.type})`).join(" "),a=t.map((l,f)=>`(local $L${n.length+f} ${l})`).join(" ");r.push(`(func (export "compute") ${i} (result f64)`),a&&r.push(` ${a}`);let c=0;for(;c<e.length;){let l=e[c],f=qi[l]||`unknown(0x${l.toString(16)})`;if(c++,l===d.local_get||l===d.local_set||l===d.local_tee){let[p,u]=be(e,c);c+=u;let m=p<n.length?`$${n[p].name}`:`$L${p}`;r.push(`${o()}${f} ${m}`)}else if(l===d.br||l===d.br_if){let[p,u]=be(e,c);c+=u,r.push(`${o()}${f} ${p}`)}else if(l===d.i32_const){let[p,u]=be(e,c);c+=u,r.push(`${o()}i32.const ${p}`)}else if(l===d.f32_const){let p=new ArrayBuffer(4),u=new Uint8Array(p);for(let y=0;y<4;y++)u[y]=e[c+y];let m=new Float32Array(p)[0];c+=4,r.push(`${o()}f32.const ${m}`)}else if(l===d.f64_const){let p=Ui(e,c);c+=8,r.push(`${o()}f64.const ${p}`)}else if(l===d.block||l===d.loop){let p=e[c];c++,r.push(`${o()}${f}${p===ae.void?"":` (result ${p===ae.f64?"f64":"i32"})`}`),s++}else if(l===d.if){let p=e[c];c++,r.push(`${o()}if${p===ae.void?"":` (result ${p===ae.f64?"f64":"i32"})`}`),s++}else if(l===d.else)s--,r.push(`${o()}else`),s++;else if(l===d.end)s=Math.max(1,s-1),r.push(`${o()}end`);else if(l===d.f64_load||l===d.f64_store||l===d.f32_load||l===d.f32_store||l===d.i32_load||l===d.i32_store){let[p,u]=be(e,c);c+=u;let[m,y]=be(e,c);c+=y,r.push(`${o()}${f}${m?` offset=${m}`:""}`)}else if(l===it){let[p,u]=be(e,c);c+=u;let m=Wi[p]||`simd.unknown(0x${p.toString(16)})`;if(p===H.v128_load||p===H.v128_store){let[y,g]=be(e,c);c+=g;let[x,E]=be(e,c);c+=E,r.push(`${o()}${m}${x?` offset=${x}`:""}`)}else if(p===H.v128_const){let y=e.slice(c,c+16);c+=16,r.push(`${o()}v128.const ${y.map(g=>"0x"+g.toString(16).padStart(2,"0")).join(" ")}`)}else if(p===H.f32x4_extract_lane||p===H.f32x4_replace_lane){let y=e[c];c++,r.push(`${o()}${m} ${y}`)}else r.push(`${o()}${m}`)}else r.push(`${o()}${f}`)}return r.push(")"),r.join(`
310
+ `)}var At={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:d.i32_load8_s,storeOp:d.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:d.i32_load8_u,storeOp:d.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:d.i32_load8_u,storeOp:d.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:d.i32_load16_s,storeOp:d.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:d.i32_load16_u,storeOp:d.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:d.i32_load,storeOp:d.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:d.i32_load,storeOp:d.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:d.f32_load,storeOp:d.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:d.f64_load,storeOp:d.f64_store}};function Ji(e,n=new Map){let t={params:e,locals:new Map,nextLocalIndex:e.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1,moduleFunctions:n};return e.forEach((r,s)=>{t.locals.set(r.name,{index:s,type:r.type})}),t}function vt(e,n,t){if(e.locals.has(n))return e.errors.push(`Duplicate local declaration: ${n}`),e.locals.get(n).index;let r=e.nextLocalIndex++;return e.locals.set(n,{index:r,type:t}),e.localTypes.push(t),r}function Re(e,n){return e.locals.get(n)}function qe(e,n){switch(e.type){case"ExpressionStatement":{let t=e.expression;return[...D(t,n),d.drop]}case"ReturnStatement":{let t=e;if(n.hasReturn=!0,!t.argument)return[d.return];let r=D(t.argument,n),s=L(t.argument,n);return s==="i32"?r.push(d.f64_convert_i32_s):s==="f32"&&r.push(d.f64_promote_f32),r.push(d.return),r}case"VariableDeclaration":{let t=e,r=[];for(let s of t.declarations){if(s.id.type!=="Identifier"){n.errors.push("Destructuring not supported in WASM blocks");continue}let o=s.id.name,i="f64";s.init&&(i=L(s.init,n));let a=vt(n,o,i);s.init&&(r.push(...D(s.init,n)),r.push(d.local_set,...M(a)))}return r}case"ForStatement":return Vi(e,n);case"IfStatement":return zi(e,n);case"BlockStatement":{let t=e,r=[];for(let s of t.body)r.push(...qe(s,n));return r}default:return n.errors.push(`Unsupported statement type: ${e.type}`),[]}}function Vi(e,n){let t=[];return e.init&&(e.init.type==="VariableDeclaration"?t.push(...qe(e.init,n)):t.push(...D(e.init,n))),t.push(d.block,ae.void),t.push(d.loop,ae.void),e.test&&(t.push(...D(e.test,n)),t.push(d.i32_eqz),t.push(d.br_if,1)),n.loopDepth++,e.body&&t.push(...qe(e.body,n)),n.loopDepth--,e.update&&(t.push(...D(e.update,n)),t.push(d.drop)),t.push(d.br,0),t.push(d.end),t.push(d.end),t}function zi(e,n){let t=[];return t.push(...D(e.test,n)),t.push(d.if,ae.void),t.push(...qe(e.consequent,n)),e.alternate&&(t.push(d.else),t.push(...qe(e.alternate,n))),t.push(d.end),t}function L(e,n){switch(e.type){case"Literal":{let t=e;return typeof t.value=="number"?t.raw&&(t.raw.includes(".")||t.raw.includes("e"))?"f64":Number.isInteger(t.value)&&t.value>=-2147483648&&t.value<=2147483647?"i32":"f64":"f64"}case"Identifier":return Re(n,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let t=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(t.operator)||["|","&","^","<<",">>",">>>"].includes(t.operator))return"i32";let r=L(t.left,n),s=L(t.right,n);return r==="v128"||s==="v128"?"v128":r==="f64"||s==="f64"?"f64":r==="f32"||s==="f32"?"f32":"i32"}case"UnaryExpression":{let t=e;return t.operator==="!"?"i32":L(t.argument,n)}case"MemberExpression":{let t=e;if(t.object.type==="Identifier"&&Re(n,t.object.name)){let s=n.params.find(o=>o.name===t.object.name);if(s?.arrayType){let o=At[s.arrayType];if(o)return o.elementType}}return"f64"}case"CallExpression":{let t=e;if(t.callee.type==="MemberExpression"){let r=t.callee;if(r.object.type==="Identifier"&&r.object.name==="Math")return"f64"}if(t.callee.type==="Identifier"){let r=t.callee.name;if(r==="f32x4_extract_lane")return"f32";if(r.startsWith("f32x4_")||r==="v128_load")return"v128";let s=n.moduleFunctions.get(r);if(s)return s.hasReturn?"f64":"i32"}return"f64"}default:return"f64"}}function D(e,n){switch(e.type){case"Literal":{let t=e;if(typeof t.value=="number"){let r=L(e,n);return r==="i32"?[d.i32_const,...ot(t.value|0)]:r==="f32"?[d.f32_const,...Pn(t.value)]:[d.f64_const,...ne(t.value)]}return n.errors.push(`Unsupported literal type: ${typeof t.value}`),[d.f64_const,...ne(0)]}case"Identifier":{let t=e.name,r=Re(n,t);return r?[d.local_get,...M(r.index)]:(n.errors.push(`Unknown identifier: ${t}`),[d.f64_const,...ne(0)])}case"BinaryExpression":return Gi(e,n);case"UnaryExpression":return Zi(e,n);case"AssignmentExpression":return Ki(e,n);case"UpdateExpression":return Hi(e,n);case"MemberExpression":return Yi(e,n);case"CallExpression":return Qi(e,n);case"SequenceExpression":{let t=e,r=[];for(let s=0;s<t.expressions.length;s++)r.push(...D(t.expressions[s],n)),s<t.expressions.length-1&&r.push(d.drop);return r}default:return n.errors.push(`Unsupported expression type: ${e.type}`),[d.f64_const,...ne(0)]}}function Gi(e,n){let t=D(e.left,n),r=D(e.right,n),s=L(e,n),o=L(e.left,n),i=L(e.right,n),a=["<",">","<=",">=","==","===","!=","!=="].includes(e.operator),c;o==="f64"||i==="f64"?c="f64":o==="f32"||i==="f32"?c="f32":c="i32",!a&&s==="f64"&&(c="f64");let l=t,f=r;c==="f64"?(o==="i32"?l=[...t,d.f64_convert_i32_s]:o==="f32"&&(l=[...t,d.f64_promote_f32]),i==="i32"?f=[...r,d.f64_convert_i32_s]:i==="f32"&&(f=[...r,d.f64_promote_f32])):c==="f32"&&(o==="i32"&&(l=[...t,d.f32_convert_i32_s]),i==="i32"&&(f=[...r,d.f32_convert_i32_s]));let u={"+":{i32:d.i32_add,f32:d.f32_add,f64:d.f64_add},"-":{i32:d.i32_sub,f32:d.f32_sub,f64:d.f64_sub},"*":{i32:d.i32_mul,f32:d.f32_mul,f64:d.f64_mul},"/":{i32:d.i32_div_s,f32:d.f32_div,f64:d.f64_div},"%":{i32:d.i32_rem_s},"<":{i32:d.i32_lt_s,f32:d.f32_lt,f64:d.f64_lt},">":{i32:d.i32_gt_s,f32:d.f32_gt,f64:d.f64_gt},"<=":{i32:d.i32_le_s,f32:d.f32_le,f64:d.f64_le},">=":{i32:d.i32_ge_s,f32:d.f32_ge,f64:d.f64_ge},"==":{i32:d.i32_eq,f32:d.f32_eq,f64:d.f64_eq},"===":{i32:d.i32_eq,f32:d.f32_eq,f64:d.f64_eq},"!=":{i32:d.i32_ne,f32:d.f32_ne,f64:d.f64_ne},"!==":{i32:d.i32_ne,f32:d.f32_ne,f64:d.f64_ne},"|":{i32:d.i32_or},"&":{i32:d.i32_and},"^":{i32:d.i32_xor},"<<":{i32:d.i32_shl},">>":{i32:d.i32_shr_s},">>>":{i32:d.i32_shr_u}}[e.operator];if(!u)return n.errors.push(`Unsupported operator: ${e.operator}`),[d.f64_const,...ne(0)];let m=u[c]??u.f64??u.i32;return m===void 0?(n.errors.push(`Operator ${e.operator} not supported for type ${c}`),[d.f64_const,...ne(0)]):[...l,...f,m]}function Zi(e,n){let t=D(e.argument,n),r=L(e.argument,n);switch(e.operator){case"-":return r==="i32"?[d.i32_const,0,...t,d.i32_sub]:r==="f32"?[...t,d.f32_neg]:[...t,d.f64_neg];case"!":return[...t,d.i32_eqz];case"~":return[...t,d.i32_const,...ot(-1),d.i32_xor];default:return n.errors.push(`Unsupported unary operator: ${e.operator}`),t}}function Ki(e,n){if(e.left.type==="MemberExpression")return Xi(e.left,e.right,e.operator,n);if(e.left.type!=="Identifier")return n.errors.push("Assignment target must be identifier or array element"),[];let t=e.left.name,r=Re(n,t);if(!r)return n.errors.push(`Unknown variable: ${t}`),[];let s=[];if(e.operator==="="){s.push(...D(e.right,n));let o=L(e.right,n);r.type==="f64"&&o==="i32"?s.push(d.f64_convert_i32_s):r.type==="f64"&&o==="f32"?s.push(d.f64_promote_f32):r.type==="i32"&&o==="f64"?s.push(d.i32_trunc_f64_s):r.type==="i32"&&o==="f32"?s.push(d.i32_trunc_f32_s):r.type==="f32"&&o==="i32"?s.push(d.f32_convert_i32_s):r.type==="f32"&&o==="f64"&&s.push(d.f32_demote_f64)}else{let o=L(e.right,n),i=r.type;o==="f64"||r.type==="f64"?i="f64":(o==="f32"||r.type==="f32")&&(i="f32"),s.push(d.local_get,...M(r.index)),i==="f64"&&r.type==="i32"?s.push(d.f64_convert_i32_s):i==="f64"&&r.type==="f32"?s.push(d.f64_promote_f32):i==="f32"&&r.type==="i32"&&s.push(d.f32_convert_i32_s),s.push(...D(e.right,n)),i==="f64"&&o==="i32"?s.push(d.f64_convert_i32_s):i==="f64"&&o==="f32"?s.push(d.f64_promote_f32):i==="f32"&&o==="i32"&&s.push(d.f32_convert_i32_s);let a=e.operator.slice(0,-1),l={"+":{i32:d.i32_add,f32:d.f32_add,f64:d.f64_add},"-":{i32:d.i32_sub,f32:d.f32_sub,f64:d.f64_sub},"*":{i32:d.i32_mul,f32:d.f32_mul,f64:d.f64_mul},"/":{i32:d.i32_div_s,f32:d.f32_div,f64:d.f64_div}}[a]?.[i];if(!l)return n.errors.push(`Unsupported compound assignment: ${e.operator}`),[];s.push(l),r.type==="i32"&&i==="f64"?s.push(d.i32_trunc_f64_s):r.type==="i32"&&i==="f32"?s.push(d.i32_trunc_f32_s):r.type==="f32"&&i==="f64"&&s.push(d.f32_demote_f64)}return s.push(d.local_tee,...M(r.index)),s}function Hi(e,n){if(e.argument.type!=="Identifier")return n.errors.push("Update expression argument must be identifier"),[];let t=e.argument.name,r=Re(n,t);if(!r)return n.errors.push(`Unknown variable: ${t}`),[];let s=[],o=r.type==="i32";return e.prefix?(s.push(d.local_get,...M(r.index)),o?(s.push(d.i32_const,1),s.push(e.operator==="++"?d.i32_add:d.i32_sub)):(s.push(d.f64_const,...ne(1)),s.push(e.operator==="++"?d.f64_add:d.f64_sub)),s.push(d.local_tee,...M(r.index))):(s.push(d.local_get,...M(r.index)),s.push(d.local_get,...M(r.index)),o?(s.push(d.i32_const,1),s.push(e.operator==="++"?d.i32_add:d.i32_sub)):(s.push(d.f64_const,...ne(1)),s.push(e.operator==="++"?d.f64_add:d.f64_sub)),s.push(d.local_set,...M(r.index))),s}function Yi(e,n){if(e.object.type!=="Identifier")return n.errors.push("Array access requires identifier"),[];let t=e.object.name,r=n.params.find(l=>l.name===t);if(!r?.isArray||!r.arrayType)return n.errors.push(`${t} is not a typed array parameter`),[];let s=At[r.arrayType];if(!s)return n.errors.push(`Unknown array type: ${r.arrayType}`),[];n.needsMemory=!0;let o=[],i=Re(n,t);if(!i)return n.errors.push(`Unknown array: ${t}`),[];if(o.push(d.local_get,...M(i.index)),!e.computed||!e.property)return n.errors.push("Array access requires computed index"),[];let a=D(e.property,n),c=L(e.property,n);return o.push(...a),c==="f64"&&o.push(d.i32_trunc_f64_s),s.bytesPerElement>1&&(o.push(d.i32_const,...ot(s.bytesPerElement)),o.push(d.i32_mul)),o.push(d.i32_add),o.push(s.loadOp,0,0),o}function Xi(e,n,t,r){if(e.object.type!=="Identifier")return r.errors.push("Array store requires identifier"),[];let s=e.object.name,o=r.params.find(y=>y.name===s);if(!o?.isArray||!o.arrayType)return r.errors.push(`${s} is not a typed array parameter`),[];let i=At[o.arrayType];if(!i)return r.errors.push(`Unknown array type: ${o.arrayType}`),[];r.needsMemory=!0;let a=[],c=Re(r,s);if(!c)return[];if(!e.computed||!e.property)return r.errors.push("Array store requires computed index"),[];let l=D(e.property,r),f=L(e.property,r),p=()=>{let y=[];return y.push(d.local_get,...M(c.index)),y.push(...l),f==="f64"&&y.push(d.i32_trunc_f64_s),i.bytesPerElement>1&&(y.push(d.i32_const,...ot(i.bytesPerElement)),y.push(d.i32_mul)),y.push(d.i32_add),y};if(t==="=")a.push(...D(n,r));else{let y=vt(r,`__addr_${r.nextLocalIndex}`,"i32");a.push(...p()),a.push(d.local_tee,...M(y)),a.push(i.loadOp,0,0),a.push(...D(n,r));let g=L(n,r);i.elementType==="f32"&&g==="f64"?a.push(d.f32_demote_f64):i.elementType==="f64"&&g==="f32"?a.push(d.f64_promote_f32):i.elementType==="f32"&&g==="i32"?a.push(d.f32_convert_i32_s):i.elementType==="f64"&&g==="i32"?a.push(d.f64_convert_i32_s):i.elementType==="i32"&&g==="f64"?a.push(d.i32_trunc_f64_s):i.elementType==="i32"&&g==="f32"&&a.push(d.i32_trunc_f32_s);let x=t.slice(0,-1),E={"+":i.elementType==="i32"?d.i32_add:i.elementType==="f32"?d.f32_add:d.f64_add,"-":i.elementType==="i32"?d.i32_sub:i.elementType==="f32"?d.f32_sub:d.f64_sub,"*":i.elementType==="i32"?d.i32_mul:i.elementType==="f32"?d.f32_mul:d.f64_mul};a.push(E[x]??d.f64_add);let S=vt(r,`__val_${r.nextLocalIndex}`,i.elementType);return a.push(d.local_set,...M(S)),a.push(d.local_get,...M(y)),a.push(d.local_get,...M(S)),a.push(i.storeOp,0,0),a.push(d.local_get,...M(S)),a}let u=L(n,r);i.elementType==="f32"&&u==="f64"?a.push(d.f32_demote_f64):i.elementType==="f64"&&u==="f32"?a.push(d.f64_promote_f32):i.elementType==="i32"&&u==="f64"&&a.push(d.i32_trunc_f64_s);let m=vt(r,`__tmp_${r.nextLocalIndex}`,i.elementType);return a.push(d.local_set,...M(m)),a.push(d.local_get,...M(c.index)),a.push(...l),f==="f64"&&a.push(d.i32_trunc_f64_s),i.bytesPerElement>1&&(a.push(d.i32_const,...ot(i.bytesPerElement)),a.push(d.i32_mul)),a.push(d.i32_add),a.push(d.local_get,...M(m)),a.push(i.storeOp,0,0),a.push(d.local_get,...M(m)),a}function Qi(e,n){if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"&&t.object.name==="Math"&&t.property.type==="Identifier"){let r=t.property.name;return ro(r,e.arguments,n)}}if(e.callee.type==="Identifier"){let t=e.callee.name;if(t.startsWith("f32x4_")||t.startsWith("v128_"))return no(t,e.arguments,n);let r=n.moduleFunctions.get(t);if(r)return eo(r,t,e.arguments,n)}return n.errors.push(`Unsupported function call: ${e.callee.type}`),[d.f64_const,...ne(0)]}function eo(e,n,t,r){if(t.length!==e.params.length)return r.errors.push(`wasm function ${n} expects ${e.params.length} arguments, got ${t.length}`),[d.f64_const,...ne(0)];let s=[];for(let o=0;o<t.length;o++){let i=t[o],a=e.params[o].type,c=L(i,r);if(s.push(...D(i,r)),c!==a){let l=to(c,a);l===void 0?r.errors.push(`wasm function ${n} param ${o} expects ${a}, got ${c} (no conversion available)`):l!==null&&s.push(l)}}return s.push(d.call,...M(e.index)),e.hasReturn||s.push(d.i32_const,0),s}function to(e,n){if(e===n)return null;if(!(e==="v128"||n==="v128")&&!(e==="i64"||n==="i64"))switch(`${e}->${n}`){case"f64->i32":return d.i32_trunc_f64_s;case"f32->i32":return d.i32_trunc_f32_s;case"i32->f64":return d.f64_convert_i32_s;case"i32->f32":return d.f32_convert_i32_s;case"f32->f64":return d.f64_promote_f32;case"f64->f32":return d.f32_demote_f64;default:return}}function no(e,n,t){t.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...D(n[0],t)),L(n[0],t)==="f64"&&r.push(d.i32_trunc_f64_s),r.push(...D(n[1],t));let o=L(n[1],t);return o==="f64"?r.push(d.i32_trunc_f64_s):o==="f32"&&r.push(d.i32_trunc_f32_s),r.push(d.i32_add),r.push(...es(H.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...D(n[0],t)),L(n[0],t)==="f64"&&r.push(d.i32_trunc_f64_s),r.push(...D(n[1],t));let o=L(n[1],t);return o==="f64"?r.push(d.i32_trunc_f64_s):o==="f32"&&r.push(d.i32_trunc_f32_s),r.push(d.i32_add),r.push(...D(n[2],t)),r.push(...es(H.v128_store,2,0)),r.push(d.i32_const,0),r}case"f32x4_splat":{r.push(...D(n[0],t));let s=L(n[0],t);return s==="i32"?r.push(d.f32_convert_i32_s):s==="f64"&&r.push(d.f32_demote_f64),r.push(...An(H.f32x4_splat)),r}case"f32x4_extract_lane":{r.push(...D(n[0],t));let s=n[1].value;return!Number.isInteger(s)||s<0||s>3?(t.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${s}`),[d.f32_const,...Pn(0)]):(r.push(it,...M(H.f32x4_extract_lane),s),r)}case"f32x4_replace_lane":{r.push(...D(n[0],t));let s=n[1].value;if(!Number.isInteger(s)||s<0||s>3)return t.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${s}`),[d.f32_const,...Pn(0)];r.push(...D(n[2],t));let o=L(n[2],t);return o==="i32"?r.push(d.f32_convert_i32_s):o==="f64"&&r.push(d.f32_demote_f64),r.push(it,...M(H.f32x4_replace_lane),s),r}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{r.push(...D(n[0],t)),r.push(...D(n[1],t));let s={f32x4_add:H.f32x4_add,f32x4_sub:H.f32x4_sub,f32x4_mul:H.f32x4_mul,f32x4_div:H.f32x4_div};return r.push(...An(s[e])),r}case"f32x4_neg":case"f32x4_sqrt":{r.push(...D(n[0],t));let s={f32x4_neg:H.f32x4_neg,f32x4_sqrt:H.f32x4_sqrt};return r.push(...An(s[e])),r}default:return t.errors.push(`Unknown SIMD intrinsic: ${e}`),[d.f64_const,...ne(0)]}}function ro(e,n,t){let r=[];for(let a of n){r.push(...D(a,t));let c=L(a,t);c==="i32"?r.push(d.f64_convert_i32_s):c==="f32"&&r.push(d.f64_promote_f32)}let o={abs:d.f64_abs,ceil:d.f64_ceil,floor:d.f64_floor,trunc:d.f64_trunc,sqrt:d.f64_sqrt,min:d.f64_min,max:d.f64_max}[e];return o!==void 0?(r.push(o),r):["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(e)?(t.needsMathImports.add(e),t.errors.push(`Math.${e} requires JS import (not yet implemented)`),[d.f64_const,...ne(0)]):(t.errors.push(`Unknown Math method: ${e}`),[d.f64_const,...ne(0)])}function ns(e){let n=e.split(":").map(o=>o.trim()),t=n[0];if(n.length===1)return{name:t,type:"f64"};let r=n[1];return At[r]?{name:t,type:"i32",isArray:!0,arrayType:r}:{name:t,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[r]??"f64"}}function so(e,n){let t=e.map(s=>ae[s.type]),r=n?[1,ae.f64]:[0];return[96,...M(e.length),...t,...r]}function io(e,n){let t=[];if(n.length>0){let o=n[0],i=1;for(let a=1;a<n.length;a++)n[a]===o?i++:(t.push([...M(i),ae[o]]),o=n[a],i=1);t.push([...M(i),ae[o]])}let s=[...[...M(t.length),...t.flat()],...e,d.end];return[...M(s.length),...s]}function oo(){return st(rt.import,[1,...Rn("env"),...Rn("memory"),2,0,1])}function ao(e,n){if(e.length!==n.length)throw new Error("functions and exportNames length mismatch");let t=[0,97,115,109,1,0,0,0],r=e.map(u=>so(u.params,u.hasReturn)),s=st(rt.type,[...M(r.length),...r.flat()]),i=e.some(u=>u.needsMemory)?oo():[],a=st(rt.function,[...M(e.length),...e.map((u,m)=>M(m)).flat()]),c=st(rt.export,[...M(e.length),...n.map((u,m)=>[...Rn(u),0,...M(m)]).flat()]),l=e.map(u=>io(u.bodyCode,u.localTypes)),f=st(rt.code,[...M(l.length),...l.flat()]),p=[...t,...s];return i.length>0&&p.push(...i),p.push(...a,...c,...f),p}function co(e,n=new Map){try{let t=e.captures.map(ns),r;try{let c=`function __wasm__(${t.map(l=>l.name).join(", ")}) { ${e.body} }`;r=ts.parse(c,{ecmaVersion:2022})}catch(c){return{success:!1,warnings:[],error:`Parse error: ${c.message}`}}let o=r.body[0].body.body,i=Ji(t,n),a=[];for(let c of o)a.push(...qe(c,i));return i.errors.length>0?{success:!1,warnings:i.warnings,error:i.errors.join("; ")}:{success:!0,fn:{params:t,bodyCode:a,localTypes:i.localTypes,needsMemory:i.needsMemory,hasReturn:i.hasReturn},wat:Li(a,t,i.localTypes),warnings:i.warnings}}catch(t){return{success:!1,warnings:[],error:t.message}}}function rs(e){let n=new Map,t=[];for(let c=0;c<e.length;c++){let l=e[c],f=l.captures.map(ns),p=l.returnType!==void 0;t.push({params:f,hasReturn:p}),l.name&&n.set(l.name,{index:c,params:f,hasReturn:p})}let r=[],s=[],o=[],i=[];for(let c=0;c<e.length;c++){let l=e[c],f=co(l,n);if(i.push(...f.warnings),!f.success||!f.fn){r.push({id:l.id,success:!1,error:f.error}),s.push(lo(t[c])),o.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:!1,wat:`(failed: ${f.error??"unknown error"})`});continue}s.push(f.fn),o.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:f.fn.needsMemory,wat:f.wat??""}),r.push({id:l.id,success:!0,exportIndex:c})}if(s.length===0)return{bytes:new Uint8Array,results:r,exports:[],needsMemory:!1,warnings:i};let a=ao(s,o.map(c=>c.exportName));return{bytes:new Uint8Array(a),results:r,exports:o,needsMemory:o.some(c=>c.needsMemory),warnings:i}}function lo(e){let n=e.hasReturn?[d.f64_const,...ne(0)]:[];return{params:e.params,bodyCode:n,localTypes:[],needsMemory:!1,hasReturn:e.hasReturn}}function ss(e){let n=rs(e),t=new Map(n.exports.map(f=>[f.id,f])),r=n.results.map(f=>{if(!f.success)return{id:f.id,success:!1,error:f.error};let p=t.get(f.id);return{id:f.id,success:!0,byteLength:n.bytes.length,_exportName:p.exportName}});if(n.exports.length===0)return{code:"",results:r};let s=n.exports.map(f=>{let p=f.wat.split(`
307
311
  `).map(u=>` * ${u}`);return`/**
308
- * WASM: ${p.id} (export: ${p.exportName})
309
- ${f.join(`
312
+ * WASM: ${f.id} (export: ${f.exportName})
313
+ ${p.join(`
310
314
  `)}
311
315
  */`}).join(`
312
- `),o=n.exports.map(p=>`{id:${JSON.stringify(p.id)},n:${JSON.stringify(p.exportName)},c:${JSON.stringify(p.captures)},m:${p.needsMemory}}`).join(","),i=btoa(String.fromCharCode(...n.bytes)),a=n.needsMemory,c=`${s}
316
+ `),o=n.exports.map(f=>`{id:${JSON.stringify(f.id)},n:${JSON.stringify(f.exportName)},c:${JSON.stringify(f.captures)},m:${f.needsMemory}}`).join(","),i=btoa(String.fromCharCode(...n.bytes)),a=n.needsMemory,c=`${s}
313
317
  ;(async()=>{
314
318
  const __wasmExports=[${o}];
315
319
  const __wasmModuleB64=${JSON.stringify(i)};
@@ -338,25 +342,31 @@ for(const{id,n,c,m}of __wasmExports){
338
342
  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}}
339
343
  return r};
340
344
  }})();
341
- `.trim(),l=r.map(({_exportName:p,...f})=>f);return{code:c,results:l}}import*as Kr from"acorn";function Tn(e,n){let t=[];function r(o){t.push({start:o.start,end:o.end,newText:`__tjs.toBool(${te(o,n)})`})}function s(o){if(!(!o||typeof o!="object"||!("type"in o))){switch(o.type){case"IfStatement":case"WhileStatement":case"DoWhileStatement":{let i=o;r(i.test),i.consequent&&s(i.consequent),i.alternate&&s(i.alternate),i.body&&s(i.body);return}case"ForStatement":{let i=o;i.init&&s(i.init),i.test&&r(i.test),i.update&&s(i.update),i.body&&s(i.body);return}case"ConditionalExpression":{let i=o;t.push({start:i.start,end:i.end,newText:`__tjs.toBool(${te(i.test,n)})?(${te(i.consequent,n)}):(${te(i.alternate,n)})`});return}case"LogicalExpression":{let i=o;if(i.operator==="&&"||i.operator==="||"){t.push({start:i.start,end:i.end,newText:te(o,n)});return}break}case"UnaryExpression":{let i=o;if(i.operator==="!"){t.push({start:i.start,end:i.end,newText:`!__tjs.toBool(${te(i.argument,n)})`});return}break}case"CallExpression":{let i=o;if(i.callee&&i.callee.type==="Identifier"&&i.callee.name==="Boolean"&&i.arguments.length===1&&i.arguments[0].type!=="SpreadElement"){t.push({start:i.start,end:i.end,newText:`__tjs.toBool(${te(i.arguments[0],n)})`});return}break}}Zi(o,s)}}return s(e),Gi(t)}function te(e,n){if(!e)return"";switch(e.type){case"LogicalExpression":{let t=e,r=te(t.left,n),s=te(t.right,n);return t.operator==="&&"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?(${s}):__tjs__t)(${r})`:t.operator==="||"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?__tjs__t:(${s}))(${r})`:`(${r})??(${s})`}case"ConditionalExpression":{let t=e;return`__tjs.toBool(${te(t.test,n)})?(${te(t.consequent,n)}):(${te(t.alternate,n)})`}case"UnaryExpression":{let t=e;return t.operator==="!"?`!__tjs.toBool(${te(t.argument,n)})`:En(e,n)}case"CallExpression":{let t=e;return t.callee&&t.callee.type==="Identifier"&&t.callee.name==="Boolean"&&t.arguments.length===1&&t.arguments[0].type!=="SpreadElement"?`__tjs.toBool(${te(t.arguments[0],n)})`:En(e,n)}}return En(e,n)}function En(e,n){let t=e.start,r=e.end;if(typeof t!="number"||typeof r!="number")return"";let s=Hr(e);if(s.length===0)return n.slice(t,r);s.sort((a,c)=>a.start-c.start);let o="",i=t;for(let a of s)a.start<i||(a.start>i&&(o+=n.slice(i,a.start)),o+=te(a,n),i=a.end);return i<r&&(o+=n.slice(i,r)),o}function Zi(e,n){for(let t of Hr(e))n(t)}function Hr(e){let n=[];for(let t in e){if(t==="type"||t==="start"||t==="end"||t==="loc")continue;let r=e[t];if(Array.isArray(r))for(let s of r)s&&typeof s=="object"&&typeof s.type=="string"&&n.push(s);else r&&typeof r=="object"&&typeof r.type=="string"&&n.push(r)}return n}function Gi(e){let n=[...e].sort((s,o)=>s.start-o.start||o.end-s.end),t=[],r=-1;for(let s of n)s.start>=r&&(t.push(s),r=s.end);return t}function kn(e){let n;try{n=Kr.parse(`function __wrap__(){${e}}`,{ecmaVersion:2022,sourceType:"module",locations:!1})}catch{return e}let t=`function __wrap__(){${e}}`,r=Tn(n,t);if(r.length===0)return e;r.sort((a,c)=>c.start-a.start);let s=t;for(let a of r)s=s.slice(0,a.start)+a.newText+s.slice(a.end);return s.slice("function __wrap__(){".length,s.length-"}".length)}function Ki(e,n,t){if(!e||!n)return!1;let r=new RegExp(`function\\s+${n}\\s*\\([^)]*?\\b${t}\\s*([=:])`,"s"),s=e.match(r);return s?s[1]===":":!1}function Hi(e,n,t,r,s){let o=[],i=Ve(n,e),a={},c=!1,l,p;if(e.params.length===1&&(e.params[0].type==="ObjectPattern"||e.params[0].type==="AssignmentPattern"&&e.params[0].left.type==="ObjectPattern")){c=!0;let m=e.params[0],y=m.type==="ObjectPattern"?m:m.left,b=ge(y,t);if(b.type.kind==="object"&&b.type.destructuredParams){l={},p=new Set;for(let[S,E]of Object.entries(b.type.destructuredParams))a[S]={...E,description:i.params[S]},l[S]=E.type,E.required&&p.add(S)}}else for(let m of e.params)if(m.type==="Identifier"){let y=ge(m,t);a[m.name]={...y,required:t.has(m.name),description:i.params[m.name]}}else if(m.type==="AssignmentPattern"&&m.left.type==="Identifier"){let y=ge(m,t),b=Ki(s||"",e.id?.name||"",m.left.name);a[m.left.name]={...y,required:b,default:b?null:y.example??y.default,description:i.params[m.left.name]}}else if(m.type==="ObjectPattern"){let y=ge(m,t);if(y.type.kind==="object"&&y.type.destructuredParams)for(let[b,S]of Object.entries(y.type.destructuredParams))a[b]={...S,description:i.params[b]}}else if(m.type==="RestElement"&&m.argument?.type==="Identifier"){let y=m.argument.name,b=n.match(new RegExp(`\\.\\.\\.${y}\\s*:\\s*([^)]+?)\\s*\\)`));if(b)try{let S=Yr(b[1].trim(),0,{ecmaVersion:2022}),E=Y(S);a[y]={name:y,type:E,required:!1,description:i.params[y]}}catch{a[y]={name:y,type:{kind:"array"},required:!1,description:i.params[y]}}else a[y]={name:y,type:{kind:"array"},required:!1,description:i.params[y]}}let f;if(r)try{let m=r.includes("=")?Qr(r):r,y=Yr(m,0,{ecmaVersion:2022});f=Y(y)}catch{f={kind:"any"},o.push(`Could not parse return type: ${r}`)}return{types:{name:e.id?.name||"anonymous",params:a,returns:f,description:i.description,isDestructuredParam:c,destructuredShape:l,destructuredRequired:p},warnings:o}}function Yi(e,n,t){let r=[],s=t?`${t}:`:"",o=t?`${t}:${e}`:e;if(n.isDestructuredParam&&n.destructuredShape){let a=n.destructuredShape,c=n.destructuredRequired||new Set,l=Object.keys(a);if(l.length===0)return null;for(let p of l)r.push(`if (${p} instanceof Error) return ${p};`);for(let[p,f]of Object.entries(a)){let u=c.has(p),m=`${s}${e}.${p}`,y=Et(p,f);if(y){let b=f.kind;u?r.push(`if (${y}) return __tjs.typeError('${m}', '${b}', ${p});`):r.push(`if (${p} !== undefined && ${y}) return __tjs.typeError('${m}', '${b}', ${p});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${o}');`),{preamble:r.join(`
342
- `),suffix:"__tjs.popStack();"})}let i=Object.entries(n.params);if(i.length===0)return null;for(let[a]of i)r.push(`if (${a} instanceof Error) return ${a};`);for(let[a,c]of i){let l=`${s}${e}.${a}`;c.type.kind==="array"&&r.push(`if (Array.isArray(${a})) { for (const __i of ${a}) { if (__i instanceof Error && __i.path !== undefined) return __i } }`);let p=Et(a,c.type);if(p){let f=c.type.kind==="union"?c.type.members.map(u=>u.kind).join(" | "):c.type.kind;c.required?r.push(`if (${p}) return __tjs.typeError('${l}', '${f}', ${a});`):r.push(`if (${a} !== undefined && ${p}) return __tjs.typeError('${l}', '${f}', ${a});`)}if(c.type.kind==="function"){let f=so(a,c.type,l);f&&(r.push(f),r.push(`if (${a} instanceof Error) return ${a};`))}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${o}');`),{preamble:r.join(`
343
- `),suffix:"__tjs.popStack();"})}function Qr(e){let n="",t=0;for(let r=0;r<e.length;r++){let s=e[r];if(s==="{"||s==="["||s==="(")t++,n+=s;else if(s==="}"||s==="]"||s===")")t--,n+=s;else if(s==="'"||s==='"'||s==="`"){for(n+=s,r++;r<e.length&&e[r]!==s;)e[r]==="\\"&&(n+=e[r++]),n+=e[r++];r<e.length&&(n+=e[r])}else t===1&&s==="="&&e[r-1]!=="!"&&e[r+1]!=="="?n+=":":n+=s}return n}function Xi(e,n){let r=new RegExp(`function\\s+${n}\\s*\\([^)]*\\)\\s*(:[?!]?)\\s*`,"g").exec(e);if(!r)return null;let s=e.slice(r.index+r[0].length);return wt(s)}function Qi(e,n){let r=new RegExp(`function\\s+${n}\\s*\\([^)]*\\)\\s*:([?!]?)`,"g").exec(e);if(!r)return;let s=r[1];if(s==="?")return"safe";if(s==="!")return"unsafe"}function eo(e){let n=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return n?n[1].trim():void 0}function to(e,n){let t=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${n}\\s*\\(`,"m"),r=e.match(t);return r?parseInt(r[1],10):void 0}function Tt(e,n={}){let{filename:t="<source>",runTests:r=!0,debug:s=!1,resolvedImports:o={}}=n,i=[];e=Ft(e);let c=eo(e)||t,{code:l,tests:p,mocks:f,testRunner:u}=Wt(e),{ast:m,originalSource:y,requiredParams:b,unsafeFunctions:S}=xe(l,{filename:t,colonShorthand:!0,dialect:n.dialect,moduleLoader:n.moduleLoader}),E=no(m),w=pt(l,{dialect:n.dialect,moduleLoader:n.moduleLoader,filename:t});for(let v of p)v.body=Ue(v.body),w.tjsModes.tjsEquals&&(v.body=We(v.body)),w.tjsModes.tjsStandard&&(v.body=kn(v.body));for(let v of f)v.body=Ue(v.body),w.tjsModes.tjsEquals&&(v.body=We(v.body)),w.tjsModes.tjsStandard&&(v.body=kn(v.body));let h={},x=[],_=[];for(let v of E){let O=v.id?.name||"anonymous",N=Xi(l,O),se;if(N&&N.includes("="))try{let Z=N.matchAll(/(\w+)\s*=\s*/g),Q=Qr(N),fe=new Function(`return ${Q}`)(),ee={};for(let Nt of Z){let De=Nt[1];De in fe&&(ee[De]=fe[De])}Object.keys(ee).length>0&&(se=ee)}catch{}let{types:ue,warnings:us}=Hi(v,y,b,N,l);i.push(...us),h[O]=ue;for(let Z of v.params)if(Z.type==="AssignmentPattern"&&Z.left.type==="Identifier"&&Z.right.type==="Identifier"){let Q=Z.left.name,fe=Z.right.name,ee=h[fe];if(ee&&ue.params[Q]){let Nt=Object.entries(ee.params).map(([ys,gs])=>({name:ys,type:gs.type})),De=ee.returns??{kind:"any"};ue.params[Q].type={kind:"function",params:Nt,returns:De}}}for(let Z of v.params)if(Z.type==="AssignmentPattern"){let Q=Z.left?.name||Z.left?.value,fe=Q?ue.params[Q]:null;if(fe?.required&&fe.default===null)_.push({start:Z.left.end,end:Z.right.end});else{let ee=Z.right;ee.type==="BinaryExpression"&&ee.operator==="|"&&_.push({start:ee.left.end,end:ee.end})}}let Pn=w.moduleSafety==="none"||S.has(O),fs=w.safeFunctions.has(O),ps=Qi(l,O),ms=to(e,O),Re={file:c,line:ms??v.loc?.start.line??0,column:v.loc?.start.column??0},ds={unsafe:Pn,safe:fs,returnSafety:ps},Nn=w.polymorphicNames.has(O),Pt;if(Nn){let Z=[];for(let fe of E){let ee=fe.id?.name||"";ee.startsWith(O+"$")&&Z.push(ee)}let Q={polymorphic:!0,variants:Z};Re&&(Q.source=`${Re.file}:${Re.line}`),Pt=`${O}.__tjs = ${JSON.stringify(Q,null,2)}`}else Pt=ro(O,ue,ds,{debug:s,source:Re,returnDefaults:se});if(x.push({position:v.end,text:`
344
- ${Pt}`}),!Pn&&!Nn){let Z=`${Re.file}:${Re.line}`,Q=Yi(O,ue,Z);Q&&v.body&&v.body.start!==void 0&&(x.push({position:v.body.start+1,text:`
345
+ `.trim(),l=r.map(({_exportName:f,...p})=>p);return{code:c,results:l}}import*as is from"acorn";function Cn(e,n){let t=[];function r(o){t.push({start:o.start,end:o.end,newText:`__tjs.toBool(${te(o,n)})`})}function s(o){if(!(!o||typeof o!="object"||!("type"in o))){switch(o.type){case"IfStatement":case"WhileStatement":case"DoWhileStatement":{let i=o;r(i.test),i.consequent&&s(i.consequent),i.alternate&&s(i.alternate),i.body&&s(i.body);return}case"ForStatement":{let i=o;i.init&&s(i.init),i.test&&r(i.test),i.update&&s(i.update),i.body&&s(i.body);return}case"ConditionalExpression":{let i=o;t.push({start:i.start,end:i.end,newText:`__tjs.toBool(${te(i.test,n)})?(${te(i.consequent,n)}):(${te(i.alternate,n)})`});return}case"LogicalExpression":{let i=o;if(i.operator==="&&"||i.operator==="||"){t.push({start:i.start,end:i.end,newText:te(o,n)});return}break}case"UnaryExpression":{let i=o;if(i.operator==="!"){t.push({start:i.start,end:i.end,newText:`!__tjs.toBool(${te(i.argument,n)})`});return}break}case"CallExpression":{let i=o;if(i.callee&&i.callee.type==="Identifier"&&i.callee.name==="Boolean"&&i.arguments.length===1&&i.arguments[0].type!=="SpreadElement"){t.push({start:i.start,end:i.end,newText:`__tjs.toBool(${te(i.arguments[0],n)})`});return}break}}uo(o,s)}}return s(e),fo(t)}function te(e,n){if(!e)return"";switch(e.type){case"LogicalExpression":{let t=e,r=te(t.left,n),s=te(t.right,n);return t.operator==="&&"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?(${s}):__tjs__t)(${r})`:t.operator==="||"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?__tjs__t:(${s}))(${r})`:`(${r})??(${s})`}case"ConditionalExpression":{let t=e;return`__tjs.toBool(${te(t.test,n)})?(${te(t.consequent,n)}):(${te(t.alternate,n)})`}case"UnaryExpression":{let t=e;return t.operator==="!"?`!__tjs.toBool(${te(t.argument,n)})`:Mn(e,n)}case"CallExpression":{let t=e;return t.callee&&t.callee.type==="Identifier"&&t.callee.name==="Boolean"&&t.arguments.length===1&&t.arguments[0].type!=="SpreadElement"?`__tjs.toBool(${te(t.arguments[0],n)})`:Mn(e,n)}}return Mn(e,n)}function Mn(e,n){let t=e.start,r=e.end;if(typeof t!="number"||typeof r!="number")return"";let s=os(e);if(s.length===0)return n.slice(t,r);s.sort((a,c)=>a.start-c.start);let o="",i=t;for(let a of s)a.start<i||(a.start>i&&(o+=n.slice(i,a.start)),o+=te(a,n),i=a.end);return i<r&&(o+=n.slice(i,r)),o}function uo(e,n){for(let t of os(e))n(t)}function os(e){let n=[];for(let t in e){if(t==="type"||t==="start"||t==="end"||t==="loc")continue;let r=e[t];if(Array.isArray(r))for(let s of r)s&&typeof s=="object"&&typeof s.type=="string"&&n.push(s);else r&&typeof r=="object"&&typeof r.type=="string"&&n.push(r)}return n}function fo(e){let n=[...e].sort((s,o)=>s.start-o.start||o.end-s.end),t=[],r=-1;for(let s of n)s.start>=r&&(t.push(s),r=s.end);return t}function Nn(e){let n;try{n=is.parse(`function __wrap__(){${e}}`,{ecmaVersion:2022,sourceType:"module",locations:!1})}catch{return e}let t=`function __wrap__(){${e}}`,r=Cn(n,t);if(r.length===0)return e;r.sort((a,c)=>c.start-a.start);let s=t;for(let a of r)s=s.slice(0,a.start)+a.newText+s.slice(a.end);return s.slice("function __wrap__(){".length,s.length-"}".length)}function po(e,n,t){if(!e||!n)return!1;let r=new RegExp(`function\\s+${n}\\s*\\([^)]*?\\b${t}\\s*([=:])`,"s"),s=e.match(r);return s?s[1]===":":!1}function mo(e,n,t,r,s){let o=[],i=He(n,e),a={},c=!1,l,f;if(e.params.length===1&&(e.params[0].type==="ObjectPattern"||e.params[0].type==="AssignmentPattern"&&e.params[0].left.type==="ObjectPattern")){c=!0;let m=e.params[0],y=m.type==="ObjectPattern"?m:m.left,g=ge(y,t);if(g.type.kind==="object"&&g.type.destructuredParams){l={},f=new Set;for(let[x,E]of Object.entries(g.type.destructuredParams))a[x]={...E,description:i.params[x]},l[x]=E.type,E.required&&f.add(x)}}else for(let m of e.params)if(m.type==="Identifier"){let y=ge(m,t);a[m.name]={...y,required:t.has(m.name),description:i.params[m.name]}}else if(m.type==="AssignmentPattern"&&m.left.type==="Identifier"){let y=ge(m,t),g=po(s||"",e.id?.name||"",m.left.name);a[m.left.name]={...y,required:g,default:g?null:y.example??y.default,description:i.params[m.left.name]}}else if(m.type==="ObjectPattern"){let y=ge(m,t);if(y.type.kind==="object"&&y.type.destructuredParams)for(let[g,x]of Object.entries(y.type.destructuredParams))a[g]={...x,description:i.params[g]}}else if(m.type==="RestElement"&&m.argument?.type==="Identifier"){let y=m.argument.name,g=n.match(new RegExp(`\\.\\.\\.${y}\\s*:\\s*([^)]+?)\\s*\\)`));if(g)try{let x=as(g[1].trim(),0,{ecmaVersion:2022}),E=Y(x);a[y]={name:y,type:E,required:!1,description:i.params[y]}}catch{a[y]={name:y,type:{kind:"array"},required:!1,description:i.params[y]}}else a[y]={name:y,type:{kind:"array"},required:!1,description:i.params[y]}}let p;if(r)try{let m=r.includes("=")?ls(r):r,y=as(m,0,{ecmaVersion:2022});p=Y(y)}catch{p={kind:"any"},o.push(`Could not parse return type: ${r}`)}return{types:{name:e.id?.name||"anonymous",params:a,returns:p,description:i.description,isDestructuredParam:c,destructuredShape:l,destructuredRequired:f},warnings:o}}function yo(e,n,t){let r=[],s=t?`${t}:`:"",o=t?`${t}:${e}`:e;if(n.isDestructuredParam&&n.destructuredShape){let a=n.destructuredShape,c=n.destructuredRequired||new Set,l=Object.keys(a);if(l.length===0)return null;for(let f of l)r.push(`if (${f} instanceof Error) return ${f};`);for(let[f,p]of Object.entries(a)){let u=c.has(f),m=`${s}${e}.${f}`,y=Pt(f,p);if(y){let g=p.kind;u?r.push(`if (${y}) return __tjs.typeError('${m}', '${g}', ${f});`):r.push(`if (${f} !== undefined && ${y}) return __tjs.typeError('${m}', '${g}', ${f});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${o}');`),{preamble:r.join(`
346
+ `),suffix:"__tjs.popStack();"})}let i=Object.entries(n.params);if(i.length===0)return null;for(let[a]of i)r.push(`if (${a} instanceof Error) return ${a};`);for(let[a,c]of i){let l=`${s}${e}.${a}`;c.type.kind==="array"&&r.push(`if (Array.isArray(${a})) { for (const __i of ${a}) { if (__i instanceof Error && __i.path !== undefined) return __i } }`);let f=Pt(a,c.type);if(f){let p=c.type.kind==="union"?c.type.members.map(u=>u.kind).join(" | "):c.type.kind;c.required?r.push(`if (${f}) return __tjs.typeError('${l}', '${p}', ${a});`):r.push(`if (${a} !== undefined && ${f}) return __tjs.typeError('${l}', '${p}', ${a});`)}if(c.type.kind==="function"){let p=$o(a,c.type,l);p&&(r.push(p),r.push(`if (${a} instanceof Error) return ${a};`))}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${o}');`),{preamble:r.join(`
347
+ `),suffix:"__tjs.popStack();"})}function ls(e){let n="",t=0;for(let r=0;r<e.length;r++){let s=e[r];if(s==="{"||s==="["||s==="(")t++,n+=s;else if(s==="}"||s==="]"||s===")")t--,n+=s;else if(s==="'"||s==='"'||s==="`"){for(n+=s,r++;r<e.length&&e[r]!==s;)e[r]==="\\"&&(n+=e[r++]),n+=e[r++];r<e.length&&(n+=e[r])}else t===1&&s==="="&&e[r-1]!=="!"&&e[r+1]!=="="?n+=":":n+=s}return n}function go(e,n){let r=new RegExp(`function\\s+${n}\\s*\\([^)]*\\)\\s*(:[?!]?)\\s*`,"g").exec(e);if(!r)return null;let s=e.slice(r.index+r[0].length);return jt(s)}function ho(e,n){let r=new RegExp(`function\\s+${n}\\s*\\([^)]*\\)\\s*:([?!]?)`,"g").exec(e);if(!r)return;let s=r[1];if(s==="?")return"safe";if(s==="!")return"unsafe"}function bo(e){let n=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return n?n[1].trim():void 0}function xo(e,n){let t=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${n}\\s*\\(`,"m"),r=e.match(t);return r?parseInt(r[1],10):void 0}function Rt(e,n={}){let{filename:t="<source>",runTests:r=!0,debug:s=!1,resolvedImports:o={}}=n,i=[];e=zt(e);let c=bo(e)||t,{code:l,tests:f,mocks:p,testRunner:u}=Ht(e),{ast:m,originalSource:y,requiredParams:g,unsafeFunctions:x}=Se(l,{filename:t,colonShorthand:!0,dialect:n.dialect,moduleLoader:n.moduleLoader}),E=_o(m),S=bt(l,{dialect:n.dialect,moduleLoader:n.moduleLoader,filename:t});for(let v of S.predicates)v.verified||i.push(`${v.kind} '${v.name}': predicate is not verifiable, compiled as a plain function (not fuel-bounded, not safe on untrusted data)${v.reason?` \u2014 ${v.reason.replace(/\s+/g," ").trim()}`:""}`);let b=S.predicates.length?S.predicates:void 0;for(let v of f)v.body=ze(v.body),S.tjsModes.tjsEquals&&(v.body=Ge(v.body)),S.tjsModes.tjsStandard&&(v.body=Nn(v.body));for(let v of p)v.body=ze(v.body),S.tjsModes.tjsEquals&&(v.body=Ge(v.body)),S.tjsModes.tjsStandard&&(v.body=Nn(v.body));let h={},w=[],_=[];for(let v of E){let O=v.id?.name||"anonymous",N=go(l,O),se;if(N&&N.includes("="))try{let G=N.matchAll(/(\w+)\s*=\s*/g),Q=ls(N),fe=new Function(`return ${Q}`)(),ee={};for(let Dt of G){let Ue=Dt[1];Ue in fe&&(ee[Ue]=fe[Ue])}Object.keys(ee).length>0&&(se=ee)}catch{}let{types:ue,warnings:xs}=mo(v,y,g,N,l);i.push(...xs),h[O]=ue;for(let G of v.params)if(G.type==="AssignmentPattern"&&G.left.type==="Identifier"&&G.right.type==="Identifier"){let Q=G.left.name,fe=G.right.name,ee=h[fe];if(ee&&ue.params[Q]){let Dt=Object.entries(ee.params).map(([Es,Ts])=>({name:Es,type:Ts.type})),Ue=ee.returns??{kind:"any"};ue.params[Q].type={kind:"function",params:Dt,returns:Ue}}}for(let G of v.params)if(G.type==="AssignmentPattern"){let Q=G.left?.name||G.left?.value,fe=Q?ue.params[Q]:null;if(fe?.required&&fe.default===null)_.push({start:G.left.end,end:G.right.end});else{let ee=G.right;ee.type==="BinaryExpression"&&ee.operator==="|"&&_.push({start:ee.left.end,end:ee.end})}}let Fn=S.moduleSafety==="none"||x.has(O),_s=S.safeFunctions.has(O),ws=ho(l,O),$s=xo(e,O),Ce={file:c,line:$s??v.loc?.start.line??0,column:v.loc?.start.column??0},Ss={unsafe:Fn,safe:_s,returnSafety:ws},qn=S.polymorphicNames.has(O),Bt;if(qn){let G=[];for(let fe of E){let ee=fe.id?.name||"";ee.startsWith(O+"$")&&G.push(ee)}let Q={polymorphic:!0,variants:G};Ce&&(Q.source=`${Ce.file}:${Ce.line}`),Bt=`${O}.__tjs = ${JSON.stringify(Q,null,2)}`}else Bt=wo(O,ue,Ss,{debug:s,source:Ce,returnDefaults:se});if(w.push({position:v.end,text:`
348
+ ${Bt}`}),!Fn&&!qn){let G=`${Ce.file}:${Ce.line}`,Q=yo(O,ue,G);Q&&v.body&&v.body.start!==void 0&&(w.push({position:v.body.start+1,text:`
345
349
  ${Q.preamble}
346
- `}),Q.suffix&&x.push({position:v.body.end-1,text:`
350
+ `}),Q.suffix&&w.push({position:v.body.end-1,text:`
347
351
  ${Q.suffix}
348
- `}))}}if(w.tjsModes.tjsStandard){let v=Tn(m,w.source);for(let O of v)_.push({start:O.start,end:O.end}),x.push({position:O.start,text:O.newText})}_.sort((v,O)=>O.start-v.start);let g=w.source;for(let{start:v,end:O}of _)g=g.slice(0,v)+g.slice(O);for(let v of x){let O=0;for(let N of _)N.start<v.position&&(O+=N.end-N.start);v.position-=O}x.sort((v,O)=>O.position-v.position);for(let{position:v,text:O}of x)g=g.slice(0,v)+O+g.slice(v);let $=g.includes("__tjs.typeError("),k=g.includes("__tjs.pushStack("),j=g.includes("Is("),A=g.includes("IsNot("),M=g.includes("Eq("),P=g.includes("NotEq("),R=g.includes("TypeOf("),I=/\bType\(/.test(g),B=/\bGeneric\(/.test(g),J=/\bFunctionPredicate\(/.test(g),V=/\bEnum\(/.test(g),X=/\bUnion\(/.test(g),Ae=g.includes("__tjs.bang("),it=g.includes("__tjs.toBool("),Ct=g.includes("__tjs.checkFnShape("),Mn=w.tjsModes.tjsSafeEval;if($||k||j||A||M||P||R||I||B||J||V||X||Ae||it||Ct||Mn){let v=[];$&&v.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),k&&v.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),M&&v.push("function Eq(a,b){if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a===null||a===undefined)&&(b===null||b===undefined))return true;return false}"),P&&v.push("function NotEq(a,b){return!Eq(a,b)}"),R&&v.push("function TypeOf(v){return v===null?'null':typeof v}"),j&&v.push("const tjsEquals=Symbol.for('tjs.equals');function Is(a,b){if(a!=null&&typeof a==='object'&&typeof a[tjsEquals]==='function')return a[tjsEquals](b);if(b!=null&&typeof b==='object'&&typeof b[tjsEquals]==='function')return b[tjsEquals](a);if(a!=null&&typeof a==='object'&&typeof a.Equals==='function')return a.Equals(b);if(b!=null&&typeof b==='object'&&typeof b.Equals==='function')return b.Equals(a);if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a==null)&&(b==null))return true;if(a==null||b==null)return false;if(typeof a!==typeof b)return false;if(typeof a!=='object')return false;if(a instanceof Set&&b instanceof Set){if(a.size!==b.size)return false;for(const v of a)if(!b.has(v))return false;return true}if(a instanceof Map&&b instanceof Map){if(a.size!==b.size)return false;for(const[k,v]of a)if(!b.has(k)||!Is(v,b.get(k)))return false;return true}if(a instanceof Date&&b instanceof Date)return a.getTime()===b.getTime();if(a instanceof RegExp&&b instanceof RegExp)return a.toString()===b.toString();if(Array.isArray(a)&&Array.isArray(b)){if(a.length!==b.length)return false;return a.every((v,i)=>Is(v,b[i]))}if(Array.isArray(a)!==Array.isArray(b))return false;const ka=Object.keys(a),kb=Object.keys(b);if(ka.length!==kb.length)return false;return ka.every(k=>Is(a[k],b[k]))}"),A&&v.push("function IsNot(a,b){return!Is(a,b)}"),I&&v.push("function Type(d,p,e){const t={description:d,__runtimeType:true};if(typeof p==='function'){t.check=p;t.default=e??null}else{const ex=e??p;t.default=ex;t.check=v=>{if(ex===null)return true;return typeof v===typeof ex}}return t}"),B&&v.push("function Generic(tp,pred,d){const f=(...args)=>{const t={description:d||'generic',__runtimeType:true,check:v=>pred(v,...args)};return t};f.__runtimeType=true;f.description=d;return f}"),J&&v.push("function FunctionPredicate(n,s,b){if(Array.isArray(s)&&b){const f=(...a)=>FunctionPredicate(n,b(...a));f.typeParamNames=s.map(p=>Array.isArray(p)?p[0]:p);f.description=n;f.__runtimeType=true;return f}const spec=typeof s==='function'?{}:s||{};return{description:n,params:spec.params||{},returns:spec.returns,returnContract:spec.returnContract||'assertReturns',check:v=>typeof v==='function',__runtimeType:true}}"),V&&v.push("function Enum(d,m){const vals=typeof m==='object'?Object.values(m):[];return{description:d,check:v=>vals.includes(v),values:vals,__runtimeType:true}}"),X&&v.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),it&&v.push("function toBool(v){if(v instanceof Boolean||v instanceof Number||v instanceof String)return Boolean(v.valueOf());return Boolean(v)}"),Ct&&($||v.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),v.push(`function checkFnShape(fn,expectedParams,expectedReturn,path){if(typeof fn!=='function')return fn;const meta=fn.__tjs;if(!meta||!meta.params)return fn;const entries=Object.entries(meta.params);for(let i=0;i<expectedParams.length;i++){const e=expectedParams[i];if(e==='any')continue;const a=entries[i];if(!a)continue;const ak=a[1]&&a[1].type&&a[1].type.kind;if(!ak||ak==='any')continue;if(ak!==e)return new MonadicError("Expected (...arg"+i+": "+e+", ...) for '"+path+"', but callback declares arg"+i+" as "+ak,path+"(arg"+i+")",e,ak)}if(expectedReturn!=='any'&&meta.returns){const ar=(meta.returns.type&&meta.returns.type.kind)||meta.returns.kind;if(ar&&ar!=='any'&&ar!==expectedReturn)return new MonadicError("Expected callback returning "+expectedReturn+" for '"+path+"', but callback returns "+ar,path+"(return)",expectedReturn,ar)}return fn}`)),Ae&&($||v.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),v.push("function bang(o,p){if(o===null||o===undefined)return typeError('bang.'+p,'non-null',o);if(isMonadicError(o))return o;return o[p]}"));let O=v.length>0?v.join(`;
352
+ `}))}}if(S.tjsModes.tjsStandard){let v=Cn(m,S.source);for(let O of v)_.push({start:O.start,end:O.end}),w.push({position:O.start,text:O.newText})}_.sort((v,O)=>O.start-v.start);let $=S.source;for(let{start:v,end:O}of _)$=$.slice(0,v)+$.slice(O);for(let v of w){let O=0;for(let N of _)N.start<v.position&&(O+=N.end-N.start);v.position-=O}w.sort((v,O)=>O.position-v.position);for(let{position:v,text:O}of w)$=$.slice(0,v)+O+$.slice(v);let T=$.includes("__tjs.typeError("),j=$.includes("__tjs.pushStack("),P=$.includes("Is("),A=$.includes("IsNot("),C=$.includes("Eq("),R=$.includes("NotEq("),I=$.includes("TypeOf("),B=/\bType\(/.test($),J=/\bGeneric\(/.test($),V=/\bFunctionPredicate\(/.test($),X=/\bEnum\(/.test($),Me=/\bUnion\(/.test($),ct=$.includes("__tjs.bang("),It=$.includes("__tjs.toBool("),Ot=$.includes("__tjs.checkFnShape("),Bn=S.tjsModes.tjsSafeEval;if(T||j||P||A||C||R||I||B||J||V||X||Me||ct||It||Ot||Bn){let v=[];T&&v.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),j&&v.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),C&&v.push("function Eq(a,b){if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a===null||a===undefined)&&(b===null||b===undefined))return true;return false}"),R&&v.push("function NotEq(a,b){return!Eq(a,b)}"),I&&v.push("function TypeOf(v){return v===null?'null':typeof v}"),P&&v.push("const tjsEquals=Symbol.for('tjs.equals');function Is(a,b){if(a!=null&&typeof a==='object'&&typeof a[tjsEquals]==='function')return a[tjsEquals](b);if(b!=null&&typeof b==='object'&&typeof b[tjsEquals]==='function')return b[tjsEquals](a);if(a!=null&&typeof a==='object'&&typeof a.Equals==='function')return a.Equals(b);if(b!=null&&typeof b==='object'&&typeof b.Equals==='function')return b.Equals(a);if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a==null)&&(b==null))return true;if(a==null||b==null)return false;if(typeof a!==typeof b)return false;if(typeof a!=='object')return false;if(a instanceof Set&&b instanceof Set){if(a.size!==b.size)return false;for(const v of a)if(!b.has(v))return false;return true}if(a instanceof Map&&b instanceof Map){if(a.size!==b.size)return false;for(const[k,v]of a)if(!b.has(k)||!Is(v,b.get(k)))return false;return true}if(a instanceof Date&&b instanceof Date)return a.getTime()===b.getTime();if(a instanceof RegExp&&b instanceof RegExp)return a.toString()===b.toString();if(Array.isArray(a)&&Array.isArray(b)){if(a.length!==b.length)return false;return a.every((v,i)=>Is(v,b[i]))}if(Array.isArray(a)!==Array.isArray(b))return false;const ka=Object.keys(a),kb=Object.keys(b);if(ka.length!==kb.length)return false;return ka.every(k=>Is(a[k],b[k]))}"),A&&v.push("function IsNot(a,b){return!Is(a,b)}"),B&&v.push("function Type(d,p,e){const t={description:d,__runtimeType:true};if(typeof p==='function'){t.check=p;t.default=e??null}else{const ex=e??p;t.default=ex;t.check=v=>{if(ex===null)return true;return typeof v===typeof ex}}return t}"),J&&v.push("function Generic(tp,pred,d){const f=(...args)=>{const t={description:d||'generic',__runtimeType:true,check:v=>pred(v,...args)};return t};f.__runtimeType=true;f.description=d;return f}"),V&&v.push("function FunctionPredicate(n,s,b){if(Array.isArray(s)&&b){const f=(...a)=>FunctionPredicate(n,b(...a));f.typeParamNames=s.map(p=>Array.isArray(p)?p[0]:p);f.description=n;f.__runtimeType=true;return f}const spec=typeof s==='function'?{}:s||{};return{description:n,params:spec.params||{},returns:spec.returns,returnContract:spec.returnContract||'assertReturns',check:v=>typeof v==='function',__runtimeType:true}}"),X&&v.push("function Enum(d,m){const vals=typeof m==='object'?Object.values(m):[];return{description:d,check:v=>vals.includes(v),values:vals,__runtimeType:true}}"),Me&&v.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),It&&v.push("function toBool(v){if(v instanceof Boolean||v instanceof Number||v instanceof String)return Boolean(v.valueOf());return Boolean(v)}"),Ot&&(T||v.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),v.push(`function checkFnShape(fn,expectedParams,expectedReturn,path){if(typeof fn!=='function')return fn;const meta=fn.__tjs;if(!meta||!meta.params)return fn;const entries=Object.entries(meta.params);for(let i=0;i<expectedParams.length;i++){const e=expectedParams[i];if(e==='any')continue;const a=entries[i];if(!a)continue;const ak=a[1]&&a[1].type&&a[1].type.kind;if(!ak||ak==='any')continue;if(ak!==e)return new MonadicError("Expected (...arg"+i+": "+e+", ...) for '"+path+"', but callback declares arg"+i+" as "+ak,path+"(arg"+i+")",e,ak)}if(expectedReturn!=='any'&&meta.returns){const ar=(meta.returns.type&&meta.returns.type.kind)||meta.returns.kind;if(ar&&ar!=='any'&&ar!==expectedReturn)return new MonadicError("Expected callback returning "+expectedReturn+" for '"+path+"', but callback returns "+ar,path+"(return)",expectedReturn,ar)}return fn}`)),ct&&(T||v.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),v.push("function bang(o,p){if(o===null||o===undefined)return typeError('bang.'+p,'non-null',o);if(isMonadicError(o))return o;return o[p]}"));let O=v.length>0?v.join(`;
349
353
  `)+`;
350
- `:"",N=[];$&&N.push("typeError","isMonadicError"),k&&N.push("pushStack","popStack","getStack"),M&&N.push("Eq"),P&&N.push("NotEq"),R&&N.push("TypeOf"),j&&N.push("Is","tjsEquals"),A&&N.push("IsNot"),I&&N.push("Type"),B&&N.push("Generic"),J&&N.push("FunctionPredicate"),V&&N.push("Enum"),X&&N.push("Union"),it&&N.push("toBool"),Ct&&(N.push("checkFnShape"),$||N.push("typeError","isMonadicError")),Ae&&(N.push("bang"),$||N.push("typeError","isMonadicError"));let se=N.length>0?`{${N.join(",")}}`:"undefined";g=O+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${se};
351
- `+g}Mn&&(g=`import { Eval, SafeFunction } from 'tjs-lang';
352
- `+g);let Fe;if(r){let v=Wr(e);Fe=Lr(p,f,v,g,o,w.extensions);let O=Fe.filter(N=>!N.passed&&!N.inconclusive);if(O.length>0&&r===!0){let N=O.map(se=>{if(se.isSignatureTest)return` Function signature example is inconsistent:
354
+ `:"",N=[];T&&N.push("typeError","isMonadicError"),j&&N.push("pushStack","popStack","getStack"),C&&N.push("Eq"),R&&N.push("NotEq"),I&&N.push("TypeOf"),P&&N.push("Is","tjsEquals"),A&&N.push("IsNot"),B&&N.push("Type"),J&&N.push("Generic"),V&&N.push("FunctionPredicate"),X&&N.push("Enum"),Me&&N.push("Union"),It&&N.push("toBool"),Ot&&(N.push("checkFnShape"),T||N.push("typeError","isMonadicError")),ct&&(N.push("bang"),T||N.push("typeError","isMonadicError"));let se=N.length>0?`{${N.join(",")}}`:"undefined";$=O+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${se};
355
+ `+$}Bn&&($=`import { Eval, SafeFunction } from 'tjs-lang';
356
+ `+$);let We;if(r){let v=Xr(e);We=Qr(f,p,v,$,o,S.extensions);let O=We.filter(N=>!N.passed&&!N.inconclusive);if(O.length>0&&r===!0){let N=O.map(se=>{if(se.isSignatureTest)return` Function signature example is inconsistent:
353
357
  ${se.error}`;let ue=se.line?` (line ${se.line})`:"";return` Test '${se.description}'${ue} failed:
354
358
  ${se.error}`});throw new Error(`Transpile-time test failures:
355
359
  ${N.join(`
356
- `)}`)}}if(r==="only")return{code:"",types:h,metadata:h,testResults:Fe,testCount:Fe?.length};let Cn;if(w.wasmBlocks.length>0){let v=Gr(w.wasmBlocks);v.code&&(g=v.code+`
357
- `+g),Cn=v.results}return{code:g,types:h,metadata:h,warnings:i.length>0?i:void 0,testRunner:p.length>0?u:void 0,testCount:p.length>0?p.length:void 0,testResults:Fe,wasmCompiled:Cn}}function no(e){let n=[];for(let t of e.body)t.type==="FunctionDeclaration"?n.push(t):(t.type==="ExportNamedDeclaration"&&t.declaration?.type==="FunctionDeclaration"||t.type==="ExportDefaultDeclaration"&&t.declaration?.type==="FunctionDeclaration")&&n.push(t.declaration);return n}function nt(e){let n={kind:e.kind};return e.nullable&&(n.nullable=!0),e.items&&(n.items=nt(e.items)),e.shape&&(n.shape=Object.fromEntries(Object.entries(e.shape).map(([t,r])=>[t,nt(r)]))),e.members&&(n.members=e.members.map(nt)),n}function ro(e,n,t={},r={}){let s={};for(let[i,a]of Object.entries(n.params))s[i]={type:nt(a.type),required:a.required},a.default!==void 0&&(s[i].default=a.default),a.description&&(s[i].description=a.description);let o={params:s};if(n.returns&&(o.returns={type:nt(n.returns)},r.returnDefaults&&(o.returns.defaults=r.returnDefaults),t.returnSafety==="safe"?o.safeReturn=!0:t.returnSafety==="unsafe"&&(o.unsafeReturn=!0)),n.description&&(o.description=n.description),t.unsafe&&(o.unsafe=!0),t.safe&&(o.safe=!0),r.source){let{file:i,line:a}=r.source;o.source=`${i}:${a}`}return`${e}.__tjs = ${JSON.stringify(o,null,2)}`}function Et(e,n){let t;switch(n.kind){case"string":t=`typeof ${e} !== 'string'`;break;case"number":t=`typeof ${e} !== 'number'`;break;case"integer":t=`(typeof ${e} !== 'number' || !Number.isInteger(${e}))`;break;case"non-negative-integer":t=`(typeof ${e} !== 'number' || !Number.isInteger(${e}) || ${e} < 0)`;break;case"boolean":t=`typeof ${e} !== 'boolean'`;break;case"null":return`${e} !== null`;case"undefined":return`${e} !== undefined`;case"array":{let r=n.items&&n.items.kind!=="any"?Et("__a",n.items):null;r?t=`(!Array.isArray(${e}) || ${e}.some(__a => ${r}))`:t=`!Array.isArray(${e})`;break}case"object":t=`(typeof ${e} !== 'object' || ${e} === null || Array.isArray(${e}))`;break;case"function":t=`typeof ${e} !== 'function'`;break;case"union":{let r=n.members.map(s=>Et(e,s)).filter(s=>s!==null);if(r.length===0)return null;t=`(${r.join(" && ")})`;break}case"any":return null;default:return null}return t&&n.nullable&&(t=`(${e} !== null && ${t})`),t}var Xr=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function so(e,n,t){let r=n.params??[],s=n.returns??{kind:"any"},o=r.map(l=>l.type?.kind),i=o.every(l=>l&&Xr.has(l))&&Xr.has(s.kind),a=o.some(l=>l!=="any")||s.kind!=="any";if(!i||!a)return null;let c=JSON.stringify(o);return`if (typeof ${e} === 'function') ${e} = __tjs.checkFnShape(${e}, ${c}, '${s.kind}', '${t}');`}function jt(e,n={}){let{ast:t,returnType:r,originalSource:s,requiredParams:o}=xe(e,{filename:n.filename,colonShorthand:!0,vmTarget:!0}),{entry:i,helpers:a}=pr(t,n.filename),{ast:c,signature:l,warnings:p}=qt(i,s,r,n,o,a.size>0?a:void 0);return{ast:c,signature:l,warnings:p}}function io(e,...n){if(typeof e=="string")return jt(e).ast;let t=e.reduce((r,s,o)=>r+s+(n[o]!==void 0?String(n[o]):""),"");return jt(t).ast}function oo(e,n,t){let{ast:r,signature:s}=jt(e),o=async i=>(await n.run(r,i,t)).result;return o.signature=s,o.ast=r,o}function kt(e){switch(e.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:e.items?kt(e.items):{}};case"object":return e.shape?{type:"object",properties:Object.fromEntries(Object.entries(e.shape).map(([n,t])=>[n,kt(t)]))}:{type:"object"};case"union":return e.members?{anyOf:e.members.map(kt)}:{};default:return{}}}function ao(e){return Object.entries(e).map(([n,t])=>{let r=t.signature,s={},o=[];for(let[i,a]of Object.entries(r.parameters))s[i]=kt(a.type),a.description&&(s[i].description=a.description),a.required&&o.push(i);return{type:"function",function:{name:n,description:r.description,parameters:{type:"object",properties:s,required:o}}}})}function co(e,n,...t){if(typeof e=="string")return Tt(e,n);let r=n!==void 0?[n,...t]:t,s=e.reduce((o,i,a)=>o+i+(r[a]!==void 0?String(r[a]):""),"");return Tt(s)}var lo=/\.[mc]?js$/i,uo=/\.[mc]?ts$/i,fo=/\.tjs$/i;function es(e){return fo.test(e)?"tjs":lo.test(e)?"js":uo.test(e)?"ts":"tjs"}function po(e){return es(e)==="js"?"js":"tjs"}import*as At from"acorn";function ae(e,n,t,r,s){t||(t=T),(function o(i,a,c){var l=c||i.type;t[l](i,a,o),n[l]&&n[l](i,a)})(e,r,s)}function ts(e,n,t,r,s){var o=[];t||(t=T),(function i(a,c,l){var p=l||a.type,f=a!==o[o.length-1];f&&o.push(a),t[p](a,c,i),n[p]&&n[p](a,c||o,o),f&&o.pop()})(e,r,s)}function jn(e,n,t){t(e,n)}function ve(e,n,t){}var T={};T.Program=T.BlockStatement=T.StaticBlock=function(e,n,t){for(var r=0,s=e.body;r<s.length;r+=1){var o=s[r];t(o,n,"Statement")}};T.Statement=jn;T.EmptyStatement=ve;T.ExpressionStatement=T.ParenthesizedExpression=T.ChainExpression=function(e,n,t){return t(e.expression,n,"Expression")};T.IfStatement=function(e,n,t){t(e.test,n,"Expression"),t(e.consequent,n,"Statement"),e.alternate&&t(e.alternate,n,"Statement")};T.LabeledStatement=function(e,n,t){return t(e.body,n,"Statement")};T.BreakStatement=T.ContinueStatement=ve;T.WithStatement=function(e,n,t){t(e.object,n,"Expression"),t(e.body,n,"Statement")};T.SwitchStatement=function(e,n,t){t(e.discriminant,n,"Expression");for(var r=0,s=e.cases;r<s.length;r+=1){var o=s[r];t(o,n)}};T.SwitchCase=function(e,n,t){e.test&&t(e.test,n,"Expression");for(var r=0,s=e.consequent;r<s.length;r+=1){var o=s[r];t(o,n,"Statement")}};T.ReturnStatement=T.YieldExpression=T.AwaitExpression=function(e,n,t){e.argument&&t(e.argument,n,"Expression")};T.ThrowStatement=T.SpreadElement=function(e,n,t){return t(e.argument,n,"Expression")};T.TryStatement=function(e,n,t){t(e.block,n,"Statement"),e.handler&&t(e.handler,n),e.finalizer&&t(e.finalizer,n,"Statement")};T.CatchClause=function(e,n,t){e.param&&t(e.param,n,"Pattern"),t(e.body,n,"Statement")};T.WhileStatement=T.DoWhileStatement=function(e,n,t){t(e.test,n,"Expression"),t(e.body,n,"Statement")};T.ForStatement=function(e,n,t){e.init&&t(e.init,n,"ForInit"),e.test&&t(e.test,n,"Expression"),e.update&&t(e.update,n,"Expression"),t(e.body,n,"Statement")};T.ForInStatement=T.ForOfStatement=function(e,n,t){t(e.left,n,"ForInit"),t(e.right,n,"Expression"),t(e.body,n,"Statement")};T.ForInit=function(e,n,t){e.type==="VariableDeclaration"?t(e,n):t(e,n,"Expression")};T.DebuggerStatement=ve;T.FunctionDeclaration=function(e,n,t){return t(e,n,"Function")};T.VariableDeclaration=function(e,n,t){for(var r=0,s=e.declarations;r<s.length;r+=1){var o=s[r];t(o,n)}};T.VariableDeclarator=function(e,n,t){t(e.id,n,"Pattern"),e.init&&t(e.init,n,"Expression")};T.Function=function(e,n,t){e.id&&t(e.id,n,"Pattern");for(var r=0,s=e.params;r<s.length;r+=1){var o=s[r];t(o,n,"Pattern")}t(e.body,n,e.expression?"Expression":"Statement")};T.Pattern=function(e,n,t){e.type==="Identifier"?t(e,n,"VariablePattern"):e.type==="MemberExpression"?t(e,n,"MemberPattern"):t(e,n)};T.VariablePattern=ve;T.MemberPattern=jn;T.RestElement=function(e,n,t){return t(e.argument,n,"Pattern")};T.ArrayPattern=function(e,n,t){for(var r=0,s=e.elements;r<s.length;r+=1){var o=s[r];o&&t(o,n,"Pattern")}};T.ObjectPattern=function(e,n,t){for(var r=0,s=e.properties;r<s.length;r+=1){var o=s[r];o.type==="Property"?(o.computed&&t(o.key,n,"Expression"),t(o.value,n,"Pattern")):o.type==="RestElement"&&t(o.argument,n,"Pattern")}};T.Expression=jn;T.ThisExpression=T.Super=T.MetaProperty=ve;T.ArrayExpression=function(e,n,t){for(var r=0,s=e.elements;r<s.length;r+=1){var o=s[r];o&&t(o,n,"Expression")}};T.ObjectExpression=function(e,n,t){for(var r=0,s=e.properties;r<s.length;r+=1){var o=s[r];t(o,n)}};T.FunctionExpression=T.ArrowFunctionExpression=T.FunctionDeclaration;T.SequenceExpression=function(e,n,t){for(var r=0,s=e.expressions;r<s.length;r+=1){var o=s[r];t(o,n,"Expression")}};T.TemplateLiteral=function(e,n,t){for(var r=0,s=e.quasis;r<s.length;r+=1){var o=s[r];t(o,n)}for(var i=0,a=e.expressions;i<a.length;i+=1){var c=a[i];t(c,n,"Expression")}};T.TemplateElement=ve;T.UnaryExpression=T.UpdateExpression=function(e,n,t){t(e.argument,n,"Expression")};T.BinaryExpression=T.LogicalExpression=function(e,n,t){t(e.left,n,"Expression"),t(e.right,n,"Expression")};T.AssignmentExpression=T.AssignmentPattern=function(e,n,t){t(e.left,n,"Pattern"),t(e.right,n,"Expression")};T.ConditionalExpression=function(e,n,t){t(e.test,n,"Expression"),t(e.consequent,n,"Expression"),t(e.alternate,n,"Expression")};T.NewExpression=T.CallExpression=function(e,n,t){if(t(e.callee,n,"Expression"),e.arguments)for(var r=0,s=e.arguments;r<s.length;r+=1){var o=s[r];t(o,n,"Expression")}};T.MemberExpression=function(e,n,t){t(e.object,n,"Expression"),e.computed&&t(e.property,n,"Expression")};T.ExportNamedDeclaration=T.ExportDefaultDeclaration=function(e,n,t){e.declaration&&t(e.declaration,n,e.type==="ExportNamedDeclaration"||e.declaration.id?"Statement":"Expression"),e.source&&t(e.source,n,"Expression")};T.ExportAllDeclaration=function(e,n,t){e.exported&&t(e.exported,n),t(e.source,n,"Expression")};T.ImportDeclaration=function(e,n,t){for(var r=0,s=e.specifiers;r<s.length;r+=1){var o=s[r];t(o,n)}t(e.source,n,"Expression")};T.ImportExpression=function(e,n,t){t(e.source,n,"Expression")};T.ImportSpecifier=T.ImportDefaultSpecifier=T.ImportNamespaceSpecifier=T.Identifier=T.PrivateIdentifier=T.Literal=ve;T.TaggedTemplateExpression=function(e,n,t){t(e.tag,n,"Expression"),t(e.quasi,n,"Expression")};T.ClassDeclaration=T.ClassExpression=function(e,n,t){return t(e,n,"Class")};T.Class=function(e,n,t){e.id&&t(e.id,n,"Pattern"),e.superClass&&t(e.superClass,n,"Expression"),t(e.body,n)};T.ClassBody=function(e,n,t){for(var r=0,s=e.body;r<s.length;r+=1){var o=s[r];t(o,n)}};T.MethodDefinition=T.PropertyDefinition=T.Property=function(e,n,t){e.computed&&t(e.key,n,"Expression"),e.value&&t(e.value,n,"Expression")};var mo=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","String","Number","Boolean","Array","Object"]),yo=new Set(["Math","JSON","Object","Array","String","Number"]),go=new Set(["Math.random","Date.now"]),ho=new Set(["startsWith","endsWith","includes","indexOf","lastIndexOf","slice","substring","substr","toLowerCase","toUpperCase","trim","trimStart","trimEnd","split","replace","replaceAll","match","matchAll","charAt","charCodeAt","codePointAt","padStart","padEnd","repeat","concat","at","normalize","search","localeCompare","every","some","map","filter","reduce","reduceRight","find","findIndex","findLast","findLastIndex","flat","flatMap","join","keys","entries","values","forEach","test","exec","toFixed","toPrecision","toString","valueOf","hasOwnProperty"]),vn=["fetch","XMLHttpRequest","WebSocket","Date","console","setTimeout","setInterval","requestAnimationFrame","queueMicrotask","localStorage","sessionStorage","indexedDB","document","window","globalThis","self","process","require","eval","Function","import","crypto","performance","navigator"];function bo(e){let n=new Set(vn);for(let[t,r]of Object.entries(e))r?.effects==="io"&&n.add(r.op??t);return n}function st(e,n={}){let t=n.effectful??new Set(vn),r;try{r=At.parse(e,{ecmaVersion:"latest",locations:!0})}catch(i){return{safe:!1,predicates:[],diagnostics:[{predicate:"<source>",message:`parse error: ${i.message}`,line:i.loc?.line??0,column:i.loc?.column??0}]}}let s=new Set(n.knownPredicates??[]);for(let i of r.body)i.type==="FunctionDeclaration"&&i.id&&s.add(i.id.name);let o=[];for(let i of r.body){if(i.type!=="FunctionDeclaration"||!i.id)continue;let a=i.id.name,c=(p,f)=>o.push({predicate:a,message:p,line:f?.loc?.start?.line??0,column:f?.loc?.start?.column??0}),l=p=>c("loops are not allowed \u2014 iterate with recursion or array methods (every/some/map/filter/reduce) so work stays fuel-bounded",p);ae(i,{AwaitExpression(p){c("`await` not allowed \u2014 predicates must be synchronous",p)},NewExpression(p){c("`new` not allowed in a predicate (non-pure construction)",p)},WhileStatement:l,DoWhileStatement:l,ForStatement:l,ForInStatement:l,ForOfStatement:l,CallExpression(p){let f=p.callee;if(f.type==="Identifier"){let u=f.name;t.has(u)?c(`'${u}' is effectful \u2014 not allowed in a predicate`,f):s.has(u)||mo.has(u)||c(`unknown reference '${u}' \u2014 not a predicate or pure builtin`,f);return}if(f.type==="MemberExpression"&&!f.computed){let u=f.property.name,m=f.object;m.type==="Identifier"&&t.has(m.name)?c(`'${m.name}.${u}' is effectful`,f):m.type==="Identifier"&&yo.has(m.name)?go.has(`${m.name}.${u}`)&&c(`'${m.name}.${u}' is nondeterministic`,f):ho.has(u)||c(`method '.${u}()' is not a known pure method`,f.property);return}c("unsupported call form in a predicate",f)}})}return{safe:o.length===0,predicates:[...s],diagnostics:o}}function rs(e){return e.map(n=>` ${n.predicate} (${n.line}:${n.column}): ${n.message}`).join(`
358
- `)}var vt=e=>e&&e.type==="Literal"&&typeof e.value=="string";function xo(e,n={}){let t;try{t=At.parse(e,{ecmaVersion:"latest"})}catch{return[]}let r=new Set,s=new Set;ae(t,{BinaryExpression(c){(c.operator==="=="||c.operator==="===")&&(vt(c.left)&&r.add(c.left.value),vt(c.right)&&r.add(c.right.value))},ArrayExpression(c){for(let l of c.elements)vt(l)&&r.add(l.value)},CallExpression(c){let l=c.callee;if(l.type!=="MemberExpression"||l.computed)return;let p=l.property.name,f=c.arguments[0];vt(f)&&p==="startsWith"&&s.add(f.value)}});let o=null;if(n.validate!==!1){let c=st(e,n);if(c.safe&&c.predicates.length){let l=n.entry??c.predicates[c.predicates.length-1];try{let f=Rt(e,[l],n)[l];o=u=>{try{return f(u)===!0}catch{return!1}}}catch{o=null}}}let i=[];for(let c of r)(!o||o(c))&&i.push({value:c,kind:"value"});for(let c of s)i.push({value:c,kind:"stub"});let a=i;if(n.prefix){let c=n.prefix;a=i.filter(l=>l.value.startsWith(c)||l.kind==="stub"&&c.startsWith(l.value))}return a.sort((c,l)=>(c.kind===l.kind?0:c.kind==="value"?-1:1)||c.value.localeCompare(l.value)),n.limit?a.slice(0,n.limit):a}var rt=class extends Error{constructor(n){super(`predicate exceeded its fuel budget (${n})`),this.name="PredicateFuelExhausted"}};function _o(e){let n=At.parse(e,{ecmaVersion:"latest"}),t=[],r=o=>t.push([o.body.start+1,"__fuel();"]);ae(n,{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression(o){o.body.type==="BlockStatement"?t.push([o.body.start+1,"__fuel();"]):(t.push([o.body.start,"(__fuel(), "]),t.push([o.body.end,")"]))}}),t.sort((o,i)=>i[0]-o[0]);let s=e;for(let[o,i]of t)s=s.slice(0,o)+i+s.slice(o);return s}function Rt(e,n,t={}){let r=st(e,t);if(!r.safe)throw new Error(`Not predicate-safe:
359
- ${rs(r.diagnostics)}`);let s=t.fuel??1e6,o=_o(e),i=vn.filter(u=>u!=="import"&&u!=="eval"&&u!=="arguments"),a=new Function("__fuel",...i,`"use strict";
360
- ${o}
361
- ;return { ${n.join(", ")} };`),c=0,p=a(()=>{if(--c<0)throw new rt(s)},...i.map(()=>{})),f={};for(let u of n){let m=p[u];f[u]=(...y)=>{c=s;try{return m(...y)}catch(b){throw b instanceof RangeError&&/stack/i.test(b.message)?new rt(s):b}}}return f}var ss=e=>e===null?"null":Array.isArray(e)?"array":typeof e;function wo(e,n){return n==="integer"?typeof e=="number"&&Number.isInteger(e):ss(e)===n}function is(e,n={}){let{ignorePredicates:t,...r}=n,s=new Map,o=a=>{if(a.$predicate&&!t&&!s.has(a.$predicate)){let c=a.$predicate,l=st(c,r).predicates,p=l[l.length-1];if(!p)throw new Error("$predicate must declare at least one function");let f=Rt(c,[p],r);s.set(c,f[p])}if(a.properties)for(let c of Object.values(a.properties))o(c);a.items&&o(a.items)};o(e);let i=(a,c,l,p)=>{if(a.type&&!wo(c,a.type)){p.push({path:l||"/",message:`expected ${a.type}, got ${ss(c)}`});return}if(a.type==="object"&&a.properties&&c&&typeof c=="object"){let f=c;for(let u of a.required??[])u in f||p.push({path:`${l}/${u}`,message:`missing required '${u}'`});for(let[u,m]of Object.entries(a.properties))u in f&&i(m,f[u],`${l}/${u}`,p)}a.type==="array"&&a.items&&Array.isArray(c)&&c.forEach((f,u)=>i(a.items,f,`${l}/${u}`,p)),a.$predicate&&!t&&(s.get(a.$predicate)(c)||p.push({path:l||"/",message:`failed predicate at ${l||"/"}`}))};return a=>{let c=[];return i(e,a,"",c),{valid:c.length===0,errors:c}}}function So(e,n,t){return is(e,t)(n)}import{s as os}from"tosijs-schema";function as(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function Mt(e){return os.infer(e)}function An(e){return Mt(e)}An.type=as;An.infer=Mt;var $o=new Proxy(An,{get(e,n){return n==="type"?as:n==="infer"?Mt:os[n]},apply(e,n,t){return Mt(t[0])}});var Eo={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function To(e,n={}){let t={...Eo,...n},r=[],s,o=new Map,i;try{let p=xe(e,{filename:t.filename,colonShorthand:!0});s=p.ast,o=p.letAnnotations,i=p.tjsModes.tjsSafeAssign}catch(p){return{diagnostics:[{severity:"error",message:p.message,line:p.loc?.line,column:p.loc?.column,rule:"parse-error"}],valid:!1}}let a=t.safeAssign!==void 0?t.safeAssign:i,c=t.strict?"error":"warning",l=[cs()];if(ts(s,{FunctionDeclaration(p,f,u){let m=cs();l.push(m);for(let y of p.params)ko(m,y,"parameter");p.id&&(l[l.length-2]||l[0]).declarations.set(p.id.name,{node:p.id,kind:"function",used:!1})},VariableDeclaration(p){let f=l[l.length-1];for(let u of p.declarations)u.id.type==="Identifier"&&f.declarations.set(u.id.name,{node:u.id,kind:p.kind,used:!1})}}),ae(s,{Identifier(p){for(let f=l.length-1;f>=0;f--){let u=l[f].declarations.get(p.name);if(u){u.used=!0;break}}}}),t.unusedVariables)for(let p of l)for(let[f,u]of p.declarations)f.startsWith("_")||!u.used&&u.kind!=="function"&&r.push({severity:"warning",message:`'${f}' is declared but never used`,line:u.node.loc?.start?.line,column:u.node.loc?.start?.column,rule:"no-unused-vars"});if(t.unreachableCode&&ae(s,{BlockStatement(p){let f=!1;for(let u of p.body){if(f){r.push({severity:"warning",message:"Unreachable code after return statement",line:u.loc?.start?.line,column:u.loc?.start?.column,rule:"no-unreachable"});break}u.type==="ReturnStatement"&&(f=!0)}}}),a){let p=new Set;ae(s,{VariableDeclaration(f){if(f.kind==="let")for(let u of f.declarations){if(u.id.type!=="Identifier")continue;let m=u.id.name,y=o.has(m),b=u.init;(y||b&&!Rn(b))&&p.add(m)}}}),ae(s,{VariableDeclaration(f){if(f.kind==="let")for(let u of f.declarations){if(u.id.type!=="Identifier")continue;let m=u.id.name;o.has(m)||(u.init?Rn(u.init)&&r.push({severity:c,message:`'let ${m}' is initialized to ${ls(u.init)} with no type annotation. Annotate (let ${m}: <example>) to record the intended type.`,line:u.loc?.start?.line,column:u.loc?.start?.column,rule:"safe-assign-let-needs-type"}):r.push({severity:c,message:`'let ${m}' has no initializer or type annotation. Add an initializer (let ${m} = ...) or annotate (let ${m}: <example>).`,line:u.loc?.start?.line,column:u.loc?.start?.column,rule:"safe-assign-let-needs-type"}))}}}),ae(s,{AssignmentExpression(f){if(f.operator!=="="||f.left.type!=="Identifier")return;let u=f.left.name;p.has(u)&&Rn(f.right)&&r.push({severity:c,message:`Cannot assign ${ls(f.right)} to typed let '${u}'.`,line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"safe-assign-no-nullish"})}})}return t.noExplicitNew&&ae(s,{NewExpression(p){let f="class";p.callee.type==="Identifier"?f=p.callee.name:p.callee.type==="MemberExpression"&&p.callee.property.type==="Identifier"&&(f=p.callee.property.name),r.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${f}(...) instead of new ${f}(...)`,line:p.loc?.start?.line,column:p.loc?.start?.column,rule:"no-explicit-new"})}}),{diagnostics:r,valid:r.filter(p=>p.severity==="error").length===0}}function cs(){return{declarations:new Map}}function Rn(e){return e?e.type==="Identifier"&&e.name==="undefined"||e.type==="Literal"&&e.value===null||e.type==="UnaryExpression"&&e.operator==="void":!1}function ls(e){return e.type==="Identifier"?"undefined":e.type==="Literal"&&e.value===null?"null":e.type==="UnaryExpression"&&e.operator==="void"?"void <expr> (undefined)":"a nullish value"}function ko(e,n,t){n.type==="Identifier"?e.declarations.set(n.name,{node:n,kind:t,used:!1}):n.type==="AssignmentPattern"&&n.left.type==="Identifier"&&e.declarations.set(n.left.name,{node:n.left,kind:t,used:!1})}export{rt as PredicateFuelExhausted,$o as Schema,me as TJS_VERSION,io as ajs,br as assertFunction,Te as checkType,Rt as compilePredicate,is as compilePredicateSchema,oo as createAgent,po as dialectForFilename,bo as effectfulFromAtoms,bi as emitRuntimeWrapper,le as error,xr as expectFunction,ce as extractLiteralValue,Ve as extractTDoc,Wt as extractTests,rs as formatPredicateDiagnostics,ao as getToolDefinitions,Y as inferTypeFromValue,hn as installRuntime,de as isError,To as lint,xe as parse,ge as parseParameter,mr as parseReturnType,pt as preprocess,Se as runtime,es as sourceKindForFilename,xo as suggest,ei as testUtils,co as tjs,qt as transformFunction,jt as transpile,Tt as transpileToJS,Ie as typeOf,Dt as typeToString,yn as validateArgs,So as validatePredicateSchema,st as verifyPredicate,gn as wrap};
360
+ `)}`)}}if(r==="only")return{code:"",types:h,metadata:h,testResults:We,testCount:We?.length,predicates:b};let Dn;if(S.wasmBlocks.length>0){let v=ss(S.wasmBlocks);v.code&&($=v.code+`
361
+ `+$),Dn=v.results}return{code:$,types:h,metadata:h,warnings:i.length>0?i:void 0,predicates:b,testRunner:f.length>0?u:void 0,testCount:f.length>0?f.length:void 0,testResults:We,wasmCompiled:Dn}}function _o(e){let n=[];for(let t of e.body)t.type==="FunctionDeclaration"?n.push(t):(t.type==="ExportNamedDeclaration"&&t.declaration?.type==="FunctionDeclaration"||t.type==="ExportDefaultDeclaration"&&t.declaration?.type==="FunctionDeclaration")&&n.push(t.declaration);return n}function at(e){let n={kind:e.kind};return e.nullable&&(n.nullable=!0),e.items&&(n.items=at(e.items)),e.shape&&(n.shape=Object.fromEntries(Object.entries(e.shape).map(([t,r])=>[t,at(r)]))),e.members&&(n.members=e.members.map(at)),n}function wo(e,n,t={},r={}){let s={};for(let[i,a]of Object.entries(n.params))s[i]={type:at(a.type),required:a.required},a.default!==void 0&&(s[i].default=a.default),a.description&&(s[i].description=a.description);let o={params:s};if(n.returns&&(o.returns={type:at(n.returns)},r.returnDefaults&&(o.returns.defaults=r.returnDefaults),t.returnSafety==="safe"?o.safeReturn=!0:t.returnSafety==="unsafe"&&(o.unsafeReturn=!0)),n.description&&(o.description=n.description),t.unsafe&&(o.unsafe=!0),t.safe&&(o.safe=!0),r.source){let{file:i,line:a}=r.source;o.source=`${i}:${a}`}return`${e}.__tjs = ${JSON.stringify(o,null,2)}`}function Pt(e,n){let t;switch(n.kind){case"string":t=`typeof ${e} !== 'string'`;break;case"number":t=`typeof ${e} !== 'number'`;break;case"integer":t=`(typeof ${e} !== 'number' || !Number.isInteger(${e}))`;break;case"non-negative-integer":t=`(typeof ${e} !== 'number' || !Number.isInteger(${e}) || ${e} < 0)`;break;case"boolean":t=`typeof ${e} !== 'boolean'`;break;case"null":return`${e} !== null`;case"undefined":return`${e} !== undefined`;case"array":{let r=n.items&&n.items.kind!=="any"?Pt("__a",n.items):null;r?t=`(!Array.isArray(${e}) || ${e}.some(__a => ${r}))`:t=`!Array.isArray(${e})`;break}case"object":t=`(typeof ${e} !== 'object' || ${e} === null || Array.isArray(${e}))`;break;case"function":t=`typeof ${e} !== 'function'`;break;case"union":{let r=n.members.map(s=>Pt(e,s)).filter(s=>s!==null);if(r.length===0)return null;t=`(${r.join(" && ")})`;break}case"any":return null;default:return null}return t&&n.nullable&&(t=`(${e} !== null && ${t})`),t}var cs=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function $o(e,n,t){let r=n.params??[],s=n.returns??{kind:"any"},o=r.map(l=>l.type?.kind),i=o.every(l=>l&&cs.has(l))&&cs.has(s.kind),a=o.some(l=>l!=="any")||s.kind!=="any";if(!i||!a)return null;let c=JSON.stringify(o);return`if (typeof ${e} === 'function') ${e} = __tjs.checkFnShape(${e}, ${c}, '${s.kind}', '${t}');`}function Ct(e,n={}){let{ast:t,returnType:r,originalSource:s,requiredParams:o}=Se(e,{filename:n.filename,colonShorthand:!0,vmTarget:!0}),{entry:i,helpers:a}=$r(t,n.filename),{ast:c,signature:l,warnings:f}=Zt(i,s,r,n,o,a.size>0?a:void 0);return{ast:c,signature:l,warnings:f}}function So(e,...n){if(typeof e=="string")return Ct(e).ast;let t=e.reduce((r,s,o)=>r+s+(n[o]!==void 0?String(n[o]):""),"");return Ct(t).ast}function Eo(e,n,t){let{ast:r,signature:s}=Ct(e),o=async i=>(await n.run(r,i,t)).result;return o.signature=s,o.ast=r,o}function Mt(e){switch(e.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:e.items?Mt(e.items):{}};case"object":return e.shape?{type:"object",properties:Object.fromEntries(Object.entries(e.shape).map(([n,t])=>[n,Mt(t)]))}:{type:"object"};case"union":return e.members?{anyOf:e.members.map(Mt)}:{};default:return{}}}function To(e){return Object.entries(e).map(([n,t])=>{let r=t.signature,s={},o=[];for(let[i,a]of Object.entries(r.parameters))s[i]=Mt(a.type),a.description&&(s[i].description=a.description),a.required&&o.push(i);return{type:"function",function:{name:n,description:r.description,parameters:{type:"object",properties:s,required:o}}}})}function ko(e,n,...t){if(typeof e=="string")return Rt(e,n);let r=n!==void 0?[n,...t]:t,s=e.reduce((o,i,a)=>o+i+(r[a]!==void 0?String(r[a]):""),"");return Rt(s)}var jo=/\.[mc]?js$/i,vo=/\.[mc]?ts$/i,Ao=/\.tjs$/i;function us(e){return Ao.test(e)?"tjs":jo.test(e)?"js":vo.test(e)?"ts":"tjs"}function Po(e){return us(e)==="js"?"js":"tjs"}var fs=e=>e===null?"null":Array.isArray(e)?"array":typeof e;function Ro(e,n){return n==="integer"?typeof e=="number"&&Number.isInteger(e):fs(e)===n}function ps(e,n={}){let{ignorePredicates:t,...r}=n,s=new Map,o=a=>{if(a.$predicate&&!t&&!s.has(a.$predicate)){let c=a.$predicate,l=$e(c,r).predicates,f=l[l.length-1];if(!f)throw new Error("$predicate must declare at least one function");let p=Je(c,[f],r);s.set(c,p[f])}if(a.properties)for(let c of Object.values(a.properties))o(c);a.items&&o(a.items)};o(e);let i=(a,c,l,f)=>{if(a.type&&!Ro(c,a.type)){f.push({path:l||"/",message:`expected ${a.type}, got ${fs(c)}`});return}if(a.type==="object"&&a.properties&&c&&typeof c=="object"){let p=c;for(let u of a.required??[])u in p||f.push({path:`${l}/${u}`,message:`missing required '${u}'`});for(let[u,m]of Object.entries(a.properties))u in p&&i(m,p[u],`${l}/${u}`,f)}a.type==="array"&&a.items&&Array.isArray(c)&&c.forEach((p,u)=>i(a.items,p,`${l}/${u}`,f)),a.$predicate&&!t&&(s.get(a.$predicate)(c)||f.push({path:l||"/",message:`failed predicate at ${l||"/"}`}))};return a=>{let c=[];return i(e,a,"",c),{valid:c.length===0,errors:c}}}function Mo(e,n,t){return ps(e,t)(n)}function xe(e){let n;switch(e.kind){case"string":n="string";break;case"number":case"integer":case"non-negative-integer":n="number";break;case"boolean":n="boolean";break;case"null":return"null";case"undefined":return"undefined";case"any":n="any";break;case"array":if(e.items){let t=xe(e.items);n=t.includes("|")?`(${t})[]`:`${t}[]`}else n="any[]";break;case"object":e.shape&&Object.keys(e.shape).length>0?n=`{ ${Object.entries(e.shape).map(([r,s])=>`${r}: ${xe(s)}`).join("; ")} }`:n="Record<string, any>";break;case"union":if(e.members&&e.members.length>0)return e.members.map(xe).join(" | ");n="any";break;case"function":{let t=e.params??[],r=e.returns?xe(e.returns):"any";n=`(${t.map(o=>`${o.name}: ${xe(o.type)}`).join(", ")}) => ${r}`;break}default:n="any"}return e.nullable?`${n} | null`:n}function Co(e,n,t,r){let s=Object.entries(n.params),o=new Array(s.length),i=!1;for(let f=s.length-1;f>=0;f--){let p=s[f][1],u=!p.required&&p.default!==void 0;o[f]=u&&!i,o[f]||(i=!0)}let a=s.map(([f,p],u)=>{let m=xe(p.type);return o[u]?`${f}?: ${m}`:`${f}: ${m}`}).join(", "),c=n.returns?xe(n.returns):"any";return`${t?r?"export default function":"export declare function":"declare function"} ${e}(${a}): ${c};`}function No(e){let n=new Map,t,r=/^[ \t]*export\s+(default\s+)?function\s+(\w+)/gm;for(;(t=r.exec(e))!==null;)n.set(t[2],{exported:!0,isDefault:!!t[1]});let s=/^[ \t]*export\s+(default\s+)?class\s+(\w+)/gm;for(;(t=s.exec(e))!==null;)n.set(t[2],{exported:!0,isDefault:!!t[1]});let o=/^[ \t]*export\s+(default\s+)?(?:const|let|var)\s+(\w+)/gm;for(;(t=o.exec(e))!==null;)n.set(t[2],{exported:!0,isDefault:!!t[1]});let i=/^[ \t]*export\s+Type\s+(\w+)/gm;for(;(t=i.exec(e))!==null;)n.set(t[1],{exported:!0,isDefault:!1});let a=/^[ \t]*export\s+Generic\s+(\w+)/gm;for(;(t=a.exec(e))!==null;)n.set(t[1],{exported:!0,isDefault:!1});let c=/^[ \t]*export\s+FunctionPredicate\s+(\w+)/gm;for(;(t=c.exec(e))!==null;)n.set(t[1],{exported:!0,isDefault:!1});let l=/^[ \t]*export\s*\{([^}]+)\}/gm;for(;(t=l.exec(e))!==null;){let f=t[1].split(",").map(p=>p.trim().split(/\s+as\s+/));for(let p of f){let u=p.length>1?p[1]:p[0];u&&/^\w+$/.test(u)&&n.set(u,{exported:!0,isDefault:!1})}}return n}function Io(e){let n=new Map,t=/^[ \t]*(?:export\s+)?FunctionPredicate\s+(\w+)\s*(?:<([^>]+)>)?\s*\{/gm,r;for(;(r=t.exec(e))!==null;){let s=r[1],o=r[2],i=r.index+r[0].length-1,a=1,c=i+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(i+1,c-1),f;o&&(f=o.split(",").map(g=>g.trim()));let p=[],u=l.match(/params\s*:\s*\{([^}]*)\}/);if(u){let g=u[1],x=ds(g);for(let E of x){let S=E.match(/^(\w+)\s*:\s*(.+)$/);S&&p.push({name:S[1],example:S[2].trim()})}}let m,y=l.match(/returns\s*:\s*(.+?)(?:\n|$)/);y&&(m=y[1].trim()),n.set(s,{params:p,returns:m,typeParams:f})}return n}function Oo(e){let n=new Map,t=/^[ \t]*(?:export\s+(?:default\s+)?)?class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/gm,r;for(;(r=t.exec(e))!==null;){let s=r[1],o=r.index+r[0].length-1,i=1,a=o+1;for(;a<e.length&&i>0;)e[a]==="{"?i++:e[a]==="}"&&i--,a++;let c=e.slice(o+1,a-1),l=c.indexOf("constructor"),f="";if(l!==-1){let u=c.indexOf("(",l);if(u!==-1){let m=1,y=u+1;for(;y<c.length&&m>0;)c[y]==="("?m++:c[y]===")"&&m--,y++;f=c.slice(u+1,y-1).trim()}}let p=[];{let u=0,m=0;for(;u<c.length;){let y=c[u];if(y==="{"){m++,u++;continue}if(y==="}"){m--,u++;continue}if(m===0){let g=c.slice(u).match(/^(\w+)\s*\(/);if(g){let x=g[1];if(x==="constructor"||x==="get"||x==="set"){u+=x.length;continue}else{let E=u+g[0].length-1,S=1,b=E+1;for(;b<c.length&&S>0;)c[b]==="("?S++:c[b]===")"&&S--,b++;let h=c.slice(E+1,b-1).trim(),w=c.slice(b).match(/^\s*->\s*(.+?)\s*\{/),_=w?w[1].trim():null;p.push({name:x,params:h,returnType:_}),u=b;continue}}}u++}}n.set(s,{name:s,constructorParams:f,methods:p})}return n}function ds(e){let n=[],t=0,r="";for(let s of e)s==="{"||s==="["||s==="("?t++:(s==="}"||s==="]"||s===")")&&t--,s===","&&t===0?(n.push(r.trim()),r=""):r+=s;return r.trim()&&n.push(r.trim()),n}function ms(e){return e.trim()?ds(e).map(n=>{let t=n.match(/^(\w+)\s*:\s*(.+)$/);if(t){let s=t[1],o=_e(t[2].trim());return`${s}: ${o}`}let r=n.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],o=_e(r[2].trim());return`${s}?: ${o}`}return n.startsWith("{")?"options: any":`${n}: any`}).join(", "):""}function Bo(e){let n=new Map,t,r=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*=\s*(.+)$/gm;for(;(t=r.exec(e))!==null;)n.set(t[1],t[2].trim());let s=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s+([^{=].*)$/gm;for(;(t=s.exec(e))!==null;)n.has(t[1])||n.set(t[1],t[2].trim());let o=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*example\s*:\s*(.+?)(?:\n|\s*[,}])/gm;for(;(t=o.exec(e))!==null;)n.set(t[1],t[2].trim());let i=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*\/\/\s*TS:\s*(.+?)(?:\n|\s*\})/gm;for(;(t=i.exec(e))!==null;)n.has(t[1])||n.set(t[1],`__ts__:${t[2].trim()}`);let a=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{\s*\}/gm;for(;(t=a.exec(e))!==null;)n.has(t[1])||n.set(t[1],"");return n}function Do(e){let n=new Map,t=/^[ \t]*(?:export\s+)?Generic\s+(\w+)\s*<([^>]+)>\s*\{/gm,r;for(;(r=t.exec(e))!==null;){let s=r[1],o=r[2].split(",").map(u=>u.trim().split(/\s*=/)[0].trim()),i=r.index+r[0].length-1,a=1,c=i+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(i+1,c-1),f,p=l.match(/\bdeclaration\s*\{/);if(p&&p.index!==void 0){let u=p.index+p[0].length-1,m=1,y=u+1;for(;y<l.length&&m>0;)l[y]==="{"?m++:l[y]==="}"&&m--,y++;f=l.slice(u+1,y-1).trim()}n.set(s,{typeParams:o,declaration:f})}return n}function Fo(e){let n=[],t=/^[ \t]*export\s+(?:default\s+)?(const|let|var)\s+(\w+)\s*(?::\s*\w+\s*)?=\s*(.+)/gm,r;for(;(r=t.exec(e))!==null;){let s=r[3].trim();s.endsWith(";")&&(s=s.slice(0,-1).trim()),n.push({name:r[2],value:s,kind:r[1]})}return n}function qo(e){return/^['"]/.test(e)||e.startsWith("`")?"string":e==="true"||e==="false"?"boolean":/^[+-]?\d+(\.\d+)?$/.test(e)?"number":e.startsWith("Symbol(")||e.startsWith("Symbol.")?"symbol":e.startsWith("[")?"any[]":e.startsWith("new WeakMap")?"WeakMap<any, any>":e.startsWith("new Map")?"Map<any, any>":e.startsWith("new Set")?"Set<any>":e.startsWith("new ")?"any":e.startsWith("{")?"Record<string, any>":e==="null"?"null":e==="undefined"?"undefined":"any"}function Wo(e,n,t={}){let r=[],s=No(n),o=Bo(n),i=Oo(n),a=Do(n),c=s.size>0,l=new Set;for(let[u,m]of Object.entries(e.types)){if(u.includes("$"))continue;let y=s.get(u),g=c?!!y?.exported:!0,x=y?.isDefault??!1;g&&(m.description&&r.push(`/** ${m.description} */`),r.push(Co(u,m,!0,x)),l.add(u))}for(let[u,m]of i){if(l.has(u))continue;let y=s.get(u);if(!(c?!!y?.exported:!0))continue;let x=m.constructorParams?ms(m.constructorParams):"";if(r.push(`export declare function ${u}(${x}): any;`),x||m.methods.length>0){r.push(`export declare class ${u} {`),m.constructorParams&&r.push(` constructor(${x});`);for(let E of m.methods){let S=E.params?ms(E.params):"";r.push(` ${E.name}(${S}): any;`)}r.push("}")}l.add(u)}for(let[u,m]of o){if(l.has(u))continue;let y=s.get(u);if(!c||y?.exported){if(m.startsWith("__ts__:")){let x=m.slice(7);r.push(`export type ${u} = ${x};`)}else if(m==="")r.push(`export type ${u} = any;`);else{let x=_e(m);r.push(`export declare const ${u}: { check(value: any): boolean; default: ${x}; (value: any): boolean; };`)}l.add(u)}}for(let[u,m]of a){if(l.has(u))continue;let y=s.get(u);if(!(c?!!y?.exported:!0))continue;let x=m.typeParams.length>0?`<${m.typeParams.join(", ")}>`:"";if(m.declaration){let E=m.declaration.trim(),S=E.match(/^\/\/\s*TS:\s*(.+)$/s);if(S)r.push(`export type ${u}${x} = ${S[1].trim()};`);else{let b=E.split(`
362
+ `).map(h=>h.trim()).filter(h=>h.length>0).map(h=>` ${h}`).join(`
363
+ `);r.push(`export interface ${u}${x} {
364
+ ${b}
365
+ }`)}}else r.push(`export declare function ${u}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(u)}let f=Io(n);for(let[u,m]of f){if(l.has(u))continue;let y=s.get(u);if(!(c?!!y?.exported:!0))continue;let x=new Set(m.typeParams?.map(h=>h.split("=")[0].trim())??[]),E=m.typeParams?`<${m.typeParams.join(", ")}>`:"",S=m.params.map((h,w)=>{let _=w===m.params.length-1;if(h.example.startsWith("[")&&h.example.endsWith("]")&&_){let T=h.example.slice(1,-1).trim(),j=!T||T==="null"?"any":x.has(T)?T:_e(T);return`...${h.name}: ${j}[]`}if(h.example.startsWith("[")&&h.example.endsWith("]")){let T=h.example.slice(1,-1).trim(),j=!T||T==="null"?"any":x.has(T)?T:_e(T);return`${h.name}: ${j}[]`}let $=h.example==="null"?"any":x.has(h.example)?h.example:_e(h.example);return`${h.name}: ${$}`}).join(", "),b=m.returns!==void 0?m.returns==="null"?"any":x.has(m.returns)?m.returns:_e(m.returns):"void";r.push(`export type ${u}${E} = (${S}) => ${b};`),l.add(u)}let p=Fo(n);for(let u of p){if(l.has(u.name))continue;let m=s.get(u.name);if(!(c?!!m?.exported:!0))continue;let g=qo(u.value);r.push(`export declare const ${u.name}: ${g};`),l.add(u.name)}if(t.moduleName){let u=r.map(m=>` ${m}`).join(`
366
+ `);return`declare module '${t.moduleName}' {
367
+ ${u}
368
+ }
369
+ `}return r.join(`
370
+ `)+`
371
+ `}function _e(e){let n=e.trim();if(Uo(n)){let t=Lo(n).map(r=>_e(r.trim()));return[...new Set(t)].join(" | ")}return/^['"]/.test(n)?"string":n==="true"||n==="false"?"boolean":n==="null"?"null":n==="undefined"?"undefined":/^[+-]?\d+\.\d+$/.test(n)||/^[+-]?\d+$/.test(n)?"number":n.startsWith("[")?"any[]":n.startsWith("{")?"Record<string, any>":"any"}function Uo(e){let n=0,t=null;for(let r of e){if(t){r===t&&(t=null);continue}if(r==="'"||r==='"'||r==="`"){t=r;continue}if(r==="{"||r==="["||r==="(")n++;else if(r==="}"||r==="]"||r===")")n--;else if(r==="|"&&n===0)return!0}return!1}function Lo(e){let n=[],t=0,r=null,s="";for(let o of e){if(r){s+=o,o===r&&(r=null);continue}if(o==="'"||o==='"'||o==="`"){r=o,s+=o;continue}o==="{"||o==="["||o==="("?t++:(o==="}"||o==="]"||o===")")&&t--,o==="|"&&t===0?(n.push(s),s=""):s+=o}return s&&n.push(s),n}import{s as ys}from"tosijs-schema";function gs(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function Nt(e){return ys.infer(e)}function In(e){return Nt(e)}In.type=gs;In.infer=Nt;var Jo=new Proxy(In,{get(e,n){return n==="type"?gs:n==="infer"?Nt:ys[n]},apply(e,n,t){return Nt(t[0])}});var Vo={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function zo(e,n={}){let t={...Vo,...n},r=[],s,o=new Map,i;try{let f=Se(e,{filename:t.filename,colonShorthand:!0});s=f.ast,o=f.letAnnotations,i=f.tjsModes.tjsSafeAssign}catch(f){return{diagnostics:[{severity:"error",message:f.message,line:f.loc?.line,column:f.loc?.column,rule:"parse-error"}],valid:!1}}let a=t.safeAssign!==void 0?t.safeAssign:i,c=t.strict?"error":"warning",l=[hs()];if(Wn(s,{FunctionDeclaration(f,p,u){let m=hs();l.push(m);for(let y of f.params)Go(m,y,"parameter");f.id&&(l[l.length-2]||l[0]).declarations.set(f.id.name,{node:f.id,kind:"function",used:!1})},VariableDeclaration(f){let p=l[l.length-1];for(let u of f.declarations)u.id.type==="Identifier"&&p.declarations.set(u.id.name,{node:u.id,kind:f.kind,used:!1})}}),ie(s,{Identifier(f){for(let p=l.length-1;p>=0;p--){let u=l[p].declarations.get(f.name);if(u){u.used=!0;break}}}}),t.unusedVariables)for(let f of l)for(let[p,u]of f.declarations)p.startsWith("_")||!u.used&&u.kind!=="function"&&r.push({severity:"warning",message:`'${p}' is declared but never used`,line:u.node.loc?.start?.line,column:u.node.loc?.start?.column,rule:"no-unused-vars"});if(t.unreachableCode&&ie(s,{BlockStatement(f){let p=!1;for(let u of f.body){if(p){r.push({severity:"warning",message:"Unreachable code after return statement",line:u.loc?.start?.line,column:u.loc?.start?.column,rule:"no-unreachable"});break}u.type==="ReturnStatement"&&(p=!0)}}}),a){let f=new Set;ie(s,{VariableDeclaration(p){if(p.kind==="let")for(let u of p.declarations){if(u.id.type!=="Identifier")continue;let m=u.id.name,y=o.has(m),g=u.init;(y||g&&!On(g))&&f.add(m)}}}),ie(s,{VariableDeclaration(p){if(p.kind==="let")for(let u of p.declarations){if(u.id.type!=="Identifier")continue;let m=u.id.name;o.has(m)||(u.init?On(u.init)&&r.push({severity:c,message:`'let ${m}' is initialized to ${bs(u.init)} with no type annotation. Annotate (let ${m}: <example>) to record the intended type.`,line:u.loc?.start?.line,column:u.loc?.start?.column,rule:"safe-assign-let-needs-type"}):r.push({severity:c,message:`'let ${m}' has no initializer or type annotation. Add an initializer (let ${m} = ...) or annotate (let ${m}: <example>).`,line:u.loc?.start?.line,column:u.loc?.start?.column,rule:"safe-assign-let-needs-type"}))}}}),ie(s,{AssignmentExpression(p){if(p.operator!=="="||p.left.type!=="Identifier")return;let u=p.left.name;f.has(u)&&On(p.right)&&r.push({severity:c,message:`Cannot assign ${bs(p.right)} to typed let '${u}'.`,line:p.loc?.start?.line,column:p.loc?.start?.column,rule:"safe-assign-no-nullish"})}})}return t.noExplicitNew&&ie(s,{NewExpression(f){let p="class";f.callee.type==="Identifier"?p=f.callee.name:f.callee.type==="MemberExpression"&&f.callee.property.type==="Identifier"&&(p=f.callee.property.name),r.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${p}(...) instead of new ${p}(...)`,line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"no-explicit-new"})}}),{diagnostics:r,valid:r.filter(f=>f.severity==="error").length===0}}function hs(){return{declarations:new Map}}function On(e){return e?e.type==="Identifier"&&e.name==="undefined"||e.type==="Literal"&&e.value===null||e.type==="UnaryExpression"&&e.operator==="void":!1}function bs(e){return e.type==="Identifier"?"undefined":e.type==="Literal"&&e.value===null?"null":e.type==="UnaryExpression"&&e.operator==="void"?"void <expr> (undefined)":"a nullish value"}function Go(e,n,t){n.type==="Identifier"?e.declarations.set(n.name,{node:n,kind:t,used:!1}):n.type==="AssignmentPattern"&&n.left.type==="Identifier"&&e.declarations.set(n.left.name,{node:n.left,kind:t,used:!1})}export{Le as PredicateFuelExhausted,Jo as Schema,me as TJS_VERSION,So as ajs,vr as assertFunction,Ae as checkType,Je as compilePredicate,ps as compilePredicateSchema,Eo as createAgent,Ns as createPredicateEvaluator,Po as dialectForFilename,Ms as effectfulFromAtoms,Ii as emitRuntimeWrapper,Wt as emitVerifiedPredicate,le as error,Ar as expectFunction,ce as extractLiteralValue,He as extractTDoc,Ht as extractTests,ft as formatPredicateDiagnostics,Wo as generateDTS,To as getToolDefinitions,Y as inferTypeFromValue,Tn as installRuntime,de as isError,zo as lint,Se as parse,ge as parseParameter,Sr as parseReturnType,bt as preprocess,ke as runtime,us as sourceKindForFilename,Cs as suggest,hi as testUtils,ko as tjs,Zt as transformFunction,Ct as transpile,Rt as transpileToJS,xe as typeDescriptorToTS,De as typeOf,Gt as typeToString,Sn as validateArgs,Mo as validatePredicateSchema,$e as verifyPredicate,En as wrap};
362
372
  //# sourceMappingURL=tjs-lang.js.map