tjs-lang 0.8.6 → 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.6",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:
@@ -407,7 +407,7 @@ ${s.join(`
407
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=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=/\/\*#[\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)}