tjs-lang 0.8.5 → 0.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var ko=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ti=ko((Hp,Ca)=>{Ca.exports={name:"tjs-lang",version:"0.8.5",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 Fs from"acorn";var K=class extends Error{line;column;source;filename;constructor(t,n,r,s){let i=`${s||"<source>"}:${n.line}:${n.column}`;super(`${t} at ${i}`),this.name="TranspileError",this.line=n.line,this.column=n.column,this.source=r,this.filename=s}},H=class extends K{constructor(t,n,r,s){super(t,n,r,s),this.name="SyntaxError"}formatWithContext(t=2){if(!this.source)return this.message;let n=this.source.split(`
1
+ var ko=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ti=ko((Hp,Ca)=>{Ca.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 Fs from"acorn";var K=class extends Error{line;column;source;filename;constructor(t,n,r,s){let i=`${s||"<source>"}:${n.line}:${n.column}`;super(`${t} at ${i}`),this.name="TranspileError",this.line=n.line,this.column=n.column,this.source=r,this.filename=s}},H=class extends K{constructor(t,n,r,s){super(t,n,r,s),this.name="SyntaxError"}formatWithContext(t=2){if(!this.source)return this.message;let n=this.source.split(`
2
2
  `),r=this.line-1,s=Math.max(0,r-t),i=Math.min(n.length-1,r+t),o=[],a=String(i+1).length;for(let c=s;c<=i;c++){let l=String(c+1).padStart(a),u=c===r?">":" ";if(o.push(`${u} ${l} | ${n[c]}`),c===r){let f=" ".repeat(a+4+this.column);o.push(`${f}^ ${this.message.split(" at ")[0]}`)}}return o.join(`
3
3
  `)}},ls=class extends K{expected;received;suggestion;constructor(t,n,r){super(t,n,r?.source,r?.filename),this.name="TypeError",this.expected=r?.expected,this.received=r?.received,this.suggestion=r?.suggestion}};function ge(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 jo(e,t){if(t.locals.has(e))return t.locals.get(e);if(t.parameters.has(e))return t.parameters.get(e)?.type;if(t.parent)return jo(e,t.parent)}function Z(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}function vo(e,t){let n=e.match(t);if(!n)return null;let r=n.index+n[0].length-1,s=1,i=r+1;for(;i<e.length&&s>0;)e[i]==="{"?s++:e[i]==="}"&&s--,i++;if(s!==0)return null;let o=e.slice(r,i),a=[n[0].slice(0,-1)+o,o];return a.index=n.index,a}function ds(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\btry\s*\{/);if(r){let i=n+r[0].length-1+1,o=1,a=i;for(;a<e.length&&o>0;){let l=e[a];l==="{"?o++:l==="}"&&o--,a++}if(o!==0){t+=e[n],n++;continue}if(e.slice(a).match(/^\s*(catch|finally)\b/))t+=e.slice(n,a),n=a;else{let l=e.slice(i,a-1);t+=`try {${l}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,n=a}}else t+=e[n],n++}return t}function ys(e){let t=[],n="",r=0,s=0;for(;r<e.length;){let i=e.slice(r).match(/^\bwasm\s*\{/);if(i){let o=r,a=r+i[0].length,c=1,l=a;for(;l<e.length&&c>0;){let S=e[l];S==="{"?c++:S==="}"&&c--,l++}if(c!==0){n+=e[r],r++;continue}let u=e.slice(a,l-1),f,p=l,m=e.slice(l).match(/^\s*fallback\s*\{/);if(m){let S=l+m[0].length;c=1;let j=S;for(;j<e.length&&c>0;){let A=e[j];A==="{"?c++:A==="}"&&c--,j++}c===0&&(f=e.slice(S,j-1),p=j)}let y=Co(u).map(S=>{let j=Ro(e,o,S);return j?`${S}: ${j}`:S}),b={id:`__tjs_wasm_${s}`,body:u,fallback:f,captures:y,start:o,end:p};t.push(b);let $=f??u,T=y.map(S=>S.split(":")[0].trim()),x=T.length>0?T.join(", "):"",w=T.length>0?`globalThis.${b.id}(${x})`:`globalThis.${b.id}()`,E=`(globalThis.${b.id} ? ${w} : (() => {${$}})())`;n+=E,r=p,s++}else n+=e[r],r++}return{source:n,blocks:t}}function gs(e){let t=[],n="",r=0;for(;r<e.length;){let s=/^\b(export\s+)?wasm\s+function\s+(\w+)\s*\(/,i=e.slice(r).match(s);if(!i){n+=e[r],r++;continue}let o=!!i[1],a=i[2],c=r,l=r+i[0].length,u=1,f=l;for(;f<e.length&&u>0;)e[f]==="("?u++:e[f]===")"&&u--,f++;if(u!==0){n+=e[r],r++;continue}let p=e.slice(l,f-1);if(p.match(/^\s*!/))throw new H(`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.`,ve(e,c));let d,y=f,b=e.slice(f).match(/^\s*:\s*(\w+)/);b&&(d=b[1],y=f+b[0].length);let $=e.slice(y).match(/^\s*\{/);if(!$){n+=e[r],r++;continue}let T=y+$[0].length,x=1,w=T;for(;w<e.length&&x>0;)e[w]==="{"?x++:e[w]==="}"&&x--,w++;if(x!==0){n+=e[r],r++;continue}let E=e.slice(T,w-1),S=Mo(p),j=`__tjs_wasm_${a}`,A={id:j,name:a,returnType:d,body:E,captures:S,start:c,end:w};t.push(A);let k=S.map(P=>P.split(":")[0].trim()),C=`${o?"export ":""}function ${a}(${k.join(", ")}) { return globalThis.${j}(${k.join(", ")}) }`;n+=C,r=w}return{source:n,blocks:t}}function hs(e,t){let{loader:n,importerPath:r}=t;if(!n)return{source:e,blocks:[]};let s=[],i=new Set;function o(l,u){if(!i.has(l.id)){s.push(l),i.add(l.id);for(let[f,p]of u){if(f===l.name||i.has(p.id))continue;new RegExp(`\\b${f}\\s*\\(`).test(l.body)&&o(p,u)}}}let a=/^(\s*)import\s*\{([^}]*?)\}\s*from\s*(['"])([^'"]+)\3\s*;?\s*$/gm;return{source:e.replace(a,(l,u,f,p,m)=>{let d=n.load(m,r);if(!d)return l;let y=new Map;for(let E of d.parseResult.wasmBlocks)E.name&&y.set(E.name,E);if(y.size===0)return l;let b=f.split(",").map(E=>E.trim()).filter(E=>E.length>0),$=[],T=[];for(let E of b){let S=E.match(/^(\w+)(?:\s+as\s+(\w+))?$/);if(!S){T.push(E);continue}let j=S[1],A=S[2]??S[1],k=y.get(j);if(!k){T.push(E);continue}o(k,y);let v=k.captures.map(C=>C.split(":")[0].trim());$.push(`function ${A}(${v.join(", ")}) { return globalThis.${k.id}(${v.join(", ")}) }`)}let x=$.join(`
4
4
  `);if(T.length===0)return x?`${u}${x}`:`${u}`;let w=`${u}import { ${T.join(", ")} } from '${m}'`;return x?`${w}
@@ -24,7 +24,7 @@ ${T.join(`
24
24
  `)}
25
25
  return __tjs.typeError('${f}', 'no matching overload', __args)
26
26
  }
27
- `;u+=x}return{source:u,polymorphicNames:n}}function js(e){return e.replace(/(?<=^|[;\n{])\s*([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(t,n)=>t.replace(n,`const ${n}`))}function vs(e,t=!1){let n=[],r=[],s="",i=0;for(;i<e.length;){let o=e.slice(i).match(/^\btest\s+/);if(o){let a=i,c=i+o[0].length,l,u=e.slice(c).match(/^(['"`])([^]*?)\1\s*/);if(u&&(l=u[2],c+=u[0].length),e[c]==="{"){let f=c+1,p=1,m=f,d=null,y=!1;for(;m<e.length&&p>0;){let b=e[m];if(y){y=!1,m++;continue}if(b==="\\"&&d){y=!0,m++;continue}if(d){b===d&&(d=null),m++;continue}if(b==="/"&&e[m+1]==="/"){let $=e.indexOf(`
27
+ `;u+=x}return{source:u,polymorphicNames:n}}function js(e){let t=new Set,n=/\b(?:let|const|var|function|class)\s+([A-Z][a-zA-Z0-9_]*)/g;for(let r;r=n.exec(e);)t.add(r[1]);return e.replace(/(?<=^|[;\n{])(\s*)([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(r,s,i)=>t.has(i)?r:r.replace(i,`const ${i}`))}function vs(e,t=!1){let n=[],r=[],s="",i=0;for(;i<e.length;){let o=e.slice(i).match(/^\btest\s+/);if(o){let a=i,c=i+o[0].length,l,u=e.slice(c).match(/^(['"`])([^]*?)\1\s*/);if(u&&(l=u[2],c+=u[0].length),e[c]==="{"){let f=c+1,p=1,m=f,d=null,y=!1;for(;m<e.length&&p>0;){let b=e[m];if(y){y=!1,m++;continue}if(b==="\\"&&d){y=!0,m++;continue}if(d){b===d&&(d=null),m++;continue}if(b==="/"&&e[m+1]==="/"){let $=e.indexOf(`
28
28
  `,m);m=$===-1?e.length:$+1;continue}if(b==="/"&&e[m+1]==="*"){let $=e.indexOf("*/",m+2);m=$===-1?e.length:$+2;continue}if(b==="'"||b==='"'||b==="`"){d=b,m++;continue}b==="{"?p++:b==="}"&&p--,m++}if(p===0){let b=e.slice(f,m-1).trim(),$=m,T=(e.slice(0,a).match(/\n/g)||[]).length+1;if(n.push({description:l,body:b,start:a,end:$,line:T}),!t)try{new Function(b)()}catch(E){let S=l||`test at line ${T}`;r.push(`Test failed: ${S} (line ${T})
29
29
  ${E.message||E}`)}let w=(e.slice(a,$).match(/\n/g)||[]).length;s+=`
30
30
  `.repeat(w),i=$;continue}}}s+=e[i],i++}return{source:s,tests:n,errors:r}}function Ms(e,t){let n=new Set,r=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,s,i=[];for(;(s=r.exec(e))!==null;){let a=s[1],c=s[2]?.trim()||"",l=s.index+s[0].length-1,u=yt(e,l),f=e.slice(l,u);i.push({className:a,extendsClause:c,bodyStart:l,bodyEnd:u,body:f})}let o=e;for(let a=i.length-1;a>=0;a--){let{className:c,extendsClause:l,bodyStart:u,bodyEnd:f,body:p}=i[a],m=/\bconstructor\s*\(/g,d,y=[];for(;(d=m.exec(p))!==null;)y.push(d.index);if(y.length<2)continue;n.add(c);let b=[];for(let E=0;E<y.length;E++){let S=y[E],j=p.indexOf("(",S),A=1,k=j+1;for(;k<p.length&&A>0;)p[k]==="("&&A++,p[k]===")"&&A--,k++;let v=p.slice(j+1,k-1),C=k;for(;C<p.length&&p[C]!=="{";)C++;let P=yt(p,C),M=p.slice(C+1,P-1);b.push({index:E+1,paramStr:v,bodyText:M,fullStart:S,fullEnd:P})}let $=p;for(let E=b.length-1;E>=1;E--){let S=b[E],j=S.fullStart;for(;j>0&&$[j-1]===" ";)j--;j>0&&$[j-1]===`
@@ -47,7 +47,7 @@ function ${c}$dispatch(t, a) {
47
47
  `&&(o="normal"),r++;continue;case"block-comment":if(n+=p,p==="*"&&m==="/"){n+=m,r+=2,o="normal";continue}r++;continue;case"regex":if(n+=p,p==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(p==="["){for(r++;r<e.length&&e[r]!=="]";)n+=e[r],e[r]==="\\"&&r+1<e.length?(n+=e[r+1],r+=2):r++;r<e.length&&(n+=e[r],r++);continue}if(p==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)n+=e[r],r++;o="normal";continue}r++;continue;case"normal":if(a.length>0){if(p==="{")a[a.length-1]++;else if(p==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),n+=p,r++,o="template-string";continue}}if(p==="'"){n+=p,r++,o="single-string";continue}if(p==='"'){n+=p,r++,o="double-string";continue}if(p==="`"){n+=p,r++,o="template-string";continue}if(p==="/"&&m==="/"){n+=p+m,r+=2,o="line-comment";continue}if(p==="/"&&m==="*"){n+=p+m,r+=2,o="block-comment";continue}if(p==="/"){let x=n.trimEnd();if(!x[x.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(x)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(x)){n+=p,r++,o="regex";continue}}break}if(p==="{"){l++,n+=p,r++;continue}if(p==="}"){l--;let x=c[c.length-1];x&&l===x.braceDepth&&c.pop(),n+=p,r++;continue}let d=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(d){let x=d[0].slice(0,-1);n+=x,r+=x.length,c.push({type:"class-body",braceDepth:l});continue}let y=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(y){let x=y[1],w=y[0].length,E=e[r+w],S,j=r+w;(E==="?"||E==="!")&&(S=E,j++,S==="!"?t.unsafeFunctions.add(x):t.safeFunctions.add(x)),n+=`function ${x}(`,r=j;let A=Ht(e,r,"(",")");if(!A){n+=e[r],r++;continue}let{content:k,endPos:v}=A;r=v;let C=tr(k,t,!0);n+=C+")";let P=r;for(;P<e.length&&/\s/.test(e[P]);)P++;if(e[P]===":"){let D=e.slice(P,P+2),B;for(D===":?"||D===":!"?(P+=2,B=D===":?"?"safe":"unsafe"):P+=1;P<e.length&&/\s/.test(e[P]);)P++;let F=er(e,P);F&&(s===void 0&&(s=F.type,B&&(i=B)),r=F.endPos)}let M=r;for(;M<e.length&&/\s/.test(e[M]);)M++;if(e[M]==="="&&e[M+1]===">")throw new H("Unexpected '=>' after function declaration. Function declarations use `function name(params) { body }`, not arrow syntax. Remove the `=>`.",ve(t.originalSource,M),t.originalSource);continue}let b=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),$=(()=>{for(let x=n.length-1;x>=0;x--)if(!/\s/.test(n[x]))return n[x];return`
48
48
  `})(),T=$!=="="&&$!==","&&$!=="("&&$!=="["&&$!==">";if(b&&f()&&!T){let x=b[1].length;n+=e.slice(r,r+x),r+=x;continue}if(b&&f()&&T){let x=b[1],w=b[0].length,E=r+w;n+=x+"(",r=E;let S=Ht(e,r,"(",")");if(!S){n+=e[r],r++;continue}let{content:j,endPos:A}=S;r=A;let k=tr(j,t,!0);n+=k+")";let v=r;for(;v<e.length&&/\s/.test(e[v]);)v++;if(e[v]===":"){let P=e.slice(v,v+2);for(P===":?"||P===":!"?v+=2:v++;v<e.length&&/\s/.test(e[v]);)v++;let M=er(e,v);M&&(r=M.endPos)}let C=r;for(;C<e.length&&/\s/.test(e[C]);)C++;if(e[C]==="="&&e[C+1]===">")throw new H("Unexpected '=>' after method declaration. Methods use `name(params) { body }`, not arrow syntax. Remove the `=>`.",ve(t.originalSource,C),t.originalSource);continue}if(e[r]==="("){let x=Ht(e,r+1,"(",")");if(!x){n+=e[r],r++;continue}let w=x.content,E=x.endPos,S=E;for(;S<e.length&&/\s/.test(e[S]);)S++;let j;if(e[S]===":"){let A=e.slice(S,S+2);for(A===":?"||A===":!"?S+=2:S++;S<e.length&&/\s/.test(e[S]);)S++;let k=er(e,S);if(k)for(j=k.type,S=k.endPos;S<e.length&&/\s/.test(e[S]);)S++}if(e.slice(S,S+2)==="=>"){let A=null,k=w,v=w.trimStart();v.startsWith("?")&&(v.length===1||/\s/.test(v[1]))?(A="?",k=v.slice(1)):v.startsWith("!")&&(v.length===1||/\s/.test(v[1]))&&(A="!",k=v.slice(1));let C=tr(k,t,!1);for(n+=`(${A==="?"?"/* safe */ ":A==="!"?"/* unsafe */ ":""}${C})`,r=E;r<S&&/\s/.test(e[r]);)n+=e[r],r++;j&&(r=S)}else{let A=Xt(w,t);n+=`(${A.source})`,r=E}continue}n+=e[r],r++}return{source:n,returnType:s,returnSafety:i}}function Ht(e,t,n,r){let s=1,i=t,o=!1,a="";for(;i<e.length&&s>0;){let c=e[i];!o&&(c==="'"||c==='"'||c==="`")?(o=!0,a=c):o&&c===a&&e[i-1]!=="\\"?o=!1:o||(c===n?s++:c===r&&s--),i++}return s!==0?null:{content:e.slice(t,i-1),endPos:i}}function Os(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return null;let r=n,s=e[n];if(s==="{"||s==="["){let o=s==="{"?"}":"]",a=Ht(e,n+1,s,o);return a?{value:e.slice(r,a.endPos),endPos:a.endPos}:null}if(s==="'"||s==='"'||s==="`"){for(n++;n<e.length;){if(e[n]===s&&e[n-1]!=="\\")return n++,{value:e.slice(r,n),endPos:n};n++}return null}if(/[-+\d]/.test(s)){for(;n<e.length&&/[\d.eE+-]/.test(e[n]);)n++;return{value:e.slice(r,n),endPos:n}}let i=e.slice(n).match(/^(true|false|null|undefined)\b/);return i?{value:i[1],endPos:n+i[1].length}:null}function xt(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function er(e,t){let n=t,r=0,s=!1,i="",o=!1,a=c=>({type:xt(e.slice(t,c).trim()),endPos:c});for(;n<e.length;){let c=e[n];if(!s&&(c==="'"||c==='"'||c==="`")){s=!0,i=c,o=!0,n++;continue}if(s){if(c===i&&e[n-1]!=="\\"){if(s=!1,n++,r===0){let l=n;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(n)}continue}n++;continue}if(c==="{"||c==="["||c==="("){r++,o=!0,n++;continue}if(c==="}"||c==="]"||c===")"){if(r--,r===0){n++;let l=n;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="|"||e[l]==="&")continue;return a(n)}n++;continue}if(r===0&&c==="{"){if(o)return a(n);if(e.slice(n+1).match(/^\s*(\w+)\s*:/)){r++,o=!0,n++;continue}return a(n)}if(r===0&&(c==="|"||c==="&")){for(n++,n<e.length&&e[n]==="|"&&n++;n<e.length&&/\s/.test(e[n]);)n++;continue}if(r===0&&(/\d/.test(c)||c==="-"&&/\d/.test(e[n+1]))){let l=n;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(o=!0,n=l;n<e.length&&/\s/.test(e[n]);)n++;if(n<e.length&&e[n]==="{")return{type:xt(e.slice(t,l).trim()),endPos:l};if(e[n]!=="|"&&e[n]!=="&")return{type:xt(e.slice(t,l).trim()),endPos:l};continue}if(r===0&&/[a-zA-Z_]/.test(c)){let l=n;for(;l<e.length&&/\w/.test(e[l]);)l++;for(o=!0,n=l;n<e.length&&/\s/.test(e[n]);)n++;if(n<e.length&&e[n]==="("){r++,n++;continue}if(n<e.length&&e[n]==="{"&&!e.slice(n+1).match(/^\s*(\w+)\s*:/)){let f=l;for(;f>t&&/\s/.test(e[f-1]);)f--;return{type:xt(e.slice(t,f).trim()),endPos:l}}if(e[n]!=="|"&&e[n]!=="&")return{type:xt(e.slice(t,l).trim()),endPos:l};continue}n++}return o?a(n):null}function Qt(e){let t=[],n="",r=0,s=!1,i=!1,o=0;for(;o<e.length;){let a=e[o],c=e[o+1];if(!i&&a==="/"&&c==="/"){s=!0,n+="//",o+=2;continue}if(!s&&a==="/"&&c==="*"){i=!0,n+="/*",o+=2;continue}if(s&&a===`
49
49
  `){s=!1,n+=a,o++;continue}if(i&&a==="*"&&c==="/"){i=!1,n+="*/",o+=2;continue}if(s||i){n+=a,o++;continue}a==="("||a==="{"||a==="["?(r++,n+=a):a===")"||a==="}"||a==="]"?(r--,n+=a):a===","&&r===0?(t.push(n),n=""):n+=a,o++}return n.trim()&&t.push(n),t}function tr(e,t,n){let r=Xt(e,{originalSource:e,requiredParams:t.requiredParams,unsafeFunctions:t.unsafeFunctions,safeFunctions:t.safeFunctions}).source,s=Qt(r),i=!1,o=new Set,a=l=>{if(n&&/^\w+$/.test(l)){if(o.has(l))throw new Error(`Duplicate parameter name '${l}'`);o.add(l)}};return s.map(l=>{let u=l.trim();if(!u)return l;if(n&&u.startsWith("{")&&u.endsWith("}")){let m=u.slice(1,-1);return`{ ${Bs(m,t)} }`}if(n&&u.startsWith("[")&&u.endsWith("]")){let m=u.slice(1,-1);return`[ ${Bs(m,t)} ]`}if(u.startsWith("...")){let m=Ls(u);return m!==-1?u.slice(0,m).trim():l}let f=u.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(f){let[,m,d]=f;return a(m),i=!0,`${m} = ${d}`}if(!Lo(u)){let m=u.match(/^(\w+)\s*=/);return m&&a(m[1]),i=!0,l}let p=Ls(u);if(p!==-1){let m=u.slice(0,p).trim(),d=u.slice(p+1).trim();return a(m),i&&n&&/^\w+$/.test(m),n&&/^\w+$/.test(m)&&t.requiredParams.add(m),`${m} = ${d}`}return l}).join(",")}function Bs(e,t){return Qt(e).map(s=>{let i=s.trim();if(!i)return s;let o=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(o){let[,l,u]=o;t.requiredParams.add(l);let f=Zt(u);return`${l} = ${f}`}let a=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(a){let[,l,u]=a;t.requiredParams.add(l);let f=Yt(u);return`${l} = ${f}`}let c=i.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(c){let[,l,u]=c;return t.requiredParams.add(l),`${l} = ${u}`}return s}).join(", ")}function Zt(e){let t=e.slice(1,-1).trim();return`{ ${Qt(t).map(s=>{let i=s.trim();if(!i)return s;let o=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(o){let[,f,p]=o;return`${f}: ${Zt(p)}`}let a=i.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(a){let[,f,p]=a;return`${f}: ${Zt(p)}`}let c=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(c){let[,f,p]=c;return`${f}: ${Yt(p)}`}let l=i.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,f,p]=l;return`${f}: ${Yt(p)}`}let u=i.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(u){let[,f,p]=u;return`${f}: ${p}`}return s}).join(", ")} }`}function Yt(e){let t=e.slice(1,-1).trim();return`[ ${Qt(t).map(s=>{let i=s.trim();return i?i.startsWith("{")&&i.endsWith("}")?Zt(i):i.startsWith("[")&&i.endsWith("]")?Yt(i):s:s}).join(", ")} ]`}function Lo(e){let t=0,n=!1,r=!1,s=!1,i="";for(let o=0;o<e.length;o++){let a=e[o];if(!s&&(a==="'"||a==='"'||a==="`")){s=!0,i=a;continue}if(s){a===i&&e[o-1]!=="\\"&&(s=!1);continue}a==="("||a==="{"||a==="["?t++:a===")"||a==="}"||a==="]"?t--:t===0&&(a===":"&&(n=!0),a==="="&&e[o+1]!==">"&&(r=!0))}return n&&!r}function Ls(e){let t=0,n=!1,r="";for(let s=0;s<e.length;s++){let i=e[s];if(!n&&(i==="'"||i==='"'||i==="`")){n=!0,r=i;continue}if(n){i===r&&e[s-1]!=="\\"&&(n=!1);continue}if(i==="("||i==="{"||i==="[")t++;else if(i===")"||i==="}"||i==="]")t--;else if(t===0&&i===":")return s}return-1}function nr(e){let t="",n=0;for(;n<e.length;){let r=e[n];if(r==="'"||r==='"'||r==="`"){let s=r;for(t+=r,n++;n<e.length&&e[n]!==s;)e[n]==="\\"&&(t+=e[n++]),n<e.length&&(t+=e[n++]);n<e.length&&(t+=e[n++]);continue}if(r==="/"&&e[n+1]==="*"){let s=e.indexOf("*/",n+2),i=s===-1?e.slice(n):e.slice(n,s+2);t+=i,n+=i.length;continue}if(r==="/"&&e[n+1]==="/"){let s=e.indexOf(`
50
- `,n),i=s===-1?e.length:s;t+=" ".repeat(i-n),n=i;continue}t+=r,n++}return t}function en(e,t={}){let n=e,r,s=new Set,i=new Set,o=new Set,a=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e),c=t.dialect==="js"?!0:t.dialect==="tjs"?!1:a||t.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 u=e.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);u&&(r=u[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/,p;for(;p=e.match(f);){let v=p[2];v==="TjsStrict"?(l.tjsEquals=!0,l.tjsClass=!0,l.tjsDate=!0,l.tjsNoeval=!0,l.tjsNoVar=!0,l.tjsStandard=!0,l.tjsSafeAssign=!0):v==="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):v==="TjsEquals"?l.tjsEquals=!0:v==="TjsClass"?l.tjsClass=!0:v==="TjsDate"?l.tjsDate=!0:v==="TjsNoeval"?l.tjsNoeval=!0:v==="TjsNoVar"?l.tjsNoVar=!0:v==="TjsStandard"?l.tjsStandard=!0:v==="TjsSafeEval"?l.tjsSafeEval=!0:v==="TjsSafeAssign"&&(l.tjsSafeAssign=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${v}\\s*`),"$1")}e=nr(e),l.tjsStandard&&(e=bs(e)),e=Rs(e),e=Is(e);let m=Ds(e);e=m.source;let d=m.annotations,y=gs(e);e=y.source,e=gt(e),l.tjsEquals&&!t.vmTarget&&(e=ht(e)),e=xs(e),e=Ss(e),e=ws(e),e=Ts(e),e=Es(e),e=js(e);let b=hs(e,{loader:t.moduleLoader,importerPath:t.filename});e=b.source;let{source:$,returnType:T,returnSafety:x}=Xt(e,{originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o});e=$;let w=$s(e);e=w.source,e=ds(e);let E=ks(e,s);e=E.source;let S=ys(e);e=S.source;let j=[...y.blocks,...b.blocks,...S.blocks],A=vs(e,t.dangerouslySkipTests);e=A.source;let k=Ms(e,s);e=k.source;for(let v of k.polyCtorClasses)i.add(`${v}$dispatch`);return l.tjsClass&&(e=As(e,k.polyCtorClasses)),l.tjsDate&&(e=Cs(e)),l.tjsNoeval&&(e=Ps(e)),l.tjsNoVar&&(e=Ns(e)),e=bt(e,w.extensions),{source:e,returnType:T,returnSafety:x,moduleSafety:r,tjsModes:l,originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o,wasmBlocks:j,tests:A.tests,testErrors:A.errors,polymorphicNames:E.polymorphicNames,extensions:w.extensions,letAnnotations:d}}function xe(e,t={}){let{filename:n="<source>",colonShorthand:r=!0,vmTarget:s=!1,dialect:i}=t,{source:o,returnType:a,returnSafety:c,moduleSafety:l,originalSource:u,requiredParams:f,unsafeFunctions:p,safeFunctions:m,wasmBlocks:d,tests:y,testErrors:b,letAnnotations:$,tjsModes:T}=r?en(e,{vmTarget:s,dialect:i,moduleLoader:t.moduleLoader,filename:t.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:Fs.parse(o,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:a,returnSafety:c,moduleSafety:l,originalSource:u,requiredParams:f,unsafeFunctions:p,safeFunctions:m,wasmBlocks:d,tests:y,testErrors:b,letAnnotations:$,tjsModes:T}}catch(x){let w=x.loc||{line:1,column:0};throw new H(x.message.replace(/\s*\(\d+:\d+\)$/,""),w,u,n)}}function Fo(e,t){for(let r of e.body){if(r.type==="ImportDeclaration")throw new H("Imports are not supported. All atoms must be registered with the VM.",r.loc?.start||{line:1,column:0},void 0,t);if(r.type==="ExportNamedDeclaration"||r.type==="ExportDefaultDeclaration")throw new H("Exports are not supported. The function is automatically exported.",r.loc?.start||{line:1,column:0},void 0,t);if(r.type==="ClassDeclaration")throw new H("Classes are not supported. Agent99 uses functional composition.",r.loc?.start||{line:1,column:0},void 0,t)}let n=e.body.filter(r=>r.type==="FunctionDeclaration");if(n.length===0)throw new H("Source must contain a function declaration",{line:1,column:0},void 0,t);if(n.length>1){let r=n[1];throw new H("Only a single function per agent is allowed",r.loc?.start||{line:1,column:0},void 0,t)}return n[0]}function wt(e,t){for(let i of e.body){if(i.type==="ImportDeclaration")throw new H("Imports are not supported. All atoms must be registered with the VM.",i.loc?.start||{line:1,column:0},void 0,t);if(i.type==="ExportNamedDeclaration"||i.type==="ExportDefaultDeclaration")throw new H("Exports are not supported. The function is automatically exported.",i.loc?.start||{line:1,column:0},void 0,t);if(i.type==="ClassDeclaration")throw new H("Classes are not supported. Agent99 uses functional composition.",i.loc?.start||{line:1,column:0},void 0,t)}let n=e.body.filter(i=>i.type==="FunctionDeclaration");if(n.length===0)throw new H("Source must contain a function declaration",{line:1,column:0},void 0,t);let r=n[n.length-1],s=new Map;for(let i=0;i<n.length-1;i++){let o=n[i],a=o.id?.name;if(!a)throw new H("Helper function must have a name",o.loc?.start||{line:1,column:0},void 0,t);if(s.has(a))throw new H(`Duplicate helper function name: ${a}`,o.loc?.start||{line:1,column:0},void 0,t);if(a===r.id?.name)throw new H(`Helper function cannot share a name with the entry function: ${a}`,o.loc?.start||{line:1,column:0},void 0,t);s.set(a,o)}return{entry:r,helpers:s}}function St(e,t){let n={params:{}};if(!t.loc)return n;let r=e.substring(0,t.start),s=[...r.matchAll(/\/\*#([\s\S]*?)\*\//g)];if(s.length>0){let u=s[s.length-1],f=r.substring(u.index+u[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(f)){let p=u[1],m=p.split(`
50
+ `,n),i=s===-1?e.length:s;t+=" ".repeat(i-n),n=i;continue}t+=r,n++}return t}function en(e,t={}){let n=e,r,s=new Set,i=new Set,o=new Set,a=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e),c=t.dialect==="js"?!0:t.dialect==="tjs"?!1:a||t.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 u=e.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);u&&(r=u[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/,p;for(;p=e.match(f);){let v=p[2];v==="TjsStrict"?(l.tjsEquals=!0,l.tjsClass=!0,l.tjsDate=!0,l.tjsNoeval=!0,l.tjsNoVar=!0,l.tjsStandard=!0,l.tjsSafeAssign=!0):v==="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):v==="TjsEquals"?l.tjsEquals=!0:v==="TjsClass"?l.tjsClass=!0:v==="TjsDate"?l.tjsDate=!0:v==="TjsNoeval"?l.tjsNoeval=!0:v==="TjsNoVar"?l.tjsNoVar=!0:v==="TjsStandard"?l.tjsStandard=!0:v==="TjsSafeEval"?l.tjsSafeEval=!0:v==="TjsSafeAssign"&&(l.tjsSafeAssign=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${v}\\s*`),"$1")}e=nr(e),l.tjsStandard&&(e=bs(e)),e=Rs(e),e=Is(e);let m=Ds(e);e=m.source;let d=m.annotations,y=gs(e);e=y.source,e=gt(e),l.tjsEquals&&!t.vmTarget&&(e=ht(e)),e=xs(e),e=Ss(e),e=ws(e),e=Ts(e),e=Es(e),l.tjsSafeAssign&&(e=js(e));let b=hs(e,{loader:t.moduleLoader,importerPath:t.filename});e=b.source;let{source:$,returnType:T,returnSafety:x}=Xt(e,{originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o});e=$;let w=$s(e);e=w.source,e=ds(e);let E=ks(e,s);e=E.source;let S=ys(e);e=S.source;let j=[...y.blocks,...b.blocks,...S.blocks],A=vs(e,t.dangerouslySkipTests);e=A.source;let k=Ms(e,s);e=k.source;for(let v of k.polyCtorClasses)i.add(`${v}$dispatch`);return l.tjsClass&&(e=As(e,k.polyCtorClasses)),l.tjsDate&&(e=Cs(e)),l.tjsNoeval&&(e=Ps(e)),l.tjsNoVar&&(e=Ns(e)),e=bt(e,w.extensions),{source:e,returnType:T,returnSafety:x,moduleSafety:r,tjsModes:l,originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o,wasmBlocks:j,tests:A.tests,testErrors:A.errors,polymorphicNames:E.polymorphicNames,extensions:w.extensions,letAnnotations:d}}function xe(e,t={}){let{filename:n="<source>",colonShorthand:r=!0,vmTarget:s=!1,dialect:i}=t,{source:o,returnType:a,returnSafety:c,moduleSafety:l,originalSource:u,requiredParams:f,unsafeFunctions:p,safeFunctions:m,wasmBlocks:d,tests:y,testErrors:b,letAnnotations:$,tjsModes:T}=r?en(e,{vmTarget:s,dialect:i,moduleLoader:t.moduleLoader,filename:t.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:Fs.parse(o,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:a,returnSafety:c,moduleSafety:l,originalSource:u,requiredParams:f,unsafeFunctions:p,safeFunctions:m,wasmBlocks:d,tests:y,testErrors:b,letAnnotations:$,tjsModes:T}}catch(x){let w=x.loc||{line:1,column:0};throw new H(x.message.replace(/\s*\(\d+:\d+\)$/,""),w,u,n)}}function Fo(e,t){for(let r of e.body){if(r.type==="ImportDeclaration")throw new H("Imports are not supported. All atoms must be registered with the VM.",r.loc?.start||{line:1,column:0},void 0,t);if(r.type==="ExportNamedDeclaration"||r.type==="ExportDefaultDeclaration")throw new H("Exports are not supported. The function is automatically exported.",r.loc?.start||{line:1,column:0},void 0,t);if(r.type==="ClassDeclaration")throw new H("Classes are not supported. Agent99 uses functional composition.",r.loc?.start||{line:1,column:0},void 0,t)}let n=e.body.filter(r=>r.type==="FunctionDeclaration");if(n.length===0)throw new H("Source must contain a function declaration",{line:1,column:0},void 0,t);if(n.length>1){let r=n[1];throw new H("Only a single function per agent is allowed",r.loc?.start||{line:1,column:0},void 0,t)}return n[0]}function wt(e,t){for(let i of e.body){if(i.type==="ImportDeclaration")throw new H("Imports are not supported. All atoms must be registered with the VM.",i.loc?.start||{line:1,column:0},void 0,t);if(i.type==="ExportNamedDeclaration"||i.type==="ExportDefaultDeclaration")throw new H("Exports are not supported. The function is automatically exported.",i.loc?.start||{line:1,column:0},void 0,t);if(i.type==="ClassDeclaration")throw new H("Classes are not supported. Agent99 uses functional composition.",i.loc?.start||{line:1,column:0},void 0,t)}let n=e.body.filter(i=>i.type==="FunctionDeclaration");if(n.length===0)throw new H("Source must contain a function declaration",{line:1,column:0},void 0,t);let r=n[n.length-1],s=new Map;for(let i=0;i<n.length-1;i++){let o=n[i],a=o.id?.name;if(!a)throw new H("Helper function must have a name",o.loc?.start||{line:1,column:0},void 0,t);if(s.has(a))throw new H(`Duplicate helper function name: ${a}`,o.loc?.start||{line:1,column:0},void 0,t);if(a===r.id?.name)throw new H(`Helper function cannot share a name with the entry function: ${a}`,o.loc?.start||{line:1,column:0},void 0,t);s.set(a,o)}return{entry:r,helpers:s}}function St(e,t){let n={params:{}};if(!t.loc)return n;let r=e.substring(0,t.start),s=[...r.matchAll(/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm)];if(s.length>0){let u=s[s.length-1],f=r.substring(u.index+u[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(f)){let p=u[1],m=p.split(`
51
51
  `),d=m.filter(y=>y.trim().length>0).reduce((y,b)=>{let $=b.match(/^(\s*)/)?.[1].length||0;return Math.min(y,$)},1/0);return d>0&&d<1/0&&(p=m.map(y=>y.slice(d)).join(`
52
52
  `)),n.description=p.trim(),n}}let i=r.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!i)return n;let o=i[0],a=o.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);a&&(n.description=a[1].trim());let c=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,l;for(;(l=c.exec(o))!==null;)n.params[l[1]]=l[2].trim();return n}import{parseExpressionAt as Uo}from"acorn";function ae(e){switch(e.type){case"Literal":{let t=e.value;if(t===null)return{kind:"null"};if(typeof t=="string")return{kind:"string"};if(typeof t=="number"){let n=e.raw;return n&&n.includes(".")?{kind:"number"}:{kind:"integer"}}return typeof t=="boolean"?{kind:"boolean"}:{kind:"any"}}case"ArrayExpression":{let t=e.elements;if(t.length===0)return{kind:"array",items:{kind:"any"}};let n=t.filter(o=>o!=null).map(o=>ae(o));if(n.length===0)return{kind:"array",items:{kind:"any"}};let r=new Map;for(let o of n){let a=JSON.stringify(o);r.has(a)||r.set(a,o)}let s=[...r.values()];return{kind:"array",items:s.length===1?s[0]:{kind:"union",members:s}}}case"ObjectExpression":{let t=e.properties,n={};for(let r of t)if(r.type==="Property"&&r.key.type==="Identifier"){let s=r.key.name;n[s]=ae(r.value)}return{kind:"object",shape:n}}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="||"?ae(n):t==="&&"||t==="??"?ae(r):{kind:"any"}}case"BinaryExpression":{let{operator:t,left:n,right:r}=e;if(t==="|"){let s=ae(n),i=ae(r);return i.kind==="null"?{...s,nullable:!0}:s.kind==="null"?{...i,nullable:!0}:{kind:"union",members:[s,i]}}return{kind:"any"}}case"Identifier":return e.name==="undefined"?{kind:"undefined"}:{kind:"any"};case"ArrowFunctionExpression":case"FunctionExpression":{let t=e,n=t.params.map(s=>qo(s)),r={kind:"any"};return t.type==="ArrowFunctionExpression"&&t.body&&t.body.type!=="BlockStatement"&&(r=ae(t.body)),{kind:"function",params:n,returns:r}}case"UnaryExpression":{let t=e.operator,n=e.argument;if(t==="+"&&n.type==="Literal"&&typeof n.value=="number")return{kind:"non-negative-integer"};if(t==="-"&&n.type==="Literal"&&typeof n.value=="number"){let s=n.raw;return s&&s.includes(".")?{kind:"number"}:{kind:"integer"}}return{kind:"any"}}default:return{kind:"any"}}}function qo(e){return e.type==="Identifier"?{name:e.name,type:{kind:"any"}}:e.type==="AssignmentPattern"&&e.left?.type==="Identifier"?{name:e.left.name,type:ae(e.right)}:e.type==="RestElement"&&e.argument?.type==="Identifier"?{name:`...${e.argument.name}`,type:{kind:"array",items:{kind:"any"}}}:{name:"?",type:{kind:"any"}}}function Ne(e,t){if(e.type==="Identifier")return{name:e.name,type:{kind:"any"},required:!0};if(e.type==="AssignmentPattern"){let{left:n,right:r}=e;if(n.type!=="Identifier")throw new K("Only simple parameter names are supported",Z(e));let s=n.name,i=t?.has(s)??!1,o=ae(r),a=Ee(r);return{name:s,type:o,required:i,default:i?null:a,example:a,loc:{start:e.start,end:e.end}}}if(e.type==="ObjectPattern"){let n=e.properties,r={},s={};for(let i of n)if(i.type==="Property"){let o=i.key.type==="Identifier"?i.key.name:String(i.key.value);if(i.value.type==="Identifier")r[o]={kind:"any"},s[o]={name:o,type:{kind:"any"},required:!0};else if(i.value.type==="AssignmentPattern"){let a=Ne(i.value,t),c=t?.has(o)??!1;r[o]=a.type,s[o]={name:o,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 K(`Unsupported parameter pattern: ${e.type}`,Z(e))}function Ee(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(t=>t?Ee(t):null);case"ObjectExpression":{let t={};for(let n of e.properties)n.type==="Property"&&n.key.type==="Identifier"&&(t[n.key.name]=Ee(n.value));return t}case"UnaryExpression":if(e.operator==="-"){let t=Ee(e.argument);return typeof t=="number"?-t:void 0}if(e.operator==="+"){let t=Ee(e.argument);return typeof t=="number"?+t:void 0}return;case"BinaryExpression":{let{operator:t,left:n}=e;return t==="|"?Ee(n):void 0}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="&&"&&n.type==="Literal"&&n.value===null?null:t==="||"||t==="??"?Ee(n)??Ee(r):void 0}default:return}}function Us(e){try{let t=Uo(e,0,{ecmaVersion:2022});return ae(t)}catch{return{kind:"any"}}}function rr(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 t=e.items?rr(e.items):"any";return e.nullable?`${t}[] | null`:`${t}[]`}case"object":{if(!e.shape||Object.keys(e.shape).length===0)return e.nullable?"object | null":"object";let t=Object.entries(e.shape).map(([n,r])=>`${n}: ${rr(r)}`).join(", ");return e.nullable?`{ ${t} } | null`:`{ ${t} }`}case"union":return e.members?.map(rr).join(" | ")||"any";default:return"any"}}function tn(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?tn(e.items):{}};case"object":if(e.shape){let t={};for(let[n,r]of Object.entries(e.shape))t[n]=tn(r);return{type:"object",properties:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(tn)}:{};default:return{}}}function Wo(e){let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=tn(s.type),s.required&&n.push(r);return{type:"object",properties:t,required:n.length>0?n:void 0,additionalProperties:!1}}function $t(e,t,n,r={},s,i){let o=St(t,e),a=new Map;for(let T of e.params){let x=Ne(T,s);if(x.name==="__destructured__"&&x.type.kind==="object"&&x.type.destructuredParams)for(let[w,E]of Object.entries(x.type.destructuredParams))a.set(w,{...E,description:o.params[w]});else x.description=o.params[x.name],a.set(x.name,x)}let c;n&&(c=Us(n));let l={depth:0,locals:new Map,parameters:a,atoms:new Set(Object.keys(r.atoms||{})),warnings:[],source:t,filename:r.filename||"<source>",options:r,helpers:i,helperSteps:i?new Map:void 0,helperTransforming:i?new Set:void 0},u=we(e.body,l),f=[],p=[],m=[];for(let[T,x]of a.entries())x.required?p.push(T):x.default!==void 0?m.push({name:T,defaultValue:x.default}):p.push(T);p.length>0&&f.push({op:"varsImport",keys:p});for(let{name:T,defaultValue:x}of m)f.push({op:"varsImport",keys:[T]}),f.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:T},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:T,value:x}]});f.push(...u);let d=Object.fromEntries(a),y={name:e.id?.name||"anonymous",description:o.description,parameters:d,returns:c},b=Wo(d),$=l.helperSteps&&l.helperSteps.size>0?Object.fromEntries(l.helperSteps):void 0;return{ast:{op:"seq",steps:f,inputSchema:b,...$&&{helpers:$}},signature:y,warnings:l.warnings}}function we(e,t){let n=[];for(let r of e.body){let s=Tt(r,t);s&&(Array.isArray(s)?n.push(...s):n.push(s))}return n}function Tt(e,t){switch(e.type){case"VariableDeclaration":return Jo(e,t);case"ExpressionStatement":return Vo(e,t);case"IfStatement":return zo(e,t);case"WhileStatement":return Go(e,t);case"ForOfStatement":return Ho(e,t);case"TryStatement":return Zo(e,t);case"ReturnStatement":return Yo(e,t);case"ThrowStatement":throw new K("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",Z(e),t.source,t.filename);case"BlockStatement":return{op:"scope",steps:we(e,ge(t))};case"EmptyStatement":return null;default:throw new K(`Unsupported statement type: ${e.type}`,Z(e),t.source,t.filename)}}function Jo(e,t){let n=[],r=e.kind==="const",s=r?"constSet":"varSet";for(let i of e.declarations){if(i.id.type!=="Identifier")throw new K("Only simple variable names are supported",Z(i),t.source,t.filename);let o=i.id.name;if(i.init){let{step:a,resultVar:c}=Ue(i.init,t,o,r);a?n.push(a):c!==o&&n.push({op:s,key:o,value:c});let l=ae(i.init);t.locals.set(o,l)}else{if(r)throw new K("const declarations must be initialized",Z(i),t.source,t.filename);n.push({op:"varSet",key:o,value:null}),t.locals.set(o,{kind:"any",nullable:!0})}}return n}function Vo(e,t){let n=e.expression;if(n.type==="AssignmentExpression")return Ko(n,t);if(n.type==="CallExpression"){let{step:r,resultVar:s}=Ue(n,t);return r||(s?{op:"varSet",key:"_",value:s}:null)}return t.warnings.push({message:"Expression statement has no effect",line:Z(e).line,column:Z(e).column}),null}function Ko(e,t){if(e.left.type!=="Identifier")throw new K("Only simple variable assignment is supported",Z(e),t.source,t.filename);let n=e.left.name,{step:r,resultVar:s}=Ue(e.right,t,n);return r||{op:"varSet",key:n,value:s}}function zo(e,t){let n=z(e.test,t),r=e.consequent.type==="BlockStatement"?we(e.consequent,ge(t)):[Tt(e.consequent,t)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?we(e.alternate,ge(t)):[Tt(e.alternate,t)].filter(Boolean)),{op:"if",condition:n,then:r,...s&&{else:s}}}function Go(e,t){let n=z(e.test,t),r=e.body.type==="BlockStatement"?we(e.body,ge(t)):[Tt(e.body,t)].filter(Boolean);return{op:"while",condition:n,body:r}}function Ho(e,t){let n;if(e.left.type==="VariableDeclaration"){let o=e.left.declarations[0];if(o.id.type!=="Identifier")throw new K("Only simple variable names are supported in for...of",Z(e.left),t.source,t.filename);n=o.id.name}else if(e.left.type==="Identifier")n=e.left.name;else throw new K("Unsupported for...of left-hand side",Z(e.left),t.source,t.filename);let r=se(e.right,t),s=ge(t);s.locals.set(n,{kind:"any"});let i=e.body.type==="BlockStatement"?we(e.body,s):[Tt(e.body,s)].filter(Boolean);return{op:"map",items:r,as:n,steps:i}}function Zo(e,t){let n=we(e.block,ge(t)),r,s;if(e.handler){let i=ge(t);e.handler.param?.type==="Identifier"&&(s=e.handler.param.name,i.locals.set(s,{kind:"any"})),r=we(e.handler.body,i)}return{op:"try",try:n,...r&&{catch:r},...s&&{catchParam:s}}}function Yo(e,t){if(!e.argument)return{op:"return",value:{}};let{step:n,resultVar:r}=Ue(e.argument,t,"__returnVal__");return n?[n,{op:"return",value:r}]:{op:"return",value:se(e.argument,t)}}var Ws=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),Xo=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),Et=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),Qo=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 ea(e){if(e.callee.type==="Identifier"){let t=e.callee.name;return Xo.has(t)||Et.has(t)}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(Ws.has(n)||Et.has(n))return!0}if(t.property.type==="Identifier"){let n=t.property.name;if(Qo.has(n))return!0}}return!1}function ta(e){if(e.object.type==="Identifier"){let t=e.object.name;return Ws.has(t)||Et.has(t)}return!1}var qs={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 na(e){if(e.callee.type==="Identifier"){let t=e.callee.name;if(Et.has(t))return qs[t]||`${t} is not available in AsyncJS.`}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(Et.has(n))return qs[n]||`${n} is not available in AsyncJS.`}}return null}function Js(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 Ue(e,t,n,r){let s=r?"constSet":"varSet";if(e.type==="ChainExpression")return Ue(e.expression,t,n,r);if(e.type==="NewExpression"){let o=e,a="constructor";o.callee.type==="Identifier"&&(a=o.callee.name);let c=Js(a);throw new K(`The 'new' keyword is not supported in AsyncJS.${c}`,Z(e),t.source,t.filename)}if(e.type==="CallExpression"){let o=na(e);if(o)throw new K(o,Z(e),t.source,t.filename)}if(e.type==="CallExpression"&&ea(e)){let o=z(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="MemberExpression"&&ta(e)){let o=z(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="CallExpression")return ra(e,t,n,r);if(e.type==="TemplateLiteral")return oa(e,t,n,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let o=z(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}return{step:null,resultVar:se(e,t)}}function ra(e,t,n,r){let s,i=!1,o;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,i=!0,o=se(c.object,t);else throw new K("Computed method names are not supported",Z(e),t.source,t.filename)}else throw new K("Only named function calls are supported",Z(e),t.source,t.filename);if(i)return ia(s,o,e.arguments,t,n,r);if(s==="console"&&e.callee.type,t.helpers?.has(s)){let c=sa(s,t,e),l=e.arguments.map(u=>se(u,t));if(l.length!==c.length)throw new K(`Helper '${s}' expects ${c.length} argument(s), got ${l.length}`,Z(e),t.source,t.filename);return{step:{op:"callLocal",name:s,args:l,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}let a=aa(e,t);return{step:{op:s,...a,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function sa(e,t,n){let r=t.helpers.get(e),s=[];for(let i of r.params){let o;if(i.type==="Identifier"?o=i:i.type==="AssignmentPattern"&&i.left?.type==="Identifier"&&(o=i.left),!o)throw new K(`Helper '${e}' parameters must be plain identifiers (optionally with an example value); destructuring is not supported`,i.loc?.start??Z(n),t.source,t.filename);s.push(o.name)}if(t.helperSteps.has(e)||t.helperTransforming.has(e))return s;t.helperTransforming.add(e);try{let i={depth:0,locals:new Map,parameters:new Map(s.map(a=>[a,{name:a,type:{kind:"any"},required:!0}])),atoms:t.atoms,warnings:t.warnings,source:t.source,filename:t.filename,options:t.options,helpers:t.helpers,helperSteps:t.helperSteps,helperTransforming:t.helperTransforming},o=we(r.body,i);t.helperSteps.set(e,{steps:o,paramNames:s})}finally{t.helperTransforming.delete(e)}return s}function ia(e,t,n,r,s,i){switch(e){case"map":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=ge(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")u=we(o.body,l);else{let{step:f,resultVar:p}=Ue(o.body,l,"result");u=f?[f]:[{op:"varSet",key:"result",value:p}]}return{step:{op:"map",items:t,as:c,steps:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"filter":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=ge(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new K("filter callback must be an expression, not a block",Z(n[0]),r.source,r.filename);return u=z(o.body,l),{step:{op:"filter",items:t,as:c,condition:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"find":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=ge(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new K("find callback must be an expression, not a block",Z(n[0]),r.source,r.filename);return u=z(o.body,l),{step:{op:"find",items:t,as:c,condition:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"reduce":if(n.length>=2&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=o.params[1],l=a?.type==="Identifier"?a.name:"acc",u=c?.type==="Identifier"?c.name:"item",f=ge(r);f.locals.set(l,{kind:"any"}),f.locals.set(u,{kind:"any"});let p;if(o.body.type==="BlockStatement")p=we(o.body,f);else{let{step:d,resultVar:y}=Ue(o.body,f,"result");p=d?[d]:[{op:"varSet",key:"result",value:y}]}let m=se(n[1],r);return{step:{op:"reduce",items:t,as:u,accumulator:l,initial:m,steps:p,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"slice":break;case"push":return{step:{op:"push",list:t,item:se(n[0],r),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"join":return{step:{op:"join",list:t,sep:n.length>0?se(n[0],r):"",...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"split":return{step:{op:"split",str:t,sep:n.length>0?se(n[0],r):"",...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}return r.warnings.push({message:`Unknown method '${e}' - treating as atom call`,line:0,column:0}),{step:{op:e,receiver:t,args:n.map(o=>se(o,r)),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}function oa(e,t,n,r){let s="",i={};for(let o=0;o<e.quasis.length;o++)if(s+=e.quasis[o].value.cooked||e.quasis[o].value.raw,o<e.expressions.length){let a=e.expressions[o],c=`_${o}`;i[c]=se(a,t),s+=`{{${c}}}`}return{step:{op:"template",tmpl:s,vars:i,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function z(e,t){switch(e.type){case"Literal":return{$expr:"literal",value:e.value};case"Identifier":return{$expr:"ident",name:e.name};case"MemberExpression":{let n=e,r=z(n.object,t),s=n.optional===!0;if(n.computed){let o=n.property;return o.type==="Literal"?{$expr:"member",object:r,property:String(o.value),computed:!0,...s&&{optional:!0}}:{$expr:"member",object:r,property:z(o,t),computed:!0,...s&&{optional:!0}}}let i=n.property.name;return{$expr:"member",object:r,property:i,...s&&{optional:!0}}}case"ChainExpression":return z(e.expression,t);case"BinaryExpression":{let n=e;return{$expr:"binary",op:n.operator,left:z(n.left,t),right:z(n.right,t)}}case"LogicalExpression":{let n=e;return{$expr:"logical",op:n.operator,left:z(n.left,t),right:z(n.right,t)}}case"UnaryExpression":{let n=e;return{$expr:"unary",op:n.operator,argument:z(n.argument,t)}}case"ConditionalExpression":{let n=e;return{$expr:"conditional",test:z(n.test,t),consequent:z(n.consequent,t),alternate:z(n.alternate,t)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>z(r,t))};case"ObjectExpression":{let n=e,r=[];for(let s of n.properties)if(s.type==="Property"){let i=s.key.type==="Identifier"?s.key.name:String(s.key.value);r.push({key:i,value:z(s.value,t)})}return{$expr:"object",properties:r}}case"CallExpression":{let n=e;if(n.callee.type==="MemberExpression"){let r=n.callee,s=r.property.type==="Identifier"?r.property.name:String(r.property.value),i=r.optional===!0||n.optional===!0;return{$expr:"methodCall",object:z(r.object,t),method:s,arguments:n.arguments.map(o=>z(o,t)),...i&&{optional:!0}}}if(n.callee.type==="Identifier"){let r=n.callee.name;if(t.helpers?.has(r))throw new K(`Helper '${r}' cannot be called inside an expression. Assign its result to a variable first: const result = ${r}(...); then use result.`,Z(e),t.source,t.filename);return{$expr:"call",callee:r,arguments:n.arguments.map(s=>z(s,t))}}throw new K("Complex function calls in expressions should be lifted to statements",Z(e),t.source,t.filename)}case"NewExpression":{let n=e,r="constructor";n.callee.type==="Identifier"&&(r=n.callee.name);let s=Js(r);throw new K(`The 'new' keyword is not supported in AsyncJS.${s}`,Z(e),t.source,t.filename)}case"TemplateLiteral":throw new K("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",Z(e),t.source,t.filename);default:throw new K(`Unsupported expression type in condition: ${e.type}`,Z(e),t.source,t.filename)}}function se(e,t){switch(e.type){case"Literal":return e.value;case"Identifier":return e.name;case"MemberExpression":{let n=e;if(n.optional===!0)return z(e,t);let s=se(n.object,t);if(s&&typeof s=="object"&&s.$expr){let o=n.computed?String(n.property.value):n.property.name;return{$expr:"member",object:s,property:o,...n.computed&&{computed:!0}}}if(n.computed)return z(e,t);let i=n.property.name;return typeof s=="string"?`${s}.${i}`:s&&s.$kind==="arg"?{$kind:"arg",path:`${s.path}.${i}`}:`${s}.${i}`}case"ChainExpression":return se(e.expression,t);case"ArrayExpression":return e.elements.map(n=>n?se(n,t):null);case"ObjectExpression":{let n={};for(let r of e.properties)if(r.type==="Property"){let s=r.key.type==="Identifier"?r.key.name:String(r.key.value);n[s]=se(r.value,t)}return n}case"TemplateLiteral":return z(e,t);case"CallExpression":return z(e,t);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return z(e,t);default:return null}}function aa(e,t){if(e.arguments.length===1&&e.arguments[0].type==="ObjectExpression"){let n=e.arguments[0],r={};for(let s of n.properties)if(s.type==="Property"){let i=s.key.type==="Identifier"?s.key.name:String(s.key.value);r[i]=se(s.value,t)}return r}return{args:e.arguments.map(n=>se(n,t))}}var ca=/\.[mc]?js$/i,la=/\.[mc]?ts$/i,ua=/\.tjs$/i;function Vs(e){return ua.test(e)?"tjs":ca.test(e)?"js":la.test(e)?"ts":"tjs"}function fa(e){return Vs(e)==="js"?"js":"tjs"}import*as rn from"acorn";function Se(e,t,n,r,s){n||(n=N),(function i(o,a,c){var l=c||o.type;n[l](o,a,i),t[l]&&t[l](o,a)})(e,r,s)}function Ks(e,t,n,r,s){var i=[];n||(n=N),(function o(a,c,l){var u=l||a.type,f=a!==i[i.length-1];f&&i.push(a),n[u](a,c,o),t[u]&&t[u](a,c||i,i),f&&i.pop()})(e,r,s)}function sr(e,t,n){n(e,t)}function qe(e,t,n){}var N={};N.Program=N.BlockStatement=N.StaticBlock=function(e,t,n){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];n(i,t,"Statement")}};N.Statement=sr;N.EmptyStatement=qe;N.ExpressionStatement=N.ParenthesizedExpression=N.ChainExpression=function(e,t,n){return n(e.expression,t,"Expression")};N.IfStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Statement"),e.alternate&&n(e.alternate,t,"Statement")};N.LabeledStatement=function(e,t,n){return n(e.body,t,"Statement")};N.BreakStatement=N.ContinueStatement=qe;N.WithStatement=function(e,t,n){n(e.object,t,"Expression"),n(e.body,t,"Statement")};N.SwitchStatement=function(e,t,n){n(e.discriminant,t,"Expression");for(var r=0,s=e.cases;r<s.length;r+=1){var i=s[r];n(i,t)}};N.SwitchCase=function(e,t,n){e.test&&n(e.test,t,"Expression");for(var r=0,s=e.consequent;r<s.length;r+=1){var i=s[r];n(i,t,"Statement")}};N.ReturnStatement=N.YieldExpression=N.AwaitExpression=function(e,t,n){e.argument&&n(e.argument,t,"Expression")};N.ThrowStatement=N.SpreadElement=function(e,t,n){return n(e.argument,t,"Expression")};N.TryStatement=function(e,t,n){n(e.block,t,"Statement"),e.handler&&n(e.handler,t),e.finalizer&&n(e.finalizer,t,"Statement")};N.CatchClause=function(e,t,n){e.param&&n(e.param,t,"Pattern"),n(e.body,t,"Statement")};N.WhileStatement=N.DoWhileStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.body,t,"Statement")};N.ForStatement=function(e,t,n){e.init&&n(e.init,t,"ForInit"),e.test&&n(e.test,t,"Expression"),e.update&&n(e.update,t,"Expression"),n(e.body,t,"Statement")};N.ForInStatement=N.ForOfStatement=function(e,t,n){n(e.left,t,"ForInit"),n(e.right,t,"Expression"),n(e.body,t,"Statement")};N.ForInit=function(e,t,n){e.type==="VariableDeclaration"?n(e,t):n(e,t,"Expression")};N.DebuggerStatement=qe;N.FunctionDeclaration=function(e,t,n){return n(e,t,"Function")};N.VariableDeclaration=function(e,t,n){for(var r=0,s=e.declarations;r<s.length;r+=1){var i=s[r];n(i,t)}};N.VariableDeclarator=function(e,t,n){n(e.id,t,"Pattern"),e.init&&n(e.init,t,"Expression")};N.Function=function(e,t,n){e.id&&n(e.id,t,"Pattern");for(var r=0,s=e.params;r<s.length;r+=1){var i=s[r];n(i,t,"Pattern")}n(e.body,t,e.expression?"Expression":"Statement")};N.Pattern=function(e,t,n){e.type==="Identifier"?n(e,t,"VariablePattern"):e.type==="MemberExpression"?n(e,t,"MemberPattern"):n(e,t)};N.VariablePattern=qe;N.MemberPattern=sr;N.RestElement=function(e,t,n){return n(e.argument,t,"Pattern")};N.ArrayPattern=function(e,t,n){for(var r=0,s=e.elements;r<s.length;r+=1){var i=s[r];i&&n(i,t,"Pattern")}};N.ObjectPattern=function(e,t,n){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];i.type==="Property"?(i.computed&&n(i.key,t,"Expression"),n(i.value,t,"Pattern")):i.type==="RestElement"&&n(i.argument,t,"Pattern")}};N.Expression=sr;N.ThisExpression=N.Super=N.MetaProperty=qe;N.ArrayExpression=function(e,t,n){for(var r=0,s=e.elements;r<s.length;r+=1){var i=s[r];i&&n(i,t,"Expression")}};N.ObjectExpression=function(e,t,n){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];n(i,t)}};N.FunctionExpression=N.ArrowFunctionExpression=N.FunctionDeclaration;N.SequenceExpression=function(e,t,n){for(var r=0,s=e.expressions;r<s.length;r+=1){var i=s[r];n(i,t,"Expression")}};N.TemplateLiteral=function(e,t,n){for(var r=0,s=e.quasis;r<s.length;r+=1){var i=s[r];n(i,t)}for(var o=0,a=e.expressions;o<a.length;o+=1){var c=a[o];n(c,t,"Expression")}};N.TemplateElement=qe;N.UnaryExpression=N.UpdateExpression=function(e,t,n){n(e.argument,t,"Expression")};N.BinaryExpression=N.LogicalExpression=function(e,t,n){n(e.left,t,"Expression"),n(e.right,t,"Expression")};N.AssignmentExpression=N.AssignmentPattern=function(e,t,n){n(e.left,t,"Pattern"),n(e.right,t,"Expression")};N.ConditionalExpression=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Expression"),n(e.alternate,t,"Expression")};N.NewExpression=N.CallExpression=function(e,t,n){if(n(e.callee,t,"Expression"),e.arguments)for(var r=0,s=e.arguments;r<s.length;r+=1){var i=s[r];n(i,t,"Expression")}};N.MemberExpression=function(e,t,n){n(e.object,t,"Expression"),e.computed&&n(e.property,t,"Expression")};N.ExportNamedDeclaration=N.ExportDefaultDeclaration=function(e,t,n){e.declaration&&n(e.declaration,t,e.type==="ExportNamedDeclaration"||e.declaration.id?"Statement":"Expression"),e.source&&n(e.source,t,"Expression")};N.ExportAllDeclaration=function(e,t,n){e.exported&&n(e.exported,t),n(e.source,t,"Expression")};N.ImportDeclaration=function(e,t,n){for(var r=0,s=e.specifiers;r<s.length;r+=1){var i=s[r];n(i,t)}n(e.source,t,"Expression")};N.ImportExpression=function(e,t,n){n(e.source,t,"Expression")};N.ImportSpecifier=N.ImportDefaultSpecifier=N.ImportNamespaceSpecifier=N.Identifier=N.PrivateIdentifier=N.Literal=qe;N.TaggedTemplateExpression=function(e,t,n){n(e.tag,t,"Expression"),n(e.quasi,t,"Expression")};N.ClassDeclaration=N.ClassExpression=function(e,t,n){return n(e,t,"Class")};N.Class=function(e,t,n){e.id&&n(e.id,t,"Pattern"),e.superClass&&n(e.superClass,t,"Expression"),n(e.body,t)};N.ClassBody=function(e,t,n){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];n(i,t)}};N.MethodDefinition=N.PropertyDefinition=N.Property=function(e,t,n){e.computed&&n(e.key,t,"Expression"),e.value&&n(e.value,t,"Expression")};var pa=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","String","Number","Boolean","Array","Object"]),ma=new Set(["Math","JSON","Object","Array","String","Number"]),da=new Set(["Math.random","Date.now"]),ya=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"]),ir=["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 ga(e){let t=new Set(ir);for(let[n,r]of Object.entries(e))r?.effects==="io"&&t.add(r.op??n);return t}function kt(e,t={}){let n=t.effectful??new Set(ir),r;try{r=rn.parse(e,{ecmaVersion:"latest",locations:!0})}catch(o){return{safe:!1,predicates:[],diagnostics:[{predicate:"<source>",message:`parse error: ${o.message}`,line:o.loc?.line??0,column:o.loc?.column??0}]}}let s=new Set(t.knownPredicates??[]);for(let o of r.body)o.type==="FunctionDeclaration"&&o.id&&s.add(o.id.name);let i=[];for(let o of r.body){if(o.type!=="FunctionDeclaration"||!o.id)continue;let a=o.id.name,c=(u,f)=>i.push({predicate:a,message:u,line:f?.loc?.start?.line??0,column:f?.loc?.start?.column??0}),l=u=>c("loops are not allowed \u2014 iterate with recursion or array methods (every/some/map/filter/reduce) so work stays fuel-bounded",u);Se(o,{AwaitExpression(u){c("`await` not allowed \u2014 predicates must be synchronous",u)},NewExpression(u){c("`new` not allowed in a predicate (non-pure construction)",u)},WhileStatement:l,DoWhileStatement:l,ForStatement:l,ForInStatement:l,ForOfStatement:l,CallExpression(u){let f=u.callee;if(f.type==="Identifier"){let p=f.name;n.has(p)?c(`'${p}' is effectful \u2014 not allowed in a predicate`,f):s.has(p)||pa.has(p)||c(`unknown reference '${p}' \u2014 not a predicate or pure builtin`,f);return}if(f.type==="MemberExpression"&&!f.computed){let p=f.property.name,m=f.object;m.type==="Identifier"&&n.has(m.name)?c(`'${m.name}.${p}' is effectful`,f):m.type==="Identifier"&&ma.has(m.name)?da.has(`${m.name}.${p}`)&&c(`'${m.name}.${p}' is nondeterministic`,f):ya.has(p)||c(`method '.${p}()' is not a known pure method`,f.property);return}c("unsupported call form in a predicate",f)}})}return{safe:i.length===0,predicates:[...s],diagnostics:i}}function Gs(e){return e.map(t=>` ${t.predicate} (${t.line}:${t.column}): ${t.message}`).join(`
53
53
  `)}var nn=e=>e&&e.type==="Literal"&&typeof e.value=="string";function ha(e,t={}){let n;try{n=rn.parse(e,{ecmaVersion:"latest"})}catch{return[]}let r=new Set,s=new Set;Se(n,{BinaryExpression(c){(c.operator==="=="||c.operator==="===")&&(nn(c.left)&&r.add(c.left.value),nn(c.right)&&r.add(c.right.value))},ArrayExpression(c){for(let l of c.elements)nn(l)&&r.add(l.value)},CallExpression(c){let l=c.callee;if(l.type!=="MemberExpression"||l.computed)return;let u=l.property.name,f=c.arguments[0];nn(f)&&u==="startsWith"&&s.add(f.value)}});let i=null;if(t.validate!==!1){let c=kt(e,t);if(c.safe&&c.predicates.length){let l=t.entry??c.predicates[c.predicates.length-1];try{let f=sn(e,[l],t)[l];i=p=>{try{return f(p)===!0}catch{return!1}}}catch{i=null}}}let o=[];for(let c of r)(!i||i(c))&&o.push({value:c,kind:"value"});for(let c of s)o.push({value:c,kind:"stub"});let a=o;if(t.prefix){let c=t.prefix;a=o.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)),t.limit?a.slice(0,t.limit):a}var _t=class extends Error{constructor(t){super(`predicate exceeded its fuel budget (${t})`),this.name="PredicateFuelExhausted"}};function ba(e){let t=rn.parse(e,{ecmaVersion:"latest"}),n=[],r=i=>n.push([i.body.start+1,"__fuel();"]);Se(t,{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression(i){i.body.type==="BlockStatement"?n.push([i.body.start+1,"__fuel();"]):(n.push([i.body.start,"(__fuel(), "]),n.push([i.body.end,")"]))}}),n.sort((i,o)=>o[0]-i[0]);let s=e;for(let[i,o]of n)s=s.slice(0,i)+o+s.slice(i);return s}function sn(e,t,n={}){let r=kt(e,n);if(!r.safe)throw new Error(`Not predicate-safe:
@@ -347,19 +347,19 @@ for(const{id,n,c,m}of __wasmExports){
347
347
  }})();
348
348
  `.trim(),l=r.map(({_exportName:u,...f})=>f);return{code:c,results:l}}import*as Mi from"acorn";function Cr(e,t){let n=[];function r(i){n.push({start:i.start,end:i.end,newText:`__tjs.toBool(${pe(i,t)})`})}function s(i){if(!(!i||typeof i!="object"||!("type"in i))){switch(i.type){case"IfStatement":case"WhileStatement":case"DoWhileStatement":{let o=i;r(o.test),o.consequent&&s(o.consequent),o.alternate&&s(o.alternate),o.body&&s(o.body);return}case"ForStatement":{let o=i;o.init&&s(o.init),o.test&&r(o.test),o.update&&s(o.update),o.body&&s(o.body);return}case"ConditionalExpression":{let o=i;n.push({start:o.start,end:o.end,newText:`__tjs.toBool(${pe(o.test,t)})?(${pe(o.consequent,t)}):(${pe(o.alternate,t)})`});return}case"LogicalExpression":{let o=i;if(o.operator==="&&"||o.operator==="||"){n.push({start:o.start,end:o.end,newText:pe(i,t)});return}break}case"UnaryExpression":{let o=i;if(o.operator==="!"){n.push({start:o.start,end:o.end,newText:`!__tjs.toBool(${pe(o.argument,t)})`});return}break}case"CallExpression":{let o=i;if(o.callee&&o.callee.type==="Identifier"&&o.callee.name==="Boolean"&&o.arguments.length===1&&o.arguments[0].type!=="SpreadElement"){n.push({start:o.start,end:o.end,newText:`__tjs.toBool(${pe(o.arguments[0],t)})`});return}break}}bc(i,s)}}return s(e),xc(n)}function pe(e,t){if(!e)return"";switch(e.type){case"LogicalExpression":{let n=e,r=pe(n.left,t),s=pe(n.right,t);return n.operator==="&&"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?(${s}):__tjs__t)(${r})`:n.operator==="||"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?__tjs__t:(${s}))(${r})`:`(${r})??(${s})`}case"ConditionalExpression":{let n=e;return`__tjs.toBool(${pe(n.test,t)})?(${pe(n.consequent,t)}):(${pe(n.alternate,t)})`}case"UnaryExpression":{let n=e;return n.operator==="!"?`!__tjs.toBool(${pe(n.argument,t)})`:Ar(e,t)}case"CallExpression":{let n=e;return n.callee&&n.callee.type==="Identifier"&&n.callee.name==="Boolean"&&n.arguments.length===1&&n.arguments[0].type!=="SpreadElement"?`__tjs.toBool(${pe(n.arguments[0],t)})`:Ar(e,t)}}return Ar(e,t)}function Ar(e,t){let n=e.start,r=e.end;if(typeof n!="number"||typeof r!="number")return"";let s=Ai(e);if(s.length===0)return t.slice(n,r);s.sort((a,c)=>a.start-c.start);let i="",o=n;for(let a of s)a.start<o||(a.start>o&&(i+=t.slice(o,a.start)),i+=pe(a,t),o=a.end);return o<r&&(i+=t.slice(o,r)),i}function bc(e,t){for(let n of Ai(e))t(n)}function Ai(e){let t=[];for(let n in e){if(n==="type"||n==="start"||n==="end"||n==="loc")continue;let r=e[n];if(Array.isArray(r))for(let s of r)s&&typeof s=="object"&&typeof s.type=="string"&&t.push(s);else r&&typeof r=="object"&&typeof r.type=="string"&&t.push(r)}return t}function xc(e){let t=[...e].sort((s,i)=>s.start-i.start||i.end-s.end),n=[],r=-1;for(let s of t)s.start>=r&&(n.push(s),r=s.end);return n}function Rr(e){let t;try{t=Mi.parse(`function __wrap__(){${e}}`,{ecmaVersion:2022,sourceType:"module",locations:!1})}catch{return e}let n=`function __wrap__(){${e}}`,r=Cr(t,n);if(r.length===0)return e;r.sort((a,c)=>c.start-a.start);let s=n;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 wc(e,t,n){if(!e||!t)return!1;let r=new RegExp(`function\\s+${t}\\s*\\([^)]*?\\b${n}\\s*([=:])`,"s"),s=e.match(r);return s?s[1]===":":!1}function Sc(e,t,n,r,s){let i=[],o=St(t,e),a={},c=!1,l,u;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],d=m.type==="ObjectPattern"?m:m.left,y=Ne(d,n);if(y.type.kind==="object"&&y.type.destructuredParams){l={},u=new Set;for(let[b,$]of Object.entries(y.type.destructuredParams))a[b]={...$,description:o.params[b]},l[b]=$.type,$.required&&u.add(b)}}else for(let m of e.params)if(m.type==="Identifier"){let d=Ne(m,n);a[m.name]={...d,required:n.has(m.name),description:o.params[m.name]}}else if(m.type==="AssignmentPattern"&&m.left.type==="Identifier"){let d=Ne(m,n),y=wc(s||"",e.id?.name||"",m.left.name);a[m.left.name]={...d,required:y,default:y?null:d.example??d.default,description:o.params[m.left.name]}}else if(m.type==="ObjectPattern"){let d=Ne(m,n);if(d.type.kind==="object"&&d.type.destructuredParams)for(let[y,b]of Object.entries(d.type.destructuredParams))a[y]={...b,description:o.params[y]}}else if(m.type==="RestElement"&&m.argument?.type==="Identifier"){let d=m.argument.name,y=t.match(new RegExp(`\\.\\.\\.${d}\\s*:\\s*([^)]+?)\\s*\\)`));if(y)try{let b=Ci(y[1].trim(),0,{ecmaVersion:2022}),$=ae(b);a[d]={name:d,type:$,required:!1,description:o.params[d]}}catch{a[d]={name:d,type:{kind:"array"},required:!1,description:o.params[d]}}else a[d]={name:d,type:{kind:"array"},required:!1,description:o.params[d]}}let f;if(r)try{let m=r.includes("=")?Ni(r):r,d=Ci(m,0,{ecmaVersion:2022});f=ae(d)}catch{f={kind:"any"},i.push(`Could not parse return type: ${r}`)}return{types:{name:e.id?.name||"anonymous",params:a,returns:f,description:o.description,isDestructuredParam:c,destructuredShape:l,destructuredRequired:u},warnings:i}}function Tc(e,t,n){let r=[],s=n?`${n}:`:"",i=n?`${n}:${e}`:e;if(t.isDestructuredParam&&t.destructuredShape){let a=t.destructuredShape,c=t.destructuredRequired||new Set,l=Object.keys(a);if(l.length===0)return null;for(let u of l)r.push(`if (${u} instanceof Error) return ${u};`);for(let[u,f]of Object.entries(a)){let p=c.has(u),m=`${s}${e}.${u}`,d=Nn(u,f);if(d){let y=f.kind;p?r.push(`if (${d}) return __tjs.typeError('${m}', '${y}', ${u});`):r.push(`if (${u} !== undefined && ${d}) return __tjs.typeError('${m}', '${y}', ${u});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
349
349
  `),suffix:"__tjs.popStack();"})}let o=Object.entries(t.params);if(o.length===0)return null;for(let[a]of o)r.push(`if (${a} instanceof Error) return ${a};`);for(let[a,c]of o){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 u=Nn(a,c.type);if(u){let f=c.type.kind==="union"?c.type.members.map(p=>p.kind).join(" | "):c.type.kind;c.required?r.push(`if (${u}) return __tjs.typeError('${l}', '${f}', ${a});`):r.push(`if (${a} !== undefined && ${u}) return __tjs.typeError('${l}', '${f}', ${a});`)}if(c.type.kind==="function"){let f=Mc(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('${i}');`),{preamble:r.join(`
350
- `),suffix:"__tjs.popStack();"})}function Ni(e){let t="",n=0;for(let r=0;r<e.length;r++){let s=e[r];if(s==="{"||s==="["||s==="(")n++,t+=s;else if(s==="}"||s==="]"||s===")")n--,t+=s;else if(s==="'"||s==='"'||s==="`"){for(t+=s,r++;r<e.length&&e[r]!==s;)e[r]==="\\"&&(t+=e[r++]),t+=e[r++];r<e.length&&(t+=e[r])}else n===1&&s==="="&&e[r-1]!=="!"&&e[r+1]!=="="?t+=":":t+=s}return t}function Ec(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*(:[?!]?)\\s*`,"g").exec(e);if(!r)return null;let s=e.slice(r.index+r[0].length);return Mn(s)}function $c(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*:([?!]?)`,"g").exec(e);if(!r)return;let s=r[1];if(s==="?")return"safe";if(s==="!")return"unsafe"}function _c(e){let t=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return t?t[1].trim():void 0}function kc(e,t){let n=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${t}\\s*\\(`,"m"),r=e.match(n);return r?parseInt(r[1],10):void 0}function Ot(e,t={}){let{filename:n="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=t,o=[];e=nr(e);let c=_c(e)||n,{code:l,tests:u,mocks:f,testRunner:p}=jt(e),{ast:m,originalSource:d,requiredParams:y,unsafeFunctions:b}=xe(l,{filename:n,colonShorthand:!0,dialect:t.dialect,moduleLoader:t.moduleLoader}),$=jc(m),T=en(l,{dialect:t.dialect,moduleLoader:t.moduleLoader,filename:n});for(let I of u)I.body=gt(I.body),T.tjsModes.tjsEquals&&(I.body=ht(I.body)),T.tjsModes.tjsStandard&&(I.body=Rr(I.body));for(let I of f)I.body=gt(I.body),T.tjsModes.tjsEquals&&(I.body=ht(I.body)),T.tjsModes.tjsStandard&&(I.body=Rr(I.body));let x={},w=[],E=[];for(let I of $){let J=I.id?.name||"anonymous",q=Ec(l,J),be;if(q&&q.includes("="))try{let ne=q.matchAll(/(\w+)\s*=\s*/g),le=Ni(q),je=new Function(`return ${le}`)(),ue={};for(let Xn of ne){let dt=Xn[1];dt in je&&(ue[dt]=je[dt])}Object.keys(ue).length>0&&(be=ue)}catch{}let{types:ke,warnings:xo}=Sc(I,d,y,q,l);o.push(...xo),x[J]=ke;for(let ne of I.params)if(ne.type==="AssignmentPattern"&&ne.left.type==="Identifier"&&ne.right.type==="Identifier"){let le=ne.left.name,je=ne.right.name,ue=x[je];if(ue&&ke.params[le]){let Xn=Object.entries(ue.params).map(([$o,_o])=>({name:$o,type:_o.type})),dt=ue.returns??{kind:"any"};ke.params[le].type={kind:"function",params:Xn,returns:dt}}}for(let ne of I.params)if(ne.type==="AssignmentPattern"){let le=ne.left?.name||ne.left?.value,je=le?ke.params[le]:null;if(je?.required&&je.default===null)E.push({start:ne.left.end,end:ne.right.end});else{let ue=ne.right;ue.type==="BinaryExpression"&&ue.operator==="|"&&E.push({start:ue.left.end,end:ue.end})}}let as=T.moduleSafety==="none"||b.has(J),wo=T.safeFunctions.has(J),So=$c(l,J),To=kc(e,J),et={file:c,line:To??I.loc?.start.line??0,column:I.loc?.start.column??0},Eo={unsafe:as,safe:wo,returnSafety:So},cs=T.polymorphicNames.has(J),Yn;if(cs){let ne=[];for(let je of $){let ue=je.id?.name||"";ue.startsWith(J+"$")&&ne.push(ue)}let le={polymorphic:!0,variants:ne};et&&(le.source=`${et.file}:${et.line}`),Yn=`${J}.__tjs = ${JSON.stringify(le,null,2)}`}else Yn=vc(J,ke,Eo,{debug:s,source:et,returnDefaults:be});if(w.push({position:I.end,text:`
350
+ `),suffix:"__tjs.popStack();"})}function Ni(e){let t="",n=0;for(let r=0;r<e.length;r++){let s=e[r];if(s==="{"||s==="["||s==="(")n++,t+=s;else if(s==="}"||s==="]"||s===")")n--,t+=s;else if(s==="'"||s==='"'||s==="`"){for(t+=s,r++;r<e.length&&e[r]!==s;)e[r]==="\\"&&(t+=e[r++]),t+=e[r++];r<e.length&&(t+=e[r])}else n===1&&s==="="&&e[r-1]!=="!"&&e[r+1]!=="="?t+=":":t+=s}return t}function Ec(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*(:[?!]?)\\s*`,"g").exec(e);if(!r)return null;let s=e.slice(r.index+r[0].length);return Mn(s)}function $c(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*:([?!]?)`,"g").exec(e);if(!r)return;let s=r[1];if(s==="?")return"safe";if(s==="!")return"unsafe"}function _c(e){let t=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return t?t[1].trim():void 0}function kc(e,t){let n=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${t}\\s*\\(`,"m"),r=e.match(n);return r?parseInt(r[1],10):void 0}function Ot(e,t={}){let{filename:n="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=t,o=[];e=nr(e);let c=_c(e)||n,{code:l,tests:u,mocks:f,testRunner:p}=jt(e),{ast:m,originalSource:d,requiredParams:y,unsafeFunctions:b}=xe(l,{filename:n,colonShorthand:!0,dialect:t.dialect,moduleLoader:t.moduleLoader}),$=jc(m),T=en(l,{dialect:t.dialect,moduleLoader:t.moduleLoader,filename:n});for(let I of u)I.body=gt(I.body),T.tjsModes.tjsEquals&&(I.body=ht(I.body)),T.tjsModes.tjsStandard&&(I.body=Rr(I.body));for(let I of f)I.body=gt(I.body),T.tjsModes.tjsEquals&&(I.body=ht(I.body)),T.tjsModes.tjsStandard&&(I.body=Rr(I.body));let x={},w=[],E=[];for(let I of $){let J=I.id?.name||"anonymous",W=Ec(l,J),be;if(W&&W.includes("="))try{let ne=W.matchAll(/(\w+)\s*=\s*/g),le=Ni(W),je=new Function(`return ${le}`)(),ue={};for(let Xn of ne){let dt=Xn[1];dt in je&&(ue[dt]=je[dt])}Object.keys(ue).length>0&&(be=ue)}catch{}let{types:ke,warnings:xo}=Sc(I,d,y,W,l);o.push(...xo),x[J]=ke;for(let ne of I.params)if(ne.type==="AssignmentPattern"&&ne.left.type==="Identifier"&&ne.right.type==="Identifier"){let le=ne.left.name,je=ne.right.name,ue=x[je];if(ue&&ke.params[le]){let Xn=Object.entries(ue.params).map(([$o,_o])=>({name:$o,type:_o.type})),dt=ue.returns??{kind:"any"};ke.params[le].type={kind:"function",params:Xn,returns:dt}}}for(let ne of I.params)if(ne.type==="AssignmentPattern"){let le=ne.left?.name||ne.left?.value,je=le?ke.params[le]:null;if(je?.required&&je.default===null)E.push({start:ne.left.end,end:ne.right.end});else{let ue=ne.right;ue.type==="BinaryExpression"&&ue.operator==="|"&&E.push({start:ue.left.end,end:ue.end})}}let as=T.moduleSafety==="none"||b.has(J),wo=T.safeFunctions.has(J),So=$c(l,J),To=kc(e,J),et={file:c,line:To??I.loc?.start.line??0,column:I.loc?.start.column??0},Eo={unsafe:as,safe:wo,returnSafety:So},cs=T.polymorphicNames.has(J),Yn;if(cs){let ne=[];for(let je of $){let ue=je.id?.name||"";ue.startsWith(J+"$")&&ne.push(ue)}let le={polymorphic:!0,variants:ne};et&&(le.source=`${et.file}:${et.line}`),Yn=`${J}.__tjs = ${JSON.stringify(le,null,2)}`}else Yn=vc(J,ke,Eo,{debug:s,source:et,returnDefaults:be});if(w.push({position:I.end,text:`
351
351
  ${Yn}`}),!as&&!cs){let ne=`${et.file}:${et.line}`,le=Tc(J,ke,ne);le&&I.body&&I.body.start!==void 0&&(w.push({position:I.body.start+1,text:`
352
352
  ${le.preamble}
353
353
  `}),le.suffix&&w.push({position:I.body.end-1,text:`
354
354
  ${le.suffix}
355
- `}))}}if(T.tjsModes.tjsStandard){let I=Cr(m,T.source);for(let J of I)E.push({start:J.start,end:J.end}),w.push({position:J.start,text:J.newText})}E.sort((I,J)=>J.start-I.start);let S=T.source;for(let{start:I,end:J}of E)S=S.slice(0,I)+S.slice(J);for(let I of w){let J=0;for(let q of E)q.start<I.position&&(J+=q.end-q.start);I.position-=J}w.sort((I,J)=>J.position-I.position);for(let{position:I,text:J}of w)S=S.slice(0,I)+J+S.slice(I);let j=S.includes("__tjs.typeError("),A=S.includes("__tjs.pushStack("),k=S.includes("Is("),v=S.includes("IsNot("),C=S.includes("Eq("),P=S.includes("NotEq("),M=S.includes("TypeOf("),D=/\bType\(/.test(S),B=/\bGeneric\(/.test(S),F=/\bFunctionPredicate\(/.test(S),Y=/\bEnum\(/.test(S),ce=/\bUnion\(/.test(S),Qe=S.includes("__tjs.bang("),zt=S.includes("__tjs.toBool("),Zn=S.includes("__tjs.checkFnShape("),is=T.tjsModes.tjsSafeEval;if(j||A||k||v||C||P||M||D||B||F||Y||ce||Qe||zt||Zn||is){let I=[];j&&I.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}"),A&&I.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),C&&I.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&&I.push("function NotEq(a,b){return!Eq(a,b)}"),M&&I.push("function TypeOf(v){return v===null?'null':typeof v}"),k&&I.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]))}"),v&&I.push("function IsNot(a,b){return!Is(a,b)}"),D&&I.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&&I.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}"),F&&I.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}}"),Y&&I.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}}"),ce&&I.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),zt&&I.push("function toBool(v){if(v instanceof Boolean||v instanceof Number||v instanceof String)return Boolean(v.valueOf());return Boolean(v)}"),Zn&&(j||I.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}"),I.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}`)),Qe&&(j||I.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}"),I.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 J=I.length>0?I.join(`;
355
+ `}))}}if(T.tjsModes.tjsStandard){let I=Cr(m,T.source);for(let J of I)E.push({start:J.start,end:J.end}),w.push({position:J.start,text:J.newText})}E.sort((I,J)=>J.start-I.start);let S=T.source;for(let{start:I,end:J}of E)S=S.slice(0,I)+S.slice(J);for(let I of w){let J=0;for(let W of E)W.start<I.position&&(J+=W.end-W.start);I.position-=J}w.sort((I,J)=>J.position-I.position);for(let{position:I,text:J}of w)S=S.slice(0,I)+J+S.slice(I);let j=S.includes("__tjs.typeError("),A=S.includes("__tjs.pushStack("),k=S.includes("Is("),v=S.includes("IsNot("),C=S.includes("Eq("),P=S.includes("NotEq("),M=S.includes("TypeOf("),D=/\bType\(/.test(S),B=/\bGeneric\(/.test(S),F=/\bFunctionPredicate\(/.test(S),Y=/\bEnum\(/.test(S),ce=/\bUnion\(/.test(S),Qe=S.includes("__tjs.bang("),zt=S.includes("__tjs.toBool("),Zn=S.includes("__tjs.checkFnShape("),is=T.tjsModes.tjsSafeEval;if(j||A||k||v||C||P||M||D||B||F||Y||ce||Qe||zt||Zn||is){let I=[];j&&I.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}"),A&&I.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),C&&I.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&&I.push("function NotEq(a,b){return!Eq(a,b)}"),M&&I.push("function TypeOf(v){return v===null?'null':typeof v}"),k&&I.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]))}"),v&&I.push("function IsNot(a,b){return!Is(a,b)}"),D&&I.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&&I.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}"),F&&I.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}}"),Y&&I.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}}"),ce&&I.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),zt&&I.push("function toBool(v){if(v instanceof Boolean||v instanceof Number||v instanceof String)return Boolean(v.valueOf());return Boolean(v)}"),Zn&&(j||I.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}"),I.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}`)),Qe&&(j||I.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}"),I.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 J=I.length>0?I.join(`;
356
356
  `)+`;
357
- `:"",q=[];j&&q.push("typeError","isMonadicError"),A&&q.push("pushStack","popStack","getStack"),C&&q.push("Eq"),P&&q.push("NotEq"),M&&q.push("TypeOf"),k&&q.push("Is","tjsEquals"),v&&q.push("IsNot"),D&&q.push("Type"),B&&q.push("Generic"),F&&q.push("FunctionPredicate"),Y&&q.push("Enum"),ce&&q.push("Union"),zt&&q.push("toBool"),Zn&&(q.push("checkFnShape"),j||q.push("typeError","isMonadicError")),Qe&&(q.push("bang"),j||q.push("typeError","isMonadicError"));let be=q.length>0?`{${q.join(",")}}`:"undefined";S=J+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${be};
357
+ `:"",W=[];j&&W.push("typeError","isMonadicError"),A&&W.push("pushStack","popStack","getStack"),C&&W.push("Eq"),P&&W.push("NotEq"),M&&W.push("TypeOf"),k&&W.push("Is","tjsEquals"),v&&W.push("IsNot"),D&&W.push("Type"),B&&W.push("Generic"),F&&W.push("FunctionPredicate"),Y&&W.push("Enum"),ce&&W.push("Union"),zt&&W.push("toBool"),Zn&&(W.push("checkFnShape"),j||W.push("typeError","isMonadicError")),Qe&&(W.push("bang"),j||W.push("typeError","isMonadicError"));let be=W.length>0?`{${W.join(",")}}`:"undefined";S=J+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${be};
358
358
  `+S}is&&(S=`import { Eval, SafeFunction } from 'tjs-lang';
359
- `+S);let mt;if(r){let I=bi(e);mt=xi(u,f,I,S,i,T.extensions);let J=mt.filter(q=>!q.passed&&!q.inconclusive);if(J.length>0&&r===!0){let q=J.map(be=>{if(be.isSignatureTest)return` Function signature example is inconsistent:
359
+ `+S);let mt;if(r){let I=bi(e);mt=xi(u,f,I,S,i,T.extensions);let J=mt.filter(W=>!W.passed&&!W.inconclusive);if(J.length>0&&r===!0){let W=J.map(be=>{if(be.isSignatureTest)return` Function signature example is inconsistent:
360
360
  ${be.error}`;let ke=be.line?` (line ${be.line})`:"";return` Test '${be.description}'${ke} failed:
361
361
  ${be.error}`});throw new Error(`Transpile-time test failures:
362
- ${q.join(`
362
+ ${W.join(`
363
363
  `)}`)}}if(r==="only")return{code:"",types:x,metadata:x,testResults:mt,testCount:mt?.length};let os;if(T.wasmBlocks.length>0){let I=vi(T.wasmBlocks);I.code&&(S=I.code+`
364
364
  `+S),os=I.results}return{code:S,types:x,metadata:x,warnings:o.length>0?o:void 0,testRunner:u.length>0?p:void 0,testCount:u.length>0?u.length:void 0,testResults:mt,wasmCompiled:os}}function jc(e){let t=[];for(let n of e.body)n.type==="FunctionDeclaration"?t.push(n):(n.type==="ExportNamedDeclaration"&&n.declaration?.type==="FunctionDeclaration"||n.type==="ExportDefaultDeclaration"&&n.declaration?.type==="FunctionDeclaration")&&t.push(n.declaration);return t}function Dt(e){let t={kind:e.kind};return e.nullable&&(t.nullable=!0),e.items&&(t.items=Dt(e.items)),e.shape&&(t.shape=Object.fromEntries(Object.entries(e.shape).map(([n,r])=>[n,Dt(r)]))),e.members&&(t.members=e.members.map(Dt)),t}function vc(e,t,n={},r={}){let s={};for(let[o,a]of Object.entries(t.params))s[o]={type:Dt(a.type),required:a.required},a.default!==void 0&&(s[o].default=a.default),a.description&&(s[o].description=a.description);let i={params:s};if(t.returns&&(i.returns={type:Dt(t.returns)},r.returnDefaults&&(i.returns.defaults=r.returnDefaults),n.returnSafety==="safe"?i.safeReturn=!0:n.returnSafety==="unsafe"&&(i.unsafeReturn=!0)),t.description&&(i.description=t.description),n.unsafe&&(i.unsafe=!0),n.safe&&(i.safe=!0),r.source){let{file:o,line:a}=r.source;i.source=`${o}:${a}`}return`${e}.__tjs = ${JSON.stringify(i,null,2)}`}function Nn(e,t){let n;switch(t.kind){case"string":n=`typeof ${e} !== 'string'`;break;case"number":n=`typeof ${e} !== 'number'`;break;case"integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}))`;break;case"non-negative-integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}) || ${e} < 0)`;break;case"boolean":n=`typeof ${e} !== 'boolean'`;break;case"null":return`${e} !== null`;case"undefined":return`${e} !== undefined`;case"array":{let r=t.items&&t.items.kind!=="any"?Nn("__a",t.items):null;r?n=`(!Array.isArray(${e}) || ${e}.some(__a => ${r}))`:n=`!Array.isArray(${e})`;break}case"object":n=`(typeof ${e} !== 'object' || ${e} === null || Array.isArray(${e}))`;break;case"function":n=`typeof ${e} !== 'function'`;break;case"union":{let r=t.members.map(s=>Nn(e,s)).filter(s=>s!==null);if(r.length===0)return null;n=`(${r.join(" && ")})`;break}case"any":return null;default:return null}return n&&t.nullable&&(n=`(${e} !== null && ${n})`),n}var Ri=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function Mc(e,t,n){let r=t.params??[],s=t.returns??{kind:"any"},i=r.map(l=>l.type?.kind),o=i.every(l=>l&&Ri.has(l))&&Ri.has(s.kind),a=i.some(l=>l!=="any")||s.kind!=="any";if(!o||!a)return null;let c=JSON.stringify(i);return`if (typeof ${e} === 'function') ${e} = __tjs.checkFnShape(${e}, ${c}, '${s.kind}', '${n}');`}function _e(e){let t;switch(e.kind){case"string":t="string";break;case"number":case"integer":case"non-negative-integer":t="number";break;case"boolean":t="boolean";break;case"null":return"null";case"undefined":return"undefined";case"any":t="any";break;case"array":if(e.items){let n=_e(e.items);t=n.includes("|")?`(${n})[]`:`${n}[]`}else t="any[]";break;case"object":e.shape&&Object.keys(e.shape).length>0?t=`{ ${Object.entries(e.shape).map(([r,s])=>`${r}: ${_e(s)}`).join("; ")} }`:t="Record<string, any>";break;case"union":if(e.members&&e.members.length>0)return e.members.map(_e).join(" | ");t="any";break;case"function":{let n=e.params??[],r=e.returns?_e(e.returns):"any";t=`(${n.map(i=>`${i.name}: ${_e(i.type)}`).join(", ")}) => ${r}`;break}default:t="any"}return e.nullable?`${t} | null`:t}function Ac(e,t,n,r){let s=Object.entries(t.params).map(([a,c])=>{let l=!c.required,u=_e(c.type);return l?`${a}?: ${u}`:`${a}: ${u}`}).join(", "),i=t.returns?_e(t.returns):"any";return`${n?r?"export default function":"export declare function":"declare function"} ${e}(${s}): ${i};`}function Cc(e){let t=new Map,n,r=/^[ \t]*export\s+(default\s+)?function\s+(\w+)/gm;for(;(n=r.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let s=/^[ \t]*export\s+(default\s+)?class\s+(\w+)/gm;for(;(n=s.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let i=/^[ \t]*export\s+(default\s+)?(?:const|let|var)\s+(\w+)/gm;for(;(n=i.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let o=/^[ \t]*export\s+Type\s+(\w+)/gm;for(;(n=o.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let a=/^[ \t]*export\s+Generic\s+(\w+)/gm;for(;(n=a.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let c=/^[ \t]*export\s+FunctionPredicate\s+(\w+)/gm;for(;(n=c.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let l=/^[ \t]*export\s*\{([^}]+)\}/gm;for(;(n=l.exec(e))!==null;){let u=n[1].split(",").map(f=>f.trim().split(/\s+as\s+/));for(let f of u){let p=f.length>1?f[1]:f[0];p&&/^\w+$/.test(p)&&t.set(p,{exported:!0,isDefault:!1})}}return t}function Rc(e){let t=new Map,n=/^[ \t]*(?:export\s+)?FunctionPredicate\s+(\w+)\s*(?:<([^>]+)>)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2],o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u;i&&(u=i.split(",").map(y=>y.trim()));let f=[],p=l.match(/params\s*:\s*\{([^}]*)\}/);if(p){let y=p[1],b=Ii(y);for(let $ of b){let T=$.match(/^(\w+)\s*:\s*(.+)$/);T&&f.push({name:T[1],example:T[2].trim()})}}let m,d=l.match(/returns\s*:\s*(.+?)(?:\n|$)/);d&&(m=d[1].trim()),t.set(s,{params:f,returns:m,typeParams:u})}return t}function Nc(e){let t=new Map,n=/^[ \t]*(?:export\s+(?:default\s+)?)?class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r.index+r[0].length-1,o=1,a=i+1;for(;a<e.length&&o>0;)e[a]==="{"?o++:e[a]==="}"&&o--,a++;let c=e.slice(i+1,a-1),l=c.indexOf("constructor"),u="";if(l!==-1){let p=c.indexOf("(",l);if(p!==-1){let m=1,d=p+1;for(;d<c.length&&m>0;)c[d]==="("?m++:c[d]===")"&&m--,d++;u=c.slice(p+1,d-1).trim()}}let f=[];{let p=0,m=0;for(;p<c.length;){let d=c[p];if(d==="{"){m++,p++;continue}if(d==="}"){m--,p++;continue}if(m===0){let y=c.slice(p).match(/^(\w+)\s*\(/);if(y){let b=y[1];if(b==="constructor"||b==="get"||b==="set"){p+=b.length;continue}else{let $=p+y[0].length-1,T=1,x=$+1;for(;x<c.length&&T>0;)c[x]==="("?T++:c[x]===")"&&T--,x++;let w=c.slice($+1,x-1).trim(),E=c.slice(x).match(/^\s*->\s*(.+?)\s*\{/),S=E?E[1].trim():null;f.push({name:b,params:w,returnType:S}),p=x;continue}}}p++}}t.set(s,{name:s,constructorParams:u,methods:f})}return t}function Ii(e){let t=[],n=0,r="";for(let s of e)s==="{"||s==="["||s==="("?n++:(s==="}"||s==="]"||s===")")&&n--,s===","&&n===0?(t.push(r.trim()),r=""):r+=s;return r.trim()&&t.push(r.trim()),t}function Pi(e){return e.trim()?Ii(e).map(t=>{let n=t.match(/^(\w+)\s*:\s*(.+)$/);if(n){let s=n[1],i=Oe(n[2].trim());return`${s}: ${i}`}let r=t.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=Oe(r[2].trim());return`${s}?: ${i}`}return t.startsWith("{")?"options: any":`${t}: any`}).join(", "):""}function Pc(e){let t=new Map,n,r=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*=\s*(.+)$/gm;for(;(n=r.exec(e))!==null;)t.set(n[1],n[2].trim());let s=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s+([^{=].*)$/gm;for(;(n=s.exec(e))!==null;)t.has(n[1])||t.set(n[1],n[2].trim());let i=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*example\s*:\s*(.+?)(?:\n|\s*[,}])/gm;for(;(n=i.exec(e))!==null;)t.set(n[1],n[2].trim());let o=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*\/\/\s*TS:\s*(.+?)(?:\n|\s*\})/gm;for(;(n=o.exec(e))!==null;)t.has(n[1])||t.set(n[1],`__ts__:${n[2].trim()}`);let a=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{\s*\}/gm;for(;(n=a.exec(e))!==null;)t.has(n[1])||t.set(n[1],"");return t}function Ic(e){let t=new Map,n=/^[ \t]*(?:export\s+)?Generic\s+(\w+)\s*<([^>]+)>\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2].split(",").map(p=>p.trim().split(/\s*=/)[0].trim()),o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u,f=l.match(/\bdeclaration\s*\{/);if(f&&f.index!==void 0){let p=f.index+f[0].length-1,m=1,d=p+1;for(;d<l.length&&m>0;)l[d]==="{"?m++:l[d]==="}"&&m--,d++;u=l.slice(p+1,d-1).trim()}t.set(s,{typeParams:i,declaration:u})}return t}function Dc(e){let t=[],n=/^[ \t]*export\s+(?:default\s+)?(const|let|var)\s+(\w+)\s*(?::\s*\w+\s*)?=\s*(.+)/gm,r;for(;(r=n.exec(e))!==null;){let s=r[3].trim();s.endsWith(";")&&(s=s.slice(0,-1).trim()),t.push({name:r[2],value:s,kind:r[1]})}return t}function Oc(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 Bc(e,t,n={}){let r=[],s=Cc(t),i=Pc(t),o=Nc(t),a=Ic(t),c=s.size>0,l=new Set;for(let[p,m]of Object.entries(e.types)){if(p.includes("$"))continue;let d=s.get(p),y=c?!!d?.exported:!0,b=d?.isDefault??!1;y&&(m.description&&r.push(`/** ${m.description} */`),r.push(Ac(p,m,!0,b)),l.add(p))}for(let[p,m]of o){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let b=m.constructorParams?Pi(m.constructorParams):"";if(r.push(`export declare function ${p}(${b}): any;`),b||m.methods.length>0){r.push(`export declare class ${p} {`),m.constructorParams&&r.push(` constructor(${b});`);for(let $ of m.methods){let T=$.params?Pi($.params):"";r.push(` ${$.name}(${T}): any;`)}r.push("}")}l.add(p)}for(let[p,m]of i){if(l.has(p))continue;let d=s.get(p);if(!c||d?.exported){if(m.startsWith("__ts__:")){let b=m.slice(7);r.push(`export type ${p} = ${b};`)}else if(m==="")r.push(`export type ${p} = any;`);else{let b=Oe(m);r.push(`export declare const ${p}: { check(value: any): boolean; default: ${b}; (value: any): boolean; };`)}l.add(p)}}for(let[p,m]of a){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let b=m.typeParams.length>0?`<${m.typeParams.join(", ")}>`:"";if(m.declaration){let $=m.declaration.trim(),T=$.match(/^\/\/\s*TS:\s*(.+)$/s);if(T)r.push(`export type ${p}${b} = ${T[1].trim()};`);else{let x=$.split(`
365
365
  `).map(w=>w.trim()).filter(w=>w.length>0).map(w=>` ${w}`).join(`
@@ -371,10 +371,10 @@ ${p}
371
371
  }
372
372
  `}return r.join(`
373
373
  `)+`
374
- `}function Oe(e){let t=e.trim();if(Lc(t)){let n=Fc(t).map(r=>Oe(r.trim()));return[...new Set(n)].join(" | ")}return/^['"]/.test(t)?"string":t==="true"||t==="false"?"boolean":t==="null"?"null":t==="undefined"?"undefined":/^[+-]?\d+\.\d+$/.test(t)||/^[+-]?\d+$/.test(t)?"number":t.startsWith("[")?"any[]":t.startsWith("{")?"Record<string, any>":"any"}function Lc(e){let t=0,n=null;for(let r of e){if(n){r===n&&(n=null);continue}if(r==="'"||r==='"'||r==="`"){n=r;continue}if(r==="{"||r==="["||r==="(")t++;else if(r==="}"||r==="]"||r===")")t--;else if(r==="|"&&t===0)return!0}return!1}function Fc(e){let t=[],n=0,r=null,s="";for(let i of e){if(r){s+=i,i===r&&(r=null);continue}if(i==="'"||i==='"'||i==="`"){r=i,s+=i;continue}i==="{"||i==="["||i==="("?n++:(i==="}"||i==="]"||i===")")&&n--,i==="|"&&n===0?(t.push(s),s=""):s+=i}return s&&t.push(s),t}import _ from"typescript";var Uc=20,Oi=new Set(["Event","CustomEvent","MouseEvent","KeyboardEvent","PointerEvent","TouchEvent","FocusEvent","InputEvent","CompositionEvent","WheelEvent","DragEvent","AnimationEvent","TransitionEvent","ClipboardEvent","UIEvent","ProgressEvent","ErrorEvent","MessageEvent","PopStateEvent","HashChangeEvent","PageTransitionEvent","StorageEvent","BeforeUnloadEvent","SubmitEvent","EventTarget","EventListener","Node","Element","HTMLElement","SVGElement","Document","DocumentFragment","ShadowRoot","Text","Comment","Attr","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","HTMLButtonElement","HTMLFormElement","HTMLAnchorElement","HTMLImageElement","HTMLVideoElement","HTMLAudioElement","HTMLCanvasElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLTableElement","HTMLTemplateElement","HTMLSlotElement","HTMLDialogElement","HTMLDetailsElement","HTMLLabelElement","HTMLOptionElement","HTMLIFrameElement","HTMLScriptElement","HTMLStyleElement","HTMLLinkElement","HTMLMetaElement","HTMLHeadElement","HTMLBodyElement","HTMLMediaElement","SVGSVGElement","SVGPathElement","SVGGElement","SVGCircleElement","SVGRectElement","SVGTextElement","SVGLineElement","SVGPolygonElement","NodeList","HTMLCollection","NamedNodeMap","DOMTokenList","DOMStringMap","CSSStyleDeclaration","DOMRect","DOMRectReadOnly","DOMPoint","DOMMatrix","Range","Selection","StaticRange","MutationObserver","MutationRecord","IntersectionObserver","IntersectionObserverEntry","ResizeObserver","ResizeObserverEntry","PerformanceObserver","PerformanceEntry","Window","Location","History","Navigator","Screen","Storage","CanvasRenderingContext2D","WebGLRenderingContext","WebGL2RenderingContext","OffscreenCanvas","ImageData","ImageBitmap","MediaStream","MediaRecorder","AudioContext","AudioNode","AudioBuffer","Worker","SharedWorker","ServiceWorker","ServiceWorkerRegistration","BroadcastChannel","MessageChannel","MessagePort","WebSocket","XMLHttpRequest","FileReader","FileList","DataTransfer","Crypto","SubtleCrypto","CryptoKey","Geolocation","Notification","PermissionStatus","MediaQueryList","TreeWalker","NodeIterator","ClipboardItem"]);function W(e,t,n,r){if(!e)return"undefined";switch(e.kind){case _.SyntaxKind.StringKeyword:return"''";case _.SyntaxKind.NumberKeyword:return"0.0";case _.SyntaxKind.BooleanKeyword:return"false";case _.SyntaxKind.NullKeyword:return"null";case _.SyntaxKind.UndefinedKeyword:return"undefined";case _.SyntaxKind.VoidKeyword:return"undefined";case _.SyntaxKind.AnyKeyword:return"any";case _.SyntaxKind.UnknownKeyword:return"any";case _.SyntaxKind.NeverKeyword:return"null";case _.SyntaxKind.SymbolKeyword:return"Symbol('example')";case _.SyntaxKind.BigIntKeyword:return"0n";case _.SyntaxKind.ObjectKeyword:return"{}";case _.SyntaxKind.ArrayType:{let i=W(e.elementType,t);return i==="any"&&(i="null"),`[${i}]`}case _.SyntaxKind.TypeReference:{let s=e,i=s.typeName.getText();if(i==="Array"&&s.typeArguments?.length)return`[${W(s.typeArguments[0],t,n,r)}]`;if(i==="Promise"||i==="Generator"||i==="AsyncGenerator"||i==="IterableIterator"||i==="AsyncIterableIterator")return s.typeArguments?.length?W(s.typeArguments[0],t,n,r):"undefined";if(i==="Record")return"{}";let o={Map:"new Map()",Set:"new Set()",WeakMap:"new WeakMap()",WeakSet:"new WeakSet()",WeakRef:"new WeakRef({})",Error:"new Error('example')",TypeError:"new TypeError('example')",RangeError:"new RangeError('example')",SyntaxError:"new SyntaxError('example')",ReferenceError:"new ReferenceError('example')",URIError:"new URIError('example')",EvalError:"new EvalError('example')",Date:"new Date()",RegExp:"/example/",ArrayBuffer:"new ArrayBuffer(0)",SharedArrayBuffer:"new SharedArrayBuffer(0)",DataView:"new DataView(new ArrayBuffer(0))",Float32Array:"new Float32Array(0)",Float64Array:"new Float64Array(0)",Int8Array:"new Int8Array(0)",Int16Array:"new Int16Array(0)",Int32Array:"new Int32Array(0)",Uint8Array:"new Uint8Array(0)",Uint16Array:"new Uint16Array(0)",Uint32Array:"new Uint32Array(0)",Uint8ClampedArray:"new Uint8ClampedArray(0)",BigInt64Array:"new BigInt64Array(0)",BigUint64Array:"new BigUint64Array(0)",URL:"new URL('https://example.com')",URLSearchParams:"new URLSearchParams()",Headers:"new Headers()",FormData:"new FormData()",Blob:"new Blob()",File:"new File([], 'example')",Response:"new Response()",Request:"new Request('https://example.com')",AbortController:"new AbortController()",AbortSignal:"AbortSignal.abort()",ReadableStream:"new ReadableStream()",WritableStream:"new WritableStream()",TransformStream:"new TransformStream()",TextEncoder:"new TextEncoder()",TextDecoder:"new TextDecoder()",Promise:"Promise.resolve(null)"};if(i in o)return o[i];if(r?.typeAliases?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.typeAliases.get(i);return W(c,t,n,{...r,visited:a})}if(r?.interfaces?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.interfaces.get(i),l=[];for(let u of c.members)if(_.isPropertySignature(u)&&u.name){let f=u.name.getText(r.sourceFile),p=W(u.type,t,n,{...r,visited:a});l.push(`${f}: ${p}`)}return`{ ${l.join(", ")} }`}if(r?.typeParams?.has(i)){let a=r.typeParams.get(i);if(a.constraint)return W(a.constraint,t,n,r);if(a.default)return W(a.default,t,n,r)}return Oi.has(i)?"{}":/^[A-Z]$/.test(i)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(i)?(n?.push(`Generic type parameter '${i}' converted to 'any' - consider specializing`),"any"):(n?.push(`Unknown type '${i}' converted to 'any' - may need manual review`),"any")}case _.SyntaxKind.TypeLiteral:{let s=e,i=[];for(let o of s.members)if(_.isPropertySignature(o)&&o.name){let a=o.name.getText(),c=W(o.type,t);c==="any"&&(c="null"),i.push(`${a}: ${c}`)}return`{ ${i.join(", ")} }`}case _.SyntaxKind.UnionType:{let s=e,i=f=>f.kind===_.SyntaxKind.NullKeyword||_.isLiteralTypeNode(f)&&f.literal.kind===_.SyntaxKind.NullKeyword,o=f=>f.kind===_.SyntaxKind.UndefinedKeyword||_.isLiteralTypeNode(f)&&f.literal.kind===_.SyntaxKind.UndefinedKeyword,a=s.types.filter(f=>!i(f)&&!o(f)),c=s.types.some(i),l=s.types.some(o);if(a.length===0)return c?"null":"undefined";if(a.length===1&&(c||l)){let f=W(a[0],t,n,r);if(f==="any")return"any";if(c)return`${f} | null`;if(l)return`${f} | undefined`}let u=s.types.map(f=>W(f,t,n,r)).filter((f,p,m)=>m.indexOf(f)===p);return u.some(f=>f==="any")?"any":u.length===1?u[0]:u.length>0?u.some(p=>/[()]/.test(p)||p.startsWith("new "))?"any":u.join(" | "):"undefined"}case _.SyntaxKind.LiteralType:{let s=e;return _.isStringLiteral(s.literal)?`'${s.literal.text}'`:_.isNumericLiteral(s.literal)?s.literal.text:s.literal.kind===_.SyntaxKind.TrueKeyword?"true":s.literal.kind===_.SyntaxKind.FalseKeyword?"false":s.literal.kind===_.SyntaxKind.NullKeyword?"null":"undefined"}case _.SyntaxKind.ParenthesizedType:return W(e.type,t);case _.SyntaxKind.FunctionType:{let s=e,i=[];for(let c of s.parameters){let l=c.name?.getText()||"_";if(l==="this")continue;let u=W(c.type,t,n,r);u==="any"&&(u="null"),i.push(`${l}: ${u}`)}let o=W(s.type,t,n,r);o==="any"&&(o="null");let a=[];return i.length>0&&a.push(`params: { ${i.join(", ")} }`),o!=="undefined"&&a.push(`returns: ${o}`),`FunctionPredicate('function', { ${a.join(", ")} })`}case _.SyntaxKind.TupleType:return`[${e.elements.map(o=>{let a=_.isNamedTupleMember(o)?W(o.type,t):W(o,t);return a==="any"?"null":a}).join(", ")}]`;default:return"undefined"}}function ee(e,t){if(!e)return{kind:"any"};let n=t?.depth??0;if(n>Uc)return{kind:"any"};switch(t=t?{...t,depth:n+1}:void 0,e.kind){case _.SyntaxKind.StringKeyword:return{kind:"string"};case _.SyntaxKind.NumberKeyword:return{kind:"number"};case _.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case _.SyntaxKind.NullKeyword:return{kind:"null"};case _.SyntaxKind.UndefinedKeyword:case _.SyntaxKind.VoidKeyword:return{kind:"undefined"};case _.SyntaxKind.ArrayType:return{kind:"array",items:ee(e.elementType,t)};case _.SyntaxKind.TypeLiteral:{let r=e,s={};for(let i of r.members)if(_.isPropertySignature(i)&&i.name){let o=i.name.getText();s[o]=ee(i.type,t)}return{kind:"object",shape:s}}case _.SyntaxKind.UnionType:{let r=e,s=r.types.filter(o=>o.kind!==_.SyntaxKind.NullKeyword&&o.kind!==_.SyntaxKind.UndefinedKeyword),i=r.types.some(o=>o.kind===_.SyntaxKind.NullKeyword);return s.length===1&&i?{...ee(s[0],t),nullable:!0}:{kind:"union",members:r.types.map(o=>ee(o,t))}}case _.SyntaxKind.IntersectionType:{let r=e,s={};for(let i of r.types){let o=ee(i,t);o.kind==="object"&&o.shape&&Object.assign(s,o.shape)}return Object.keys(s).length>0?{kind:"object",shape:s}:{kind:"any"}}case _.SyntaxKind.TupleType:{let r=e,s=[];for(let i of r.elements)_.isNamedTupleMember(i)?s.push(ee(i.type,t)):s.push(ee(i,t));return{kind:"tuple",elements:s}}case _.SyntaxKind.TypeReference:{let r=e,s=r.typeName.getText();if(s==="Array"&&r.typeArguments?.length)return{kind:"array",items:ee(r.typeArguments[0],t)};if(s==="Promise"&&r.typeArguments?.length||(s==="Generator"||s==="AsyncGenerator"||s==="IterableIterator"||s==="AsyncIterableIterator")&&r.typeArguments?.length)return ee(r.typeArguments[0],t);if(r.typeArguments?.length){let i=ee(r.typeArguments[0],t);if(s==="Partial"||s==="Required"||s==="Readonly")return i;if(s==="Record"&&r.typeArguments.length>=2)return{kind:"object",shape:{"[key]":ee(r.typeArguments[1],t)}};if(s==="Pick"||s==="Omit")return i;if(s==="NonNullable")return i.nullable?{...i,nullable:!1}:i;if(["ReturnType","Parameters","ConstructorParameters"].includes(s))return{kind:"any"}}if(t?.typeAliases?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.typeAliases.get(s),a=ee(o,{...t,visited:i});return t.resolvedCache?.set(s,a),a}if(t?.interfaces?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.interfaces.get(s),a={};if(o.heritageClauses){for(let l of o.heritageClauses)if(l.token===_.SyntaxKind.ExtendsKeyword)for(let u of l.types){let f=u.expression.getText(t.sourceFile);if(t.interfaces?.has(f)&&!i.has(f)){let p={kind:_.SyntaxKind.TypeReference,typeName:{getText:()=>f}},m=ee(p,{...t,visited:i});m.kind==="object"&&m.shape&&Object.assign(a,m.shape)}}}for(let l of o.members)if(_.isPropertySignature(l)&&l.name){let u=l.name.getText(t.sourceFile);a[u]=ee(l.type,{...t,visited:i})}let c={kind:"object",shape:a};return t.resolvedCache?.set(s,c),c}if(t?.typeParams?.has(s)){let i=t.typeParams.get(s);if(i.constraint)return ee(i.constraint,t);if(i.default)return ee(i.default,t)}return Oi.has(s)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function qc(e,t){if(!e.typeParameters||e.typeParameters.length===0)return;let n={};for(let r of e.typeParameters){let s=r.name.getText(),i={};if(r.constraint){let o=W(r.constraint,void 0,t);if(o.startsWith("{"))try{i.constraint=o}catch{i.constraint=o}else i.constraint=o}if(r.default){let o=W(r.default,void 0,t);i.default=o}n[s]=i}return Object.keys(n).length>0?n:void 0}function Wc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return Jc(e,t,n,r);let i=r?.find(l=>l.kind==="example"),o=r?.find(l=>l.kind==="predicate"),a;if(i?.text)a=i.text;else{let l=[];for(let u of e.members)if(_.isPropertySignature(u)&&u.name){let f=u.name.getText(t),p=W(u.type,void 0,n);p==="any"&&(p="null"),l.push(`${f}: ${p}`)}if(l.length===0&&!o)return`Type ${s} {}`;a=l.length>0?`{ ${l.join(", ")} }`:"{}"}let c=[`example: ${a}`];return o?.text&&c.push(o.text),`Type ${s} {
374
+ `}function Oe(e){let t=e.trim();if(Lc(t)){let n=Fc(t).map(r=>Oe(r.trim()));return[...new Set(n)].join(" | ")}return/^['"]/.test(t)?"string":t==="true"||t==="false"?"boolean":t==="null"?"null":t==="undefined"?"undefined":/^[+-]?\d+\.\d+$/.test(t)||/^[+-]?\d+$/.test(t)?"number":t.startsWith("[")?"any[]":t.startsWith("{")?"Record<string, any>":"any"}function Lc(e){let t=0,n=null;for(let r of e){if(n){r===n&&(n=null);continue}if(r==="'"||r==='"'||r==="`"){n=r;continue}if(r==="{"||r==="["||r==="(")t++;else if(r==="}"||r==="]"||r===")")t--;else if(r==="|"&&t===0)return!0}return!1}function Fc(e){let t=[],n=0,r=null,s="";for(let i of e){if(r){s+=i,i===r&&(r=null);continue}if(i==="'"||i==='"'||i==="`"){r=i,s+=i;continue}i==="{"||i==="["||i==="("?n++:(i==="}"||i==="]"||i===")")&&n--,i==="|"&&n===0?(t.push(s),s=""):s+=i}return s&&t.push(s),t}import _ from"typescript";var Uc=20,Oi=new Set(["Event","CustomEvent","MouseEvent","KeyboardEvent","PointerEvent","TouchEvent","FocusEvent","InputEvent","CompositionEvent","WheelEvent","DragEvent","AnimationEvent","TransitionEvent","ClipboardEvent","UIEvent","ProgressEvent","ErrorEvent","MessageEvent","PopStateEvent","HashChangeEvent","PageTransitionEvent","StorageEvent","BeforeUnloadEvent","SubmitEvent","EventTarget","EventListener","Node","Element","HTMLElement","SVGElement","Document","DocumentFragment","ShadowRoot","Text","Comment","Attr","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","HTMLButtonElement","HTMLFormElement","HTMLAnchorElement","HTMLImageElement","HTMLVideoElement","HTMLAudioElement","HTMLCanvasElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLTableElement","HTMLTemplateElement","HTMLSlotElement","HTMLDialogElement","HTMLDetailsElement","HTMLLabelElement","HTMLOptionElement","HTMLIFrameElement","HTMLScriptElement","HTMLStyleElement","HTMLLinkElement","HTMLMetaElement","HTMLHeadElement","HTMLBodyElement","HTMLMediaElement","SVGSVGElement","SVGPathElement","SVGGElement","SVGCircleElement","SVGRectElement","SVGTextElement","SVGLineElement","SVGPolygonElement","NodeList","HTMLCollection","NamedNodeMap","DOMTokenList","DOMStringMap","CSSStyleDeclaration","DOMRect","DOMRectReadOnly","DOMPoint","DOMMatrix","Range","Selection","StaticRange","MutationObserver","MutationRecord","IntersectionObserver","IntersectionObserverEntry","ResizeObserver","ResizeObserverEntry","PerformanceObserver","PerformanceEntry","Window","Location","History","Navigator","Screen","Storage","CanvasRenderingContext2D","WebGLRenderingContext","WebGL2RenderingContext","OffscreenCanvas","ImageData","ImageBitmap","MediaStream","MediaRecorder","AudioContext","AudioNode","AudioBuffer","Worker","SharedWorker","ServiceWorker","ServiceWorkerRegistration","BroadcastChannel","MessageChannel","MessagePort","WebSocket","XMLHttpRequest","FileReader","FileList","DataTransfer","Crypto","SubtleCrypto","CryptoKey","Geolocation","Notification","PermissionStatus","MediaQueryList","TreeWalker","NodeIterator","ClipboardItem"]);function q(e,t,n,r){if(!e)return"undefined";switch(e.kind){case _.SyntaxKind.StringKeyword:return"''";case _.SyntaxKind.NumberKeyword:return"0.0";case _.SyntaxKind.BooleanKeyword:return"false";case _.SyntaxKind.NullKeyword:return"null";case _.SyntaxKind.UndefinedKeyword:return"undefined";case _.SyntaxKind.VoidKeyword:return"undefined";case _.SyntaxKind.AnyKeyword:return"any";case _.SyntaxKind.UnknownKeyword:return"any";case _.SyntaxKind.NeverKeyword:return"null";case _.SyntaxKind.SymbolKeyword:return"Symbol('example')";case _.SyntaxKind.BigIntKeyword:return"0n";case _.SyntaxKind.ObjectKeyword:return"{}";case _.SyntaxKind.ArrayType:{let i=q(e.elementType,t);return i==="any"&&(i="null"),`[${i}]`}case _.SyntaxKind.TypeReference:{let s=e,i=s.typeName.getText();if(i==="Array"&&s.typeArguments?.length)return`[${q(s.typeArguments[0],t,n,r)}]`;if(i==="Promise"||i==="Generator"||i==="AsyncGenerator"||i==="IterableIterator"||i==="AsyncIterableIterator")return s.typeArguments?.length?q(s.typeArguments[0],t,n,r):"undefined";if(i==="Record")return"{}";let o={Map:"new Map()",Set:"new Set()",WeakMap:"new WeakMap()",WeakSet:"new WeakSet()",WeakRef:"new WeakRef({})",Error:"new Error('example')",TypeError:"new TypeError('example')",RangeError:"new RangeError('example')",SyntaxError:"new SyntaxError('example')",ReferenceError:"new ReferenceError('example')",URIError:"new URIError('example')",EvalError:"new EvalError('example')",Date:"new Date()",RegExp:"/example/",ArrayBuffer:"new ArrayBuffer(0)",SharedArrayBuffer:"new SharedArrayBuffer(0)",DataView:"new DataView(new ArrayBuffer(0))",Float32Array:"new Float32Array(0)",Float64Array:"new Float64Array(0)",Int8Array:"new Int8Array(0)",Int16Array:"new Int16Array(0)",Int32Array:"new Int32Array(0)",Uint8Array:"new Uint8Array(0)",Uint16Array:"new Uint16Array(0)",Uint32Array:"new Uint32Array(0)",Uint8ClampedArray:"new Uint8ClampedArray(0)",BigInt64Array:"new BigInt64Array(0)",BigUint64Array:"new BigUint64Array(0)",URL:"new URL('https://example.com')",URLSearchParams:"new URLSearchParams()",Headers:"new Headers()",FormData:"new FormData()",Blob:"new Blob()",File:"new File([], 'example')",Response:"new Response()",Request:"new Request('https://example.com')",AbortController:"new AbortController()",AbortSignal:"AbortSignal.abort()",ReadableStream:"new ReadableStream()",WritableStream:"new WritableStream()",TransformStream:"new TransformStream()",TextEncoder:"new TextEncoder()",TextDecoder:"new TextDecoder()",Promise:"Promise.resolve(null)"};if(i in o)return o[i];if(r?.typeAliases?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.typeAliases.get(i);return q(c,t,n,{...r,visited:a})}if(r?.interfaces?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.interfaces.get(i),l=[];for(let u of c.members)if(_.isPropertySignature(u)&&u.name){let f=u.name.getText(r.sourceFile),p=q(u.type,t,n,{...r,visited:a});l.push(`${f}: ${p}`)}return`{ ${l.join(", ")} }`}if(r?.typeParams?.has(i)){let a=r.typeParams.get(i);if(a.constraint)return q(a.constraint,t,n,r);if(a.default)return q(a.default,t,n,r)}return Oi.has(i)?"{}":/^[A-Z]$/.test(i)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(i)?(n?.push(`Generic type parameter '${i}' converted to 'any' - consider specializing`),"any"):(n?.push(`Unknown type '${i}' converted to 'any' - may need manual review`),"any")}case _.SyntaxKind.TypeLiteral:{let s=e,i=[];for(let o of s.members)if(_.isPropertySignature(o)&&o.name){let a=o.name.getText(),c=q(o.type,t);c==="any"&&(c="null"),i.push(`${a}: ${c}`)}return`{ ${i.join(", ")} }`}case _.SyntaxKind.UnionType:{let s=e,i=f=>f.kind===_.SyntaxKind.NullKeyword||_.isLiteralTypeNode(f)&&f.literal.kind===_.SyntaxKind.NullKeyword,o=f=>f.kind===_.SyntaxKind.UndefinedKeyword||_.isLiteralTypeNode(f)&&f.literal.kind===_.SyntaxKind.UndefinedKeyword,a=s.types.filter(f=>!i(f)&&!o(f)),c=s.types.some(i),l=s.types.some(o);if(a.length===0)return c?"null":"undefined";if(a.length===1&&(c||l)){let f=q(a[0],t,n,r);if(f==="any")return"any";if(c)return`${f} | null`;if(l)return`${f} | undefined`}let u=s.types.map(f=>q(f,t,n,r)).filter((f,p,m)=>m.indexOf(f)===p);return u.some(f=>f==="any")?"any":u.length===1?u[0]:u.length>0?u.some(p=>/[()]/.test(p)||p.startsWith("new "))?"any":u.join(" | "):"undefined"}case _.SyntaxKind.LiteralType:{let s=e;return _.isStringLiteral(s.literal)?`'${s.literal.text}'`:_.isNumericLiteral(s.literal)?s.literal.text:s.literal.kind===_.SyntaxKind.TrueKeyword?"true":s.literal.kind===_.SyntaxKind.FalseKeyword?"false":s.literal.kind===_.SyntaxKind.NullKeyword?"null":"undefined"}case _.SyntaxKind.ParenthesizedType:return q(e.type,t);case _.SyntaxKind.FunctionType:{let s=e,i=[];for(let c of s.parameters){let l=c.name?.getText()||"_";if(l==="this")continue;let u=q(c.type,t,n,r);u==="any"&&(u="null"),i.push(`${l}: ${u}`)}let o=q(s.type,t,n,r);o==="any"&&(o="null");let a=[];return i.length>0&&a.push(`params: { ${i.join(", ")} }`),o!=="undefined"&&a.push(`returns: ${o}`),`FunctionPredicate('function', { ${a.join(", ")} })`}case _.SyntaxKind.TupleType:return`[${e.elements.map(o=>{let a=_.isNamedTupleMember(o)?q(o.type,t):q(o,t);return a==="any"?"null":a}).join(", ")}]`;default:return"undefined"}}function ee(e,t){if(!e)return{kind:"any"};let n=t?.depth??0;if(n>Uc)return{kind:"any"};switch(t=t?{...t,depth:n+1}:void 0,e.kind){case _.SyntaxKind.StringKeyword:return{kind:"string"};case _.SyntaxKind.NumberKeyword:return{kind:"number"};case _.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case _.SyntaxKind.NullKeyword:return{kind:"null"};case _.SyntaxKind.UndefinedKeyword:case _.SyntaxKind.VoidKeyword:return{kind:"undefined"};case _.SyntaxKind.ArrayType:return{kind:"array",items:ee(e.elementType,t)};case _.SyntaxKind.TypeLiteral:{let r=e,s={};for(let i of r.members)if(_.isPropertySignature(i)&&i.name){let o=i.name.getText();s[o]=ee(i.type,t)}return{kind:"object",shape:s}}case _.SyntaxKind.UnionType:{let r=e,s=r.types.filter(o=>o.kind!==_.SyntaxKind.NullKeyword&&o.kind!==_.SyntaxKind.UndefinedKeyword),i=r.types.some(o=>o.kind===_.SyntaxKind.NullKeyword);return s.length===1&&i?{...ee(s[0],t),nullable:!0}:{kind:"union",members:r.types.map(o=>ee(o,t))}}case _.SyntaxKind.IntersectionType:{let r=e,s={};for(let i of r.types){let o=ee(i,t);o.kind==="object"&&o.shape&&Object.assign(s,o.shape)}return Object.keys(s).length>0?{kind:"object",shape:s}:{kind:"any"}}case _.SyntaxKind.TupleType:{let r=e,s=[];for(let i of r.elements)_.isNamedTupleMember(i)?s.push(ee(i.type,t)):s.push(ee(i,t));return{kind:"tuple",elements:s}}case _.SyntaxKind.TypeReference:{let r=e,s=r.typeName.getText();if(s==="Array"&&r.typeArguments?.length)return{kind:"array",items:ee(r.typeArguments[0],t)};if(s==="Promise"&&r.typeArguments?.length||(s==="Generator"||s==="AsyncGenerator"||s==="IterableIterator"||s==="AsyncIterableIterator")&&r.typeArguments?.length)return ee(r.typeArguments[0],t);if(r.typeArguments?.length){let i=ee(r.typeArguments[0],t);if(s==="Partial"||s==="Required"||s==="Readonly")return i;if(s==="Record"&&r.typeArguments.length>=2)return{kind:"object",shape:{"[key]":ee(r.typeArguments[1],t)}};if(s==="Pick"||s==="Omit")return i;if(s==="NonNullable")return i.nullable?{...i,nullable:!1}:i;if(["ReturnType","Parameters","ConstructorParameters"].includes(s))return{kind:"any"}}if(t?.typeAliases?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.typeAliases.get(s),a=ee(o,{...t,visited:i});return t.resolvedCache?.set(s,a),a}if(t?.interfaces?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.interfaces.get(s),a={};if(o.heritageClauses){for(let l of o.heritageClauses)if(l.token===_.SyntaxKind.ExtendsKeyword)for(let u of l.types){let f=u.expression.getText(t.sourceFile);if(t.interfaces?.has(f)&&!i.has(f)){let p={kind:_.SyntaxKind.TypeReference,typeName:{getText:()=>f}},m=ee(p,{...t,visited:i});m.kind==="object"&&m.shape&&Object.assign(a,m.shape)}}}for(let l of o.members)if(_.isPropertySignature(l)&&l.name){let u=l.name.getText(t.sourceFile);a[u]=ee(l.type,{...t,visited:i})}let c={kind:"object",shape:a};return t.resolvedCache?.set(s,c),c}if(t?.typeParams?.has(s)){let i=t.typeParams.get(s);if(i.constraint)return ee(i.constraint,t);if(i.default)return ee(i.default,t)}return Oi.has(s)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function qc(e,t){if(!e.typeParameters||e.typeParameters.length===0)return;let n={};for(let r of e.typeParameters){let s=r.name.getText(),i={};if(r.constraint){let o=q(r.constraint,void 0,t);if(o.startsWith("{"))try{i.constraint=o}catch{i.constraint=o}else i.constraint=o}if(r.default){let o=q(r.default,void 0,t);i.default=o}n[s]=i}return Object.keys(n).length>0?n:void 0}function Wc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return Jc(e,t,n,r);let i=r?.find(l=>l.kind==="example"),o=r?.find(l=>l.kind==="predicate"),a;if(i?.text)a=i.text;else{let l=[];for(let u of e.members)if(_.isPropertySignature(u)&&u.name){let f=u.name.getText(t),p=q(u.type,void 0,n);p==="any"&&(p="null"),l.push(`${f}: ${p}`)}if(l.length===0&&!o)return`Type ${s} {}`;a=l.length>0?`{ ${l.join(", ")} }`:"{}"}let c=[`example: ${a}`];return o?.text&&c.push(o.text),`Type ${s} {
375
375
  ${c.join(`
376
376
  `)}
377
- }`}function Jc(e,t,n,r){let s=e.name.getText(t),i=[];for(let u of e.typeParameters||[]){let f=u.name.getText(t);if(u.default){let p=W(u.default,void 0,n);i.push(`${f} = ${p}`)}else i.push(f)}let o=r?.find(u=>u.kind==="predicate"),a=r?.find(u=>u.kind==="declaration"),c;if(o?.text)c=o.text;else{let u=(e.typeParameters||[]).map(m=>m.name.getText(t)),f=["typeof x === 'object'","x !== null"];for(let m of e.members)if(_.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=d.startsWith("[")&&d.endsWith("]"),b=y?d.slice(1,-1):null;if(y?f.push(`${b} in x`):f.push(`'${d}' in x`),m.type&&_.isTypeReferenceNode(m.type)){let $=m.type.typeName.getText(t);u.includes($)&&(y?f.push(`${$}(x[${b}])`):f.push(`${$}(x.${d})`))}}c=`predicate(${["x",...u].join(", ")}) { return ${f.join(" && ")} }`}let l=[`description: '${s}'`,c];if(a?.text)l.push(`declaration ${a.text}`);else{let u=[];for(let f of e.members)if(_.isPropertySignature(f)&&f.name){let p=f.name.getText(t),m=f.questionToken?"?":"",d=f.type?f.type.getText(t):"any";u.push(`${p}${m}: ${d}`)}else if(_.isMethodSignature(f)&&f.name){let p=f.getText(t).trim();u.push(p.replace(/;$/,""))}u.length>0&&l.push(`declaration {
377
+ }`}function Jc(e,t,n,r){let s=e.name.getText(t),i=[];for(let u of e.typeParameters||[]){let f=u.name.getText(t);if(u.default){let p=q(u.default,void 0,n);i.push(`${f} = ${p}`)}else i.push(f)}let o=r?.find(u=>u.kind==="predicate"),a=r?.find(u=>u.kind==="declaration"),c;if(o?.text)c=o.text;else{let u=(e.typeParameters||[]).map(m=>m.name.getText(t)),f=["typeof x === 'object'","x !== null"];for(let m of e.members)if(_.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=d.startsWith("[")&&d.endsWith("]"),b=y?d.slice(1,-1):null;if(y?f.push(`${b} in x`):f.push(`'${d}' in x`),m.type&&_.isTypeReferenceNode(m.type)){let $=m.type.typeName.getText(t);u.includes($)&&(y?f.push(`${$}(x[${b}])`):f.push(`${$}(x.${d})`))}}c=`predicate(${["x",...u].join(", ")}) { return ${f.join(" && ")} }`}let l=[`description: '${s}'`,c];if(a?.text)l.push(`declaration ${a.text}`);else{let u=[];for(let f of e.members)if(_.isPropertySignature(f)&&f.name){let p=f.name.getText(t),m=f.questionToken?"?":"",d=f.type?q(f.type,void 0,n):"null";u.push(`${p}${m}: ${d}`)}else if(_.isMethodSignature(f)&&f.name){let p=f.name.getText(t),m=f.type?q(f.type,void 0,n):"null";u.push(`${p}: FunctionPredicate('function', { returns: ${m} })`)}u.length>0&&l.push(`declaration {
378
378
  ${u.join(`
379
379
  `)}
380
380
  }`)}return`Generic ${s}<${i.join(", ")}> {
@@ -383,31 +383,31 @@ ${p}
383
383
  }`}function Vc(e,t){if(!_.isUnionTypeNode(e))return null;let n=[];for(let r of e.types)if(_.isLiteralTypeNode(r))if(_.isStringLiteral(r.literal))n.push(`'${r.literal.text}'`);else if(_.isNumericLiteral(r.literal))n.push(r.literal.text);else if(r.literal.kind===_.SyntaxKind.TrueKeyword)n.push("true");else if(r.literal.kind===_.SyntaxKind.FalseKeyword)n.push("false");else if(r.literal.kind===_.SyntaxKind.NullKeyword)n.push("null");else return null;else if(r.kind===_.SyntaxKind.NullKeyword)n.push("null");else if(r.kind===_.SyntaxKind.UndefinedKeyword)n.push("undefined");else return null;return n.length>0?n:null}function Kc(e,t,n){let r=e.name.getText(t),s=[],i=0;for(let o of e.members){let a=o.name.getText(t);if(o.initializer)if(_.isStringLiteral(o.initializer))s.push(` ${a} = '${o.initializer.text}'`);else if(_.isNumericLiteral(o.initializer)){let c=parseInt(o.initializer.text,10);s.push(` ${a} = ${c}`),i=c+1}else if(_.isPrefixUnaryExpression(o.initializer)&&o.initializer.operator===_.SyntaxKind.MinusToken){let c=o.initializer.operand;if(_.isNumericLiteral(c)){let l=-parseInt(c.text,10);s.push(` ${a} = ${l}`),i=l+1}}else s.push(` ${a} = ${o.initializer.getText(t)}`);else s.push(` ${a} = ${i}`),i++}return`Enum ${r} '${r}' {
384
384
  ${s.join(`
385
385
  `)}
386
- }`}function zc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return e.type.kind===_.SyntaxKind.FunctionType?Gc(e,t,n):Hc(e,t,n,r);let i=Vc(e.type,t);if(i)return`Union ${s} '${s}' ${i.join(" | ")}`;if(e.type.kind===_.SyntaxKind.FunctionType){let a=e.type,c=[];for(let f of a.parameters){let p=f.name?.getText(t)||"_";if(p==="this")continue;let m=W(f.type,void 0,n);m==="any"&&(m="null"),c.push(`${p}: ${m}`)}let l=W(a.type,void 0,n);l==="any"&&(l="null");let u=[];return c.length>0&&u.push(`params: { ${c.join(", ")} }`),l!=="undefined"&&u.push(`returns: ${l}`),`FunctionPredicate ${s} {
386
+ }`}function zc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return e.type.kind===_.SyntaxKind.FunctionType?Gc(e,t,n):Hc(e,t,n,r);let i=Vc(e.type,t);if(i)return`Union ${s} '${s}' ${i.join(" | ")}`;if(e.type.kind===_.SyntaxKind.FunctionType){let a=e.type,c=[];for(let f of a.parameters){let p=f.name?.getText(t)||"_";if(p==="this")continue;let m=q(f.type,void 0,n);m==="any"&&(m="null"),c.push(`${p}: ${m}`)}let l=q(a.type,void 0,n);l==="any"&&(l="null");let u=[];return c.length>0&&u.push(`params: { ${c.join(", ")} }`),l!=="undefined"&&u.push(`returns: ${l}`),`FunctionPredicate ${s} {
387
387
  ${u.join(`
388
388
  `)}
389
- }`}let o=W(e.type,void 0,n);if(o==="any"||o==="undefined"){let a=e.type.getText(t).trim();return`Type ${s} {
389
+ }`}let o=q(e.type,void 0,n);if(o==="any"||o==="undefined"){let a=e.type.getText(t).trim().replace(/\s+/g," ");return`Type ${s} {
390
390
  // TS: ${a}
391
391
  }`}return o==="''"||o==="0"||o==="true"||o==="null"?`Type ${s} ${o}`:`Type ${s} {
392
392
  example: ${o}
393
- }`}function Gc(e,t,n){let r=e.name.getText(t),s=e.type,i=new Set,o=[];for(let f of e.typeParameters){let p=f.name.getText(t);if(i.add(p),f.default){let m=W(f.default,void 0,n);o.push(`${p} = ${m}`)}else o.push(p)}let a=[];for(let f of s.parameters){let p=f.name?.getText(t)||"_";if(p==="this")continue;let m=f.type?.getText(t)||"any";if(i.has(m))a.push(`${p}: ${m}`);else{let d=W(f.type,void 0,n);d==="any"&&(d="null"),a.push(`${p}: ${d}`)}}let c=s.type?.getText(t)||"void",l;c!=="void"&&(i.has(c)?l=c:(l=W(s.type,void 0,n),l==="any"&&(l="null"),l==="undefined"&&(l=void 0)));let u=[];return a.length>0&&u.push(`params: { ${a.join(", ")} }`),l!==void 0&&u.push(`returns: ${l}`),`FunctionPredicate ${r}<${o.join(", ")}> {
393
+ }`}function Gc(e,t,n){let r=e.name.getText(t),s=e.type,i=new Set,o=[];for(let f of e.typeParameters){let p=f.name.getText(t);if(i.add(p),f.default){let m=q(f.default,void 0,n);o.push(`${p} = ${m}`)}else o.push(p)}let a=[];for(let f of s.parameters){let p=f.name?.getText(t)||"_";if(p==="this")continue;let m=f.type?.getText(t)||"any";if(i.has(m))a.push(`${p}: ${m}`);else{let d=q(f.type,void 0,n);d==="any"&&(d="null"),a.push(`${p}: ${d}`)}}let c=s.type?.getText(t)||"void",l;c!=="void"&&(i.has(c)?l=c:(l=q(s.type,void 0,n),l==="any"&&(l="null"),l==="undefined"&&(l=void 0)));let u=[];return a.length>0&&u.push(`params: { ${a.join(", ")} }`),l!==void 0&&u.push(`returns: ${l}`),`FunctionPredicate ${r}<${o.join(", ")}> {
394
394
  ${u.join(`
395
395
  `)}
396
- }`}function Hc(e,t,n,r){let s=e.name.getText(t),i=[];for(let f of e.typeParameters||[]){let p=f.name.getText(t);if(f.default){let m=W(f.default,void 0,n);i.push(`${p} = ${m}`)}else i.push(p)}let o=(e.typeParameters||[]).map(f=>f.name.getText(t)),a=r?.find(f=>f.kind==="predicate"),c=r?.find(f=>f.kind==="declaration"),l;a?.text?l=a.text:l=`predicate(${["x",...o].join(", ")}) { return true }`;let u=[`description: '${s}'`,l];if(c?.text)u.push(`declaration ${c.text}`);else{let f=e.type;if(f&&_.isTypeLiteralNode(f)){let p=[];for(let m of f.members)if(_.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=m.questionToken?"?":"",b=m.type?m.type.getText(t):"any";p.push(`${d}${y}: ${b}`)}else _.isMethodSignature(m)&&m.name&&p.push(m.getText(t).trim().replace(/;$/,""));p.length>0&&u.push(`declaration {
396
+ }`}function Hc(e,t,n,r){let s=e.name.getText(t),i=[];for(let f of e.typeParameters||[]){let p=f.name.getText(t);if(f.default){let m=q(f.default,void 0,n);i.push(`${p} = ${m}`)}else i.push(p)}let o=(e.typeParameters||[]).map(f=>f.name.getText(t)),a=r?.find(f=>f.kind==="predicate"),c=r?.find(f=>f.kind==="declaration"),l;a?.text?l=a.text:l=`predicate(${["x",...o].join(", ")}) { return true }`;let u=[`description: '${s}'`,l];if(c?.text)u.push(`declaration ${c.text}`);else{let f=e.type;if(f&&_.isTypeLiteralNode(f)){let p=[];for(let m of f.members)if(_.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=m.questionToken?"?":"",b=m.type?q(m.type,void 0,n):"null";p.push(`${d}${y}: ${b}`)}else if(_.isMethodSignature(m)&&m.name){let d=m.name.getText(t),y=m.type?q(m.type,void 0,n):"null";p.push(`${d}: FunctionPredicate('function', { returns: ${y} })`)}p.length>0&&u.push(`declaration {
397
397
  ${p.join(`
398
398
  `)}
399
- }`)}else if(f){let p=f.getText(t).trim();u.push(`declaration {
399
+ }`)}else if(f){let p=f.getText(t).trim().replace(/\s+/g," ");u.push(`declaration {
400
400
  // TS: ${p}
401
401
  }`)}}return`Generic ${s}<${i.join(", ")}> {
402
402
  ${u.join(`
403
403
  `)}
404
404
  }`}function Di(e,t,n,r,s,i){let o;if(e.typeParameters&&e.typeParameters.length>0){o=new Map;for(let j of e.typeParameters)o.set(j.name.getText(t),{constraint:j.constraint,default:j.default})}let a=o||i?{...i,typeParams:o??i?.typeParams}:i,c=[],l=at(e.parameters,t,r,c,a),{line:u}=t.getLineAndCharacterOfPosition(e.getStart(t)),f=s?`/* line ${u+1} */
405
- `:"",p=n||(_.isFunctionDeclaration(e)&&e.name?e.name.getText(t):""),m=e.type?W(e.type,void 0,r,a):"",d=m&&m!=="undefined"&&m!=="any"&&!m.startsWith("new ")?`:! ${m}`:"";if(e.type&&(m==="any"||m==="undefined")){let j=e.type.getText(t);j!=="any"&&j!=="unknown"&&j!=="void"&&c.push(`return: ${j}`)}let y;if(e.body){let j=_.isBlock(e.body)?e.body.getText(t):`{ return ${e.body.getText(t)} }`;y=_.transpileModule(j,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else y="{ }";let b=e.modifiers?.some(j=>j.kind===_.SyntaxKind.ExportKeyword),$=e.modifiers?.some(j=>j.kind===_.SyntaxKind.AsyncKeyword),T=!!e.asteriskToken,x=b?"export ":"",w=$?"async ":"",E=T?"function* ":"function ",S=c.length>0?`/* TODO: TS types degraded \u2014 ${c.join(", ")} */
406
- `:"";return`${f}${S}${x}${w}${E}${p}(${l.join(", ")})${d} ${y}`}function Zc(e,t,n,r){let s=t.name?.getText(n)||"",i=`_${s}_impl`,o=[],a=at(t.parameters,n,r),c="{ }";if(t.body){let m=t.body.getText(n);c=_.transpileModule(m,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}let l=t.modifiers?.some(m=>m.kind===_.SyntaxKind.AsyncKeyword),u=!!t.asteriskToken,f=l?"async ":"",p=u?"function* ":"function ";o.push(`${f}${p}${i}(${a.join(", ")}) ${c}`);for(let m of e){let d=at(m.parameters,n,r),y=m.parameters.map(E=>E.name.getText(n)),b=m.type?W(m.type,void 0,r):"",$=b&&b!=="undefined"&&b!=="any"?`:! ${b}`:"",{line:T}=n.getLineAndCharacterOfPosition(m.getStart(n)),x=`/* line ${T+1} */
407
- `,w=u?"yield* ":"return ";o.push(`${x}${f}${p}${s}(${d.join(", ")})${$} { ${w}${i}(${y.join(", ")}) }`)}return o}function Yc(e,t,n,r,s=!1){let i=r;if(e.typeParameters&&e.typeParameters.length>0){let y=new Map;for(let b of e.typeParameters)y.set(b.name.getText(t),{constraint:b.constraint,default:b.default});i={...r,typeParams:y}}let o=e.name?.getText(t)||"Anonymous",c=e.heritageClauses?.find(y=>y.token===_.SyntaxKind.ExtendsKeyword)?.types[0]?.expression?.getText(t),l=new Map;if(s){for(let y of e.members)if(_.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t);y.modifiers?.some(T=>T.kind===_.SyntaxKind.PrivateKeyword)&&!b.startsWith("#")&&l.set(b,`#${b}`)}}let u=y=>{let b=y;for(let[$,T]of l)b=b.replace(new RegExp(`(\\b\\w+)\\.${$}\\b`,"g"),`$1.${T}`);return b},f=[];for(let y of e.members){if(_.isConstructorDeclaration(y)){let b=at(y.parameters,t,n),$="{ }";if(y.body){let T=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});$=u(T.outputText.trim())}f.push(` constructor(${b.join(", ")}) ${$}`)}if(_.isMethodDeclaration(y)&&y.name){let b=y.name.getText(t),$=y.modifiers?.some(C=>C.kind===_.SyntaxKind.StaticKeyword),T=y.modifiers?.some(C=>C.kind===_.SyntaxKind.AsyncKeyword),x=at(y.parameters,t,n,void 0,i),w=y.type?W(y.type,void 0,n,i):"",E=w&&w!=="undefined"&&w!=="any"?`:! ${w}`:"",S="{ }";if(y.body){let C=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});S=u(C.outputText.trim())}let j=!!y.asteriskToken,A=$?"static ":"",k=T?"async ":"",v=j?"*":"";f.push(` ${A}${k}${v}${b}(${x.join(", ")})${E} ${S}`)}if(_.isGetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),T=y.modifiers?.some(S=>S.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=y.type?W(y.type,void 0,n,i):"",w=x&&x!=="undefined"&&x!=="any"&&!x.startsWith("new ")?`: ${x}`:"",E="{ }";if(y.body){let S=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});E=u(S.outputText.trim())}f.push(` ${T}get ${b}()${w} ${E}`)}if(_.isSetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),T=y.modifiers?.some(E=>E.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=at(y.parameters,t,n),w="{ }";if(y.body){let E=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});w=u(E.outputText.trim())}f.push(` ${T}set ${b}(${x.join(", ")}) ${w}`)}if(_.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t),T=y.modifiers?.some(w=>w.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=l.get(b)||b;if(y.initializer){let w=y.initializer.getText(t),E=w.trimStart().startsWith("{")?`(${w})`:w,j=_.transpileModule(E,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();E!==w&&(j=j.replace(/^\(/,"").replace(/\);?\s*$/,"")),f.push(` ${T}${x} = ${j}`)}else f.push(` ${T}${x}`)}}let m=e.modifiers?.some(y=>y.kind===_.SyntaxKind.ExportKeyword)?"export ":"",d=c?` extends ${c}`:"";return`${m}class ${o}${d} {
405
+ `:"",p=n||(_.isFunctionDeclaration(e)&&e.name?e.name.getText(t):""),m=e.type?q(e.type,void 0,r,a):"",d=m&&m!=="undefined"&&m!=="any"&&!m.startsWith("new ")?`:! ${m}`:"";if(e.type&&(m==="any"||m==="undefined")){let j=e.type.getText(t);j!=="any"&&j!=="unknown"&&j!=="void"&&c.push(`return: ${j}`)}let y;if(e.body){let j=_.isBlock(e.body)?e.body.getText(t):`{ return ${e.body.getText(t)} }`;y=_.transpileModule(j,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else y="{ }";let b=e.modifiers?.some(j=>j.kind===_.SyntaxKind.ExportKeyword),$=e.modifiers?.some(j=>j.kind===_.SyntaxKind.AsyncKeyword),T=!!e.asteriskToken,x=b?"export ":"",w=$?"async ":"",E=T?"function* ":"function ",S=c.length>0?`/* TODO: TS types degraded \u2014 ${c.join(", ")} */
406
+ `:"";return`${f}${S}${x}${w}${E}${p}(${l.join(", ")})${d} ${y}`}function Zc(e,t,n,r){let s=t.name?.getText(n)||"",i=`_${s}_impl`,o=[],a=at(t.parameters,n,r),c="{ }";if(t.body){let m=t.body.getText(n);c=_.transpileModule(m,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}let l=t.modifiers?.some(m=>m.kind===_.SyntaxKind.AsyncKeyword),u=!!t.asteriskToken,f=l?"async ":"",p=u?"function* ":"function ";o.push(`${f}${p}${i}(${a.join(", ")}) ${c}`);for(let m of e){let d=at(m.parameters,n,r),y=m.parameters.map(E=>E.name.getText(n)),b=m.type?q(m.type,void 0,r):"",$=b&&b!=="undefined"&&b!=="any"?`:! ${b}`:"",{line:T}=n.getLineAndCharacterOfPosition(m.getStart(n)),x=`/* line ${T+1} */
407
+ `,w=u?"yield* ":"return ";o.push(`${x}${f}${p}${s}(${d.join(", ")})${$} { ${w}${i}(${y.join(", ")}) }`)}return o}function Yc(e,t,n,r,s=!1){let i=r;if(e.typeParameters&&e.typeParameters.length>0){let y=new Map;for(let b of e.typeParameters)y.set(b.name.getText(t),{constraint:b.constraint,default:b.default});i={...r,typeParams:y}}let o=e.name?.getText(t)||"Anonymous",c=e.heritageClauses?.find(y=>y.token===_.SyntaxKind.ExtendsKeyword)?.types[0]?.expression?.getText(t),l=new Map;if(s){for(let y of e.members)if(_.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t);y.modifiers?.some(T=>T.kind===_.SyntaxKind.PrivateKeyword)&&!b.startsWith("#")&&l.set(b,`#${b}`)}}let u=y=>{let b=y;for(let[$,T]of l)b=b.replace(new RegExp(`(\\b\\w+)\\.${$}\\b`,"g"),`$1.${T}`);return b},f=[];for(let y of e.members){if(_.isConstructorDeclaration(y)){let b=at(y.parameters,t,n),$="{ }";if(y.body){let T=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});$=u(T.outputText.trim())}f.push(` constructor(${b.join(", ")}) ${$}`)}if(_.isMethodDeclaration(y)&&y.name){let b=y.name.getText(t),$=y.modifiers?.some(C=>C.kind===_.SyntaxKind.StaticKeyword),T=y.modifiers?.some(C=>C.kind===_.SyntaxKind.AsyncKeyword),x=at(y.parameters,t,n,void 0,i),w=y.type?q(y.type,void 0,n,i):"",E=w&&w!=="undefined"&&w!=="any"?`:! ${w}`:"",S="{ }";if(y.body){let C=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});S=u(C.outputText.trim())}let j=!!y.asteriskToken,A=$?"static ":"",k=T?"async ":"",v=j?"*":"";f.push(` ${A}${k}${v}${b}(${x.join(", ")})${E} ${S}`)}if(_.isGetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),T=y.modifiers?.some(S=>S.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=y.type?q(y.type,void 0,n,i):"",w=x&&x!=="undefined"&&x!=="any"&&!x.startsWith("new ")?`: ${x}`:"",E="{ }";if(y.body){let S=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});E=u(S.outputText.trim())}f.push(` ${T}get ${b}()${w} ${E}`)}if(_.isSetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),T=y.modifiers?.some(E=>E.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=at(y.parameters,t,n),w="{ }";if(y.body){let E=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});w=u(E.outputText.trim())}f.push(` ${T}set ${b}(${x.join(", ")}) ${w}`)}if(_.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t),T=y.modifiers?.some(w=>w.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=l.get(b)||b;if(y.initializer){let w=y.initializer.getText(t),E=w.trimStart().startsWith("{")?`(${w})`:w,j=_.transpileModule(E,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();E!==w&&(j=j.replace(/^\(/,"").replace(/\);?\s*$/,"")),f.push(` ${T}${x} = ${j}`)}else f.push(` ${T}${x}`)}}let m=e.modifiers?.some(y=>y.kind===_.SyntaxKind.ExportKeyword)?"export ":"",d=c?` extends ${c}`:"";return`${m}class ${o}${d} {
408
408
  ${f.join(`
409
409
  `)}
410
- }`}function at(e,t,n,r,s){let i=[];for(let o of e){let a=o.name.getText(t);if(a==="this")continue;let c=!!o.dotDotDotToken,l=!!o.questionToken||!!o.initializer,u=W(o.type,void 0,n,s);if(c)u==="any"||u==="undefined"?i.push(`...${a}: [null]`):i.push(`...${a}: ${u}`);else if(o.initializer){let f=o.initializer.getText(t);i.push(`${a} = ${f}`)}else if(u==="any"||u==="undefined"){if(i.push(a),r&&o.type){let f=o.type.getText(t);f!=="any"&&f!=="unknown"&&r.push(`${a}: ${f}`)}}else l?i.push(`${a}: ${u} | undefined`):i.push(`${a}: ${u}`)}return i}function Pn(e,t,n,r){let s=r;if(e.typeParameters&&e.typeParameters.length>0){let l=new Map;for(let u of e.typeParameters)l.set(u.name.getText(t),{constraint:u.constraint,default:u.default});s={...r,typeParams:l}}let i=_.isFunctionDeclaration(e)&&e.name?e.name.getText(t):"anonymous",o={};for(let l of e.parameters){let u=l.name.getText(t),f=!!l.questionToken||!!l.initializer,p;if(l.initializer){let m=l.initializer.getText(t);try{p=JSON.parse(m)}catch{p=m}}o[u]={type:ee(l.type,s),required:!f,default:p}}let a={name:i,params:o,returns:e.type?ee(e.type,s):void 0},c=qc(e,n);return c&&(a.typeParams=c),a}function Xc(e,t,n,r){let s=r;if(e.typeParameters&&e.typeParameters.length>0){let u=new Map;for(let f of e.typeParameters)u.set(f.name.getText(t),{constraint:f.constraint,default:f.default});s={...r,typeParams:u}}let i=e.name?.getText(t)||"anonymous",o={},a={},c;for(let u of e.members){if(_.isConstructorDeclaration(u)){let f={};for(let p of u.parameters){let m=p.name.getText(t),d=!!p.questionToken||!!p.initializer,y;if(p.initializer){let b=p.initializer.getText(t);try{y=JSON.parse(b)}catch{y=b}}f[m]={type:ee(p.type,s),required:!d,default:y}}c={params:f}}if(_.isMethodDeclaration(u)&&u.name){let f=u.name.getText(t),p=u.modifiers?.some(y=>y.kind===_.SyntaxKind.StaticKeyword),m={};for(let y of u.parameters){let b=y.name.getText(t),$=!!y.questionToken||!!y.initializer,T;if(y.initializer){let x=y.initializer.getText(t);try{T=JSON.parse(x)}catch{T=x}}m[b]={type:ee(y.type,s),required:!$,default:T}}let d={name:f,params:m,returns:u.type?ee(u.type,s):void 0};p?a[f]=d:o[f]=d}}let l={name:i,methods:o,staticMethods:a,constructor:c};if(e.typeParameters&&e.typeParameters.length>0){let u={};for(let f of e.typeParameters){let p=f.name.getText(t),m={};f.constraint&&(m.constraint=W(f.constraint,void 0,n,r)),f.default&&(m.default=W(f.default,void 0,n,r)),u[p]=m}l.typeParams=u}return l}var Qc=new Set(["TjsStrict","TjsEquals","TjsClass","TjsDate","TjsNoeval","TjsNoVar","TjsStandard","TjsSafeEval"]);function el(e){let t=[],n=/\/\*\s*@tjs\s+((?:Tjs\w+\s*)+)\*\//g,r;for(;(r=n.exec(e))!==null;){let s=r[1].trim().split(/\s+/);for(let i of s)Qc.has(i)&&!t.includes(i)&&t.push(i)}return t}function tl(e){let t=[],n=/\/\*\s*@tjs-skip\s*\*\//g,r;for(;(r=n.exec(e))!==null;)t.push({index:r.index,kind:"skip"});let s=/\/\*\s*@tjs\s+predicate(\([^)]*\)\s*\{[\s\S]*?\})\s*\*\//g;for(;(r=s.exec(e))!==null;)t.push({index:r.index,kind:"predicate",text:`predicate${r[1].trim()}`});let i=/\/\*\s*@tjs\s+example:\s*([\s\S]*?)\s*\*\//g;for(;(r=i.exec(e))!==null;)t.push({index:r.index,kind:"example",text:r[1].trim()});let o=/\/\*\s*@tjs\s+declaration\s*(\{[\s\S]*?\})\s*\*\//g;for(;(r=o.exec(e))!==null;)t.push({index:r.index,kind:"declaration",text:r[1].trim()});return t.sort((a,c)=>a.index-c.index)}function nl(e,t){let n=new Map;if(e.length===0)return n;let r=t.statements;for(let s=0;s<r.length;s++){let i=r[s],o;if((_.isInterfaceDeclaration(i)||_.isTypeAliasDeclaration(i)||_.isEnumDeclaration(i))&&(o=i.name.getText(t)),!o)continue;let a=i.getStart(t),c=s>0?r[s-1].getEnd():0,l=e.filter(u=>u.index>=c&&u.index<a);l.length>0&&n.set(o,l)}return n}function rl(e){let t=[],n=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{[\s\S]*?\}\s*\*\/|\/\*test\s*\{[\s\S]*?\}\s*\*\//g,r;for(;(r=n.exec(e))!==null;)t.push(r[0]);return t}function sl(e){let t=[],n=/\/\*#[\s\S]*?\*\//g,r=0,s=null,i=[];for(let a=0;a<e.length;a++){let c=e[a],l=a>0?e[a-1]:"";!s&&(c==='"'||c==="'"||c==="`")?s=c:s&&c===s&&l!=="\\"&&(s=null),s||(c==="{"&&r++,c==="}"&&r--),i[a]=r}let o;for(;(o=n.exec(e))!==null;)i[o.index]===0&&t.push({content:o[0],index:o.index});return t}function il(e,t={}){let{emitTJS:n=!1,filename:r="input.ts"}=t,s=[],i=rl(e),o=n?sl(e):[],a=n?tl(e):[],c=el(e),l=c.includes("TjsClass")||c.includes("TjsStrict"),u=_.createSourceFile(r,e,_.ScriptTarget.Latest,!0),f=n?nl(a,u):new Map,p=[],m=new Set,d={},y={},b=new Set,$=k=>{for(let v=0;v<o.length;v++){let C=o[v];!b.has(v)&&C.index<k&&(p.push(C.content),b.add(v))}},T=new Map,x=new Map;function w(k){if(_.isTypeAliasDeclaration(k)&&T.set(k.name.getText(u),k.type),_.isInterfaceDeclaration(k)){let v=k.name.getText(u),C=x.get(v);if(C){let P=_.factory.updateInterfaceDeclaration(C,C.modifiers,C.name,C.typeParameters,C.heritageClauses,[...C.members,...k.members]);x.set(v,P)}else x.set(v,k)}_.forEachChild(k,w)}w(u);let E={typeAliases:T,interfaces:x,sourceFile:u,warnings:s,resolvedCache:new Map},S=new Map;for(let k of u.statements)if(_.isFunctionDeclaration(k)&&k.name){let v=k.name.getText(u);S.has(v)||S.set(v,{signatures:[],implementation:null});let C=S.get(v);k.body?C.implementation=k:C.signatures.push(k)}for(let[k,v]of S)(v.signatures.length===0||!v.implementation)&&S.delete(k);for(let k of u.statements){let v=!1;if(n&&$(k.getStart(u)),_.isFunctionDeclaration(k)&&k.name){let C=k.name.getText(u);v=!0;let P=S.get(C);if(P){if(k.body)if(n)p.push(...Zc(P.signatures,k,u,s));else{let M=[];for(let B of P.signatures)M.push(Pn(B,u,s,E));let D=Pn(k,u,s,E);D.overloads=M,d[C]=D}}else n?p.push(Di(k,u,void 0,s,!0,E)):d[C]=Pn(k,u,s,E)}if(_.isVariableStatement(k)){let C=!1,P=k.modifiers?.some(M=>M.kind===_.SyntaxKind.ExportKeyword);for(let M of k.declarationList.declarations)if(_.isIdentifier(M.name)&&M.initializer&&(_.isArrowFunction(M.initializer)||_.isFunctionExpression(M.initializer))){C=!0;let D=M.name.getText(u),B=M.initializer;if(n){let F=Di(B,u,D,s,!0,E);if(P&&!F.includes("export ")){let Y=F.search(/^(async\s+)?function[\s*]/m);Y>0?F=F.slice(0,Y)+"export "+F.slice(Y):F="export "+F}p.push(F)}else{let F=Pn(B,u,s,E);F.name=D,d[D]=F}}if(!C&&n){let M=_.transpileModule(k.getText(u),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});p.push(M.outputText.trim())}v=!0}if(_.isInterfaceDeclaration(k)&&(v=!0,n)){let C=k.name.getText(u),P=f.get(C);if(!m.has(C)&&(m.add(C),!P?.some(M=>M.kind==="skip"))){let M=x.get(C)||k,D=Wc(M,u,s,P);if(D){let B=k.modifiers?.some(F=>F.kind===_.SyntaxKind.ExportKeyword);p.push(B?D.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):D)}}}if(_.isTypeAliasDeclaration(k)&&(v=!0,n)){let C=k.name.getText(u),P=f.get(C);if(!m.has(C)&&(m.add(C),!P?.some(M=>M.kind==="skip"))){let M=zc(k,u,s,P);if(M){let D=k.modifiers?.some(B=>B.kind===_.SyntaxKind.ExportKeyword);p.push(D?M.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):M)}}}if(_.isEnumDeclaration(k)&&(v=!0,n)){let C=k.name.getText(u),P=f.get(C);if(!m.has(C)&&(m.add(C),!P?.some(M=>M.kind==="skip"))){let M=Kc(k,u,s);M&&p.push(M)}}if(_.isClassDeclaration(k)&&k.name){let C=k.name.getText(u);if(v=!0,n){let P=Yc(k,u,s,void 0,l);p.push(P)}else y[C]=Xc(k,u,s,E)}if(_.isImportDeclaration(k)&&(v=!0,n&&!(k.importClause?.isTypeOnly||k.importClause?.namedBindings&&_.isNamedImports(k.importClause.namedBindings)&&k.importClause.namedBindings.elements.every(P=>P.isTypeOnly))))if(k.importClause?.namedBindings&&_.isNamedImports(k.importClause.namedBindings)){let P=k.importClause.namedBindings.elements.filter(M=>!M.isTypeOnly).map(M=>{let D=M.name.getText(u),B=M.propertyName?.getText(u);return B?`${B} as ${D}`:D});if(P.length>0){let M=k.moduleSpecifier.text;p.push(`import { ${P.join(", ")} } from '${M}'`)}}else{let M=k.getText(u).replace(/\btype\s+/g,"").replace(/\s*:\s*\w+/g,"");p.push(M)}if((_.isExportDeclaration(k)||_.isExportAssignment(k))&&(v=!0,n)){let P=_.transpileModule(k.getText(u),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&p.push(P)}if(!v&&n){let P=_.transpileModule(k.getText(u),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&p.push(P)}}if(n){$(1/0);let k=r||"unknown",C=`${c.length>0?c.join(`
410
+ }`}function at(e,t,n,r,s){let i=[];for(let o of e){let a=o.name.getText(t);if(a==="this")continue;let c=!!o.dotDotDotToken,l=!!o.questionToken||!!o.initializer,u=q(o.type,void 0,n,s);if(c)u==="any"||u==="undefined"?i.push(`...${a}: [null]`):i.push(`...${a}: ${u}`);else if(o.initializer){let f=o.initializer.getText(t);i.push(`${a} = ${f}`)}else if(u==="any"||u==="undefined"){if(i.push(a),r&&o.type){let f=o.type.getText(t);f!=="any"&&f!=="unknown"&&r.push(`${a}: ${f}`)}}else l?i.push(`${a}: ${u} | undefined`):i.push(`${a}: ${u}`)}return i}function Pn(e,t,n,r){let s=r;if(e.typeParameters&&e.typeParameters.length>0){let l=new Map;for(let u of e.typeParameters)l.set(u.name.getText(t),{constraint:u.constraint,default:u.default});s={...r,typeParams:l}}let i=_.isFunctionDeclaration(e)&&e.name?e.name.getText(t):"anonymous",o={};for(let l of e.parameters){let u=l.name.getText(t),f=!!l.questionToken||!!l.initializer,p;if(l.initializer){let m=l.initializer.getText(t);try{p=JSON.parse(m)}catch{p=m}}o[u]={type:ee(l.type,s),required:!f,default:p}}let a={name:i,params:o,returns:e.type?ee(e.type,s):void 0},c=qc(e,n);return c&&(a.typeParams=c),a}function Xc(e,t,n,r){let s=r;if(e.typeParameters&&e.typeParameters.length>0){let u=new Map;for(let f of e.typeParameters)u.set(f.name.getText(t),{constraint:f.constraint,default:f.default});s={...r,typeParams:u}}let i=e.name?.getText(t)||"anonymous",o={},a={},c;for(let u of e.members){if(_.isConstructorDeclaration(u)){let f={};for(let p of u.parameters){let m=p.name.getText(t),d=!!p.questionToken||!!p.initializer,y;if(p.initializer){let b=p.initializer.getText(t);try{y=JSON.parse(b)}catch{y=b}}f[m]={type:ee(p.type,s),required:!d,default:y}}c={params:f}}if(_.isMethodDeclaration(u)&&u.name){let f=u.name.getText(t),p=u.modifiers?.some(y=>y.kind===_.SyntaxKind.StaticKeyword),m={};for(let y of u.parameters){let b=y.name.getText(t),$=!!y.questionToken||!!y.initializer,T;if(y.initializer){let x=y.initializer.getText(t);try{T=JSON.parse(x)}catch{T=x}}m[b]={type:ee(y.type,s),required:!$,default:T}}let d={name:f,params:m,returns:u.type?ee(u.type,s):void 0};p?a[f]=d:o[f]=d}}let l={name:i,methods:o,staticMethods:a,constructor:c};if(e.typeParameters&&e.typeParameters.length>0){let u={};for(let f of e.typeParameters){let p=f.name.getText(t),m={};f.constraint&&(m.constraint=q(f.constraint,void 0,n,r)),f.default&&(m.default=q(f.default,void 0,n,r)),u[p]=m}l.typeParams=u}return l}var Qc=new Set(["TjsStrict","TjsEquals","TjsClass","TjsDate","TjsNoeval","TjsNoVar","TjsStandard","TjsSafeEval"]);function el(e){let t=[],n=/\/\*\s*@tjs\s+((?:Tjs\w+\s*)+)\*\//g,r;for(;(r=n.exec(e))!==null;){let s=r[1].trim().split(/\s+/);for(let i of s)Qc.has(i)&&!t.includes(i)&&t.push(i)}return t}function tl(e){let t=[],n=/\/\*\s*@tjs-skip\s*\*\//g,r;for(;(r=n.exec(e))!==null;)t.push({index:r.index,kind:"skip"});let s=/\/\*\s*@tjs\s+predicate(\([^)]*\)\s*\{[\s\S]*?\})\s*\*\//g;for(;(r=s.exec(e))!==null;)t.push({index:r.index,kind:"predicate",text:`predicate${r[1].trim()}`});let i=/\/\*\s*@tjs\s+example:\s*([\s\S]*?)\s*\*\//g;for(;(r=i.exec(e))!==null;)t.push({index:r.index,kind:"example",text:r[1].trim()});let o=/\/\*\s*@tjs\s+declaration\s*(\{[\s\S]*?\})\s*\*\//g;for(;(r=o.exec(e))!==null;)t.push({index:r.index,kind:"declaration",text:r[1].trim()});return t.sort((a,c)=>a.index-c.index)}function nl(e,t){let n=new Map;if(e.length===0)return n;let r=t.statements;for(let s=0;s<r.length;s++){let i=r[s],o;if((_.isInterfaceDeclaration(i)||_.isTypeAliasDeclaration(i)||_.isEnumDeclaration(i))&&(o=i.name.getText(t)),!o)continue;let a=i.getStart(t),c=s>0?r[s-1].getEnd():0,l=e.filter(u=>u.index>=c&&u.index<a);l.length>0&&n.set(o,l)}return n}function rl(e){let t=[],n=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{[\s\S]*?\}\s*\*\/|\/\*test\s*\{[\s\S]*?\}\s*\*\//g,r;for(;(r=n.exec(e))!==null;)t.push(r[0]);return t}function sl(e){let t=[],n=/(?<=^[ \t]*)\/\*#[\s\S]*?\*\//gm,r=0,s=null,i=[];for(let a=0;a<e.length;a++){let c=e[a],l=a>0?e[a-1]:"";!s&&(c==='"'||c==="'"||c==="`")?s=c:s&&c===s&&l!=="\\"&&(s=null),s||(c==="{"&&r++,c==="}"&&r--),i[a]=r}let o;for(;(o=n.exec(e))!==null;)i[o.index]===0&&t.push({content:o[0],index:o.index});return t}function il(e,t={}){let{emitTJS:n=!1,filename:r="input.ts"}=t,s=[],i=rl(e),o=n?sl(e):[],a=n?tl(e):[],c=el(e),l=c.includes("TjsClass")||c.includes("TjsStrict"),u=_.createSourceFile(r,e,_.ScriptTarget.Latest,!0),f=n?nl(a,u):new Map,p=[],m=new Set,d={},y={},b=new Set,$=k=>{for(let v=0;v<o.length;v++){let C=o[v];!b.has(v)&&C.index<k&&(p.push(C.content),b.add(v))}},T=new Map,x=new Map;function w(k){if(_.isTypeAliasDeclaration(k)&&T.set(k.name.getText(u),k.type),_.isInterfaceDeclaration(k)){let v=k.name.getText(u),C=x.get(v);if(C){let P=_.factory.updateInterfaceDeclaration(C,C.modifiers,C.name,C.typeParameters,C.heritageClauses,[...C.members,...k.members]);x.set(v,P)}else x.set(v,k)}_.forEachChild(k,w)}w(u);let E={typeAliases:T,interfaces:x,sourceFile:u,warnings:s,resolvedCache:new Map},S=new Map;for(let k of u.statements)if(_.isFunctionDeclaration(k)&&k.name){let v=k.name.getText(u);S.has(v)||S.set(v,{signatures:[],implementation:null});let C=S.get(v);k.body?C.implementation=k:C.signatures.push(k)}for(let[k,v]of S)(v.signatures.length===0||!v.implementation)&&S.delete(k);for(let k of u.statements){let v=!1;if(n&&$(k.getStart(u)),_.isFunctionDeclaration(k)&&k.name){let C=k.name.getText(u);v=!0;let P=S.get(C);if(P){if(k.body)if(n)p.push(...Zc(P.signatures,k,u,s));else{let M=[];for(let B of P.signatures)M.push(Pn(B,u,s,E));let D=Pn(k,u,s,E);D.overloads=M,d[C]=D}}else n?p.push(Di(k,u,void 0,s,!0,E)):d[C]=Pn(k,u,s,E)}if(_.isVariableStatement(k)){let C=!1,P=k.modifiers?.some(M=>M.kind===_.SyntaxKind.ExportKeyword);for(let M of k.declarationList.declarations)if(_.isIdentifier(M.name)&&M.initializer&&(_.isArrowFunction(M.initializer)||_.isFunctionExpression(M.initializer))){C=!0;let D=M.name.getText(u),B=M.initializer;if(n){let F=Di(B,u,D,s,!0,E);if(P&&!F.includes("export ")){let Y=F.search(/^(async\s+)?function[\s*]/m);Y>0?F=F.slice(0,Y)+"export "+F.slice(Y):F="export "+F}p.push(F)}else{let F=Pn(B,u,s,E);F.name=D,d[D]=F}}if(!C&&n){let M=_.transpileModule(k.getText(u),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});p.push(M.outputText.trim())}v=!0}if(_.isInterfaceDeclaration(k)&&(v=!0,n)){let C=k.name.getText(u),P=f.get(C);if(!m.has(C)&&(m.add(C),!P?.some(M=>M.kind==="skip"))){let M=x.get(C)||k,D=Wc(M,u,s,P);if(D){let B=k.modifiers?.some(F=>F.kind===_.SyntaxKind.ExportKeyword);p.push(B?D.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):D)}}}if(_.isTypeAliasDeclaration(k)&&(v=!0,n)){let C=k.name.getText(u),P=f.get(C);if(!m.has(C)&&(m.add(C),!P?.some(M=>M.kind==="skip"))){let M=zc(k,u,s,P);if(M){let D=k.modifiers?.some(B=>B.kind===_.SyntaxKind.ExportKeyword);p.push(D?M.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):M)}}}if(_.isEnumDeclaration(k)&&(v=!0,n)){let C=k.name.getText(u),P=f.get(C);if(!m.has(C)&&(m.add(C),!P?.some(M=>M.kind==="skip"))){let M=Kc(k,u,s);M&&p.push(M)}}if(_.isClassDeclaration(k)&&k.name){let C=k.name.getText(u);if(v=!0,n){let P=Yc(k,u,s,void 0,l);p.push(P)}else y[C]=Xc(k,u,s,E)}if(_.isImportDeclaration(k)&&(v=!0,n&&!(k.importClause?.isTypeOnly||k.importClause?.namedBindings&&_.isNamedImports(k.importClause.namedBindings)&&k.importClause.namedBindings.elements.every(P=>P.isTypeOnly))))if(k.importClause?.namedBindings&&_.isNamedImports(k.importClause.namedBindings)){let P=k.importClause.namedBindings.elements.filter(M=>!M.isTypeOnly).map(M=>{let D=M.name.getText(u),B=M.propertyName?.getText(u);return B?`${B} as ${D}`:D});if(P.length>0){let M=k.moduleSpecifier.text;p.push(`import { ${P.join(", ")} } from '${M}'`)}}else{let M=k.getText(u).replace(/\btype\s+/g,"").replace(/\s*:\s*\w+/g,"");p.push(M)}if((_.isExportDeclaration(k)||_.isExportAssignment(k))&&(v=!0,n)){let P=_.transpileModule(k.getText(u),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&p.push(P)}if(!v&&n){let P=_.transpileModule(k.getText(u),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&p.push(P)}}if(n){$(1/0);let k=r||"unknown",C=`${c.length>0?c.join(`
411
411
  `)+`
412
412
 
413
413
  `:""}/* tjs <- ${k} */
@@ -429,7 +429,7 @@ ${yi(k)}
429
429
  `),n=t.filter(r=>r.trim().length>0).reduce((r,s)=>{let i=s.match(/^(\s*)/)?.[1].length||0;return Math.min(r,i)},1/0);return n===0||n===1/0?e:t.map(r=>r.slice(n)).join(`
430
430
  `)}function yl(e){return e.split(`
431
431
  `).map((n,r)=>r===0?n:n.replace(/^[ \t]*\*[ \t]?/,"")).join(`
432
- `)}function Ji(e){let t=[],n=Wi(e),r=dl(e),s=/\/\*#([\s\S]*?)\*\//g,i=/\/\*\*([\s\S]*?)\*\//g,o=/\bfunction\s+(\w+)\s*\(/g,a=/\bclass\s+(\w+)(?:\s+extends\s+(\w+))?\s*\{/g,c=[],l;for(;(l=s.exec(e))!==null;){if(n[l.index]!==0)continue;let f=qi(l[1]).trim();f&&c.push({type:"doc",index:l.index,data:f})}for(;(l=i.exec(e))!==null;){if(n[l.index]!==0)continue;let f=qi(yl(l[1])).trim();f&&c.push({type:"doc",index:l.index,data:f})}for(;(l=o.exec(e))!==null;){if(r[l.index]||n[l.index]!==0)continue;let f=l[1],p=l.index+l[0].length-1,m=Ln(e,p+1);if(m===-1)continue;let d=e.slice(p+1,m),y=m+1,b="";for(;y<e.length&&/\s/.test(e[y]);)y++;if(e[y]===":"){let T=y;y++;let x=0,w=null,E=!1;for(;y<e.length;){let S=e[y],j=y>0?e[y-1]:"";if(w)S===w&&j!=="\\"&&(w=null);else if(S==='"'||S==="'"||S==="`")w=S,E=!0;else if(S==="{"){if(x===0&&E)break;x++,E=!0}else S==="("||S==="["?(x++,E=!0):S==="}"||S===")"||S==="]"?x--:/\s/.test(S)||(E=!0);y++}b=e.slice(T,y).trimEnd()}let $=`function ${f}(${d})${b}`;c.push({type:"function",index:l.index,data:{name:f,signature:$}})}for(;(l=a.exec(e))!==null;){if(n[l.index]!==0||r[l.index])continue;let f=l[1],p=l[2]||void 0,m=l.index+l[0].length,d=hl(e,m-1);if(d===-1)continue;let y=e.slice(m,d),b=bl(y);c.push({type:"class",index:l.index,data:{name:f,extendsName:p,members:b}})}c.sort((f,p)=>f.index-p.index);for(let f of c)f.type==="doc"?t.push({type:"doc",content:f.data}):f.type==="function"?t.push({type:"function",name:f.data.name,signature:f.data.signature}):f.type==="class"&&t.push({type:"class",name:f.data.name,extendsName:f.data.extendsName,members:f.data.members});let u=t.map(f=>f.type==="doc"?f.content:f.type==="function"?`\`\`\`tjs
432
+ `)}function Ji(e){let t=[],n=Wi(e),r=dl(e),s=/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm,i=/(?<=^[ \t]*)\/\*\*([\s\S]*?)\*\//gm,o=/\bfunction\s+(\w+)\s*\(/g,a=/\bclass\s+(\w+)(?:\s+extends\s+(\w+))?\s*\{/g,c=[],l;for(;(l=s.exec(e))!==null;){if(n[l.index]!==0)continue;let f=qi(l[1]).trim();f&&c.push({type:"doc",index:l.index,data:f})}for(;(l=i.exec(e))!==null;){if(n[l.index]!==0)continue;let f=qi(yl(l[1])).trim();f&&c.push({type:"doc",index:l.index,data:f})}for(;(l=o.exec(e))!==null;){if(r[l.index]||n[l.index]!==0)continue;let f=l[1],p=l.index+l[0].length-1,m=Ln(e,p+1);if(m===-1)continue;let d=e.slice(p+1,m),y=m+1,b="";for(;y<e.length&&/\s/.test(e[y]);)y++;if(e[y]===":"){let T=y;y++;let x=0,w=null,E=!1;for(;y<e.length;){let S=e[y],j=y>0?e[y-1]:"";if(w)S===w&&j!=="\\"&&(w=null);else if(S==='"'||S==="'"||S==="`")w=S,E=!0;else if(S==="{"){if(x===0&&E)break;x++,E=!0}else S==="("||S==="["?(x++,E=!0):S==="}"||S===")"||S==="]"?x--:/\s/.test(S)||(E=!0);y++}b=e.slice(T,y).trimEnd()}let $=`function ${f}(${d})${b}`;c.push({type:"function",index:l.index,data:{name:f,signature:$}})}for(;(l=a.exec(e))!==null;){if(n[l.index]!==0||r[l.index])continue;let f=l[1],p=l[2]||void 0,m=l.index+l[0].length,d=hl(e,m-1);if(d===-1)continue;let y=e.slice(m,d),b=bl(y);c.push({type:"class",index:l.index,data:{name:f,extendsName:p,members:b}})}c.sort((f,p)=>f.index-p.index);for(let f of c)f.type==="doc"?t.push({type:"doc",content:f.data}):f.type==="function"?t.push({type:"function",name:f.data.name,signature:f.data.signature}):f.type==="class"&&t.push({type:"class",name:f.data.name,extendsName:f.data.extendsName,members:f.data.members});let u=t.map(f=>f.type==="doc"?f.content:f.type==="function"?`\`\`\`tjs
433
433
  ${f.signature}
434
434
  \`\`\``:`\`\`\`tjs
435
435
  ${gl(f)}