tjs-lang 0.8.4 → 0.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +22 -0
- package/dist/index.js +66 -66
- package/dist/index.js.map +3 -3
- package/dist/src/lang/browser-from-ts.d.ts +38 -0
- package/dist/src/lang/browser.d.ts +13 -0
- package/dist/src/lang/ts-cdn-shim.d.ts +2 -0
- package/dist/tjs-browser-from-ts.js +58 -0
- package/dist/tjs-browser-from-ts.js.map +7 -0
- package/dist/tjs-browser.js +370 -0
- package/dist/tjs-browser.js.map +7 -0
- package/dist/tjs-from-ts.js +18 -18
- package/dist/tjs-from-ts.js.map +3 -3
- package/dist/tjs-lang.js +1 -1
- package/dist/tjs-lang.js.map +2 -2
- package/llms.txt +2 -0
- package/package.json +15 -1
- package/src/lang/browser-bundle.test.ts +69 -0
- package/src/lang/browser-from-ts.ts +81 -0
- package/src/lang/browser.ts +13 -0
- package/src/lang/emitters/from-ts.ts +48 -17
- package/src/lang/from-ts.test.ts +48 -0
- package/src/lang/ts-cdn-shim.ts +35 -0
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
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.
|
|
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(`
|
|
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
|
-
`)}},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
|
|
4
|
-
`);if(T.length===0)return x?`${u}${x}`:`${u}`;let
|
|
5
|
-
${u}${x}`:
|
|
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
|
+
`);if(T.length===0)return x?`${u}${x}`:`${u}`;let w=`${u}import { ${T.join(", ")} } from '${m}'`;return x?`${w}
|
|
5
|
+
${u}${x}`:w}),blocks:s}}function Mo(e){let t=e.trim();return t?t.split(",").map(n=>n.trim()).filter(n=>n.length>0):[]}function Ao(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function Co(e){let t=e.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),n=new Set,r=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,s;for(;(s=r.exec(t))!==null;)n.add(s[1]);let i=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,o=new Set;for(;(s=i.exec(t))!==null;)o.add(s[1]);for(let p of n){if(!o.has(p))continue;let m=new RegExp(`(?<!\\.)\\b${p}\\b`,"g"),d=new RegExp(`\\.${p}\\b`,"g"),y=t.match(m)?.length||0,b=t.match(d)?.length||0;y<=b&&o.delete(p)}let a=new Set,c=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=c.exec(t))!==null;)a.add(s[1]);let l=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=l.exec(t))!==null;)a.add(s[1]);let u=new Set(["if","else","for","while","do","switch","case","break","continue","return","function","let","const","var","new","this","true","false","null","undefined","typeof","instanceof","in","of","try","catch","finally","throw","async","await","class","extends","super","import","export","default","from","as","static","get","set","yield","console","Math","Array","Object","String","Number","Boolean","Date","JSON","Promise","Map","Set","WeakMap","WeakSet","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","ArrayBuffer","DataView","Error","TypeError","RangeError","length","push","pop","shift","unshift","slice","splice","map","filter","reduce","forEach","find","findIndex","indexOf","includes","globalThis","window","document","Infinity","NaN","isNaN","isFinite","parseInt","parseFloat","encodeURI","decodeURI","eval","wasmBuffer"]),f=[];for(let p of o)!a.has(p)&&!u.has(p)&&!Ao(p)&&f.push(p);return f.sort()}function Ro(e,t,n){let r=e.slice(0,t),s=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,i=r.match(s);if(!i){let o=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,a=r.match(o);return a?us(a[1],n):void 0}return us(i[1],n)}function us(e,t){let n=e.split(",").map(r=>r.trim());for(let r of n){let s=r.match(new RegExp(`^${t}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(s)return s[1];let i=r.match(new RegExp(`^${t}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(i)return i[1]}}function gt(e){let t=`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,n=new RegExp(t+"\\s+IsNot\\s+"+t,"g");e=e.replace(n,"IsNot($1, $2)");let r=new RegExp(t+"\\s+Is\\s+"+t,"g");return e=e.replace(r,"Is($1, $2)"),e}function bs(e){let t=/^[\s]*[([`]/,n=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,r=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,s=e.split(`
|
|
6
6
|
`),i=[],o=!1;for(let a=0;a<s.length;a++){let c=s[a],l=a>0?s[a-1]:"";if(o){i.push(c),c.includes("*/")&&(o=!1);continue}let u=c.indexOf("/*"),f=c.indexOf("*/");if(u!==-1&&(f===-1||f<u)){o=!0,i.push(c);continue}if(a>0&&t.test(c)){let p=l.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!n.test(p)&&!r.test(p)){let m=c.match(/^(\s*)/),d=m?m[1]:"",y=c.slice(d.length);i.push(d+";"+y);continue}}i.push(c)}return i.join(`
|
|
7
7
|
`)}function No(e){let t=[],n=0,r="normal",s=[];for(;n<e.length;){let o=e[n],a=e[n+1];switch(r){case"single-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==="'"&&(r="normal"),n++;continue;case"double-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==='"'&&(r="normal"),n++;continue;case"template-string":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="$"&&a==="{"){n+=2,s.push(1),r="normal";continue}o==="`"&&(r="normal"),n++;continue;case"line-comment":o===`
|
|
8
8
|
`&&(r="normal"),n++;continue;case"block-comment":if(o==="*"&&a==="/"){n+=2,r="normal";continue}n++;continue;case"regex":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="["){for(n++;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n+1<e.length?n+=2:n++;n<e.length&&n++;continue}if(o==="/"){for(n++;n<e.length&&/[gimsuy]/.test(e[n]);)n++;r="normal";continue}n++;continue;case"normal":if(s.length>0){if(o==="{")s[s.length-1]++;else if(o==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),n++,r="template-string";continue}}if(o==="'"){n++,r="single-string";continue}if(o==='"'){n++,r="double-string";continue}if(o==="`"){n++,r="template-string";continue}if(o==="/"&&a==="/"){n+=2,r="line-comment";continue}if(o==="/"&&a==="*"){n+=2,r="block-comment";continue}if(o==="/"){let c=n-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){n++,r="regex";continue}}if(o==="t"&&e.slice(n,n+6)==="typeof"&&(n===0||!/[\w$]/.test(e[n-1]))&&/\s/.test(e[n+6]??"")){let c=n+6;for(;c<e.length&&/\s/.test(e[c]);)c++;if(c<e.length&&/[a-zA-Z_$]/.test(e[c])){let l=c;for(;c<e.length&&/[\w$]/.test(e[c]);)c++;for(;c<e.length;)if(e[c]==="."&&/[a-zA-Z_$]/.test(e[c+1]??""))for(c++;c<e.length&&/[\w$]/.test(e[c]);)c++;else if(e[c]==="?"&&e[c+1]==="."&&/[a-zA-Z_$]/.test(e[c+2]??""))for(c+=2;c<e.length&&/[\w$]/.test(e[c]);)c++;else break;t.push({keywordStart:n,operandEnd:c,operand:e.slice(l,c)}),n=c;continue}}break}n++}if(t.length===0)return e;let i=e;for(let o=t.length-1;o>=0;o--){let a=t[o];i=i.slice(0,a.keywordStart)+`TypeOf(${a.operand})`+i.slice(a.operandEnd)}return i}function ht(e){e=No(e);let t=[],n=0,r="normal",s=[];for(;n<e.length;){let o=e[n],a=e[n+1];switch(r){case"single-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==="'"&&(r="normal"),n++;continue;case"double-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==='"'&&(r="normal"),n++;continue;case"template-string":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="$"&&a==="{"){n+=2,s.push(1),r="normal";continue}o==="`"&&(r="normal"),n++;continue;case"line-comment":o===`
|
|
9
|
-
`&&(r="normal"),n++;continue;case"block-comment":if(o==="*"&&a==="/"){n+=2,r="normal";continue}n++;continue;case"regex":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="["){for(n++;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n+1<e.length?n+=2:n++;n<e.length&&n++;continue}if(o==="/"){for(n++;n<e.length&&/[gimsuy]/.test(e[n]);)n++;r="normal";continue}n++;continue;case"normal":if(s.length>0){if(o==="{")s[s.length-1]++;else if(o==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),n++,r="template-string";continue}}if(o==="'"){n++,r="single-string";continue}if(o==='"'){n++,r="double-string";continue}if(o==="`"){n++,r="template-string";continue}if(o==="/"&&a==="/"){n+=2,r="line-comment";continue}if(o==="/"&&a==="*"){n+=2,r="block-comment";continue}if(o==="/"){let c=n-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){n++,r="regex";continue}}if(o==="="&&a==="="&&e[n+2]!=="="&&e[n-1]!=="!"){t.push({pos:n,op:"=="}),n+=2;continue}if(o==="!"&&a==="="&&e[n+2]!=="="){t.push({pos:n,op:"!="}),n+=2;continue}break}n++}if(t.length===0)return e;let i=e;for(let o=t.length-1;o>=0;o--){let{pos:a,op:c}=t[o],l=c==="=="?"Eq":"NotEq",u=Po(i,a),f=Io(i,a+2),p=i.slice(u,a).trim(),m=i.slice(a+2,f).trim();if(p&&m){let d=i.slice(0,u),y=i.slice(f),$=/[a-zA-Z0-9_$]$/.test(d)?" ":"";i=`${d}${$}${l}(${p}, ${m})${y}`}}return i}function Po(e,t){let n=t-1;for(;n>=0&&/\s/.test(e[n]);)n--;if(n<0)return 0;let r=0,s=!1,i="";for(;n>=0;){let o=e[n],a=n>0?e[n-1]:"";if(s){o===i&&a!=="\\"&&(s=!1),n--;continue}if((o==='"'||o==="'"||o==="`")&&a!=="\\"){s=!0,i=o,n--;continue}if(o===")"||o==="]"||o==="}"){r++,n--;continue}if(o==="("||o==="["){if(r>0){r--,n--;continue}return n+1}if(o==="{"){if(r>0){r--,n--;continue}return n+1}if(r>0){n--;continue}if(o===";")return n+1;if(/[a-z]/.test(o)){let c=n+1,l=n;for(;l>0&&/[a-z]/i.test(e[l-1]);)l--;let u=e.slice(l,c),f=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(f)){if(["return","throw","case","typeof","void","delete","await","yield"].includes(u))return c;if(u==="new")return l}}if(o===">"&&a==="="||o==="="&&a!=="="&&a!=="!"&&a!=="<"&&a!==">"||o==="&"&&a==="&"||o==="|"&&a==="|"||o==="?"||o===":"||o===",")return n+1;n--}return 0}function Io(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return e.length;let r=0,s=!1,i="";for(;n<e.length;){let o=e[n],a=n+1<e.length?e[n+1]:"";if(s){o===i&&e[n-1]!=="\\"&&(s=!1),n++;continue}if((o==='"'||o==="'"||o==="`")&&e[n-1]!=="\\"){s=!0,i=o,n++;continue}if(o==="("||o==="["||o==="{"){r++,n++;continue}if(o===")"||o==="]"||o==="}"){if(r>0){r--,n++;continue}return n}if(r>0){n++;continue}if(o===";"||o==="&"&&a==="&"||o==="|"&&a==="|"||o==="?"||o===":"||o===","||(o==="="||o==="!")&&a==="="&&e[n+2]!=="=")return n;n++}return e.length}function xs(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(r){let s=r[1],i=n+r[0].length,o=s,a=!1,c=e.slice(i).match(/^(['"`])([^]*?)\1\s*/);if(c){let p=i+c[0].length,m=e[p],d=m===void 0||p>=e.length||m!=="="&&m!=="{";if(m==="="||m==="{")o=c[2],a=!0,i=p;else if(d){let y=c[0].trim(),b=c[0].slice(y.length);t+=`const ${s} = Type('${s}', ${y})${b}`,n=p;continue}}let l,u=i,f=e.slice(i).match(/^=\s*/);if(f){i+=f[0].length;let p=e.slice(i).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(p){l=p[0],i+=p[0].length,u=i;let m=e.slice(i).match(/^\s*/);m&&(i+=m[0].length)}}if(e[i]==="{"){let p=i+1,m=1,d=p;for(;d<e.length&&m>0;){let E=e[d];E==="{"?m++:E==="}"&&m--,d++}if(m!==0){t+=e[n],n++;continue}let y=e.slice(p,d-1).trim(),b=d,$=y.match(/description\s*:\s*(['"`])([^]*?)\1/);$&&!a&&(o=$[2]);let T,x=y.match(/example\s*:\s*/);if(x){let E=x.index+x[0].length,
|
|
9
|
+
`&&(r="normal"),n++;continue;case"block-comment":if(o==="*"&&a==="/"){n+=2,r="normal";continue}n++;continue;case"regex":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="["){for(n++;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n+1<e.length?n+=2:n++;n<e.length&&n++;continue}if(o==="/"){for(n++;n<e.length&&/[gimsuy]/.test(e[n]);)n++;r="normal";continue}n++;continue;case"normal":if(s.length>0){if(o==="{")s[s.length-1]++;else if(o==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),n++,r="template-string";continue}}if(o==="'"){n++,r="single-string";continue}if(o==='"'){n++,r="double-string";continue}if(o==="`"){n++,r="template-string";continue}if(o==="/"&&a==="/"){n+=2,r="line-comment";continue}if(o==="/"&&a==="*"){n+=2,r="block-comment";continue}if(o==="/"){let c=n-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){n++,r="regex";continue}}if(o==="="&&a==="="&&e[n+2]!=="="&&e[n-1]!=="!"){t.push({pos:n,op:"=="}),n+=2;continue}if(o==="!"&&a==="="&&e[n+2]!=="="){t.push({pos:n,op:"!="}),n+=2;continue}break}n++}if(t.length===0)return e;let i=e;for(let o=t.length-1;o>=0;o--){let{pos:a,op:c}=t[o],l=c==="=="?"Eq":"NotEq",u=Po(i,a),f=Io(i,a+2),p=i.slice(u,a).trim(),m=i.slice(a+2,f).trim();if(p&&m){let d=i.slice(0,u),y=i.slice(f),$=/[a-zA-Z0-9_$]$/.test(d)?" ":"";i=`${d}${$}${l}(${p}, ${m})${y}`}}return i}function Po(e,t){let n=t-1;for(;n>=0&&/\s/.test(e[n]);)n--;if(n<0)return 0;let r=0,s=!1,i="";for(;n>=0;){let o=e[n],a=n>0?e[n-1]:"";if(s){o===i&&a!=="\\"&&(s=!1),n--;continue}if((o==='"'||o==="'"||o==="`")&&a!=="\\"){s=!0,i=o,n--;continue}if(o===")"||o==="]"||o==="}"){r++,n--;continue}if(o==="("||o==="["){if(r>0){r--,n--;continue}return n+1}if(o==="{"){if(r>0){r--,n--;continue}return n+1}if(r>0){n--;continue}if(o===";")return n+1;if(/[a-z]/.test(o)){let c=n+1,l=n;for(;l>0&&/[a-z]/i.test(e[l-1]);)l--;let u=e.slice(l,c),f=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(f)){if(["return","throw","case","typeof","void","delete","await","yield"].includes(u))return c;if(u==="new")return l}}if(o===">"&&a==="="||o==="="&&a!=="="&&a!=="!"&&a!=="<"&&a!==">"||o==="&"&&a==="&"||o==="|"&&a==="|"||o==="?"||o===":"||o===",")return n+1;n--}return 0}function Io(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return e.length;let r=0,s=!1,i="";for(;n<e.length;){let o=e[n],a=n+1<e.length?e[n+1]:"";if(s){o===i&&e[n-1]!=="\\"&&(s=!1),n++;continue}if((o==='"'||o==="'"||o==="`")&&e[n-1]!=="\\"){s=!0,i=o,n++;continue}if(o==="("||o==="["||o==="{"){r++,n++;continue}if(o===")"||o==="]"||o==="}"){if(r>0){r--,n++;continue}return n}if(r>0){n++;continue}if(o===";"||o==="&"&&a==="&"||o==="|"&&a==="|"||o==="?"||o===":"||o===","||(o==="="||o==="!")&&a==="="&&e[n+2]!=="=")return n;n++}return e.length}function xs(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(r){let s=r[1],i=n+r[0].length,o=s,a=!1,c=e.slice(i).match(/^(['"`])([^]*?)\1\s*/);if(c){let p=i+c[0].length,m=e[p],d=m===void 0||p>=e.length||m!=="="&&m!=="{";if(m==="="||m==="{")o=c[2],a=!0,i=p;else if(d){let y=c[0].trim(),b=c[0].slice(y.length);t+=`const ${s} = Type('${s}', ${y})${b}`,n=p;continue}}let l,u=i,f=e.slice(i).match(/^=\s*/);if(f){i+=f[0].length;let p=e.slice(i).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(p){l=p[0],i+=p[0].length,u=i;let m=e.slice(i).match(/^\s*/);m&&(i+=m[0].length)}}if(e[i]==="{"){let p=i+1,m=1,d=p;for(;d<e.length&&m>0;){let E=e[d];E==="{"?m++:E==="}"&&m--,d++}if(m!==0){t+=e[n],n++;continue}let y=e.slice(p,d-1).trim(),b=d,$=y.match(/description\s*:\s*(['"`])([^]*?)\1/);$&&!a&&(o=$[2]);let T,x=y.match(/example\s*:\s*/);if(x){let E=x.index+x[0].length,S=Os(y,E);S&&(T=S.value.trim())}let w=y.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(w&&T){let E=w[1].trim(),S=w[2].trim(),j=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', (${E}) => { if (!globalThis.__tjs?.validate(${E}, globalThis.__tjs?.infer(${T}))) return false; ${S} }, ${T}${j})`}else if(w){let E=w[1].trim(),S=w[2].trim(),j=l?`, undefined, ${l}`:"";t+=`const ${s} = Type('${o}', (${E}) => { ${S} }${j})`}else if(T){let E=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', undefined, ${T}${E})`}else l?t+=`const ${s} = Type('${o}', ${l})`:t+=`const ${s} = Type('${o}')`;n=b;continue}else if(l){t+=`const ${s} = Type('${o}', ${l})`,n=u;continue}else if(!c){let p=e.slice(i).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(p){let m=p[0];t+=`const ${s} = Type('${s}', ${m})`,n=i+p[0].length;continue}}}t+=e[n],n++}return t}function ws(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bFunctionPredicate\s+([A-Z_][a-zA-Z0-9_]*)\s*(?:<([^>]+)>)?\s*/);if(r){let s=r[1],i=r[2],o=n+r[0].length;if(e[o]==="{"){let a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;if(a===0){let l=e.slice(o+1,c-1).trim(),u=vo(l,/params\s*:\s*\{/),f=l.match(/returns\s*:\s*(.+?)(?:\n|$)/),p=l.match(/returnContract\s*:\s*['"](\w+)['"]/),m=l.match(/description\s*:\s*(['"])([^]*?)\1/),d=[];u&&d.push(`params: ${u[1]}`),f&&d.push(`returns: ${f[1].trim()}`),p&&d.push(`returnContract: '${p[1]}'`);let y=m?m[2]:s;if(i){let b=i.split(",").map(T=>{let x=T.trim().split("=").map(w=>w.trim());if(x.length===2){let w=x[1]==="any"||x[1]==="undefined"?"null":x[1];return`['${x[0]}', ${w}]`}return`'${x[0]}'`}),$=i.split(",").map(T=>T.trim().split("=")[0].trim());t+=`const ${s} = FunctionPredicate('${y}', [${b.join(", ")}], (${$.join(", ")}) => ({ ${d.join(", ")} }))`}else t+=`const ${s} = FunctionPredicate('${y}', { ${d.join(", ")} })`;n=c;continue}}if(e[o]==="("){let a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="("?a++:e[c]===")"&&a--,c++;if(a===0){let l=e.slice(o+1,c-1).trim(),u=l.indexOf(",");if(u!==-1){let f=l.slice(0,u).trim(),p=l.slice(u+1).trim();t+=`const ${s} = FunctionPredicate(${p}, ${f})`}else t+=`const ${s} = FunctionPredicate('${s}', ${l})`;n=c;continue}}}t+=e[n],n++}return t}function Ss(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(r){let s=r[1],i=r[2],a=n+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let T=e[l];T==="{"?c++:T==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),f=l,p=i.split(",").map(T=>{let x=T.trim().split("=").map(w=>w.trim());if(x.length===2){let w=x[1]==="any"||x[1]==="undefined"?"null":x[1];return`['${x[0]}', ${w}]`}return`'${x[0]}'`}),m=u,d=m.search(/\bdeclaration\s*\{/);if(d!==-1){let T=m.indexOf("{",d),x=1,w=T+1;for(;w<m.length&&x>0;)m[w]==="{"?x++:m[w]==="}"&&x--,w++;m=m.slice(0,d)+m.slice(w)}let y=m.match(/description\s*:\s*(['"`])([^]*?)\1/),b=m.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),$=y?y[2]:s;if(b){let T=b[1].trim().split(",").map(j=>j.trim()),x=b[2].trim(),w=T[0]||"x",E=T.slice(1),S=E.map(j=>`check${j}`);E.forEach((j,A)=>{x=x.replace(new RegExp(`\\b${j}\\s*\\(`,"g"),`${S[A]}(`)}),t+=`const ${s} = Generic([${p.join(", ")}], (${w}, ${S.join(", ")}) => { ${x} }, '${$}')`}else t+=`const ${s} = Generic([${p.join(", ")}], () => true, '${$}')`;n=f;continue}t+=e[n],n++}return t}function Ts(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(r){let s=r[1],i=r[3],o=n+r[0].length;if(e[o]==="{"){let a=o+1,c=1,l=a;for(;l<e.length&&c>0;){let m=e[l];m==="{"?c++:m==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),f=l,p=fs(u);t+=`const ${s} = Union('${i}', [${p.join(", ")}])`,n=f;continue}else{let a=e.indexOf(`
|
|
10
10
|
`,o);a===-1&&(a=e.length);let c=e.slice(o,a).trim();if(c){let l=fs(c);t+=`const ${s} = Union('${i}', [${l.join(", ")}])`,n=a;continue}}}t+=e[n],n++}return t}function fs(e){let t=[],n=e.split("|").map(r=>r.trim());for(let r of n)r&&t.push(r);return t}function Es(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(r){let s=r[1],i=r[3],a=n+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let d=e[l];d==="{"?c++:d==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),f=l,m=Do(u).map(([d,y])=>`${d}: ${y}`).join(", ");t+=`const ${s} = Enum('${i}', { ${m} })`,n=f;continue}t+=e[n],n++}return t}function Do(e){let t=[],n=0,r=e.split(/[\n,]/).map(s=>s.trim()).filter(s=>s&&!s.startsWith("//"));for(let s of r){let i=s.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*(?:=\s*(.+))?$/);if(i){let o=i[1],a=i[2]?.trim();if(a!==void 0){t.push([o,a]);let c=Number(a);isNaN(c)||(n=c+1)}else t.push([o,String(n)]),n++}}return t}function $s(e){let t=new Map,n="",r=0;for(;r<e.length;){let s=e.slice(r),i=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/);if(!i){if(r===0||e[r-1]===`
|
|
11
|
-
`||e[r-1]===";"||e[r-1]==="}"){let x=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}n+=e[r],r++;continue}let o=i[1],a=i[2],c=r+i[0].length-1,l=yt(e,c),u=e.slice(c+1,l-1).trim(),f=[],p=0,m=e.slice(c+1,l-1);for(;p<m.length;){let x=m.slice(p).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!x){p++;continue}let
|
|
11
|
+
`||e[r-1]===";"||e[r-1]==="}"){let x=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}n+=e[r],r++;continue}let o=i[1],a=i[2],c=r+i[0].length-1,l=yt(e,c),u=e.slice(c+1,l-1).trim(),f=[],p=0,m=e.slice(c+1,l-1);for(;p<m.length;){let x=m.slice(p).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!x){p++;continue}let w=x[1],E=!!x[2],S=x[3],j=p+x[0].length-1,A=1,k=j+1;for(;k<m.length&&A>0;)m[k]==="("&&A++,m[k]===")"&&A--,k++;let v=m.slice(j+1,k-1),C=k;for(;C<m.length&&/\s/.test(m[C]);)C++;if(m[C]==="="&&m[C+1]===">"){let Y=ve(e,c+1+p);throw new H(`Arrow functions are not allowed in extend blocks (method '${S}' in extend ${a}). Use regular function syntax instead, as extension methods need 'this' binding.`,Y)}if(m[C]!=="{"){p++;continue}let P=yt(m,C),M=m.slice(p,P).trim(),D=v.split(",").map(Y=>Y.trim()).filter(Y=>Y.length>0).map(Y=>{let ce=Y.match(/^(\w+)\s*:\s*(.+)$/);return ce?`${ce[1]} = ${ce[2]}`:Y}).join(", "),B=E?"async ":"",F=m.slice(C+1,P-1);f.push({name:S,isAsync:E,fullText:`${S}: ${B}function(${D}) {${F}}`}),p=P}let d=!t.has(a);d&&t.set(a,new Set);let y=t.get(a);for(let T of f)y.add(T.name);let b=f.map(T=>` ${T.fullText}`).join(`,
|
|
12
12
|
`),$;d?$=`${o}const __ext_${a} = {
|
|
13
13
|
${b}
|
|
14
14
|
${o}}
|
|
@@ -18,43 +18,43 @@ ${o}})
|
|
|
18
18
|
`;for(let T of f)$+=`${o}if (__tjs?.registerExtension) { __tjs.registerExtension('${a}', '${T.name}', __ext_${a}.${T.name}) }
|
|
19
19
|
`;n+=$,r=l}return r<=e.length&&n.length<e.length,{source:n,extensions:t}}function bt(e,t){if(t.size===0)return e;let n=new Map;for(let[s,i]of t)for(let o of i)n.has(o)||n.set(o,[]),n.get(o).push(s);let r=e;for(let[s,i]of n){if(!i.includes("String"))continue;let o=new RegExp(`('(?:[^'\\\\]|\\\\.)*')\\.(${s})\\((\\))?`,"g");r=r.replace(o,(l,u,f,p)=>p?`__ext_String.${f}.call(${u})`:`__ext_String.${f}.call(${u}, `);let a=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${s})\\((\\))?`,"g");r=r.replace(a,(l,u,f,p)=>p?`__ext_String.${f}.call(${u})`:`__ext_String.${f}.call(${u}, `);let c=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+s+"\\((\\))?","g");r=r.replace(c,(l,u,f)=>f?`__ext_String.${s}.call(${u})`:`__ext_String.${s}.call(${u}, `)}for(let[s,i]of n){if(!i.includes("Array"))continue;let o=`].${s}(`,a=0,c;for(;(c=r.indexOf(o,a))!==-1;){let l=1,u=c-1,f=!1;for(;u>=0&&l>0;){let p=r[u];f?p===f&&(u===0||r[u-1]!=="\\")&&(f=!1):(p==="]"&&l++,p==="["&&l--,(p==="'"||p==='"'||p==="`")&&(f=p)),u--}if(l===0){let p=r.slice(u+1,c+1),m=r.slice(0,u+1),d=r.slice(c+o.length);d[0]===")"?r=`${m}__ext_Array.${s}.call(${p})${d.slice(1)}`:r=`${m}__ext_Array.${s}.call(${p}, ${d}`}a=c+1}}for(let[s,i]of n){if(!i.includes("Number"))continue;let o=new RegExp(`(\\d+(?:\\.\\d+)?)\\.(${s})\\((\\))?`,"g");r=r.replace(o,(a,c,l,u)=>u?`__ext_Number.${l}.call(${c})`:`__ext_Number.${l}.call(${c}, `)}return r}function ve(e,t){let n=1,r=0;for(let s=0;s<t&&s<e.length;s++)e[s]===`
|
|
20
20
|
`?(n++,r=0):r++;return{line:n,column:r}}function _s(e,t){let n=t.trim();return/^['"`]/.test(n)?`typeof ${e} === 'string'`:n==="true"||n==="false"?`typeof ${e} === 'boolean'`:n==="null"?`${e} === null`:n==="undefined"?`${e} === undefined`:n.startsWith("[")?`Array.isArray(${e})`:n.startsWith("{")?`(typeof ${e} === 'object' && ${e} !== null && !Array.isArray(${e}))`:/^\+\d+/.test(n)?`(typeof ${e} === 'number' && Number.isInteger(${e}) && ${e} >= 0)`:/^-?\d+\.\d+/.test(n)?`typeof ${e} === 'number'`:/^-?\d+$/.test(n)?`(typeof ${e} === 'number' && Number.isInteger(${e}))`:"true"}function Gt(e){let t=e.trim();return/^['"`]/.test(t)?"string":t==="true"||t==="false"?"boolean":t==="null"?"null":t==="undefined"?"undefined":t.startsWith("[")?"array":t.startsWith("{")?"object":/^\+\d+/.test(t)?"non-negative-integer":/^-?\d+\.\d+/.test(t)?"number":/^-?\d+$/.test(t)?"integer":"any"}function Qn(e,t){let n=[],r=0,s="",i=!1;for(let a=0;a<e.length;a++){let c=e[a];if(!i&&(c==="'"||c==='"'||c==="`")){i=c,s+=c;continue}if(i){if(s+=c,c==="\\"){a++,a<e.length&&(s+=e[a]);continue}c===i&&(i=!1);continue}if(c==="("||c==="["||c==="{"){r++,s+=c;continue}if(c===")"||c==="]"||c==="}"){r--,s+=c;continue}if(c===","&&r===0){let l=ps(s.trim(),t);l&&n.push(l),s="";continue}s+=c}let o=s.trim();if(o){let a=ps(o,t);a&&n.push(a)}return n}function ps(e,t){let n=e.replace(/^\/\*\s*unsafe\s*\*\/\s*/,"");if(n.startsWith("..."))return null;let r=n.indexOf("=");if(r===-1)return{name:n.trim(),defaultValue:"",required:!0};let s=n.slice(0,r).trim(),i=n.slice(r+1).trim();return{name:s,defaultValue:i,required:t.has(s)}}function yt(e,t){let n=1,r=t+1,s=!1,i=!1,o=!1;for(;r<e.length&&n>0;){let a=e[r],c=r+1<e.length?e[r+1]:"";if(i){a===`
|
|
21
|
-
`&&(i=!1),r++;continue}if(o){if(a==="*"&&c==="/"){o=!1,r+=2;continue}r++;continue}if(s){if(a==="\\"){r+=2;continue}a===s&&(s=!1),r++;continue}if(a==="/"&&c==="/"){i=!0,r+=2;continue}if(a==="/"&&c==="*"){o=!0,r+=2;continue}if(a==="'"||a==='"'||a==="`"){s=a,r++;continue}a==="{"&&n++,a==="}"&&n--,r++}return r}function ks(e,t){let n=new Set,r=/(?:^|(?<=[\n;{}]))\s*(export\s+)?(async\s+)?function\s+(\w+)\s*\(/gm,s=new Map,i,o=[];for(;(i=r.exec(e))!==null;){let f=!!i[1],p=!!i[2],m=i[3],d=i.index,y=d,$=i[0].indexOf("function");$>=0&&(y=d+$),o.push({name:m,fullMatchStart:d,funcKeywordStart:y,exported:f,isAsync:p})}for(let f of o)s.has(f.name)||s.set(f.name,[]);let a=new Map;for(let f of o)a.set(f.name,(a.get(f.name)||0)+1);let c=new Set;for(let[f,p]of a)p>1&&c.add(f);if(c.size===0)return{source:e,polymorphicNames:n};for(let f of o){if(!c.has(f.name))continue;let p=e.indexOf("(",f.funcKeywordStart);if(p===-1)continue;let m=1,d=p+1;for(;d<e.length&&m>0;)e[d]==="("&&m++,e[d]===")"&&m--,d++;let y=d-1,b=e.slice(p+1,y),$=d;for(;$<e.length&&e[$]!=="{";)$++;if($>=e.length)continue;let T=yt(e,$),x=f.fullMatchStart;for(;x>0&&e[x-1]===" ";)x--;let
|
|
21
|
+
`&&(i=!1),r++;continue}if(o){if(a==="*"&&c==="/"){o=!1,r+=2;continue}r++;continue}if(s){if(a==="\\"){r+=2;continue}a===s&&(s=!1),r++;continue}if(a==="/"&&c==="/"){i=!0,r+=2;continue}if(a==="/"&&c==="*"){o=!0,r+=2;continue}if(a==="'"||a==='"'||a==="`"){s=a,r++;continue}a==="{"&&n++,a==="}"&&n--,r++}return r}function ks(e,t){let n=new Set,r=/(?:^|(?<=[\n;{}]))\s*(export\s+)?(async\s+)?function\s+(\w+)\s*\(/gm,s=new Map,i,o=[];for(;(i=r.exec(e))!==null;){let f=!!i[1],p=!!i[2],m=i[3],d=i.index,y=d,$=i[0].indexOf("function");$>=0&&(y=d+$),o.push({name:m,fullMatchStart:d,funcKeywordStart:y,exported:f,isAsync:p})}for(let f of o)s.has(f.name)||s.set(f.name,[]);let a=new Map;for(let f of o)a.set(f.name,(a.get(f.name)||0)+1);let c=new Set;for(let[f,p]of a)p>1&&c.add(f);if(c.size===0)return{source:e,polymorphicNames:n};for(let f of o){if(!c.has(f.name))continue;let p=e.indexOf("(",f.funcKeywordStart);if(p===-1)continue;let m=1,d=p+1;for(;d<e.length&&m>0;)e[d]==="("&&m++,e[d]===")"&&m--,d++;let y=d-1,b=e.slice(p+1,y),$=d;for(;$<e.length&&e[$]!=="{";)$++;if($>=e.length)continue;let T=yt(e,$),x=f.fullMatchStart;for(;x>0&&e[x-1]===" ";)x--;let w=s.get(f.name),E=Qn(b,t);if(b.includes("...")){let j=ve(e,f.funcKeywordStart);throw new H(`Rest parameters are not supported in polymorphic function '${f.name}'. Use separate function names instead.`,j)}w.push({index:w.length+1,start:x,end:T,text:e.slice(x,T),exported:f.exported,isAsync:f.isAsync,params:E})}for(let[f,p]of s){if(p.length<2)continue;let m=p.filter(d=>d.isAsync).length;if(m>0&&m<p.length){let d=ve(e,p[0].start);throw new H(`Polymorphic function '${f}': all variants must be either sync or async, not mixed.`,d)}for(let d=0;d<p.length;d++)for(let y=d+1;y<p.length;y++){let b=p[d],$=p[y];if(b.params.length!==$.params.length)continue;let T=!0;for(let x=0;x<b.params.length;x++){let w=b.params[x].defaultValue?Gt(b.params[x].defaultValue):"any",E=$.params[x].defaultValue?Gt($.params[x].defaultValue):"any";if(w!==E){T=!1;break}}if(T){let x=ve(e,$.start);throw new H(`Polymorphic function '${f}': variants ${d+1} and ${y+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,x)}}}let l=[];for(let[f,p]of s)if(!(p.length<2))for(let m of p)l.push({name:f,variant:m});l.sort((f,p)=>p.variant.start-f.variant.start);let u=e;for(let{name:f,variant:p}of l){let m=p.isAsync?"async ":"",d=p.text.replace(new RegExp(`(?:export\\s+)?${m?m.replace(/\s+$/,"\\s+"):""}function\\s+${f}\\s*\\(`),`${m}function ${f}$$${p.index}(`);u=u.slice(0,p.start)+d+u.slice(p.end)}for(let[f,p]of s){if(p.length<2)continue;n.add(f);let m=p[0].isAsync,d=p.some(w=>w.exported),y=m?"async ":"",b=d?"export ":"",$=[...p].sort((w,E)=>{if(w.params.length!==E.params.length)return 0;let S=0,j=0;for(let A of w.params){let k=A.defaultValue?Gt(A.defaultValue):"any";k==="non-negative-integer"?S+=3:k==="integer"?S+=2:k!=="any"&&(S+=1)}for(let A of E.params){let k=A.defaultValue?Gt(A.defaultValue):"any";k==="non-negative-integer"?j+=3:k==="integer"?j+=2:k!=="any"&&(j+=1)}return j-S}),T=[];for(let w of $){let E=[`__args.length === ${w.params.length}`],S=[];for(let j=0;j<w.params.length;j++){let A=w.params[j];if(S.push(`__args[${j}]`),A.defaultValue){let k=_s(`__args[${j}]`,A.defaultValue);k!=="true"&&E.push(k)}}T.push(` if (${E.join(" && ")}) return ${f}$${w.index}(${S.join(", ")})`)}let x=`
|
|
22
22
|
${b}${y}function ${f}(...__args) {
|
|
23
23
|
${T.join(`
|
|
24
24
|
`)}
|
|
25
25
|
return __tjs.typeError('${f}', 'no matching overload', __args)
|
|
26
26
|
}
|
|
27
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(`
|
|
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
|
|
29
|
-
${E.message||E}`)}let
|
|
30
|
-
`.repeat(
|
|
31
|
-
`&&j--,$=$.slice(0,j)+$.slice(
|
|
32
|
-
function ${c}$ctor$${
|
|
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
|
+
${E.message||E}`)}let w=(e.slice(a,$).match(/\n/g)||[]).length;s+=`
|
|
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]===`
|
|
31
|
+
`&&j--,$=$.slice(0,j)+$.slice(S.fullEnd)}let T="";for(let E=1;E<b.length;E++){let S=b[E],j=Qn(S.paramStr,t);if(S.paramStr.includes("...")){let k=ve(e,u+S.fullStart);throw new H(`Rest parameters are not supported in polymorphic constructors for '${c}'.`,k)}T+=`
|
|
32
|
+
function ${c}$ctor$${S.index}(${S.paramStr}) {`,T+=`
|
|
33
33
|
const __obj = Object.create(${c}.prototype)`,T+=`
|
|
34
|
-
;(function() {${
|
|
34
|
+
;(function() {${S.bodyText}}).call(__obj)`,T+=`
|
|
35
35
|
return __obj`,T+=`
|
|
36
36
|
}
|
|
37
|
-
`}let x=[];for(let E=0;E<b.length;E++){let
|
|
37
|
+
`}let x=[];for(let E=0;E<b.length;E++){let S=b[E],j=Qn(S.paramStr,t),A=[`a.length === ${j.length}`];for(let k=0;k<j.length;k++){let v=j[k];if(v.defaultValue){let C=_s(`a[${k}]`,v.defaultValue);C!=="true"&&A.push(C)}}if(E===0)x.push(` if (${A.join(" && ")}) return Reflect.construct(t, a)`);else{let k=j.map((v,C)=>`a[${C}]`).join(", ");x.push(` if (${A.join(" && ")}) return ${c}$ctor$${S.index}(${k})`)}}T+=`
|
|
38
38
|
function ${c}$dispatch(t, a) {
|
|
39
39
|
`,T+=x.join(`
|
|
40
40
|
`)+`
|
|
41
41
|
`,T+=` return __tjs.typeError('${c}', 'no matching constructor', a)
|
|
42
42
|
`,T+=`}
|
|
43
|
-
`,o=o.slice(0,u)+$+o.slice(f);let
|
|
43
|
+
`,o=o.slice(0,u)+$+o.slice(f);let w=u+$.length;o=o.slice(0,w)+T+o.slice(w)}return{source:o,polyCtorClasses:n}}function As(e,t=new Set){let n=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,r="",s=0,i;for(;(i=n.exec(e))!==null;){let o=i[1],a=i[2]||"",c=i.index,l=c+i[0].length-1,u=1,f=l+1;for(;f<e.length&&u>0;){let p=e[f];p==="{"?u++:p==="}"&&u--,f++}if(u===0){let p=f,m=e.slice(l,p);r+=e.slice(s,c),r+=`let ${o} = class ${o}${a} ${m}; `,t.has(o)?r+=`${o} = new Proxy(${o}, { apply(t, _, a) { return ${o}$dispatch(t, a) }, construct(t, a) { return ${o}$dispatch(t, a) } });`:r+=`${o} = new Proxy(${o}, { apply(t, _, a) { return Reflect.construct(t, a) } });`,s=p}}return r+=e.slice(s),r}function Cs(e){let t=[{pattern:/\bnew\s+Date\b/,message:"new Date() is not allowed in TjsDate mode. Use Timestamp.now() or Timestamp.from()"},{pattern:/\bDate\.now\b/,message:"Date.now() is not allowed in TjsDate mode. Use Timestamp.now()"},{pattern:/\bDate\.parse\b/,message:"Date.parse() is not allowed in TjsDate mode. Use Timestamp.parse()"},{pattern:/\bDate\.UTC\b/,message:"Date.UTC() is not allowed in TjsDate mode. Use Timestamp.from()"}];for(let{pattern:n,message:r}of t)if(n.test(e))throw new Error(r);return e}function Rs(e){let t=new Set,n=/\bconst!\s+(\w+)\b/g,r;for(;(r=n.exec(e))!==null;)t.add(r[1]);if(t.size===0)return e;e=e.replace(/\bconst!\s+/g,"const ");let s=e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"");for(let i of t){if(new RegExp(`\\b${i}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])\\s*(?:=(?!=)|\\+\\+|--|\\+=|-=|\\*=|\\/=|%=|&&=|\\|\\|=|\\?\\?=|<<=|>>=|>>>=|\\^=|&=|\\|=)`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${i}'. const! bindings are read-only at compile time.`);if(new RegExp(`(?:\\+\\+|--)\\s*${i}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${i}'. const! bindings are read-only at compile time.`);if(new RegExp(`\\bdelete\\s+${i}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${i}'. const! bindings are read-only at compile time.`);let l="push|pop|splice|shift|unshift|sort|reverse|fill|copyWithin|set";if(new RegExp(`\\b${i}\\s*\\.\\s*(?:${l})\\s*\\(`,"g").test(s))throw new Error(`Cannot call mutating method on immutable binding '${i}'. const! bindings are read-only at compile time.`)}return e}function Ns(e){if(/(?<![a-zA-Z_$])\bvar\s+/.test(e))throw new Error("var is not allowed in TjsNoVar mode. Use const or let instead.");return e}function Ps(e){if(/(?<![A-Za-z_$])\beval\s*\(/.test(e))throw new Error("eval() is not allowed in TjsNoeval mode. Use Eval() from TJS runtime for safe evaluation.");if(/\bnew\s+Function\s*\(/.test(e))throw new Error("new Function() is not allowed in TjsNoeval mode. Use SafeFunction() from TJS runtime.");return e}function Is(e){if(!e.includes("!."))return e;let t="",n=0,r="normal",s=0;for(;n<e.length;){let i=e[n],o=e[n+1];if(r==="normal"){if(i==="/"&&o==="/"){r="line-comment",t+=i,n++;continue}if(i==="/"&&o==="*"){r="block-comment",t+=i,n++;continue}if(i==="'"){r="string-single",t+=i,n++;continue}if(i==='"'){r="string-double",t+=i,n++;continue}if(i==="`"){r="string-template",s++,t+=i,n++;continue}if(i==="!"&&o==="."&&n+2<e.length&&/[a-zA-Z_$]/.test(e[n+2])){let a=t.length,c=Oo(t);if(c<a){let l=t.slice(c);t=t.slice(0,c);let u=n+2;for(;u<e.length&&/[\w$]/.test(e[u]);)u++;let f=e.slice(n+2,u);t+=`__tjs.bang(${l},'${f}')`,n=u;continue}}t+=i,n++}else r==="line-comment"?(t+=i,i===`
|
|
44
44
|
`&&(r="normal"),n++):r==="block-comment"?(t+=i,i==="*"&&o==="/"?(t+=o,r="normal",n+=2):n++):r==="string-single"?(t+=i,i==="\\"?(t+=o||"",n+=2):(i==="'"&&(r="normal"),n++)):r==="string-double"?(t+=i,i==="\\"?(t+=o||"",n+=2):(i==='"'&&(r="normal"),n++)):r==="string-template"?(t+=i,i==="\\"?(t+=o||"",n+=2):i==="`"?(s--,r=s>0?"string-template":"normal",n++):i==="$"&&o==="{"?(t+=o,n+=2,r="normal"):n++):(t+=i,n++)}return t}function Oo(e){let t=e.length-1;for(;t>=0&&/\s/.test(e[t]);)t--;if(t<0)return e.length;for(;t>=0;){let n=e[t];if(/[\w$]/.test(n)){for(;t>=0&&/[\w$]/.test(e[t]);)t--;if(t>=0&&e[t]==="."){t>=1&&e[t-1]==="?"?t-=2:t--;continue}return t+1}else if(n===")"){if(t=ms(e,t,"(",")"),t<0)return 0;if(t--,t>=0&&/[\w$]/.test(e[t]))continue;if(t>=0&&e[t]==="."){t>=1&&e[t-1]==="?"?t-=2:t--;continue}return t+1}else if(n==="]"){if(t=ms(e,t,"[","]"),t<0)return 0;if(t--,t>=0&&/[\w$]/.test(e[t]))continue;if(t>=0&&e[t]==="."){t>=1&&e[t-1]==="?"?t-=2:t--;continue}return t+1}else return t+1}return 0}function ms(e,t,n,r){let s=1;for(t--;t>=0&&s>0;)e[t]===r?s++:e[t]===n&&s--,s>0&&t--;return t}function Ds(e){let t=new Map;if(!e.includes("let "))return{source:e,annotations:t};let n=[],r=0,s="normal",i=[];for(;r<e.length;){let a=e[r],c=e[r+1];switch(s){case"single-string":if(a==="\\"&&r+1<e.length){r+=2;continue}a==="'"&&(s="normal"),r++;continue;case"double-string":if(a==="\\"&&r+1<e.length){r+=2;continue}a==='"'&&(s="normal"),r++;continue;case"template-string":if(a==="\\"&&r+1<e.length){r+=2;continue}if(a==="$"&&c==="{"){r+=2,i.push(1),s="normal";continue}a==="`"&&(s="normal"),r++;continue;case"line-comment":a===`
|
|
45
45
|
`&&(s="normal"),r++;continue;case"block-comment":if(a==="*"&&c==="/"){r+=2,s="normal";continue}r++;continue;case"regex":if(a==="\\"&&r+1<e.length){r+=2;continue}if(a==="["){for(r++;r<e.length&&e[r]!=="]";)e[r]==="\\"&&r+1<e.length?r+=2:r++;r<e.length&&r++;continue}if(a==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)r++;s="normal";continue}r++;continue;case"normal":if(i.length>0){if(a==="{")i[i.length-1]++;else if(a==="}"&&(i[i.length-1]--,i[i.length-1]===0)){i.pop(),r++,s="template-string";continue}}if(a==="'"){r++,s="single-string";continue}if(a==='"'){r++,s="double-string";continue}if(a==="`"){r++,s="template-string";continue}if(a==="/"&&c==="/"){r+=2,s="line-comment";continue}if(a==="/"&&c==="*"){r+=2,s="block-comment";continue}if(a==="/"){let l=r-1;for(;l>=0&&/\s/.test(e[l]);)l--;let u=l>=0?e[l]:"";if(!u||/[=(!,;:{[&|?+\-*%<>~^]/.test(u)||l>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,l-10),l+1))){r++,s="regex";continue}}if(a==="l"&&e.slice(r,r+4)==="let "&&(r===0||!/[\w$]/.test(e[r-1]))){let l=r+4;for(;l<e.length&&/\s/.test(e[l]);)l++;if(l<e.length&&/[a-zA-Z_$]/.test(e[l])){let u=l;for(;l<e.length&&/[\w$]/.test(e[l]);)l++;let f=l,p=e.slice(u,f),m=l;for(;m<e.length&&/\s/.test(e[m]);)m++;if(m<e.length&&e[m]===":"&&e[m+1]!==":"){let y=m+1;for(;y<e.length&&/[ \t]/.test(e[y]);)y++;let b=Bo(e,y);if(b>y){let $=e.slice(y,b).trim();t.set(p,$),n.push({start:f,end:b,replacement:""}),r=b;continue}}}}break}r++}if(n.length===0)return{source:e,annotations:t};let o=e;for(let a=n.length-1;a>=0;a--){let c=n[a];o=o.slice(0,c.start)+c.replacement+o.slice(c.end)}return{source:o,annotations:t}}function Bo(e,t){let n=t,r=0,s=0,i=0,o="normal",a=[];for(;n<e.length;){let c=e[n];if(o==="sq"){if(c==="\\"){n+=2;continue}c==="'"&&(o="normal"),n++;continue}if(o==="dq"){if(c==="\\"){n+=2;continue}c==='"'&&(o="normal"),n++;continue}if(o==="tpl"){if(c==="\\"){n+=2;continue}if(c==="$"&&e[n+1]==="{"){a.push(1),o="normal",n+=2;continue}c==="`"&&(o="normal"),n++;continue}if(a.length>0){if(c==="{")a[a.length-1]++;else if(c==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),o="tpl",n++;continue}}if(c==="'"){o="sq",n++;continue}if(c==='"'){o="dq",n++;continue}if(c==="`"){o="tpl",n++;continue}if(c==="("?r++:c===")"?r--:c==="{"?s++:c==="}"?s--:c==="["?i++:c==="]"&&i--,r===0&&s===0&&i===0&&(c==="="||c===","||c===";"||c===`
|
|
46
46
|
`))return n;n++}return n}function Xt(e,t){let n="",r=0,s,i,o="normal",a=[],c=[{type:"top-level",braceDepth:0}],l=0,u=()=>c[c.length-1]?.type||"top-level",f=()=>{let p=c[c.length-1];return p?.type==="class-body"&&l===p.braceDepth+1};for(;r<e.length;){let p=e[r],m=e[r+1];switch(o){case"single-string":if(n+=p,p==="\\"&&r+1<e.length){n+=m,r+=2;continue}p==="'"&&(o="normal"),r++;continue;case"double-string":if(n+=p,p==="\\"&&r+1<e.length){n+=m,r+=2;continue}p==='"'&&(o="normal"),r++;continue;case"template-string":if(n+=p,p==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(p==="$"&&m==="{"){n+=m,r+=2,a.push(1),o="normal";continue}p==="`"&&(o="normal"),r++;continue;case"line-comment":n+=p,p===`
|
|
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],
|
|
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],
|
|
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
|
+
`})(),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=
|
|
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(`
|
|
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
|
-
`)),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=wt(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[S,E]of Object.entries(x.type.destructuredParams))a.set(S,{...E,description:o.params[S]});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=Se(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 Se(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:Se(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"?Se(e.consequent,ge(t)):[Tt(e.consequent,t)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?Se(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"?Se(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"?Se(e.body,s):[Tt(e.body,s)].filter(Boolean);return{op:"map",items:r,as:n,steps:i}}function Zo(e,t){let n=Se(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=Se(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=Se(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=Se(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=Se(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 we(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);we(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
|
-
`)}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;
|
|
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
|
+
`)}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:
|
|
54
54
|
${Gs(r.diagnostics)}`);let s=n.fuel??1e6,i=ba(e),o=ir.filter(p=>p!=="import"&&p!=="eval"&&p!=="arguments"),a=new Function("__fuel",...o,`"use strict";
|
|
55
55
|
${i}
|
|
56
|
-
;return { ${t.join(", ")} };`),c=0,u=a(()=>{if(--c<0)throw new _t(s)},...o.map(()=>{})),f={};for(let p of t){let m=u[p];f[p]=(...d)=>{c=s;try{return m(...d)}catch(y){throw y instanceof RangeError&&/stack/i.test(y.message)?new _t(s):y}}}return f}var Hs=e=>e===null?"null":Array.isArray(e)?"array":typeof e;function xa(e,t){return t==="integer"?typeof e=="number"&&Number.isInteger(e):Hs(e)===t}function Zs(e,t={}){let{ignorePredicates:n,...r}=t,s=new Map,i=a=>{if(a.$predicate&&!n&&!s.has(a.$predicate)){let c=a.$predicate,l=kt(c,r).predicates,u=l[l.length-1];if(!u)throw new Error("$predicate must declare at least one function");let f=sn(c,[u],r);s.set(c,f[u])}if(a.properties)for(let c of Object.values(a.properties))i(c);a.items&&i(a.items)};i(e);let o=(a,c,l,u)=>{if(a.type&&!xa(c,a.type)){u.push({path:l||"/",message:`expected ${a.type}, got ${Hs(c)}`});return}if(a.type==="object"&&a.properties&&c&&typeof c=="object"){let f=c;for(let p of a.required??[])p in f||u.push({path:`${l}/${p}`,message:`missing required '${p}'`});for(let[p,m]of Object.entries(a.properties))p in f&&o(m,f[p],`${l}/${p}`,u)}a.type==="array"&&a.items&&Array.isArray(c)&&c.forEach((f,p)=>o(a.items,f,`${l}/${p}`,u)),a.$predicate&&!n&&(s.get(a.$predicate)(c)||u.push({path:l||"/",message:`failed predicate at ${l||"/"}`}))};return a=>{let c=[];return o(e,a,"",c),{valid:c.length===0,errors:c}}}function
|
|
57
|
-
`;)n--;if(e.slice(n,t).includes("//"))return!0;let s=0,i=!1;for(;s<t;)!i&&e.slice(s,s+2)==="/*"?(i=!0,s+=2):i&&e.slice(s,s+2)==="*/"?(i=!1,s+=2):s++;return i}function Ta(e){let t=[],n=/\/\*test\s+'([^']*)'\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+"([^"]*)"\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+`([^`]*)`\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,r;for(;(r=n.exec(e))!==null;){let s=r[1]||r[3]||r[5]||`embedded test ${t.length+1}`,i=(r[2]||r[4]||r[6]||r[7]||"").trim();t.push({description:s,body:i,line:or(e,r.index)})}return t}function jt(e){let t=[],n=[],r=Ta(e);t.push(...r);let s=/test\s+'([^']*)'\s*\{|test\s+"([^"]*)"\s*\{|test\s+`([^`]*)`\s*\{|test\s*\(\s*'([^']*)'\s*\)\s*\{|test\s*\(\s*"([^"]*)"\s*\)\s*\{|test\s*\(\s*`([^`]*)`\s*\)\s*\{|test\s*\{/g,i=/mock\s*\{/g,o=e,a,c=[];for(;(a=s.exec(e))!==null;){let p=a.index;if(
|
|
56
|
+
;return { ${t.join(", ")} };`),c=0,u=a(()=>{if(--c<0)throw new _t(s)},...o.map(()=>{})),f={};for(let p of t){let m=u[p];f[p]=(...d)=>{c=s;try{return m(...d)}catch(y){throw y instanceof RangeError&&/stack/i.test(y.message)?new _t(s):y}}}return f}var Hs=e=>e===null?"null":Array.isArray(e)?"array":typeof e;function xa(e,t){return t==="integer"?typeof e=="number"&&Number.isInteger(e):Hs(e)===t}function Zs(e,t={}){let{ignorePredicates:n,...r}=t,s=new Map,i=a=>{if(a.$predicate&&!n&&!s.has(a.$predicate)){let c=a.$predicate,l=kt(c,r).predicates,u=l[l.length-1];if(!u)throw new Error("$predicate must declare at least one function");let f=sn(c,[u],r);s.set(c,f[u])}if(a.properties)for(let c of Object.values(a.properties))i(c);a.items&&i(a.items)};i(e);let o=(a,c,l,u)=>{if(a.type&&!xa(c,a.type)){u.push({path:l||"/",message:`expected ${a.type}, got ${Hs(c)}`});return}if(a.type==="object"&&a.properties&&c&&typeof c=="object"){let f=c;for(let p of a.required??[])p in f||u.push({path:`${l}/${p}`,message:`missing required '${p}'`});for(let[p,m]of Object.entries(a.properties))p in f&&o(m,f[p],`${l}/${p}`,u)}a.type==="array"&&a.items&&Array.isArray(c)&&c.forEach((f,p)=>o(a.items,f,`${l}/${p}`,u)),a.$predicate&&!n&&(s.get(a.$predicate)(c)||u.push({path:l||"/",message:`failed predicate at ${l||"/"}`}))};return a=>{let c=[];return o(e,a,"",c),{valid:c.length===0,errors:c}}}function wa(e,t,n){return Zs(e,n)(t)}import{parseExpressionAt as Ci}from"acorn";function Sa(e,t){let n=t;for(;n>0&&e[n-1]!==`
|
|
57
|
+
`;)n--;if(e.slice(n,t).includes("//"))return!0;let s=0,i=!1;for(;s<t;)!i&&e.slice(s,s+2)==="/*"?(i=!0,s+=2):i&&e.slice(s,s+2)==="*/"?(i=!1,s+=2):s++;return i}function Ta(e){let t=[],n=/\/\*test\s+'([^']*)'\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+"([^"]*)"\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+`([^`]*)`\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,r;for(;(r=n.exec(e))!==null;){let s=r[1]||r[3]||r[5]||`embedded test ${t.length+1}`,i=(r[2]||r[4]||r[6]||r[7]||"").trim();t.push({description:s,body:i,line:or(e,r.index)})}return t}function jt(e){let t=[],n=[],r=Ta(e);t.push(...r);let s=/test\s+'([^']*)'\s*\{|test\s+"([^"]*)"\s*\{|test\s+`([^`]*)`\s*\{|test\s*\(\s*'([^']*)'\s*\)\s*\{|test\s*\(\s*"([^"]*)"\s*\)\s*\{|test\s*\(\s*`([^`]*)`\s*\)\s*\{|test\s*\{/g,i=/mock\s*\{/g,o=e,a,c=[];for(;(a=s.exec(e))!==null;){let p=a.index;if(Sa(e,p))continue;let m=a[1]||a[2]||a[3]||a[4]||a[5]||a[6]||`test ${t.length+1}`,d=a.index+a[0].length,y=Ys(e,d-1);if(y===-1)continue;let b=e.slice(d,y).trim();t.push({description:m,body:b,line:or(e,p)}),c.push({start:p,end:y+1,desc:m})}let l=[];for(;(a=i.exec(e))!==null;){let p=a.index,m=a.index+a[0].length,d=Ys(e,m-1);if(d===-1)continue;let y=e.slice(m,d).trim();n.push({body:y,line:or(e,p)}),l.push({start:p,end:d+1})}let u=[...c,...l].sort((p,m)=>m.start-p.start);for(let p of u)o=o.slice(0,p.start)+o.slice(p.end);o=o.replace(/\n\s*\n\s*\n/g,`
|
|
58
58
|
|
|
59
59
|
`).trim();let f=Ea(t,n);return{code:o,tests:t,mocks:n,testRunner:f}}function Ys(e,t){let n=0,r=null,s=!1;for(let i=t;i<e.length;i++){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(!r&&(o==='"'||o==="'"||o==="`")){r=o;continue}if(r===o){r=null;continue}if(!r&&(o==="{"&&n++,o==="}"&&(n--,n===0)))return i}return-1}function or(e,t){return e.slice(0,t).split(`
|
|
60
60
|
`).length}function Ea(e,t){if(e.length===0)return"// No tests defined";let n=t.map(s=>s.body).join(`
|
|
@@ -178,7 +178,7 @@ function expect(actual) {
|
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
180
|
`,$a=Xs+`
|
|
181
|
-
`+Qs;import{validate as ni,s as _n}from"tosijs-schema";function Me(e){if(e.nullable)return{anyOf:[Me({...e,nullable:!1}),{type:"null"}]};switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"integer":return{type:"integer"};case"non-negative-integer":return{type:"integer",minimum:0};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"undefined":return{};case"any":return{};case"array":return e.items?{type:"array",items:Me(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[r,s]of Object.entries(e.shape))t[r]=Me(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(Me)}:{};default:return{}}}function We(e){if(e===null)return{type:"null"};if(e===void 0)return{};switch(typeof e){case"string":return{type:"string"};case"number":return Number.isInteger(e)?{type:"integer"}:{type:"number"};case"boolean":return{type:"boolean"};case"object":{if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:We(e[0])};let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=We(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}default:return{}}}function on(e){let t={},n=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=Me(o.type):o?.example!==void 0?t[i]=We(o.example):t[i]={},o?.required!==!1&&n.push(i),o?.example!==void 0&&(t[i].examples=[o.example]);let r={type:"object",properties:t,required:n},s;return e.returns&&(e.returns.type?.kind?s=Me(e.returns.type):e.returns.example!==void 0&&(s=We(e.returns.example))),{input:r,output:s}}import{validate as ar,filter as _a,s as an}from"tosijs-schema";function Pe(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function ei(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function ka(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function te(e,t,n,r){let s,i,o,a=n,c=r;if(typeof e=="string")if(s=e,typeof t=="function")i=t,a!==void 0&&(o=an.infer(a));else if(t===void 0&&a!==void 0)o=an.infer(a);else if(ei(t))o=t;else if(ka(t))o=t;else if(t!==void 0)a=t,c=a,o=an.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else ei(e),o=e,s=ja(o);let l;if(o){let f=o?.schema??o;f&&typeof f=="object"&&Array.isArray(f.examples)&&(l=f.examples)}return a===void 0&&l&&l.length>0&&(a=l[0]),{description:s,check:f=>i?i(f):o?ar(f,o):!1,schema:o,predicate:i,example:a,examples:l,default:c,toJSONSchema(){if(o){let f=o?.schema??o;if(f&&typeof f=="object"&&"type"in f)return f}return a!==void 0?We(a):{description:s}},strip(f){return o?_a(f,o):f},__runtimeType:!0}}function ja(e){let t=e?.schema??e;if(t&&typeof t=="object"&&"type"in t){let n=t;switch(n.type){case"string":return n.format?`string (${n.format})`:n.pattern?`string matching ${n.pattern}`:n.minLength!==void 0&&n.maxLength!==void 0?`string (${n.minLength}-${n.maxLength} chars)`:"string";case"number":case"integer":return n.minimum!==void 0&&n.maximum!==void 0?`${n.type} (${n.minimum}-${n.maximum})`:n.minimum!==void 0?`${n.type} >= ${n.minimum}`:n.maximum!==void 0?`${n.type} <= ${n.maximum}`:n.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var cn=te("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),ln=te("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),un=te("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),fn=te("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),pn=te("positive integer",e=>typeof e!="number"?`expected positive integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?e<=0?`${e} is not positive`:!0:`${e} is not an integer`),mn=te("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),dn=te("email address",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?!0:`"${e}" is not a valid email`),cr=e=>{try{return new URL(e),!0}catch{return!1}},yn=te("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:cr(e)?!0:`"${e}" is not a valid URL`),gn=te("UUID",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?!0:`"${e}" is not a valid UUID`),lr=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},ur=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},fr=te("ISO 8601 timestamp",e=>typeof e=="string"&&lr(e)),pr=te("date (YYYY-MM-DD)",e=>typeof e=="string"&&ur(e));function hn(e){return te(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function bn(e){return te(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function xn(e,t,...n){if(typeof e=="string"&&Array.isArray(t)){let i=e,o=t,a=new Set(o);return{description:i,check:l=>a.has(l),toJSONSchema:()=>({enum:o}),strip:l=>l,__runtimeType:!0,values:o}}let r=[];Pe(e)&&r.push(e),Pe(t)&&r.push(t),r.push(...n);let s=r.map(i=>i.description).join(" | ");return te(s,i=>r.some(o=>o.check(i)===!0))}function Sn(e){return te(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function va(e){if(Pe(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>ar(n,e);let t=an.infer(e);return n=>ar(n,t)}function tt(e,t,n){let r=[],s=[];for(let o of e)typeof o=="string"?(r.push(o),s.push(void 0)):(r.push(o[0]),s.push(o[1]));let i=(...o)=>{let a=r.map((l,u)=>{let f=u<o.length?o[u]:s[u];return f===void 0?()=>!0:va(f)}),c=n;return r.forEach((l,u)=>{let f=u<o.length?o[u]:s[u],p="any";Pe(f)?p=f.description:f!==void 0&&(p=typeof f=="string"?"string":JSON.stringify(f)),c=c.replace(new RegExp(`\\b${l}\\b`,"g"),p)}),te(c,l=>t(l,...a))};return i.params=r,i.description=n,i}var wn=tt(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),Tn=tt(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function En(e,t){let n=Object.values(t),r=new Set(n),s=Object.keys(t),i={};for(let[a,c]of Object.entries(t))i[c]=a;return{description:e,check:a=>r.has(a),toJSONSchema:()=>({enum:n}),strip:a=>a,__runtimeType:!0,members:t,names:i,values:n,keys:s}}function Ma(e){if(e===null)return"null";if(e===void 0)return"undefined";switch(typeof e){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger(e)?"integer":"number";case"object":return Array.isArray(e)?"array":"object";default:return null}}function vt(e,t,n){if(Array.isArray(t)&&n){let r=t,s=[],i=[];for(let a of r)Array.isArray(a)?(s.push(a[0]),i.push(a[1])):(s.push(a),i.push(void 0));let o=((...a)=>{let c=s.map((u,f)=>f<a.length?a[f]:i[f]),l=n(...c);return vt(e,l)});return Object.defineProperties(o,{typeParamNames:{value:s,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),o}return Aa(e,t)}function Aa(e,t){let n={},r,s="assertReturns";if(typeof t=="function"){let o=t.__tjs;if(o){if(o.params)for(let[a,c]of Object.entries(o.params))n[a]=c?.example??null;o.returns&&(r=o.returns?.example??null),o.safeReturn?s="checkedReturns":o.unsafe?s="assertReturns":s="returns"}}else n=t.params??{},r=t.returns,s=t.returnContract??"assertReturns";return{description:e,params:n,returns:r,returnContract:s,toJSONSchema:()=>({description:e,type:"function"}),strip:o=>o,check:o=>{if(typeof o!="function")return`expected function, got ${o===null?"null":typeof o}`;let a=Object.keys(n).length;if(a>0){let l=o.__tjs;if(l?.params){let u=Object.keys(l.params).length;if(u!==a)return`expected ${a} params, got ${u}`;let f=Object.keys(n),p=Object.keys(l.params);for(let m=0;m<f.length;m++){let d=l.params[p[m]],y=n[f[m]];if(d?.type?.kind&&y!==void 0){let b=Ma(y);if(b&&d.type.kind!==b&&d.type.kind!=="any")return`param '${f[m]}' expected ${b}, got ${d.type.kind}`}}}}return!0},__runtimeType:!0}}var Ra=ti(),fe=Ra.version,Mt=Symbol.for("tjs.equals");function kn(e){let[t=0,n=0,r=0]=e.split(".").map(Number);return{major:t,minor:n,patch:r}}function dr(e,t){let n=kn(e),r=kn(t);return n.major!==r.major?n.major<r.major?-1:1:n.minor!==r.minor?n.minor<r.minor?-1:1:n.patch!==r.patch?n.patch<r.patch?-1:1:0}function yr(e,t){let n=kn(e),r=kn(t);return n.major===r.major}var Ie=class e extends Error{path;expected;actual;callStack;reason;constructor(t,n,r,s,i,o){super(t),this.name="MonadicError",this.path=n,this.expected=r,this.actual=s,this.callStack=i,this.reason=o,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function Na(e,t,n,r){let s=n===null?"null":typeof n,i=G.callStacks||G.debug?hr():void 0,o=r?`Expected ${t} for '${e}': ${r}`:`Expected ${t} for '${e}', got ${s}`,a=new Ie(o,e,t,s,i,r);if(G.trackErrors!==!1){let c=G.maxErrors??jn;si[nt]=a,nt=(nt+1)%c,Ke<c&&Ke++,vn++}if(G.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),G.throwTypeErrors)throw a;return a}function mr(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var gr={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},G={...gr},At=64,ri=new Array(At).fill(""),Ve=0,Ce=0,jn=64,si=new Array(jn).fill(null),nt=0,Ke=0,vn=0,it=0;function Pa(){it++}function Ia(){it>0&&it--}function Da(){return it>0}function Oa(e){G={...G,...e}}function Ba(){return{...G}}function ii(e){if((G.callStacks||G.debug)&&e){let t=G.maxStackSize??At;ri[Ve]=e,Ve=(Ve+1)%t,Ce<t&&Ce++}}function $n(){if((G.callStacks||G.debug)&&Ce>0){let e=G.maxStackSize??At;Ve=(Ve-1+e)%e,Ce--}}function hr(){if(Ce===0)return[];let e=G.maxStackSize??At,t=[],n=(Ve-Ce+e)%e;for(let r=0;r<Ce;r++)t.push(ri[(n+r)%e]);return t}function oi(){if(G.trackErrors===!1||Ke===0)return[];let e=G.maxErrors??jn,t=[],n=(nt-Ke+e)%e;for(let r=0;r<Ke;r++)t.push(si[(n+r)%e]);return t}function La(){let e=oi();return nt=0,Ke=0,vn=0,e}function Fa(){return vn}function Ua(){G={...gr},Ve=0,Ce=0,nt=0,Ke=0,vn=0,it=0}function rt(e,t){if(e!==null&&typeof e=="object"&&typeof e[Mt]=="function")return e[Mt](t);if(t!==null&&typeof t=="object"&&typeof t[Mt]=="function")return t[Mt](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(t);if(t!==null&&typeof t=="object"&&typeof t.Equals=="function")return t.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object")return!1;if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let s of e)if(!t.has(s))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[s,i]of e)if(!t.has(s)||!rt(i,t.get(s)))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>rt(s,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(s=>rt(e[s],t[s]))}function ai(e,t){return!rt(e,t)}function ci(e){return e===null?"null":typeof e}function li(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function br(e,t){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),!!(e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)}function ui(e,t){return!br(e,t)}function Ae(e){return e!==null&&typeof e=="object"&&e.$error===!0}function $e(e,t){let n={$error:!0,message:e,...t};if((G.callStacks||G.debug)&&Ce>0){let r=hr(),s=t?.path?[...r,t.path]:r;n.stack=s}return n}function xr(e,t){if(e.length===0)return $e("Unknown error");if(e.length===1)return e[0];let n=e.map(s=>{if(s.path){let i=s.path.split(".");return i[i.length-1]}return"unknown"}).join(", "),r=`Multiple parameter errors in ${t||"function"}: ${n}`;return $e(r,{path:t,errors:e})}function st(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let t=typeof e;if(t!=="object")return t;let n=e.constructor?.name;return n&&n!=="Object"?n:"object"}function fi(e,t){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let n=e;for(;n!==null;){if(n.constructor?.name===t)return!0;n=Object.getPrototypeOf(n)}return!1}function ze(e,t,n){if(Ae(e))return e;if(typeof t=="object"&&t!==null&&"check"in t){let s=t.check(e);if(s===!0)return null;let i=typeof s=="string"?s:void 0,o=i?`Expected ${t.description} for '${n}': ${i}`:`Expected ${t.description} but got ${st(e)}`;return $e(o,{path:n,expected:t.description,actual:st(e),reason:i})}let r=st(e);return t==="any"||t===r||t==="number"&&r==="number"||t==="integer"&&r==="number"&&Number.isInteger(e)||t==="non-negative-integer"&&r==="number"&&Number.isInteger(e)&&e>=0||t==="object"&&r==="object"?null:$e(`Expected ${t} but got ${r}`,{path:n,expected:t,actual:r})}function pi(e,t,n,r){if(typeof e!="function")return e;let s=e.__tjs;if(!s||!s.params)return e;let i=Object.entries(s.params);for(let o=0;o<t.length;o++){let a=t[o];if(a==="any")continue;let c=i[o];if(!c)continue;let l=c[1]?.type?.kind;if(!(!l||l==="any")&&l!==a)return new Ie(`Expected (...arg${o}: ${a}, ...) for '${r}', but callback declares arg${o} as ${l}`,`${r}(arg${o})`,a,l)}if(n!=="any"&&s.returns){let o=s.returns.type?.kind??s.returns.kind;if(o&&o!=="any"&&o!==n)return new Ie(`Expected callback returning ${n} for '${r}', but callback returns ${o}`,`${r}(return)`,n,o)}return e}function Sr(e,t,n){for(let[r,s]of Object.entries(t.params)){let i=e[r];if(Ae(i))return i;if(s.required&&i===void 0){let a=typeof s.type=="string"?s.type:s.type.description;return $e(`Missing required parameter '${r}'`,{path:n?`${n}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(i===void 0)continue;let o=ze(i,s.type,n?`${n}.${r}`:r);if(o)return s.loc&&(o.loc=s.loc),o}return null}function wr(e,t){if(e.__tjs=t,e.__tjs.schema=()=>on(t),!(!t.polymorphic&&(t.safe||t.safeReturn||G.safety!=="none"&&!t.unsafe||t.returns&&G.safety==="all"&&!t.unsafeReturn)))return e;let r=!!t.returns,s=!!t.unsafe,i=!!t.safe,o=!!t.unsafeReturn,a=!!t.safeReturn,c=t.returns?.defaults,l=Object.entries(t.params),u=l.length,f=e.name||t.name||"anonymous",p=function(...m){if(it>0)return e.apply(this,m);let d=i||!s&&G.safety!=="none",y=r&&(a||!o&&G.safety==="all");if(!d&&!y)return e.apply(this,m);if(m.length>0&&Ae(m[0]))return m[0];if(d){let $=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),T=[];if($){let x=m[0];for(let S=0;S<u;S++){let[E,w]=l[S],j=x[E];if(Ae(j)){T.push(j);continue}if(w.required&&j===void 0){T.push($e(`Missing required parameter '${E}'`,{path:`${f}.${E}`,expected:typeof w.type=="string"?w.type:w.type?.description||"value",actual:"undefined",loc:w.loc}));continue}if(j!==void 0){let A=ze(j,w.type,`${f}.${E}`);A&&(w.loc&&(A.loc=w.loc),T.push(A))}}}else for(let x=0;x<u;x++){let[S,E]=l[x],w=m[x];if(Ae(w)){T.push(w);continue}if(E.required&&w===void 0){T.push($e(`Missing required parameter '${S}'`,{path:`${f}.${S}`,expected:typeof E.type=="string"?E.type:E.type?.description||"value",actual:"undefined",loc:E.loc}));continue}if(w!==void 0){let j=ze(w,E.type,`${f}.${S}`);j&&(E.loc&&(j.loc=E.loc),T.push(j))}}if(T.length>0)return xr(T,f)}let b=G.callStacks||G.debug;b&&ii(f);try{let $=e.apply(this,m);if(y&&t.returns&&!Ae($)){let T=c&&typeof $=="object"&&$!==null?Object.assign({},c,$):$,x=ze(T,t.returns.type,`${f}()`);if(x)return b&&$n(),x}return b&&$n(),$}catch($){return b&&$n(),$e($.message||String($),{path:f,cause:$})}};return Object.defineProperty(p,"name",{value:e.name}),p.__tjs=t,p.__tjs.schema=()=>on(t),p}function mi(e){let t=new Proxy(e,{construct(n,r,s){return Reflect.construct(n,r,s)},apply(n,r,s){return Reflect.construct(n,s)}});Object.defineProperty(t,"name",{value:e.name});for(let n of Object.getOwnPropertyNames(e))n!=="length"&&n!=="name"&&n!=="prototype"&&Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n));return t}function di(){let e={...G},t=e.maxStackSize??At,n=new Array(t).fill(""),r=0,s=0,i=e.maxErrors??jn,o=new Array(i).fill(null),a=0,c=0,l=0,u=0;function f(M){e={...e,...M}}function p(){return{...e}}function m(M){(e.callStacks||e.debug)&&M&&(n[r]=M,r=(r+1)%t,s<t&&s++)}function d(){(e.callStacks||e.debug)&&s>0&&(r=(r-1+t)%t,s--)}function y(){if(s===0)return[];let M=[],D=(r-s+t)%t;for(let B=0;B<s;B++)M.push(n[(D+B)%t]);return M}function b(){e={...gr},r=0,s=0,a=0,c=0,l=0,u=0}function $(){u++}function T(){u>0&&u--}function x(){return u>0}let S=new Map;function E(M,D,B){S.has(M)||S.set(M,new Map),S.get(M).set(D,B)}function w(M,D){let B=typeof M,F;if(M==null)return;if(B==="string")F="String";else if(B==="number")F="Number";else if(B==="boolean")F="Boolean";else if(Array.isArray(M))F="Array";else if(B==="object")F=M.constructor?.name||"Object";else return;let Y=F;for(;Y;){let Qe=S.get(Y);if(Qe?.has(D))return Qe.get(D);if(B==="object"&&!Array.isArray(M)){if(Y=Object.getPrototypeOf(Y===F?M:Object.getPrototypeOf(M))?.constructor?.name,Y==="Object"||Y===F)break}else break}let ce=S.get("Object");if(ce?.has(D))return ce.get(D)}function j(M,D,B){let F=B===null?"null":typeof B,Y=e.callStacks||e.debug?y():void 0,ce=new Ie(`Expected ${D} for '${M}', got ${F}`,M,D,F,Y);if(e.trackErrors!==!1&&(o[a]=ce,a=(a+1)%i,c<i&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${ce.message}`),e.throwTypeErrors)throw ce;return ce}function A(){if(e.trackErrors===!1||c===0)return[];let M=[],D=(a-c+i)%i;for(let B=0;B<c;B++)M.push(o[(D+B)%i]);return M}function k(){let M=A();return a=0,c=0,l=0,M}function v(){return l}function C(M,D){let B={$error:!0,message:M,...D};if((e.callStacks||e.debug)&&s>0){let F=D?.path?[...y(),D.path]:y();B.stack=F}return B}function P(M,D){return M==null?j(`bang.${D}`,"non-null",M):mr(M)?M:M[D]}return{version:fe,MonadicError:Ie,typeError:j,isMonadicError:mr,bang:P,isError:Ae,error:C,composeErrors:xr,typeOf:st,isNativeType:fi,checkType:ze,validateArgs:Sr,wrap:wr,checkFnShape:pi,wrapClass:mi,compareVersions:dr,versionsCompatible:yr,createRuntime:di,configure:f,getConfig:p,pushStack:m,popStack:d,getStack:y,errors:A,clearErrors:k,getErrorCount:v,resetRuntime:b,enterUnsafe:$,exitUnsafe:T,isUnsafeMode:x,validate:ni,infer:_n.infer.bind(_n),Type:te,isRuntimeType:Pe,Union:xn,Generic:tt,Enum:En,FunctionPredicate:vt,Nullable:hn,Optional:bn,TArray:Sn,TString:cn,TNumber:ln,TBoolean:un,TInteger:fn,TPositiveInt:pn,TNonEmptyString:mn,TEmail:dn,TUrl:yn,TUuid:gn,TPair:wn,TRecord:Tn,Is:rt,IsNot:ai,Eq:br,NotEq:ui,TypeOf:ci,toBool:li,tjsEquals:Mt,registerExtension:E,resolveExtension:w}}var Je={version:fe,MonadicError:Ie,typeError:Na,isMonadicError:mr,isError:Ae,error:$e,composeErrors:xr,typeOf:st,isNativeType:fi,checkType:ze,validateArgs:Sr,wrap:wr,checkFnShape:pi,wrapClass:mi,compareVersions:dr,versionsCompatible:yr,configure:Oa,getConfig:Ba,pushStack:ii,popStack:$n,getStack:hr,errors:oi,clearErrors:La,getErrorCount:Fa,resetRuntime:Ua,enterUnsafe:Pa,exitUnsafe:Ia,isUnsafeMode:Da,createRuntime:di,validate:ni,infer:_n.infer.bind(_n),Type:te,isRuntimeType:Pe,Union:xn,Generic:tt,Enum:En,FunctionPredicate:vt,Nullable:hn,Optional:bn,TArray:Sn,TString:cn,TNumber:ln,TBoolean:un,TInteger:fn,TPositiveInt:pn,TNonEmptyString:mn,TEmail:dn,TUrl:yn,TUuid:gn,Timestamp:fr,LegalDate:pr,TPair:wn,TRecord:Tn,Is:rt,IsNot:ai,Eq:br,NotEq:ui,TypeOf:ci,toBool:li};function Tr(){let e=globalThis;if(e.__tjs){let t=e.__tjs.version;if(typeof t!="string")return e.__tjs=Je,Je;let n=dr(fe,t);return n===0||(yr(fe,t)?n>0?(console.info(`TJS runtime: upgrading ${t} \u2192 ${fe}`),e.__tjs=Je):console.info(`TJS runtime: keeping ${t} (newer than ${fe})`):(console.warn(`TJS runtime version conflict: ${t} vs ${fe} (major version mismatch)`),n>0&&(console.warn(`Upgrading to ${fe} - check for breaking changes`),e.__tjs=Je))),e.__tjs}return e.__tjs=Je,Je}function qa(e){return`
|
|
181
|
+
`+Qs;import{validate as ni,s as _n}from"tosijs-schema";function Me(e){if(e.nullable)return{anyOf:[Me({...e,nullable:!1}),{type:"null"}]};switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"integer":return{type:"integer"};case"non-negative-integer":return{type:"integer",minimum:0};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"undefined":return{};case"any":return{};case"array":return e.items?{type:"array",items:Me(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[r,s]of Object.entries(e.shape))t[r]=Me(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(Me)}:{};default:return{}}}function We(e){if(e===null)return{type:"null"};if(e===void 0)return{};switch(typeof e){case"string":return{type:"string"};case"number":return Number.isInteger(e)?{type:"integer"}:{type:"number"};case"boolean":return{type:"boolean"};case"object":{if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:We(e[0])};let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=We(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}default:return{}}}function on(e){let t={},n=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=Me(o.type):o?.example!==void 0?t[i]=We(o.example):t[i]={},o?.required!==!1&&n.push(i),o?.example!==void 0&&(t[i].examples=[o.example]);let r={type:"object",properties:t,required:n},s;return e.returns&&(e.returns.type?.kind?s=Me(e.returns.type):e.returns.example!==void 0&&(s=We(e.returns.example))),{input:r,output:s}}import{validate as ar,filter as _a,s as an}from"tosijs-schema";function Pe(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function ei(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function ka(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function te(e,t,n,r){let s,i,o,a=n,c=r;if(typeof e=="string")if(s=e,typeof t=="function")i=t,a!==void 0&&(o=an.infer(a));else if(t===void 0&&a!==void 0)o=an.infer(a);else if(ei(t))o=t;else if(ka(t))o=t;else if(t!==void 0)a=t,c=a,o=an.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else ei(e),o=e,s=ja(o);let l;if(o){let f=o?.schema??o;f&&typeof f=="object"&&Array.isArray(f.examples)&&(l=f.examples)}return a===void 0&&l&&l.length>0&&(a=l[0]),{description:s,check:f=>i?i(f):o?ar(f,o):!1,schema:o,predicate:i,example:a,examples:l,default:c,toJSONSchema(){if(o){let f=o?.schema??o;if(f&&typeof f=="object"&&"type"in f)return f}return a!==void 0?We(a):{description:s}},strip(f){return o?_a(f,o):f},__runtimeType:!0}}function ja(e){let t=e?.schema??e;if(t&&typeof t=="object"&&"type"in t){let n=t;switch(n.type){case"string":return n.format?`string (${n.format})`:n.pattern?`string matching ${n.pattern}`:n.minLength!==void 0&&n.maxLength!==void 0?`string (${n.minLength}-${n.maxLength} chars)`:"string";case"number":case"integer":return n.minimum!==void 0&&n.maximum!==void 0?`${n.type} (${n.minimum}-${n.maximum})`:n.minimum!==void 0?`${n.type} >= ${n.minimum}`:n.maximum!==void 0?`${n.type} <= ${n.maximum}`:n.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var cn=te("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),ln=te("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),un=te("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),fn=te("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),pn=te("positive integer",e=>typeof e!="number"?`expected positive integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?e<=0?`${e} is not positive`:!0:`${e} is not an integer`),mn=te("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),dn=te("email address",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?!0:`"${e}" is not a valid email`),cr=e=>{try{return new URL(e),!0}catch{return!1}},yn=te("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:cr(e)?!0:`"${e}" is not a valid URL`),gn=te("UUID",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?!0:`"${e}" is not a valid UUID`),lr=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},ur=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},fr=te("ISO 8601 timestamp",e=>typeof e=="string"&&lr(e)),pr=te("date (YYYY-MM-DD)",e=>typeof e=="string"&&ur(e));function hn(e){return te(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function bn(e){return te(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function xn(e,t,...n){if(typeof e=="string"&&Array.isArray(t)){let i=e,o=t,a=new Set(o);return{description:i,check:l=>a.has(l),toJSONSchema:()=>({enum:o}),strip:l=>l,__runtimeType:!0,values:o}}let r=[];Pe(e)&&r.push(e),Pe(t)&&r.push(t),r.push(...n);let s=r.map(i=>i.description).join(" | ");return te(s,i=>r.some(o=>o.check(i)===!0))}function wn(e){return te(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function va(e){if(Pe(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>ar(n,e);let t=an.infer(e);return n=>ar(n,t)}function tt(e,t,n){let r=[],s=[];for(let o of e)typeof o=="string"?(r.push(o),s.push(void 0)):(r.push(o[0]),s.push(o[1]));let i=(...o)=>{let a=r.map((l,u)=>{let f=u<o.length?o[u]:s[u];return f===void 0?()=>!0:va(f)}),c=n;return r.forEach((l,u)=>{let f=u<o.length?o[u]:s[u],p="any";Pe(f)?p=f.description:f!==void 0&&(p=typeof f=="string"?"string":JSON.stringify(f)),c=c.replace(new RegExp(`\\b${l}\\b`,"g"),p)}),te(c,l=>t(l,...a))};return i.params=r,i.description=n,i}var Sn=tt(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),Tn=tt(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function En(e,t){let n=Object.values(t),r=new Set(n),s=Object.keys(t),i={};for(let[a,c]of Object.entries(t))i[c]=a;return{description:e,check:a=>r.has(a),toJSONSchema:()=>({enum:n}),strip:a=>a,__runtimeType:!0,members:t,names:i,values:n,keys:s}}function Ma(e){if(e===null)return"null";if(e===void 0)return"undefined";switch(typeof e){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger(e)?"integer":"number";case"object":return Array.isArray(e)?"array":"object";default:return null}}function vt(e,t,n){if(Array.isArray(t)&&n){let r=t,s=[],i=[];for(let a of r)Array.isArray(a)?(s.push(a[0]),i.push(a[1])):(s.push(a),i.push(void 0));let o=((...a)=>{let c=s.map((u,f)=>f<a.length?a[f]:i[f]),l=n(...c);return vt(e,l)});return Object.defineProperties(o,{typeParamNames:{value:s,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),o}return Aa(e,t)}function Aa(e,t){let n={},r,s="assertReturns";if(typeof t=="function"){let o=t.__tjs;if(o){if(o.params)for(let[a,c]of Object.entries(o.params))n[a]=c?.example??null;o.returns&&(r=o.returns?.example??null),o.safeReturn?s="checkedReturns":o.unsafe?s="assertReturns":s="returns"}}else n=t.params??{},r=t.returns,s=t.returnContract??"assertReturns";return{description:e,params:n,returns:r,returnContract:s,toJSONSchema:()=>({description:e,type:"function"}),strip:o=>o,check:o=>{if(typeof o!="function")return`expected function, got ${o===null?"null":typeof o}`;let a=Object.keys(n).length;if(a>0){let l=o.__tjs;if(l?.params){let u=Object.keys(l.params).length;if(u!==a)return`expected ${a} params, got ${u}`;let f=Object.keys(n),p=Object.keys(l.params);for(let m=0;m<f.length;m++){let d=l.params[p[m]],y=n[f[m]];if(d?.type?.kind&&y!==void 0){let b=Ma(y);if(b&&d.type.kind!==b&&d.type.kind!=="any")return`param '${f[m]}' expected ${b}, got ${d.type.kind}`}}}}return!0},__runtimeType:!0}}var Ra=ti(),fe=Ra.version,Mt=Symbol.for("tjs.equals");function kn(e){let[t=0,n=0,r=0]=e.split(".").map(Number);return{major:t,minor:n,patch:r}}function dr(e,t){let n=kn(e),r=kn(t);return n.major!==r.major?n.major<r.major?-1:1:n.minor!==r.minor?n.minor<r.minor?-1:1:n.patch!==r.patch?n.patch<r.patch?-1:1:0}function yr(e,t){let n=kn(e),r=kn(t);return n.major===r.major}var Ie=class e extends Error{path;expected;actual;callStack;reason;constructor(t,n,r,s,i,o){super(t),this.name="MonadicError",this.path=n,this.expected=r,this.actual=s,this.callStack=i,this.reason=o,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function Na(e,t,n,r){let s=n===null?"null":typeof n,i=G.callStacks||G.debug?hr():void 0,o=r?`Expected ${t} for '${e}': ${r}`:`Expected ${t} for '${e}', got ${s}`,a=new Ie(o,e,t,s,i,r);if(G.trackErrors!==!1){let c=G.maxErrors??jn;si[nt]=a,nt=(nt+1)%c,Ke<c&&Ke++,vn++}if(G.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),G.throwTypeErrors)throw a;return a}function mr(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var gr={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},G={...gr},At=64,ri=new Array(At).fill(""),Ve=0,Ce=0,jn=64,si=new Array(jn).fill(null),nt=0,Ke=0,vn=0,it=0;function Pa(){it++}function Ia(){it>0&&it--}function Da(){return it>0}function Oa(e){G={...G,...e}}function Ba(){return{...G}}function ii(e){if((G.callStacks||G.debug)&&e){let t=G.maxStackSize??At;ri[Ve]=e,Ve=(Ve+1)%t,Ce<t&&Ce++}}function $n(){if((G.callStacks||G.debug)&&Ce>0){let e=G.maxStackSize??At;Ve=(Ve-1+e)%e,Ce--}}function hr(){if(Ce===0)return[];let e=G.maxStackSize??At,t=[],n=(Ve-Ce+e)%e;for(let r=0;r<Ce;r++)t.push(ri[(n+r)%e]);return t}function oi(){if(G.trackErrors===!1||Ke===0)return[];let e=G.maxErrors??jn,t=[],n=(nt-Ke+e)%e;for(let r=0;r<Ke;r++)t.push(si[(n+r)%e]);return t}function La(){let e=oi();return nt=0,Ke=0,vn=0,e}function Fa(){return vn}function Ua(){G={...gr},Ve=0,Ce=0,nt=0,Ke=0,vn=0,it=0}function rt(e,t){if(e!==null&&typeof e=="object"&&typeof e[Mt]=="function")return e[Mt](t);if(t!==null&&typeof t=="object"&&typeof t[Mt]=="function")return t[Mt](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(t);if(t!==null&&typeof t=="object"&&typeof t.Equals=="function")return t.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object")return!1;if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let s of e)if(!t.has(s))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[s,i]of e)if(!t.has(s)||!rt(i,t.get(s)))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>rt(s,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(s=>rt(e[s],t[s]))}function ai(e,t){return!rt(e,t)}function ci(e){return e===null?"null":typeof e}function li(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function br(e,t){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),!!(e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)}function ui(e,t){return!br(e,t)}function Ae(e){return e!==null&&typeof e=="object"&&e.$error===!0}function $e(e,t){let n={$error:!0,message:e,...t};if((G.callStacks||G.debug)&&Ce>0){let r=hr(),s=t?.path?[...r,t.path]:r;n.stack=s}return n}function xr(e,t){if(e.length===0)return $e("Unknown error");if(e.length===1)return e[0];let n=e.map(s=>{if(s.path){let i=s.path.split(".");return i[i.length-1]}return"unknown"}).join(", "),r=`Multiple parameter errors in ${t||"function"}: ${n}`;return $e(r,{path:t,errors:e})}function st(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let t=typeof e;if(t!=="object")return t;let n=e.constructor?.name;return n&&n!=="Object"?n:"object"}function fi(e,t){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let n=e;for(;n!==null;){if(n.constructor?.name===t)return!0;n=Object.getPrototypeOf(n)}return!1}function ze(e,t,n){if(Ae(e))return e;if(typeof t=="object"&&t!==null&&"check"in t){let s=t.check(e);if(s===!0)return null;let i=typeof s=="string"?s:void 0,o=i?`Expected ${t.description} for '${n}': ${i}`:`Expected ${t.description} but got ${st(e)}`;return $e(o,{path:n,expected:t.description,actual:st(e),reason:i})}let r=st(e);return t==="any"||t===r||t==="number"&&r==="number"||t==="integer"&&r==="number"&&Number.isInteger(e)||t==="non-negative-integer"&&r==="number"&&Number.isInteger(e)&&e>=0||t==="object"&&r==="object"?null:$e(`Expected ${t} but got ${r}`,{path:n,expected:t,actual:r})}function pi(e,t,n,r){if(typeof e!="function")return e;let s=e.__tjs;if(!s||!s.params)return e;let i=Object.entries(s.params);for(let o=0;o<t.length;o++){let a=t[o];if(a==="any")continue;let c=i[o];if(!c)continue;let l=c[1]?.type?.kind;if(!(!l||l==="any")&&l!==a)return new Ie(`Expected (...arg${o}: ${a}, ...) for '${r}', but callback declares arg${o} as ${l}`,`${r}(arg${o})`,a,l)}if(n!=="any"&&s.returns){let o=s.returns.type?.kind??s.returns.kind;if(o&&o!=="any"&&o!==n)return new Ie(`Expected callback returning ${n} for '${r}', but callback returns ${o}`,`${r}(return)`,n,o)}return e}function wr(e,t,n){for(let[r,s]of Object.entries(t.params)){let i=e[r];if(Ae(i))return i;if(s.required&&i===void 0){let a=typeof s.type=="string"?s.type:s.type.description;return $e(`Missing required parameter '${r}'`,{path:n?`${n}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(i===void 0)continue;let o=ze(i,s.type,n?`${n}.${r}`:r);if(o)return s.loc&&(o.loc=s.loc),o}return null}function Sr(e,t){if(e.__tjs=t,e.__tjs.schema=()=>on(t),!(!t.polymorphic&&(t.safe||t.safeReturn||G.safety!=="none"&&!t.unsafe||t.returns&&G.safety==="all"&&!t.unsafeReturn)))return e;let r=!!t.returns,s=!!t.unsafe,i=!!t.safe,o=!!t.unsafeReturn,a=!!t.safeReturn,c=t.returns?.defaults,l=Object.entries(t.params),u=l.length,f=e.name||t.name||"anonymous",p=function(...m){if(it>0)return e.apply(this,m);let d=i||!s&&G.safety!=="none",y=r&&(a||!o&&G.safety==="all");if(!d&&!y)return e.apply(this,m);if(m.length>0&&Ae(m[0]))return m[0];if(d){let $=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),T=[];if($){let x=m[0];for(let w=0;w<u;w++){let[E,S]=l[w],j=x[E];if(Ae(j)){T.push(j);continue}if(S.required&&j===void 0){T.push($e(`Missing required parameter '${E}'`,{path:`${f}.${E}`,expected:typeof S.type=="string"?S.type:S.type?.description||"value",actual:"undefined",loc:S.loc}));continue}if(j!==void 0){let A=ze(j,S.type,`${f}.${E}`);A&&(S.loc&&(A.loc=S.loc),T.push(A))}}}else for(let x=0;x<u;x++){let[w,E]=l[x],S=m[x];if(Ae(S)){T.push(S);continue}if(E.required&&S===void 0){T.push($e(`Missing required parameter '${w}'`,{path:`${f}.${w}`,expected:typeof E.type=="string"?E.type:E.type?.description||"value",actual:"undefined",loc:E.loc}));continue}if(S!==void 0){let j=ze(S,E.type,`${f}.${w}`);j&&(E.loc&&(j.loc=E.loc),T.push(j))}}if(T.length>0)return xr(T,f)}let b=G.callStacks||G.debug;b&&ii(f);try{let $=e.apply(this,m);if(y&&t.returns&&!Ae($)){let T=c&&typeof $=="object"&&$!==null?Object.assign({},c,$):$,x=ze(T,t.returns.type,`${f}()`);if(x)return b&&$n(),x}return b&&$n(),$}catch($){return b&&$n(),$e($.message||String($),{path:f,cause:$})}};return Object.defineProperty(p,"name",{value:e.name}),p.__tjs=t,p.__tjs.schema=()=>on(t),p}function mi(e){let t=new Proxy(e,{construct(n,r,s){return Reflect.construct(n,r,s)},apply(n,r,s){return Reflect.construct(n,s)}});Object.defineProperty(t,"name",{value:e.name});for(let n of Object.getOwnPropertyNames(e))n!=="length"&&n!=="name"&&n!=="prototype"&&Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n));return t}function di(){let e={...G},t=e.maxStackSize??At,n=new Array(t).fill(""),r=0,s=0,i=e.maxErrors??jn,o=new Array(i).fill(null),a=0,c=0,l=0,u=0;function f(M){e={...e,...M}}function p(){return{...e}}function m(M){(e.callStacks||e.debug)&&M&&(n[r]=M,r=(r+1)%t,s<t&&s++)}function d(){(e.callStacks||e.debug)&&s>0&&(r=(r-1+t)%t,s--)}function y(){if(s===0)return[];let M=[],D=(r-s+t)%t;for(let B=0;B<s;B++)M.push(n[(D+B)%t]);return M}function b(){e={...gr},r=0,s=0,a=0,c=0,l=0,u=0}function $(){u++}function T(){u>0&&u--}function x(){return u>0}let w=new Map;function E(M,D,B){w.has(M)||w.set(M,new Map),w.get(M).set(D,B)}function S(M,D){let B=typeof M,F;if(M==null)return;if(B==="string")F="String";else if(B==="number")F="Number";else if(B==="boolean")F="Boolean";else if(Array.isArray(M))F="Array";else if(B==="object")F=M.constructor?.name||"Object";else return;let Y=F;for(;Y;){let Qe=w.get(Y);if(Qe?.has(D))return Qe.get(D);if(B==="object"&&!Array.isArray(M)){if(Y=Object.getPrototypeOf(Y===F?M:Object.getPrototypeOf(M))?.constructor?.name,Y==="Object"||Y===F)break}else break}let ce=w.get("Object");if(ce?.has(D))return ce.get(D)}function j(M,D,B){let F=B===null?"null":typeof B,Y=e.callStacks||e.debug?y():void 0,ce=new Ie(`Expected ${D} for '${M}', got ${F}`,M,D,F,Y);if(e.trackErrors!==!1&&(o[a]=ce,a=(a+1)%i,c<i&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${ce.message}`),e.throwTypeErrors)throw ce;return ce}function A(){if(e.trackErrors===!1||c===0)return[];let M=[],D=(a-c+i)%i;for(let B=0;B<c;B++)M.push(o[(D+B)%i]);return M}function k(){let M=A();return a=0,c=0,l=0,M}function v(){return l}function C(M,D){let B={$error:!0,message:M,...D};if((e.callStacks||e.debug)&&s>0){let F=D?.path?[...y(),D.path]:y();B.stack=F}return B}function P(M,D){return M==null?j(`bang.${D}`,"non-null",M):mr(M)?M:M[D]}return{version:fe,MonadicError:Ie,typeError:j,isMonadicError:mr,bang:P,isError:Ae,error:C,composeErrors:xr,typeOf:st,isNativeType:fi,checkType:ze,validateArgs:wr,wrap:Sr,checkFnShape:pi,wrapClass:mi,compareVersions:dr,versionsCompatible:yr,createRuntime:di,configure:f,getConfig:p,pushStack:m,popStack:d,getStack:y,errors:A,clearErrors:k,getErrorCount:v,resetRuntime:b,enterUnsafe:$,exitUnsafe:T,isUnsafeMode:x,validate:ni,infer:_n.infer.bind(_n),Type:te,isRuntimeType:Pe,Union:xn,Generic:tt,Enum:En,FunctionPredicate:vt,Nullable:hn,Optional:bn,TArray:wn,TString:cn,TNumber:ln,TBoolean:un,TInteger:fn,TPositiveInt:pn,TNonEmptyString:mn,TEmail:dn,TUrl:yn,TUuid:gn,TPair:Sn,TRecord:Tn,Is:rt,IsNot:ai,Eq:br,NotEq:ui,TypeOf:ci,toBool:li,tjsEquals:Mt,registerExtension:E,resolveExtension:S}}var Je={version:fe,MonadicError:Ie,typeError:Na,isMonadicError:mr,isError:Ae,error:$e,composeErrors:xr,typeOf:st,isNativeType:fi,checkType:ze,validateArgs:wr,wrap:Sr,checkFnShape:pi,wrapClass:mi,compareVersions:dr,versionsCompatible:yr,configure:Oa,getConfig:Ba,pushStack:ii,popStack:$n,getStack:hr,errors:oi,clearErrors:La,getErrorCount:Fa,resetRuntime:Ua,enterUnsafe:Pa,exitUnsafe:Ia,isUnsafeMode:Da,createRuntime:di,validate:ni,infer:_n.infer.bind(_n),Type:te,isRuntimeType:Pe,Union:xn,Generic:tt,Enum:En,FunctionPredicate:vt,Nullable:hn,Optional:bn,TArray:wn,TString:cn,TNumber:ln,TBoolean:un,TInteger:fn,TPositiveInt:pn,TNonEmptyString:mn,TEmail:dn,TUrl:yn,TUuid:gn,Timestamp:fr,LegalDate:pr,TPair:Sn,TRecord:Tn,Is:rt,IsNot:ai,Eq:br,NotEq:ui,TypeOf:ci,toBool:li};function Tr(){let e=globalThis;if(e.__tjs){let t=e.__tjs.version;if(typeof t!="string")return e.__tjs=Je,Je;let n=dr(fe,t);return n===0||(yr(fe,t)?n>0?(console.info(`TJS runtime: upgrading ${t} \u2192 ${fe}`),e.__tjs=Je):console.info(`TJS runtime: keeping ${t} (newer than ${fe})`):(console.warn(`TJS runtime version conflict: ${t} vs ${fe} (major version mismatch)`),n>0&&(console.warn(`Upgrading to ${fe} - check for breaking changes`),e.__tjs=Je))),e.__tjs}return e.__tjs=Je,Je}function qa(e){return`
|
|
182
182
|
// TJS runtime wrapper (skips unsafe functions)
|
|
183
183
|
if (typeof ${e}.__tjs === 'object' && !${e}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
|
|
184
184
|
${e} = globalThis.__tjs.wrap(${e}, ${e}.__tjs)
|
|
@@ -194,29 +194,29 @@ ${i}}`}return String(e)}function Ja(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,n=>{l
|
|
|
194
194
|
`).length-1;return`
|
|
195
195
|
`.repeat(r)});return t=t.replace(/\/\/[^\n]*/g,""),t}function An(e){let t=e.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return t=t.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),t=t.replace(/^export\s+default\s+/gm,""),t=t.replace(/^export\s+/gm,""),t=t.replace(/^(\s*)((?:const|let|var)\s+\w+\s*=\s*)?await\s+.+$/gm,"$1/* top-level await removed for test execution */"),t}function hi(e){let t=e.replace(/^const __tjs = globalThis\.__tjs\?\.createRuntime\?\.\(\) \?\? globalThis\.__tjs;\n?/m,"");return t=t.replace(/^const \{ [\w, ]+ \} = __tjs \?\? \{\};\n?/m,""),t}function Va(e){if(Object.keys(e).length===0)return"";let t=[];for(let[n,r]of Object.entries(e)){let s=An(r);t.push(`// Resolved import: ${n}`),t.push(s)}return t.join(`
|
|
196
196
|
`)}function gi(e){let t={},n=e.trim();if(!n.startsWith("{")||!n.includes("="))try{return{pattern:new Function(`return ${e}`)(),defaults:t}}catch{return null}let r="",s=0,i=0;for(;i<n.length;){let o=n[i];if(o==="{"||o==="["||o==="(")s++,r+=o,i++;else if(o==="}"||o==="]"||o===")")s--,r+=o,i++;else if(o==="'"||o==='"'||o==="`"){let a=o;for(r+=o,i++;i<n.length&&n[i]!==a;)n[i]==="\\"&&(r+=n[i++]),r+=n[i++];i<n.length&&(r+=n[i++])}else if(s===1&&o==="="){let l=(r.slice(r.lastIndexOf("{")+1).split(",").pop()||"").match(/\s*(\w+)\s*$/);if(l){let u=i+1;for(;u<n.length&&/\s/.test(n[u]);)u++;let f="",p=0;for(;u<n.length;){let m=n[u];if(m==="{"||m==="["||m==="(")p++;else if(m==="}"||m==="]"||m===")"){if(p===0)break;p--}else if(m===","&&p===0)break;f+=m,u++}try{t[l[1]]=new Function(`return ${f.trim()}`)()}catch{}r+=":",i++;continue}r+=o,i++}else r+=o,i++}try{return{pattern:new Function(`return ${r}`)(),defaults:t}}catch{return null}}function bi(e){let t=[],n=Ja(e),r=/(async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,s;for(;(s=r.exec(n))!==null;){let a=!!s[1],c=s[2],l=s[3],u=s[4],f=n.slice(0,s.index).split(`
|
|
197
|
-
`).length;if(u===":!")continue;let p=n.slice(s.index+s[0].length),m=Mn(p);if(!m)continue;let d=Er(l);if(!(l.trim()&&d.length===0))try{let y=gi(m);if(!y)continue;let b=d.map($=>new Function(`return ${$}`)());t.push({funcName:c,args:b,expected:y.pattern,defaults:Object.keys(y.defaults).length>0?y.defaults:void 0,line:f,isAsync:a})}catch{}}let i=/class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/g,o;for(;(o=i.exec(n))!==null;){let a=o[1],c=o.index+o[0].length,l=1,u=c;for(let x=c;x<n.length;x++)if(n[x]==="{")l++;else if(n[x]==="}"&&(l--,l===0)){u=x;break}let f=n.slice(c,u),m=/constructor\s*\(([^)]*)\)/.exec(f);if(!m)continue;let d=m[1],y=Er(d);if(d.trim()&&y.length===0)continue;let b;try{b=y.map(x=>new Function(`return ${x}`)())}catch{continue}let $=/(async\s+)?(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,T;for(;(T=$.exec(f))!==null;){let x=T[2];if(x==="constructor")continue;let
|
|
198
|
-
`).length,k=f.slice(T.index+T[0].length),v=Mn(k);if(!v)continue;let C=Er(E);if(!(E.trim()&&C.length===0))try{let P=gi(v);if(!P)continue;let M=C.map(D=>new Function(`return ${D}`)());t.push({funcName:x,args:M,expected:P.pattern,defaults:Object.keys(P.defaults).length>0?P.defaults:void 0,line:A,isAsync:
|
|
199
|
-
`),p="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((
|
|
200
|
-
// Test ${E}: ${
|
|
197
|
+
`).length;if(u===":!")continue;let p=n.slice(s.index+s[0].length),m=Mn(p);if(!m)continue;let d=Er(l);if(!(l.trim()&&d.length===0))try{let y=gi(m);if(!y)continue;let b=d.map($=>new Function(`return ${$}`)());t.push({funcName:c,args:b,expected:y.pattern,defaults:Object.keys(y.defaults).length>0?y.defaults:void 0,line:f,isAsync:a})}catch{}}let i=/class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/g,o;for(;(o=i.exec(n))!==null;){let a=o[1],c=o.index+o[0].length,l=1,u=c;for(let x=c;x<n.length;x++)if(n[x]==="{")l++;else if(n[x]==="}"&&(l--,l===0)){u=x;break}let f=n.slice(c,u),m=/constructor\s*\(([^)]*)\)/.exec(f);if(!m)continue;let d=m[1],y=Er(d);if(d.trim()&&y.length===0)continue;let b;try{b=y.map(x=>new Function(`return ${x}`)())}catch{continue}let $=/(async\s+)?(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,T;for(;(T=$.exec(f))!==null;){let x=T[2];if(x==="constructor")continue;let w=!!T[1],E=T[3];if(T[4]===":!")continue;let j=c+T.index,A=n.slice(0,j).split(`
|
|
198
|
+
`).length,k=f.slice(T.index+T[0].length),v=Mn(k);if(!v)continue;let C=Er(E);if(!(E.trim()&&C.length===0))try{let P=gi(v);if(!P)continue;let M=C.map(D=>new Function(`return ${D}`)());t.push({funcName:x,args:M,expected:P.pattern,defaults:Object.keys(P.defaults).length>0?P.defaults:void 0,line:A,isAsync:w,className:a,constructorArgs:b})}catch{}}}return t}function xi(e,t,n,r,s={},i=new Map){let o=[];if(e.length===0&&n.length===0)return o;let a=r.match(/^import\s+.*?from\s+['"]([^'"]+)['"];?\s*$/gm)||[],c=a.length>0&&a.some(w=>{let E=w.match(/from\s+['"]([^'"]+)['"]/);return E&&!(E[1]in s)}),l=An(r),u=Va(s),f=t.map(w=>w.body).join(`
|
|
199
|
+
`),p="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((w,E)=>{let S=i.size>0?bt(w.body,i):w.body;return`
|
|
200
|
+
// Test ${E}: ${w.description}
|
|
201
201
|
try {
|
|
202
202
|
${p}
|
|
203
|
-
${
|
|
203
|
+
${S}
|
|
204
204
|
__testResults.push({ idx: ${E}, passed: true });
|
|
205
205
|
} catch (e) {
|
|
206
206
|
__testResults.push({ idx: ${E}, passed: false, isRef: e instanceof ReferenceError, error: e.message || String(e) });
|
|
207
207
|
}
|
|
208
208
|
`}).join(`
|
|
209
|
-
`),d=n.filter(
|
|
210
|
-
// Signature test ${E}: ${
|
|
209
|
+
`),d=n.filter(w=>!w.isAsync),y=n.filter(w=>w.isAsync),b=d.map((w,E)=>{let S=w.className?`${w.className}.${w.funcName}`:w.funcName,j=w.className?`new ${w.className}(${(w.constructorArgs||[]).map(A=>JSON.stringify(A)).join(", ")}).${w.funcName}(${w.args.map(A=>JSON.stringify(A)).join(", ")})`:`${w.funcName}(${w.args.map(A=>JSON.stringify(A)).join(", ")})`;return`
|
|
210
|
+
// Signature test ${E}: ${S}
|
|
211
211
|
try {
|
|
212
212
|
let __actual = ${j};
|
|
213
|
-
const __expected = ${JSON.stringify(
|
|
214
|
-
const __defaults = ${JSON.stringify(
|
|
213
|
+
const __expected = ${JSON.stringify(w.expected)};${w.defaults?`
|
|
214
|
+
const __defaults = ${JSON.stringify(w.defaults)};
|
|
215
215
|
if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
|
|
216
216
|
if (__deepEqual(__actual, __expected)) {
|
|
217
217
|
__sigTestResults.push({ idx: ${E}, passed: true });
|
|
218
218
|
} else {
|
|
219
|
-
__sigTestResults.push({ idx: ${E}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${
|
|
219
|
+
__sigTestResults.push({ idx: ${E}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${S}\\', got ' + __format(__actual) });
|
|
220
220
|
}
|
|
221
221
|
} catch (e) {
|
|
222
222
|
// The function threw on its example inputs \u2014 the example couldn't be
|
|
@@ -309,8 +309,8 @@ ${i}}`}return String(e)}function Ja(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,n=>{l
|
|
|
309
309
|
globalThis.__tjs = __saved_tjs;
|
|
310
310
|
}
|
|
311
311
|
return { testResults: __testResults, sigTestResults: __sigTestResults };
|
|
312
|
-
`;try{let
|
|
313
|
-
`)}var Rn={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_s,storeOp:g.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_u,storeOp:g.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_u,storeOp:g.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:g.i32_load16_s,storeOp:g.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:g.i32_load16_u,storeOp:g.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:g.i32_load,storeOp:g.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:g.i32_load,storeOp:g.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:g.f32_load,storeOp:g.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:g.f64_load,storeOp:g.f64_store}};function Ya(e,t=new Map){let n={params:e,locals:new Map,nextLocalIndex:e.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1,moduleFunctions:t};return e.forEach((r,s)=>{n.locals.set(r.name,{index:s,type:r.type})}),n}function Cn(e,t,n){if(e.locals.has(t))return e.errors.push(`Duplicate local declaration: ${t}`),e.locals.get(t).index;let r=e.nextLocalIndex++;return e.locals.set(t,{index:r,type:n}),e.localTypes.push(n),r}function He(e,t){return e.locals.get(t)}function ot(e,t){switch(e.type){case"ExpressionStatement":{let n=e.expression;return[...V(n,t),g.drop]}case"ReturnStatement":{let n=e;if(t.hasReturn=!0,!n.argument)return[g.return];let r=V(n.argument,t),s=X(n.argument,t);return s==="i32"?r.push(g.f64_convert_i32_s):s==="f32"&&r.push(g.f64_promote_f32),r.push(g.return),r}case"VariableDeclaration":{let n=e,r=[];for(let s of n.declarations){if(s.id.type!=="Identifier"){t.errors.push("Destructuring not supported in WASM blocks");continue}let i=s.id.name,o="f64";s.init&&(o=X(s.init,t));let a=Cn(t,i,o);s.init&&(r.push(...V(s.init,t)),r.push(g.local_set,...U(a)))}return r}case"ForStatement":return Xa(e,t);case"IfStatement":return Qa(e,t);case"BlockStatement":{let n=e,r=[];for(let s of n.body)r.push(...ot(s,t));return r}default:return t.errors.push(`Unsupported statement type: ${e.type}`),[]}}function Xa(e,t){let n=[];return e.init&&(e.init.type==="VariableDeclaration"?n.push(...ot(e.init,t)):n.push(...V(e.init,t))),n.push(g.block,Te.void),n.push(g.loop,Te.void),e.test&&(n.push(...V(e.test,t)),n.push(g.i32_eqz),n.push(g.br_if,1)),t.loopDepth++,e.body&&n.push(...ot(e.body,t)),t.loopDepth--,e.update&&(n.push(...V(e.update,t)),n.push(g.drop)),n.push(g.br,0),n.push(g.end),n.push(g.end),n}function Qa(e,t){let n=[];return n.push(...V(e.test,t)),n.push(g.if,Te.void),n.push(...ot(e.consequent,t)),e.alternate&&(n.push(g.else),n.push(...ot(e.alternate,t))),n.push(g.end),n}function X(e,t){switch(e.type){case"Literal":{let n=e;return typeof n.value=="number"?n.raw&&(n.raw.includes(".")||n.raw.includes("e"))?"f64":Number.isInteger(n.value)&&n.value>=-2147483648&&n.value<=2147483647?"i32":"f64":"f64"}case"Identifier":return He(t,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let n=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(n.operator)||["|","&","^","<<",">>",">>>"].includes(n.operator))return"i32";let r=X(n.left,t),s=X(n.right,t);return r==="v128"||s==="v128"?"v128":r==="f64"||s==="f64"?"f64":r==="f32"||s==="f32"?"f32":"i32"}case"UnaryExpression":{let n=e;return n.operator==="!"?"i32":X(n.argument,t)}case"MemberExpression":{let n=e;if(n.object.type==="Identifier"&&He(t,n.object.name)){let s=t.params.find(i=>i.name===n.object.name);if(s?.arrayType){let i=Rn[s.arrayType];if(i)return i.elementType}}return"f64"}case"CallExpression":{let n=e;if(n.callee.type==="MemberExpression"){let r=n.callee;if(r.object.type==="Identifier"&&r.object.name==="Math")return"f64"}if(n.callee.type==="Identifier"){let r=n.callee.name;if(r==="f32x4_extract_lane")return"f32";if(r.startsWith("f32x4_")||r==="v128_load")return"v128";let s=t.moduleFunctions.get(r);if(s)return s.hasReturn?"f64":"i32"}return"f64"}default:return"f64"}}function V(e,t){switch(e.type){case"Literal":{let n=e;if(typeof n.value=="number"){let r=X(e,t);return r==="i32"?[g.i32_const,...It(n.value|0)]:r==="f32"?[g.f32_const,...jr(n.value)]:[g.f64_const,...de(n.value)]}return t.errors.push(`Unsupported literal type: ${typeof n.value}`),[g.f64_const,...de(0)]}case"Identifier":{let n=e.name,r=He(t,n);return r?[g.local_get,...U(r.index)]:(t.errors.push(`Unknown identifier: ${n}`),[g.f64_const,...de(0)])}case"BinaryExpression":return ec(e,t);case"UnaryExpression":return tc(e,t);case"AssignmentExpression":return nc(e,t);case"UpdateExpression":return rc(e,t);case"MemberExpression":return sc(e,t);case"CallExpression":return oc(e,t);case"SequenceExpression":{let n=e,r=[];for(let s=0;s<n.expressions.length;s++)r.push(...V(n.expressions[s],t)),s<n.expressions.length-1&&r.push(g.drop);return r}default:return t.errors.push(`Unsupported expression type: ${e.type}`),[g.f64_const,...de(0)]}}function ec(e,t){let n=V(e.left,t),r=V(e.right,t),s=X(e,t),i=X(e.left,t),o=X(e.right,t),a=["<",">","<=",">=","==","===","!=","!=="].includes(e.operator),c;i==="f64"||o==="f64"?c="f64":i==="f32"||o==="f32"?c="f32":c="i32",!a&&s==="f64"&&(c="f64");let l=n,u=r;c==="f64"?(i==="i32"?l=[...n,g.f64_convert_i32_s]:i==="f32"&&(l=[...n,g.f64_promote_f32]),o==="i32"?u=[...r,g.f64_convert_i32_s]:o==="f32"&&(u=[...r,g.f64_promote_f32])):c==="f32"&&(i==="i32"&&(l=[...n,g.f32_convert_i32_s]),o==="i32"&&(u=[...r,g.f32_convert_i32_s]));let p={"+":{i32:g.i32_add,f32:g.f32_add,f64:g.f64_add},"-":{i32:g.i32_sub,f32:g.f32_sub,f64:g.f64_sub},"*":{i32:g.i32_mul,f32:g.f32_mul,f64:g.f64_mul},"/":{i32:g.i32_div_s,f32:g.f32_div,f64:g.f64_div},"%":{i32:g.i32_rem_s},"<":{i32:g.i32_lt_s,f32:g.f32_lt,f64:g.f64_lt},">":{i32:g.i32_gt_s,f32:g.f32_gt,f64:g.f64_gt},"<=":{i32:g.i32_le_s,f32:g.f32_le,f64:g.f64_le},">=":{i32:g.i32_ge_s,f32:g.f32_ge,f64:g.f64_ge},"==":{i32:g.i32_eq,f32:g.f32_eq,f64:g.f64_eq},"===":{i32:g.i32_eq,f32:g.f32_eq,f64:g.f64_eq},"!=":{i32:g.i32_ne,f32:g.f32_ne,f64:g.f64_ne},"!==":{i32:g.i32_ne,f32:g.f32_ne,f64:g.f64_ne},"|":{i32:g.i32_or},"&":{i32:g.i32_and},"^":{i32:g.i32_xor},"<<":{i32:g.i32_shl},">>":{i32:g.i32_shr_s},">>>":{i32:g.i32_shr_u}}[e.operator];if(!p)return t.errors.push(`Unsupported operator: ${e.operator}`),[g.f64_const,...de(0)];let m=p[c]??p.f64??p.i32;return m===void 0?(t.errors.push(`Operator ${e.operator} not supported for type ${c}`),[g.f64_const,...de(0)]):[...l,...u,m]}function tc(e,t){let n=V(e.argument,t),r=X(e.argument,t);switch(e.operator){case"-":return r==="i32"?[g.i32_const,0,...n,g.i32_sub]:r==="f32"?[...n,g.f32_neg]:[...n,g.f64_neg];case"!":return[...n,g.i32_eqz];case"~":return[...n,g.i32_const,...It(-1),g.i32_xor];default:return t.errors.push(`Unsupported unary operator: ${e.operator}`),n}}function nc(e,t){if(e.left.type==="MemberExpression")return ic(e.left,e.right,e.operator,t);if(e.left.type!=="Identifier")return t.errors.push("Assignment target must be identifier or array element"),[];let n=e.left.name,r=He(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[];if(e.operator==="="){s.push(...V(e.right,t));let i=X(e.right,t);r.type==="f64"&&i==="i32"?s.push(g.f64_convert_i32_s):r.type==="f64"&&i==="f32"?s.push(g.f64_promote_f32):r.type==="i32"&&i==="f64"?s.push(g.i32_trunc_f64_s):r.type==="i32"&&i==="f32"?s.push(g.i32_trunc_f32_s):r.type==="f32"&&i==="i32"?s.push(g.f32_convert_i32_s):r.type==="f32"&&i==="f64"&&s.push(g.f32_demote_f64)}else{let i=X(e.right,t),o=r.type;i==="f64"||r.type==="f64"?o="f64":(i==="f32"||r.type==="f32")&&(o="f32"),s.push(g.local_get,...U(r.index)),o==="f64"&&r.type==="i32"?s.push(g.f64_convert_i32_s):o==="f64"&&r.type==="f32"?s.push(g.f64_promote_f32):o==="f32"&&r.type==="i32"&&s.push(g.f32_convert_i32_s),s.push(...V(e.right,t)),o==="f64"&&i==="i32"?s.push(g.f64_convert_i32_s):o==="f64"&&i==="f32"?s.push(g.f64_promote_f32):o==="f32"&&i==="i32"&&s.push(g.f32_convert_i32_s);let a=e.operator.slice(0,-1),l={"+":{i32:g.i32_add,f32:g.f32_add,f64:g.f64_add},"-":{i32:g.i32_sub,f32:g.f32_sub,f64:g.f64_sub},"*":{i32:g.i32_mul,f32:g.f32_mul,f64:g.f64_mul},"/":{i32:g.i32_div_s,f32:g.f32_div,f64:g.f64_div}}[a]?.[o];if(!l)return t.errors.push(`Unsupported compound assignment: ${e.operator}`),[];s.push(l),r.type==="i32"&&o==="f64"?s.push(g.i32_trunc_f64_s):r.type==="i32"&&o==="f32"?s.push(g.i32_trunc_f32_s):r.type==="f32"&&o==="f64"&&s.push(g.f32_demote_f64)}return s.push(g.local_tee,...U(r.index)),s}function rc(e,t){if(e.argument.type!=="Identifier")return t.errors.push("Update expression argument must be identifier"),[];let n=e.argument.name,r=He(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[],i=r.type==="i32";return e.prefix?(s.push(g.local_get,...U(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...de(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_tee,...U(r.index))):(s.push(g.local_get,...U(r.index)),s.push(g.local_get,...U(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...de(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_set,...U(r.index))),s}function sc(e,t){if(e.object.type!=="Identifier")return t.errors.push("Array access requires identifier"),[];let n=e.object.name,r=t.params.find(l=>l.name===n);if(!r?.isArray||!r.arrayType)return t.errors.push(`${n} is not a typed array parameter`),[];let s=Rn[r.arrayType];if(!s)return t.errors.push(`Unknown array type: ${r.arrayType}`),[];t.needsMemory=!0;let i=[],o=He(t,n);if(!o)return t.errors.push(`Unknown array: ${n}`),[];if(i.push(g.local_get,...U(o.index)),!e.computed||!e.property)return t.errors.push("Array access requires computed index"),[];let a=V(e.property,t),c=X(e.property,t);return i.push(...a),c==="f64"&&i.push(g.i32_trunc_f64_s),s.bytesPerElement>1&&(i.push(g.i32_const,...It(s.bytesPerElement)),i.push(g.i32_mul)),i.push(g.i32_add),i.push(s.loadOp,0,0),i}function ic(e,t,n,r){if(e.object.type!=="Identifier")return r.errors.push("Array store requires identifier"),[];let s=e.object.name,i=r.params.find(d=>d.name===s);if(!i?.isArray||!i.arrayType)return r.errors.push(`${s} is not a typed array parameter`),[];let o=Rn[i.arrayType];if(!o)return r.errors.push(`Unknown array type: ${i.arrayType}`),[];r.needsMemory=!0;let a=[],c=He(r,s);if(!c)return[];if(!e.computed||!e.property)return r.errors.push("Array store requires computed index"),[];let l=V(e.property,r),u=X(e.property,r),f=()=>{let d=[];return d.push(g.local_get,...U(c.index)),d.push(...l),u==="f64"&&d.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(d.push(g.i32_const,...It(o.bytesPerElement)),d.push(g.i32_mul)),d.push(g.i32_add),d};if(n==="=")a.push(...V(t,r));else{let d=Cn(r,`__addr_${r.nextLocalIndex}`,"i32");a.push(...f()),a.push(g.local_tee,...U(d)),a.push(o.loadOp,0,0),a.push(...V(t,r));let y=X(t,r);o.elementType==="f32"&&y==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&y==="f32"?a.push(g.f64_promote_f32):o.elementType==="f32"&&y==="i32"?a.push(g.f32_convert_i32_s):o.elementType==="f64"&&y==="i32"?a.push(g.f64_convert_i32_s):o.elementType==="i32"&&y==="f64"?a.push(g.i32_trunc_f64_s):o.elementType==="i32"&&y==="f32"&&a.push(g.i32_trunc_f32_s);let b=n.slice(0,-1),$={"+":o.elementType==="i32"?g.i32_add:o.elementType==="f32"?g.f32_add:g.f64_add,"-":o.elementType==="i32"?g.i32_sub:o.elementType==="f32"?g.f32_sub:g.f64_sub,"*":o.elementType==="i32"?g.i32_mul:o.elementType==="f32"?g.f32_mul:g.f64_mul};a.push($[b]??g.f64_add);let T=Cn(r,`__val_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...U(T)),a.push(g.local_get,...U(d)),a.push(g.local_get,...U(T)),a.push(o.storeOp,0,0),a.push(g.local_get,...U(T)),a}let p=X(t,r);o.elementType==="f32"&&p==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&p==="f32"?a.push(g.f64_promote_f32):o.elementType==="i32"&&p==="f64"&&a.push(g.i32_trunc_f64_s);let m=Cn(r,`__tmp_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...U(m)),a.push(g.local_get,...U(c.index)),a.push(...l),u==="f64"&&a.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(a.push(g.i32_const,...It(o.bytesPerElement)),a.push(g.i32_mul)),a.push(g.i32_add),a.push(g.local_get,...U(m)),a.push(o.storeOp,0,0),a.push(g.local_get,...U(m)),a}function oc(e,t){if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"&&n.object.name==="Math"&&n.property.type==="Identifier"){let r=n.property.name;return uc(r,e.arguments,t)}}if(e.callee.type==="Identifier"){let n=e.callee.name;if(n.startsWith("f32x4_")||n.startsWith("v128_"))return lc(n,e.arguments,t);let r=t.moduleFunctions.get(n);if(r)return ac(r,n,e.arguments,t)}return t.errors.push(`Unsupported function call: ${e.callee.type}`),[g.f64_const,...de(0)]}function ac(e,t,n,r){if(n.length!==e.params.length)return r.errors.push(`wasm function ${t} expects ${e.params.length} arguments, got ${n.length}`),[g.f64_const,...de(0)];let s=[];for(let i=0;i<n.length;i++){let o=n[i],a=e.params[i].type,c=X(o,r);if(s.push(...V(o,r)),c!==a){let l=cc(c,a);l===void 0?r.errors.push(`wasm function ${t} param ${i} expects ${a}, got ${c} (no conversion available)`):l!==null&&s.push(l)}}return s.push(g.call,...U(e.index)),e.hasReturn||s.push(g.i32_const,0),s}function cc(e,t){if(e===t)return null;if(!(e==="v128"||t==="v128")&&!(e==="i64"||t==="i64"))switch(`${e}->${t}`){case"f64->i32":return g.i32_trunc_f64_s;case"f32->i32":return g.i32_trunc_f32_s;case"i32->f64":return g.f64_convert_i32_s;case"i32->f32":return g.f32_convert_i32_s;case"f32->f64":return g.f64_promote_f32;case"f64->f32":return g.f32_demote_f64;default:return}}function lc(e,t,n){n.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...V(t[0],n)),X(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...V(t[1],n));let i=X(t[1],n);return i==="f64"?r.push(g.i32_trunc_f64_s):i==="f32"&&r.push(g.i32_trunc_f32_s),r.push(g.i32_add),r.push(...Si(ie.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...V(t[0],n)),X(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...V(t[1],n));let i=X(t[1],n);return i==="f64"?r.push(g.i32_trunc_f64_s):i==="f32"&&r.push(g.i32_trunc_f32_s),r.push(g.i32_add),r.push(...V(t[2],n)),r.push(...Si(ie.v128_store,2,0)),r.push(g.i32_const,0),r}case"f32x4_splat":{r.push(...V(t[0],n));let s=X(t[0],n);return s==="i32"?r.push(g.f32_convert_i32_s):s==="f64"&&r.push(g.f32_demote_f64),r.push(...kr(ie.f32x4_splat)),r}case"f32x4_extract_lane":{r.push(...V(t[0],n));let s=t[1].value;return!Number.isInteger(s)||s<0||s>3?(n.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${s}`),[g.f32_const,...jr(0)]):(r.push(Pt,...U(ie.f32x4_extract_lane),s),r)}case"f32x4_replace_lane":{r.push(...V(t[0],n));let s=t[1].value;if(!Number.isInteger(s)||s<0||s>3)return n.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${s}`),[g.f32_const,...jr(0)];r.push(...V(t[2],n));let i=X(t[2],n);return i==="i32"?r.push(g.f32_convert_i32_s):i==="f64"&&r.push(g.f32_demote_f64),r.push(Pt,...U(ie.f32x4_replace_lane),s),r}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{r.push(...V(t[0],n)),r.push(...V(t[1],n));let s={f32x4_add:ie.f32x4_add,f32x4_sub:ie.f32x4_sub,f32x4_mul:ie.f32x4_mul,f32x4_div:ie.f32x4_div};return r.push(...kr(s[e])),r}case"f32x4_neg":case"f32x4_sqrt":{r.push(...V(t[0],n));let s={f32x4_neg:ie.f32x4_neg,f32x4_sqrt:ie.f32x4_sqrt};return r.push(...kr(s[e])),r}default:return n.errors.push(`Unknown SIMD intrinsic: ${e}`),[g.f64_const,...de(0)]}}function uc(e,t,n){let r=[];for(let a of t){r.push(...V(a,n));let c=X(a,n);c==="i32"?r.push(g.f64_convert_i32_s):c==="f32"&&r.push(g.f64_promote_f32)}let i={abs:g.f64_abs,ceil:g.f64_ceil,floor:g.f64_floor,trunc:g.f64_trunc,sqrt:g.f64_sqrt,min:g.f64_min,max:g.f64_max}[e];return i!==void 0?(r.push(i),r):["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(e)?(n.needsMathImports.add(e),n.errors.push(`Math.${e} requires JS import (not yet implemented)`),[g.f64_const,...de(0)]):(n.errors.push(`Unknown Math method: ${e}`),[g.f64_const,...de(0)])}function Mr(e){let t=e.split(":").map(i=>i.trim()),n=t[0];if(t.length===1)return{name:n,type:"f64"};let r=t[1];return Rn[r]?{name:n,type:"i32",isArray:!0,arrayType:r}:{name:n,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[r]??"f64"}}function fc(e,t){let n=e.map(s=>Te[s.type]),r=t?[1,Te.f64]:[0];return[96,...U(e.length),...n,...r]}function pc(e,t){let n=[];if(t.length>0){let i=t[0],o=1;for(let a=1;a<t.length;a++)t[a]===i?o++:(n.push([...U(o),Te[i]]),i=t[a],o=1);n.push([...U(o),Te[i]])}let s=[...[...U(n.length),...n.flat()],...e,g.end];return[...U(s.length),...s]}function mc(){return Nt(Rt.import,[1,...vr("env"),...vr("memory"),2,0,1])}function Ti(e,t){if(e.length!==t.length)throw new Error("functions and exportNames length mismatch");let n=[0,97,115,109,1,0,0,0],r=e.map(p=>fc(p.params,p.hasReturn)),s=Nt(Rt.type,[...U(r.length),...r.flat()]),o=e.some(p=>p.needsMemory)?mc():[],a=Nt(Rt.function,[...U(e.length),...e.map((p,m)=>U(m)).flat()]),c=Nt(Rt.export,[...U(e.length),...t.map((p,m)=>[...vr(p),0,...U(m)]).flat()]),l=e.map(p=>pc(p.bodyCode,p.localTypes)),u=Nt(Rt.code,[...U(l.length),...l.flat()]),f=[...n,...s];return o.length>0&&f.push(...o),f.push(...a,...c,...u),f}function dc(e,t,n,r,s){return Ti([{params:e,bodyCode:t,localTypes:n,needsMemory:r,hasReturn:s}],["compute"])}function Ei(e,t=new Map){try{let n=e.captures.map(Mr),r;try{let c=`function __wasm__(${n.map(l=>l.name).join(", ")}) { ${e.body} }`;r=wi.parse(c,{ecmaVersion:2022})}catch(c){return{success:!1,warnings:[],error:`Parse error: ${c.message}`}}let i=r.body[0].body.body,o=Ya(n,t),a=[];for(let c of i)a.push(...ot(c,o));return o.errors.length>0?{success:!1,warnings:o.warnings,error:o.errors.join("; ")}:{success:!0,fn:{params:n,bodyCode:a,localTypes:o.localTypes,needsMemory:o.needsMemory,hasReturn:o.hasReturn},wat:Za(a,n,o.localTypes),warnings:o.warnings}}catch(n){return{success:!1,warnings:[],error:n.message}}}function $i(e){let t=Ei(e);if(!t.success||!t.fn)return{bytes:new Uint8Array,warnings:t.warnings,success:!1,error:t.error};let n=dc(t.fn.params,t.fn.bodyCode,t.fn.localTypes,t.fn.needsMemory,t.fn.hasReturn);return{bytes:new Uint8Array(n),warnings:t.warnings,success:!0,needsMemory:t.fn.needsMemory,wat:t.wat}}function _i(e){let t=new Map,n=[];for(let c=0;c<e.length;c++){let l=e[c],u=l.captures.map(Mr),f=l.returnType!==void 0;n.push({params:u,hasReturn:f}),l.name&&t.set(l.name,{index:c,params:u,hasReturn:f})}let r=[],s=[],i=[],o=[];for(let c=0;c<e.length;c++){let l=e[c],u=Ei(l,t);if(o.push(...u.warnings),!u.success||!u.fn){r.push({id:l.id,success:!1,error:u.error}),s.push(yc(n[c])),i.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:!1,wat:`(failed: ${u.error??"unknown error"})`});continue}s.push(u.fn),i.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:u.fn.needsMemory,wat:u.wat??""}),r.push({id:l.id,success:!0,exportIndex:c})}if(s.length===0)return{bytes:new Uint8Array,results:r,exports:[],needsMemory:!1,warnings:o};let a=Ti(s,i.map(c=>c.exportName));return{bytes:new Uint8Array(a),results:r,exports:i,needsMemory:i.some(c=>c.needsMemory),warnings:o}}function yc(e){let t=e.hasReturn?[g.f64_const,...de(0)]:[];return{params:e.params,bodyCode:t,localTypes:[],needsMemory:!1,hasReturn:e.hasReturn}}async function ki(e,t){let n={};t&&(n.env={memory:t});let r=await WebAssembly.compile(e);return WebAssembly.instantiate(r,n)}async function gc(e){let t=$i(e);if(!t.success)return{fn:()=>0,success:!1,error:t.error};try{let n;t.needsMemory&&(n=new WebAssembly.Memory({initial:256}));let s=(await ki(t.bytes,n)).exports.compute,i=e.captures.map(Mr);return i.some(c=>c.isArray)?{fn:(...c)=>{if(!n)throw new Error("Memory not initialized");let l=new Uint8Array(n.buffer),u=0,f=[];for(let m=0;m<i.length;m++){let d=i[m],y=c[m];if(d.isArray&&y instanceof Object&&"buffer"in y){let b=y,$=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);l.set($,u),f.push(u),u+=$.length,u=u+15&-16}else f.push(y)}let p=s(...f);u=0;for(let m=0;m<i.length;m++){let d=i[m],y=c[m];if(d.isArray&&y instanceof Object&&"buffer"in y){let b=y,$=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);$.set(l.slice(u,u+$.length)),u+=$.length,u=u+15&-16}}return p},memory:n,success:!0}:{fn:s,memory:n,success:!0}}catch(n){return{fn:()=>0,success:!1,error:n.message}}}async function ji(e){let t=await gc(e);return t.success?(globalThis[e.id]=t.fn,!0):(console.warn(`WASM compilation failed for ${e.id}:`,t.error),!1)}async function hc(e){let t=0,n=0,r=[];for(let s of e)await ji(s)?t++:(n++,r.push(`Failed to compile ${s.id}`));return{compiled:t,failed:n,errors:r}}function vi(e){let t=_i(e),n=new Map(t.exports.map(u=>[u.id,u])),r=t.results.map(u=>{if(!u.success)return{id:u.id,success:!1,error:u.error};let f=n.get(u.id);return{id:u.id,success:!0,byteLength:t.bytes.length,_exportName:f.exportName}});if(t.exports.length===0)return{code:"",results:r};let s=t.exports.map(u=>{let f=u.wat.split(`
|
|
312
|
+
`;try{let w=new Function("__deepEqual","__format","__typeMatches",x),{testResults:E,sigTestResults:S}=w($r,Ct,_r);for(let j of E){let A=e[j.idx],k=!j.passed&&(j.isRef||c&&j.error&&/is not defined$/.test(j.error));o.push({description:A.description,passed:j.passed,inconclusive:k||void 0,error:j.error,line:A.line})}for(let j of S){let A=d[j.idx],k=!j.passed&&(j.threw||c&&j.error&&/is not defined$/.test(j.error)),v=A.className?`${A.className}.${A.funcName}`:A.funcName;o.push({description:`${v} signature example`,passed:j.passed,inconclusive:k||void 0,error:j.error,isSignatureTest:!0,line:A.line})}}catch(w){let E=`Module could not be executed for testing: ${w.message}`;for(let S of e)o.push({description:S.description,passed:!1,inconclusive:!0,error:E});for(let S of d){let j=S.className?`${S.className}.${S.funcName}`:S.funcName;o.push({description:`${j} signature example`,passed:!1,inconclusive:!0,error:E,isSignatureTest:!0})}}for(let w of y){let E=w.className?`${w.className}.${w.funcName}`:w.funcName;o.push({description:`${E} signature example`,passed:!0,isSignatureTest:!0,line:w.line})}return o}function Mn(e){let t="",n=0,r=!1;for(let i=0;i<e.length;i++){let o=e[i];if(o==="{"||o==="["||o==="("){if(o==="{"&&n===0&&r)break;n++,t+=o,r=!0}else o==="}"||o==="]"||o===")"?(n--,t+=o):/\s/.test(o)?t+=o:(t+=o,r=!0)}return t.trim()||null}function Er(e){if(!e.trim())return[];let t=[],n=Ka(e);for(let r of n){let s=r.trim(),i=s.match(/^\.\.\.(\w+)\s*[:=]\s*(\[.+\])$/);if(i){try{let a=new Function(`return ${i[2]}`)();if(Array.isArray(a))for(let c of a)t.push(JSON.stringify(c))}catch{}continue}if(s.startsWith("..."))continue;let o=s.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(o)t.push(o[2].trim());else return[]}return t}function Ka(e){let t=[],n="",r=0;for(let s of e){if(s==="("||s==="["||s==="{")r++;else if(s===")"||s==="]"||s==="}")r--;else if(s===","&&r===0){t.push(n.trim()),n="";continue}n+=s}return n.trim()&&t.push(n.trim()),t}import*as Si from"acorn";var Te={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},Rt={custom:0,type:1,import:2,function:3,table:4,memory:5,global:6,export:7,start:8,element:9,code:10,data:11},g={unreachable:0,nop:1,block:2,loop:3,if:4,else:5,end:11,br:12,br_if:13,br_table:14,return:15,call:16,call_indirect:17,drop:26,select:27,local_get:32,local_set:33,local_tee:34,global_get:35,global_set:36,i32_load:40,i64_load:41,f32_load:42,f64_load:43,i32_load8_s:44,i32_load8_u:45,i32_load16_s:46,i32_load16_u:47,i32_store:54,i64_store:55,f32_store:56,f64_store:57,i32_store8:58,i32_store16:59,memory_size:63,memory_grow:64,i32_const:65,i64_const:66,f32_const:67,f64_const:68,i32_eqz:69,i32_eq:70,i32_ne:71,i32_lt_s:72,i32_lt_u:73,i32_gt_s:74,i32_gt_u:75,i32_le_s:76,i32_le_u:77,i32_ge_s:78,i32_ge_u:79,i64_eqz:80,i64_eq:81,i64_ne:82,i64_lt_s:83,i64_lt_u:84,i64_gt_s:85,i64_gt_u:86,i64_le_s:87,i64_le_u:88,i64_ge_s:89,i64_ge_u:90,f32_eq:91,f32_ne:92,f32_lt:93,f32_gt:94,f32_le:95,f32_ge:96,f64_eq:97,f64_ne:98,f64_lt:99,f64_gt:100,f64_le:101,f64_ge:102,i32_clz:103,i32_ctz:104,i32_popcnt:105,i32_add:106,i32_sub:107,i32_mul:108,i32_div_s:109,i32_div_u:110,i32_rem_s:111,i32_rem_u:112,i32_and:113,i32_or:114,i32_xor:115,i32_shl:116,i32_shr_s:117,i32_shr_u:118,i32_rotl:119,i32_rotr:120,i64_add:124,i64_sub:125,i64_mul:126,i64_div_s:127,f32_abs:139,f32_neg:140,f32_ceil:141,f32_floor:142,f32_trunc:143,f32_nearest:144,f32_sqrt:145,f32_add:146,f32_sub:147,f32_mul:148,f32_div:149,f32_min:150,f32_max:151,f32_copysign:152,f64_abs:153,f64_neg:154,f64_ceil:155,f64_floor:156,f64_trunc:157,f64_nearest:158,f64_sqrt:159,f64_add:160,f64_sub:161,f64_mul:162,f64_div:163,f64_min:164,f64_max:165,f64_copysign:166,i32_wrap_i64:167,i32_trunc_f32_s:168,i32_trunc_f32_u:169,i32_trunc_f64_s:170,i32_trunc_f64_u:171,i64_extend_i32_s:172,i64_extend_i32_u:173,f32_convert_i32_s:178,f32_convert_i32_u:179,f32_convert_i64_s:180,f32_demote_f64:182,f64_convert_i32_s:183,f64_convert_i32_u:184,f64_convert_i64_s:185,f64_promote_f32:187,i32_reinterpret_f32:188,f32_reinterpret_i32:190,f64_reinterpret_i64:191,i32_extend8_s:192,i32_extend16_s:193},za=Object.fromEntries(Object.entries(g).map(([e,t])=>[t,e.replace(/_/g,".")])),Pt=253,ie={v128_load:0,v128_store:11,v128_const:12,f32x4_splat:19,f32x4_extract_lane:31,f32x4_replace_lane:32,f32x4_neg:225,f32x4_sqrt:227,f32x4_add:228,f32x4_sub:229,f32x4_mul:230,f32x4_div:231},Ga=Object.fromEntries(Object.entries(ie).map(([e,t])=>[t,e.replace(/_/g,".")]));function kr(e){return[Pt,...U(e)]}function wi(e,t,n){return[Pt,...U(e),...U(t),...U(n)]}function U(e){let t=[];do{let n=e&127;e>>>=7,e!==0&&(n|=128),t.push(n)}while(e!==0);return t}function It(e){let t=[],n=!0;for(;n;){let r=e&127;e>>=7,e===0&&(r&64)===0||e===-1&&(r&64)!==0?n=!1:r|=128,t.push(r)}return t}function jr(e){let t=new ArrayBuffer(4);return new Float32Array(t)[0]=e,[...new Uint8Array(t)]}function de(e){let t=new ArrayBuffer(8);return new Float64Array(t)[0]=e,[...new Uint8Array(t)]}function vr(e){let t=new TextEncoder().encode(e);return[...U(t.length),...t]}function Nt(e,t){return[e,...U(t.length),...t]}function De(e,t){let n=0,r=0,s=t;for(;s<e.length;){let i=e[s];if(n|=(i&127)<<r,s++,(i&128)===0)break;r+=7}return[n,s-t]}function Ha(e,t){let n=new ArrayBuffer(8),r=new Uint8Array(n);for(let s=0;s<8;s++)r[s]=e[t+s];return new Float64Array(n)[0]}function Za(e,t,n){let r=[],s=1,i=()=>" ".repeat(s),o=t.map((l,u)=>`(param $${l.name} ${l.type})`).join(" "),a=n.map((l,u)=>`(local $L${t.length+u} ${l})`).join(" ");r.push(`(func (export "compute") ${o} (result f64)`),a&&r.push(` ${a}`);let c=0;for(;c<e.length;){let l=e[c],u=za[l]||`unknown(0x${l.toString(16)})`;if(c++,l===g.local_get||l===g.local_set||l===g.local_tee){let[f,p]=De(e,c);c+=p;let m=f<t.length?`$${t[f].name}`:`$L${f}`;r.push(`${i()}${u} ${m}`)}else if(l===g.br||l===g.br_if){let[f,p]=De(e,c);c+=p,r.push(`${i()}${u} ${f}`)}else if(l===g.i32_const){let[f,p]=De(e,c);c+=p,r.push(`${i()}i32.const ${f}`)}else if(l===g.f32_const){let f=new ArrayBuffer(4),p=new Uint8Array(f);for(let d=0;d<4;d++)p[d]=e[c+d];let m=new Float32Array(f)[0];c+=4,r.push(`${i()}f32.const ${m}`)}else if(l===g.f64_const){let f=Ha(e,c);c+=8,r.push(`${i()}f64.const ${f}`)}else if(l===g.block||l===g.loop){let f=e[c];c++,r.push(`${i()}${u}${f===Te.void?"":` (result ${f===Te.f64?"f64":"i32"})`}`),s++}else if(l===g.if){let f=e[c];c++,r.push(`${i()}if${f===Te.void?"":` (result ${f===Te.f64?"f64":"i32"})`}`),s++}else if(l===g.else)s--,r.push(`${i()}else`),s++;else if(l===g.end)s=Math.max(1,s-1),r.push(`${i()}end`);else if(l===g.f64_load||l===g.f64_store||l===g.f32_load||l===g.f32_store||l===g.i32_load||l===g.i32_store){let[f,p]=De(e,c);c+=p;let[m,d]=De(e,c);c+=d,r.push(`${i()}${u}${m?` offset=${m}`:""}`)}else if(l===Pt){let[f,p]=De(e,c);c+=p;let m=Ga[f]||`simd.unknown(0x${f.toString(16)})`;if(f===ie.v128_load||f===ie.v128_store){let[d,y]=De(e,c);c+=y;let[b,$]=De(e,c);c+=$,r.push(`${i()}${m}${b?` offset=${b}`:""}`)}else if(f===ie.v128_const){let d=e.slice(c,c+16);c+=16,r.push(`${i()}v128.const ${d.map(y=>"0x"+y.toString(16).padStart(2,"0")).join(" ")}`)}else if(f===ie.f32x4_extract_lane||f===ie.f32x4_replace_lane){let d=e[c];c++,r.push(`${i()}${m} ${d}`)}else r.push(`${i()}${m}`)}else r.push(`${i()}${u}`)}return r.push(")"),r.join(`
|
|
313
|
+
`)}var Rn={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_s,storeOp:g.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_u,storeOp:g.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_u,storeOp:g.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:g.i32_load16_s,storeOp:g.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:g.i32_load16_u,storeOp:g.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:g.i32_load,storeOp:g.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:g.i32_load,storeOp:g.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:g.f32_load,storeOp:g.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:g.f64_load,storeOp:g.f64_store}};function Ya(e,t=new Map){let n={params:e,locals:new Map,nextLocalIndex:e.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1,moduleFunctions:t};return e.forEach((r,s)=>{n.locals.set(r.name,{index:s,type:r.type})}),n}function Cn(e,t,n){if(e.locals.has(t))return e.errors.push(`Duplicate local declaration: ${t}`),e.locals.get(t).index;let r=e.nextLocalIndex++;return e.locals.set(t,{index:r,type:n}),e.localTypes.push(n),r}function He(e,t){return e.locals.get(t)}function ot(e,t){switch(e.type){case"ExpressionStatement":{let n=e.expression;return[...V(n,t),g.drop]}case"ReturnStatement":{let n=e;if(t.hasReturn=!0,!n.argument)return[g.return];let r=V(n.argument,t),s=X(n.argument,t);return s==="i32"?r.push(g.f64_convert_i32_s):s==="f32"&&r.push(g.f64_promote_f32),r.push(g.return),r}case"VariableDeclaration":{let n=e,r=[];for(let s of n.declarations){if(s.id.type!=="Identifier"){t.errors.push("Destructuring not supported in WASM blocks");continue}let i=s.id.name,o="f64";s.init&&(o=X(s.init,t));let a=Cn(t,i,o);s.init&&(r.push(...V(s.init,t)),r.push(g.local_set,...U(a)))}return r}case"ForStatement":return Xa(e,t);case"IfStatement":return Qa(e,t);case"BlockStatement":{let n=e,r=[];for(let s of n.body)r.push(...ot(s,t));return r}default:return t.errors.push(`Unsupported statement type: ${e.type}`),[]}}function Xa(e,t){let n=[];return e.init&&(e.init.type==="VariableDeclaration"?n.push(...ot(e.init,t)):n.push(...V(e.init,t))),n.push(g.block,Te.void),n.push(g.loop,Te.void),e.test&&(n.push(...V(e.test,t)),n.push(g.i32_eqz),n.push(g.br_if,1)),t.loopDepth++,e.body&&n.push(...ot(e.body,t)),t.loopDepth--,e.update&&(n.push(...V(e.update,t)),n.push(g.drop)),n.push(g.br,0),n.push(g.end),n.push(g.end),n}function Qa(e,t){let n=[];return n.push(...V(e.test,t)),n.push(g.if,Te.void),n.push(...ot(e.consequent,t)),e.alternate&&(n.push(g.else),n.push(...ot(e.alternate,t))),n.push(g.end),n}function X(e,t){switch(e.type){case"Literal":{let n=e;return typeof n.value=="number"?n.raw&&(n.raw.includes(".")||n.raw.includes("e"))?"f64":Number.isInteger(n.value)&&n.value>=-2147483648&&n.value<=2147483647?"i32":"f64":"f64"}case"Identifier":return He(t,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let n=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(n.operator)||["|","&","^","<<",">>",">>>"].includes(n.operator))return"i32";let r=X(n.left,t),s=X(n.right,t);return r==="v128"||s==="v128"?"v128":r==="f64"||s==="f64"?"f64":r==="f32"||s==="f32"?"f32":"i32"}case"UnaryExpression":{let n=e;return n.operator==="!"?"i32":X(n.argument,t)}case"MemberExpression":{let n=e;if(n.object.type==="Identifier"&&He(t,n.object.name)){let s=t.params.find(i=>i.name===n.object.name);if(s?.arrayType){let i=Rn[s.arrayType];if(i)return i.elementType}}return"f64"}case"CallExpression":{let n=e;if(n.callee.type==="MemberExpression"){let r=n.callee;if(r.object.type==="Identifier"&&r.object.name==="Math")return"f64"}if(n.callee.type==="Identifier"){let r=n.callee.name;if(r==="f32x4_extract_lane")return"f32";if(r.startsWith("f32x4_")||r==="v128_load")return"v128";let s=t.moduleFunctions.get(r);if(s)return s.hasReturn?"f64":"i32"}return"f64"}default:return"f64"}}function V(e,t){switch(e.type){case"Literal":{let n=e;if(typeof n.value=="number"){let r=X(e,t);return r==="i32"?[g.i32_const,...It(n.value|0)]:r==="f32"?[g.f32_const,...jr(n.value)]:[g.f64_const,...de(n.value)]}return t.errors.push(`Unsupported literal type: ${typeof n.value}`),[g.f64_const,...de(0)]}case"Identifier":{let n=e.name,r=He(t,n);return r?[g.local_get,...U(r.index)]:(t.errors.push(`Unknown identifier: ${n}`),[g.f64_const,...de(0)])}case"BinaryExpression":return ec(e,t);case"UnaryExpression":return tc(e,t);case"AssignmentExpression":return nc(e,t);case"UpdateExpression":return rc(e,t);case"MemberExpression":return sc(e,t);case"CallExpression":return oc(e,t);case"SequenceExpression":{let n=e,r=[];for(let s=0;s<n.expressions.length;s++)r.push(...V(n.expressions[s],t)),s<n.expressions.length-1&&r.push(g.drop);return r}default:return t.errors.push(`Unsupported expression type: ${e.type}`),[g.f64_const,...de(0)]}}function ec(e,t){let n=V(e.left,t),r=V(e.right,t),s=X(e,t),i=X(e.left,t),o=X(e.right,t),a=["<",">","<=",">=","==","===","!=","!=="].includes(e.operator),c;i==="f64"||o==="f64"?c="f64":i==="f32"||o==="f32"?c="f32":c="i32",!a&&s==="f64"&&(c="f64");let l=n,u=r;c==="f64"?(i==="i32"?l=[...n,g.f64_convert_i32_s]:i==="f32"&&(l=[...n,g.f64_promote_f32]),o==="i32"?u=[...r,g.f64_convert_i32_s]:o==="f32"&&(u=[...r,g.f64_promote_f32])):c==="f32"&&(i==="i32"&&(l=[...n,g.f32_convert_i32_s]),o==="i32"&&(u=[...r,g.f32_convert_i32_s]));let p={"+":{i32:g.i32_add,f32:g.f32_add,f64:g.f64_add},"-":{i32:g.i32_sub,f32:g.f32_sub,f64:g.f64_sub},"*":{i32:g.i32_mul,f32:g.f32_mul,f64:g.f64_mul},"/":{i32:g.i32_div_s,f32:g.f32_div,f64:g.f64_div},"%":{i32:g.i32_rem_s},"<":{i32:g.i32_lt_s,f32:g.f32_lt,f64:g.f64_lt},">":{i32:g.i32_gt_s,f32:g.f32_gt,f64:g.f64_gt},"<=":{i32:g.i32_le_s,f32:g.f32_le,f64:g.f64_le},">=":{i32:g.i32_ge_s,f32:g.f32_ge,f64:g.f64_ge},"==":{i32:g.i32_eq,f32:g.f32_eq,f64:g.f64_eq},"===":{i32:g.i32_eq,f32:g.f32_eq,f64:g.f64_eq},"!=":{i32:g.i32_ne,f32:g.f32_ne,f64:g.f64_ne},"!==":{i32:g.i32_ne,f32:g.f32_ne,f64:g.f64_ne},"|":{i32:g.i32_or},"&":{i32:g.i32_and},"^":{i32:g.i32_xor},"<<":{i32:g.i32_shl},">>":{i32:g.i32_shr_s},">>>":{i32:g.i32_shr_u}}[e.operator];if(!p)return t.errors.push(`Unsupported operator: ${e.operator}`),[g.f64_const,...de(0)];let m=p[c]??p.f64??p.i32;return m===void 0?(t.errors.push(`Operator ${e.operator} not supported for type ${c}`),[g.f64_const,...de(0)]):[...l,...u,m]}function tc(e,t){let n=V(e.argument,t),r=X(e.argument,t);switch(e.operator){case"-":return r==="i32"?[g.i32_const,0,...n,g.i32_sub]:r==="f32"?[...n,g.f32_neg]:[...n,g.f64_neg];case"!":return[...n,g.i32_eqz];case"~":return[...n,g.i32_const,...It(-1),g.i32_xor];default:return t.errors.push(`Unsupported unary operator: ${e.operator}`),n}}function nc(e,t){if(e.left.type==="MemberExpression")return ic(e.left,e.right,e.operator,t);if(e.left.type!=="Identifier")return t.errors.push("Assignment target must be identifier or array element"),[];let n=e.left.name,r=He(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[];if(e.operator==="="){s.push(...V(e.right,t));let i=X(e.right,t);r.type==="f64"&&i==="i32"?s.push(g.f64_convert_i32_s):r.type==="f64"&&i==="f32"?s.push(g.f64_promote_f32):r.type==="i32"&&i==="f64"?s.push(g.i32_trunc_f64_s):r.type==="i32"&&i==="f32"?s.push(g.i32_trunc_f32_s):r.type==="f32"&&i==="i32"?s.push(g.f32_convert_i32_s):r.type==="f32"&&i==="f64"&&s.push(g.f32_demote_f64)}else{let i=X(e.right,t),o=r.type;i==="f64"||r.type==="f64"?o="f64":(i==="f32"||r.type==="f32")&&(o="f32"),s.push(g.local_get,...U(r.index)),o==="f64"&&r.type==="i32"?s.push(g.f64_convert_i32_s):o==="f64"&&r.type==="f32"?s.push(g.f64_promote_f32):o==="f32"&&r.type==="i32"&&s.push(g.f32_convert_i32_s),s.push(...V(e.right,t)),o==="f64"&&i==="i32"?s.push(g.f64_convert_i32_s):o==="f64"&&i==="f32"?s.push(g.f64_promote_f32):o==="f32"&&i==="i32"&&s.push(g.f32_convert_i32_s);let a=e.operator.slice(0,-1),l={"+":{i32:g.i32_add,f32:g.f32_add,f64:g.f64_add},"-":{i32:g.i32_sub,f32:g.f32_sub,f64:g.f64_sub},"*":{i32:g.i32_mul,f32:g.f32_mul,f64:g.f64_mul},"/":{i32:g.i32_div_s,f32:g.f32_div,f64:g.f64_div}}[a]?.[o];if(!l)return t.errors.push(`Unsupported compound assignment: ${e.operator}`),[];s.push(l),r.type==="i32"&&o==="f64"?s.push(g.i32_trunc_f64_s):r.type==="i32"&&o==="f32"?s.push(g.i32_trunc_f32_s):r.type==="f32"&&o==="f64"&&s.push(g.f32_demote_f64)}return s.push(g.local_tee,...U(r.index)),s}function rc(e,t){if(e.argument.type!=="Identifier")return t.errors.push("Update expression argument must be identifier"),[];let n=e.argument.name,r=He(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[],i=r.type==="i32";return e.prefix?(s.push(g.local_get,...U(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...de(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_tee,...U(r.index))):(s.push(g.local_get,...U(r.index)),s.push(g.local_get,...U(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...de(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_set,...U(r.index))),s}function sc(e,t){if(e.object.type!=="Identifier")return t.errors.push("Array access requires identifier"),[];let n=e.object.name,r=t.params.find(l=>l.name===n);if(!r?.isArray||!r.arrayType)return t.errors.push(`${n} is not a typed array parameter`),[];let s=Rn[r.arrayType];if(!s)return t.errors.push(`Unknown array type: ${r.arrayType}`),[];t.needsMemory=!0;let i=[],o=He(t,n);if(!o)return t.errors.push(`Unknown array: ${n}`),[];if(i.push(g.local_get,...U(o.index)),!e.computed||!e.property)return t.errors.push("Array access requires computed index"),[];let a=V(e.property,t),c=X(e.property,t);return i.push(...a),c==="f64"&&i.push(g.i32_trunc_f64_s),s.bytesPerElement>1&&(i.push(g.i32_const,...It(s.bytesPerElement)),i.push(g.i32_mul)),i.push(g.i32_add),i.push(s.loadOp,0,0),i}function ic(e,t,n,r){if(e.object.type!=="Identifier")return r.errors.push("Array store requires identifier"),[];let s=e.object.name,i=r.params.find(d=>d.name===s);if(!i?.isArray||!i.arrayType)return r.errors.push(`${s} is not a typed array parameter`),[];let o=Rn[i.arrayType];if(!o)return r.errors.push(`Unknown array type: ${i.arrayType}`),[];r.needsMemory=!0;let a=[],c=He(r,s);if(!c)return[];if(!e.computed||!e.property)return r.errors.push("Array store requires computed index"),[];let l=V(e.property,r),u=X(e.property,r),f=()=>{let d=[];return d.push(g.local_get,...U(c.index)),d.push(...l),u==="f64"&&d.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(d.push(g.i32_const,...It(o.bytesPerElement)),d.push(g.i32_mul)),d.push(g.i32_add),d};if(n==="=")a.push(...V(t,r));else{let d=Cn(r,`__addr_${r.nextLocalIndex}`,"i32");a.push(...f()),a.push(g.local_tee,...U(d)),a.push(o.loadOp,0,0),a.push(...V(t,r));let y=X(t,r);o.elementType==="f32"&&y==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&y==="f32"?a.push(g.f64_promote_f32):o.elementType==="f32"&&y==="i32"?a.push(g.f32_convert_i32_s):o.elementType==="f64"&&y==="i32"?a.push(g.f64_convert_i32_s):o.elementType==="i32"&&y==="f64"?a.push(g.i32_trunc_f64_s):o.elementType==="i32"&&y==="f32"&&a.push(g.i32_trunc_f32_s);let b=n.slice(0,-1),$={"+":o.elementType==="i32"?g.i32_add:o.elementType==="f32"?g.f32_add:g.f64_add,"-":o.elementType==="i32"?g.i32_sub:o.elementType==="f32"?g.f32_sub:g.f64_sub,"*":o.elementType==="i32"?g.i32_mul:o.elementType==="f32"?g.f32_mul:g.f64_mul};a.push($[b]??g.f64_add);let T=Cn(r,`__val_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...U(T)),a.push(g.local_get,...U(d)),a.push(g.local_get,...U(T)),a.push(o.storeOp,0,0),a.push(g.local_get,...U(T)),a}let p=X(t,r);o.elementType==="f32"&&p==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&p==="f32"?a.push(g.f64_promote_f32):o.elementType==="i32"&&p==="f64"&&a.push(g.i32_trunc_f64_s);let m=Cn(r,`__tmp_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...U(m)),a.push(g.local_get,...U(c.index)),a.push(...l),u==="f64"&&a.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(a.push(g.i32_const,...It(o.bytesPerElement)),a.push(g.i32_mul)),a.push(g.i32_add),a.push(g.local_get,...U(m)),a.push(o.storeOp,0,0),a.push(g.local_get,...U(m)),a}function oc(e,t){if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"&&n.object.name==="Math"&&n.property.type==="Identifier"){let r=n.property.name;return uc(r,e.arguments,t)}}if(e.callee.type==="Identifier"){let n=e.callee.name;if(n.startsWith("f32x4_")||n.startsWith("v128_"))return lc(n,e.arguments,t);let r=t.moduleFunctions.get(n);if(r)return ac(r,n,e.arguments,t)}return t.errors.push(`Unsupported function call: ${e.callee.type}`),[g.f64_const,...de(0)]}function ac(e,t,n,r){if(n.length!==e.params.length)return r.errors.push(`wasm function ${t} expects ${e.params.length} arguments, got ${n.length}`),[g.f64_const,...de(0)];let s=[];for(let i=0;i<n.length;i++){let o=n[i],a=e.params[i].type,c=X(o,r);if(s.push(...V(o,r)),c!==a){let l=cc(c,a);l===void 0?r.errors.push(`wasm function ${t} param ${i} expects ${a}, got ${c} (no conversion available)`):l!==null&&s.push(l)}}return s.push(g.call,...U(e.index)),e.hasReturn||s.push(g.i32_const,0),s}function cc(e,t){if(e===t)return null;if(!(e==="v128"||t==="v128")&&!(e==="i64"||t==="i64"))switch(`${e}->${t}`){case"f64->i32":return g.i32_trunc_f64_s;case"f32->i32":return g.i32_trunc_f32_s;case"i32->f64":return g.f64_convert_i32_s;case"i32->f32":return g.f32_convert_i32_s;case"f32->f64":return g.f64_promote_f32;case"f64->f32":return g.f32_demote_f64;default:return}}function lc(e,t,n){n.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...V(t[0],n)),X(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...V(t[1],n));let i=X(t[1],n);return i==="f64"?r.push(g.i32_trunc_f64_s):i==="f32"&&r.push(g.i32_trunc_f32_s),r.push(g.i32_add),r.push(...wi(ie.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...V(t[0],n)),X(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...V(t[1],n));let i=X(t[1],n);return i==="f64"?r.push(g.i32_trunc_f64_s):i==="f32"&&r.push(g.i32_trunc_f32_s),r.push(g.i32_add),r.push(...V(t[2],n)),r.push(...wi(ie.v128_store,2,0)),r.push(g.i32_const,0),r}case"f32x4_splat":{r.push(...V(t[0],n));let s=X(t[0],n);return s==="i32"?r.push(g.f32_convert_i32_s):s==="f64"&&r.push(g.f32_demote_f64),r.push(...kr(ie.f32x4_splat)),r}case"f32x4_extract_lane":{r.push(...V(t[0],n));let s=t[1].value;return!Number.isInteger(s)||s<0||s>3?(n.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${s}`),[g.f32_const,...jr(0)]):(r.push(Pt,...U(ie.f32x4_extract_lane),s),r)}case"f32x4_replace_lane":{r.push(...V(t[0],n));let s=t[1].value;if(!Number.isInteger(s)||s<0||s>3)return n.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${s}`),[g.f32_const,...jr(0)];r.push(...V(t[2],n));let i=X(t[2],n);return i==="i32"?r.push(g.f32_convert_i32_s):i==="f64"&&r.push(g.f32_demote_f64),r.push(Pt,...U(ie.f32x4_replace_lane),s),r}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{r.push(...V(t[0],n)),r.push(...V(t[1],n));let s={f32x4_add:ie.f32x4_add,f32x4_sub:ie.f32x4_sub,f32x4_mul:ie.f32x4_mul,f32x4_div:ie.f32x4_div};return r.push(...kr(s[e])),r}case"f32x4_neg":case"f32x4_sqrt":{r.push(...V(t[0],n));let s={f32x4_neg:ie.f32x4_neg,f32x4_sqrt:ie.f32x4_sqrt};return r.push(...kr(s[e])),r}default:return n.errors.push(`Unknown SIMD intrinsic: ${e}`),[g.f64_const,...de(0)]}}function uc(e,t,n){let r=[];for(let a of t){r.push(...V(a,n));let c=X(a,n);c==="i32"?r.push(g.f64_convert_i32_s):c==="f32"&&r.push(g.f64_promote_f32)}let i={abs:g.f64_abs,ceil:g.f64_ceil,floor:g.f64_floor,trunc:g.f64_trunc,sqrt:g.f64_sqrt,min:g.f64_min,max:g.f64_max}[e];return i!==void 0?(r.push(i),r):["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(e)?(n.needsMathImports.add(e),n.errors.push(`Math.${e} requires JS import (not yet implemented)`),[g.f64_const,...de(0)]):(n.errors.push(`Unknown Math method: ${e}`),[g.f64_const,...de(0)])}function Mr(e){let t=e.split(":").map(i=>i.trim()),n=t[0];if(t.length===1)return{name:n,type:"f64"};let r=t[1];return Rn[r]?{name:n,type:"i32",isArray:!0,arrayType:r}:{name:n,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[r]??"f64"}}function fc(e,t){let n=e.map(s=>Te[s.type]),r=t?[1,Te.f64]:[0];return[96,...U(e.length),...n,...r]}function pc(e,t){let n=[];if(t.length>0){let i=t[0],o=1;for(let a=1;a<t.length;a++)t[a]===i?o++:(n.push([...U(o),Te[i]]),i=t[a],o=1);n.push([...U(o),Te[i]])}let s=[...[...U(n.length),...n.flat()],...e,g.end];return[...U(s.length),...s]}function mc(){return Nt(Rt.import,[1,...vr("env"),...vr("memory"),2,0,1])}function Ti(e,t){if(e.length!==t.length)throw new Error("functions and exportNames length mismatch");let n=[0,97,115,109,1,0,0,0],r=e.map(p=>fc(p.params,p.hasReturn)),s=Nt(Rt.type,[...U(r.length),...r.flat()]),o=e.some(p=>p.needsMemory)?mc():[],a=Nt(Rt.function,[...U(e.length),...e.map((p,m)=>U(m)).flat()]),c=Nt(Rt.export,[...U(e.length),...t.map((p,m)=>[...vr(p),0,...U(m)]).flat()]),l=e.map(p=>pc(p.bodyCode,p.localTypes)),u=Nt(Rt.code,[...U(l.length),...l.flat()]),f=[...n,...s];return o.length>0&&f.push(...o),f.push(...a,...c,...u),f}function dc(e,t,n,r,s){return Ti([{params:e,bodyCode:t,localTypes:n,needsMemory:r,hasReturn:s}],["compute"])}function Ei(e,t=new Map){try{let n=e.captures.map(Mr),r;try{let c=`function __wasm__(${n.map(l=>l.name).join(", ")}) { ${e.body} }`;r=Si.parse(c,{ecmaVersion:2022})}catch(c){return{success:!1,warnings:[],error:`Parse error: ${c.message}`}}let i=r.body[0].body.body,o=Ya(n,t),a=[];for(let c of i)a.push(...ot(c,o));return o.errors.length>0?{success:!1,warnings:o.warnings,error:o.errors.join("; ")}:{success:!0,fn:{params:n,bodyCode:a,localTypes:o.localTypes,needsMemory:o.needsMemory,hasReturn:o.hasReturn},wat:Za(a,n,o.localTypes),warnings:o.warnings}}catch(n){return{success:!1,warnings:[],error:n.message}}}function $i(e){let t=Ei(e);if(!t.success||!t.fn)return{bytes:new Uint8Array,warnings:t.warnings,success:!1,error:t.error};let n=dc(t.fn.params,t.fn.bodyCode,t.fn.localTypes,t.fn.needsMemory,t.fn.hasReturn);return{bytes:new Uint8Array(n),warnings:t.warnings,success:!0,needsMemory:t.fn.needsMemory,wat:t.wat}}function _i(e){let t=new Map,n=[];for(let c=0;c<e.length;c++){let l=e[c],u=l.captures.map(Mr),f=l.returnType!==void 0;n.push({params:u,hasReturn:f}),l.name&&t.set(l.name,{index:c,params:u,hasReturn:f})}let r=[],s=[],i=[],o=[];for(let c=0;c<e.length;c++){let l=e[c],u=Ei(l,t);if(o.push(...u.warnings),!u.success||!u.fn){r.push({id:l.id,success:!1,error:u.error}),s.push(yc(n[c])),i.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:!1,wat:`(failed: ${u.error??"unknown error"})`});continue}s.push(u.fn),i.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:u.fn.needsMemory,wat:u.wat??""}),r.push({id:l.id,success:!0,exportIndex:c})}if(s.length===0)return{bytes:new Uint8Array,results:r,exports:[],needsMemory:!1,warnings:o};let a=Ti(s,i.map(c=>c.exportName));return{bytes:new Uint8Array(a),results:r,exports:i,needsMemory:i.some(c=>c.needsMemory),warnings:o}}function yc(e){let t=e.hasReturn?[g.f64_const,...de(0)]:[];return{params:e.params,bodyCode:t,localTypes:[],needsMemory:!1,hasReturn:e.hasReturn}}async function ki(e,t){let n={};t&&(n.env={memory:t});let r=await WebAssembly.compile(e);return WebAssembly.instantiate(r,n)}async function gc(e){let t=$i(e);if(!t.success)return{fn:()=>0,success:!1,error:t.error};try{let n;t.needsMemory&&(n=new WebAssembly.Memory({initial:256}));let s=(await ki(t.bytes,n)).exports.compute,i=e.captures.map(Mr);return i.some(c=>c.isArray)?{fn:(...c)=>{if(!n)throw new Error("Memory not initialized");let l=new Uint8Array(n.buffer),u=0,f=[];for(let m=0;m<i.length;m++){let d=i[m],y=c[m];if(d.isArray&&y instanceof Object&&"buffer"in y){let b=y,$=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);l.set($,u),f.push(u),u+=$.length,u=u+15&-16}else f.push(y)}let p=s(...f);u=0;for(let m=0;m<i.length;m++){let d=i[m],y=c[m];if(d.isArray&&y instanceof Object&&"buffer"in y){let b=y,$=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);$.set(l.slice(u,u+$.length)),u+=$.length,u=u+15&-16}}return p},memory:n,success:!0}:{fn:s,memory:n,success:!0}}catch(n){return{fn:()=>0,success:!1,error:n.message}}}async function ji(e){let t=await gc(e);return t.success?(globalThis[e.id]=t.fn,!0):(console.warn(`WASM compilation failed for ${e.id}:`,t.error),!1)}async function hc(e){let t=0,n=0,r=[];for(let s of e)await ji(s)?t++:(n++,r.push(`Failed to compile ${s.id}`));return{compiled:t,failed:n,errors:r}}function vi(e){let t=_i(e),n=new Map(t.exports.map(u=>[u.id,u])),r=t.results.map(u=>{if(!u.success)return{id:u.id,success:!1,error:u.error};let f=n.get(u.id);return{id:u.id,success:!0,byteLength:t.bytes.length,_exportName:f.exportName}});if(t.exports.length===0)return{code:"",results:r};let s=t.exports.map(u=>{let f=u.wat.split(`
|
|
314
314
|
`).map(p=>` * ${p}`);return`/**
|
|
315
315
|
* WASM: ${u.id} (export: ${u.exportName})
|
|
316
316
|
${f.join(`
|
|
@@ -345,36 +345,36 @@ for(const{id,n,c,m}of __wasmExports){
|
|
|
345
345
|
const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;ab.set(mv.slice(off,off+ab.length));off+=ab.length}}
|
|
346
346
|
return r};
|
|
347
347
|
}})();
|
|
348
|
-
`.trim(),l=r.map(({_exportName:u,...f})=>f);return{code:c,results:l}}import*as Mi from"acorn";function Cr(e,t){let n=[];function r(i){n.push({start:i.start,end:i.end,newText:`__tjs.toBool(${pe(i,t)})`})}function s(i){if(!(!i||typeof i!="object"||!("type"in i))){switch(i.type){case"IfStatement":case"WhileStatement":case"DoWhileStatement":{let o=i;r(o.test),o.consequent&&s(o.consequent),o.alternate&&s(o.alternate),o.body&&s(o.body);return}case"ForStatement":{let o=i;o.init&&s(o.init),o.test&&r(o.test),o.update&&s(o.update),o.body&&s(o.body);return}case"ConditionalExpression":{let o=i;n.push({start:o.start,end:o.end,newText:`__tjs.toBool(${pe(o.test,t)})?(${pe(o.consequent,t)}):(${pe(o.alternate,t)})`});return}case"LogicalExpression":{let o=i;if(o.operator==="&&"||o.operator==="||"){n.push({start:o.start,end:o.end,newText:pe(i,t)});return}break}case"UnaryExpression":{let o=i;if(o.operator==="!"){n.push({start:o.start,end:o.end,newText:`!__tjs.toBool(${pe(o.argument,t)})`});return}break}case"CallExpression":{let o=i;if(o.callee&&o.callee.type==="Identifier"&&o.callee.name==="Boolean"&&o.arguments.length===1&&o.arguments[0].type!=="SpreadElement"){n.push({start:o.start,end:o.end,newText:`__tjs.toBool(${pe(o.arguments[0],t)})`});return}break}}bc(i,s)}}return s(e),xc(n)}function pe(e,t){if(!e)return"";switch(e.type){case"LogicalExpression":{let n=e,r=pe(n.left,t),s=pe(n.right,t);return n.operator==="&&"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?(${s}):__tjs__t)(${r})`:n.operator==="||"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?__tjs__t:(${s}))(${r})`:`(${r})??(${s})`}case"ConditionalExpression":{let n=e;return`__tjs.toBool(${pe(n.test,t)})?(${pe(n.consequent,t)}):(${pe(n.alternate,t)})`}case"UnaryExpression":{let n=e;return n.operator==="!"?`!__tjs.toBool(${pe(n.argument,t)})`:Ar(e,t)}case"CallExpression":{let n=e;return n.callee&&n.callee.type==="Identifier"&&n.callee.name==="Boolean"&&n.arguments.length===1&&n.arguments[0].type!=="SpreadElement"?`__tjs.toBool(${pe(n.arguments[0],t)})`:Ar(e,t)}}return Ar(e,t)}function Ar(e,t){let n=e.start,r=e.end;if(typeof n!="number"||typeof r!="number")return"";let s=Ai(e);if(s.length===0)return t.slice(n,r);s.sort((a,c)=>a.start-c.start);let i="",o=n;for(let a of s)a.start<o||(a.start>o&&(i+=t.slice(o,a.start)),i+=pe(a,t),o=a.end);return o<r&&(i+=t.slice(o,r)),i}function bc(e,t){for(let n of Ai(e))t(n)}function Ai(e){let t=[];for(let n in e){if(n==="type"||n==="start"||n==="end"||n==="loc")continue;let r=e[n];if(Array.isArray(r))for(let s of r)s&&typeof s=="object"&&typeof s.type=="string"&&t.push(s);else r&&typeof r=="object"&&typeof r.type=="string"&&t.push(r)}return t}function xc(e){let t=[...e].sort((s,i)=>s.start-i.start||i.end-s.end),n=[],r=-1;for(let s of t)s.start>=r&&(n.push(s),r=s.end);return n}function Rr(e){let t;try{t=Mi.parse(`function __wrap__(){${e}}`,{ecmaVersion:2022,sourceType:"module",locations:!1})}catch{return e}let n=`function __wrap__(){${e}}`,r=Cr(t,n);if(r.length===0)return e;r.sort((a,c)=>c.start-a.start);let s=n;for(let a of r)s=s.slice(0,a.start)+a.newText+s.slice(a.end);return s.slice("function __wrap__(){".length,s.length-"}".length)}function
|
|
348
|
+
`.trim(),l=r.map(({_exportName:u,...f})=>f);return{code:c,results:l}}import*as Mi from"acorn";function Cr(e,t){let n=[];function r(i){n.push({start:i.start,end:i.end,newText:`__tjs.toBool(${pe(i,t)})`})}function s(i){if(!(!i||typeof i!="object"||!("type"in i))){switch(i.type){case"IfStatement":case"WhileStatement":case"DoWhileStatement":{let o=i;r(o.test),o.consequent&&s(o.consequent),o.alternate&&s(o.alternate),o.body&&s(o.body);return}case"ForStatement":{let o=i;o.init&&s(o.init),o.test&&r(o.test),o.update&&s(o.update),o.body&&s(o.body);return}case"ConditionalExpression":{let o=i;n.push({start:o.start,end:o.end,newText:`__tjs.toBool(${pe(o.test,t)})?(${pe(o.consequent,t)}):(${pe(o.alternate,t)})`});return}case"LogicalExpression":{let o=i;if(o.operator==="&&"||o.operator==="||"){n.push({start:o.start,end:o.end,newText:pe(i,t)});return}break}case"UnaryExpression":{let o=i;if(o.operator==="!"){n.push({start:o.start,end:o.end,newText:`!__tjs.toBool(${pe(o.argument,t)})`});return}break}case"CallExpression":{let o=i;if(o.callee&&o.callee.type==="Identifier"&&o.callee.name==="Boolean"&&o.arguments.length===1&&o.arguments[0].type!=="SpreadElement"){n.push({start:o.start,end:o.end,newText:`__tjs.toBool(${pe(o.arguments[0],t)})`});return}break}}bc(i,s)}}return s(e),xc(n)}function pe(e,t){if(!e)return"";switch(e.type){case"LogicalExpression":{let n=e,r=pe(n.left,t),s=pe(n.right,t);return n.operator==="&&"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?(${s}):__tjs__t)(${r})`:n.operator==="||"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?__tjs__t:(${s}))(${r})`:`(${r})??(${s})`}case"ConditionalExpression":{let n=e;return`__tjs.toBool(${pe(n.test,t)})?(${pe(n.consequent,t)}):(${pe(n.alternate,t)})`}case"UnaryExpression":{let n=e;return n.operator==="!"?`!__tjs.toBool(${pe(n.argument,t)})`:Ar(e,t)}case"CallExpression":{let n=e;return n.callee&&n.callee.type==="Identifier"&&n.callee.name==="Boolean"&&n.arguments.length===1&&n.arguments[0].type!=="SpreadElement"?`__tjs.toBool(${pe(n.arguments[0],t)})`:Ar(e,t)}}return Ar(e,t)}function Ar(e,t){let n=e.start,r=e.end;if(typeof n!="number"||typeof r!="number")return"";let s=Ai(e);if(s.length===0)return t.slice(n,r);s.sort((a,c)=>a.start-c.start);let i="",o=n;for(let a of s)a.start<o||(a.start>o&&(i+=t.slice(o,a.start)),i+=pe(a,t),o=a.end);return o<r&&(i+=t.slice(o,r)),i}function bc(e,t){for(let n of Ai(e))t(n)}function Ai(e){let t=[];for(let n in e){if(n==="type"||n==="start"||n==="end"||n==="loc")continue;let r=e[n];if(Array.isArray(r))for(let s of r)s&&typeof s=="object"&&typeof s.type=="string"&&t.push(s);else r&&typeof r=="object"&&typeof r.type=="string"&&t.push(r)}return t}function xc(e){let t=[...e].sort((s,i)=>s.start-i.start||i.end-s.end),n=[],r=-1;for(let s of t)s.start>=r&&(n.push(s),r=s.end);return n}function Rr(e){let t;try{t=Mi.parse(`function __wrap__(){${e}}`,{ecmaVersion:2022,sourceType:"module",locations:!1})}catch{return e}let n=`function __wrap__(){${e}}`,r=Cr(t,n);if(r.length===0)return e;r.sort((a,c)=>c.start-a.start);let s=n;for(let a of r)s=s.slice(0,a.start)+a.newText+s.slice(a.end);return s.slice("function __wrap__(){".length,s.length-"}".length)}function wc(e,t,n){if(!e||!t)return!1;let r=new RegExp(`function\\s+${t}\\s*\\([^)]*?\\b${n}\\s*([=:])`,"s"),s=e.match(r);return s?s[1]===":":!1}function Sc(e,t,n,r,s){let i=[],o=St(t,e),a={},c=!1,l,u;if(e.params.length===1&&(e.params[0].type==="ObjectPattern"||e.params[0].type==="AssignmentPattern"&&e.params[0].left.type==="ObjectPattern")){c=!0;let m=e.params[0],d=m.type==="ObjectPattern"?m:m.left,y=Ne(d,n);if(y.type.kind==="object"&&y.type.destructuredParams){l={},u=new Set;for(let[b,$]of Object.entries(y.type.destructuredParams))a[b]={...$,description:o.params[b]},l[b]=$.type,$.required&&u.add(b)}}else for(let m of e.params)if(m.type==="Identifier"){let d=Ne(m,n);a[m.name]={...d,required:n.has(m.name),description:o.params[m.name]}}else if(m.type==="AssignmentPattern"&&m.left.type==="Identifier"){let d=Ne(m,n),y=wc(s||"",e.id?.name||"",m.left.name);a[m.left.name]={...d,required:y,default:y?null:d.example??d.default,description:o.params[m.left.name]}}else if(m.type==="ObjectPattern"){let d=Ne(m,n);if(d.type.kind==="object"&&d.type.destructuredParams)for(let[y,b]of Object.entries(d.type.destructuredParams))a[y]={...b,description:o.params[y]}}else if(m.type==="RestElement"&&m.argument?.type==="Identifier"){let d=m.argument.name,y=t.match(new RegExp(`\\.\\.\\.${d}\\s*:\\s*([^)]+?)\\s*\\)`));if(y)try{let b=Ci(y[1].trim(),0,{ecmaVersion:2022}),$=ae(b);a[d]={name:d,type:$,required:!1,description:o.params[d]}}catch{a[d]={name:d,type:{kind:"array"},required:!1,description:o.params[d]}}else a[d]={name:d,type:{kind:"array"},required:!1,description:o.params[d]}}let f;if(r)try{let m=r.includes("=")?Ni(r):r,d=Ci(m,0,{ecmaVersion:2022});f=ae(d)}catch{f={kind:"any"},i.push(`Could not parse return type: ${r}`)}return{types:{name:e.id?.name||"anonymous",params:a,returns:f,description:o.description,isDestructuredParam:c,destructuredShape:l,destructuredRequired:u},warnings:i}}function Tc(e,t,n){let r=[],s=n?`${n}:`:"",i=n?`${n}:${e}`:e;if(t.isDestructuredParam&&t.destructuredShape){let a=t.destructuredShape,c=t.destructuredRequired||new Set,l=Object.keys(a);if(l.length===0)return null;for(let u of l)r.push(`if (${u} instanceof Error) return ${u};`);for(let[u,f]of Object.entries(a)){let p=c.has(u),m=`${s}${e}.${u}`,d=Nn(u,f);if(d){let y=f.kind;p?r.push(`if (${d}) return __tjs.typeError('${m}', '${y}', ${u});`):r.push(`if (${u} !== undefined && ${d}) return __tjs.typeError('${m}', '${y}', ${u});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
|
|
349
349
|
`),suffix:"__tjs.popStack();"})}let o=Object.entries(t.params);if(o.length===0)return null;for(let[a]of o)r.push(`if (${a} instanceof Error) return ${a};`);for(let[a,c]of o){let l=`${s}${e}.${a}`;c.type.kind==="array"&&r.push(`if (Array.isArray(${a})) { for (const __i of ${a}) { if (__i instanceof Error && __i.path !== undefined) return __i } }`);let u=Nn(a,c.type);if(u){let f=c.type.kind==="union"?c.type.members.map(p=>p.kind).join(" | "):c.type.kind;c.required?r.push(`if (${u}) return __tjs.typeError('${l}', '${f}', ${a});`):r.push(`if (${a} !== undefined && ${u}) return __tjs.typeError('${l}', '${f}', ${a});`)}if(c.type.kind==="function"){let f=Mc(a,c.type,l);f&&(r.push(f),r.push(`if (${a} instanceof Error) return ${a};`))}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
|
|
350
|
-
`),suffix:"__tjs.popStack();"})}function Ni(e){let t="",n=0;for(let r=0;r<e.length;r++){let s=e[r];if(s==="{"||s==="["||s==="(")n++,t+=s;else if(s==="}"||s==="]"||s===")")n--,t+=s;else if(s==="'"||s==='"'||s==="`"){for(t+=s,r++;r<e.length&&e[r]!==s;)e[r]==="\\"&&(t+=e[r++]),t+=e[r++];r<e.length&&(t+=e[r])}else n===1&&s==="="&&e[r-1]!=="!"&&e[r+1]!=="="?t+=":":t+=s}return t}function Ec(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*(:[?!]?)\\s*`,"g").exec(e);if(!r)return null;let s=e.slice(r.index+r[0].length);return Mn(s)}function $c(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*:([?!]?)`,"g").exec(e);if(!r)return;let s=r[1];if(s==="?")return"safe";if(s==="!")return"unsafe"}function _c(e){let t=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return t?t[1].trim():void 0}function kc(e,t){let n=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${t}\\s*\\(`,"m"),r=e.match(n);return r?parseInt(r[1],10):void 0}function Ot(e,t={}){let{filename:n="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=t,o=[];e=nr(e);let c=_c(e)||n,{code:l,tests:u,mocks:f,testRunner:p}=jt(e),{ast:m,originalSource:d,requiredParams:y,unsafeFunctions:b}=xe(l,{filename:n,colonShorthand:!0,dialect:t.dialect,moduleLoader:t.moduleLoader}),$=jc(m),T=en(l,{dialect:t.dialect,moduleLoader:t.moduleLoader,filename:n});for(let I of u)I.body=gt(I.body),T.tjsModes.tjsEquals&&(I.body=ht(I.body)),T.tjsModes.tjsStandard&&(I.body=Rr(I.body));for(let I of f)I.body=gt(I.body),T.tjsModes.tjsEquals&&(I.body=ht(I.body)),T.tjsModes.tjsStandard&&(I.body=Rr(I.body));let x={},
|
|
351
|
-
${Yn}`}),!as&&!cs){let ne=`${et.file}:${et.line}`,le=Tc(J,ke,ne);le&&I.body&&I.body.start!==void 0&&(
|
|
350
|
+
`),suffix:"__tjs.popStack();"})}function Ni(e){let t="",n=0;for(let r=0;r<e.length;r++){let s=e[r];if(s==="{"||s==="["||s==="(")n++,t+=s;else if(s==="}"||s==="]"||s===")")n--,t+=s;else if(s==="'"||s==='"'||s==="`"){for(t+=s,r++;r<e.length&&e[r]!==s;)e[r]==="\\"&&(t+=e[r++]),t+=e[r++];r<e.length&&(t+=e[r])}else n===1&&s==="="&&e[r-1]!=="!"&&e[r+1]!=="="?t+=":":t+=s}return t}function Ec(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*(:[?!]?)\\s*`,"g").exec(e);if(!r)return null;let s=e.slice(r.index+r[0].length);return Mn(s)}function $c(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*:([?!]?)`,"g").exec(e);if(!r)return;let s=r[1];if(s==="?")return"safe";if(s==="!")return"unsafe"}function _c(e){let t=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return t?t[1].trim():void 0}function kc(e,t){let n=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${t}\\s*\\(`,"m"),r=e.match(n);return r?parseInt(r[1],10):void 0}function Ot(e,t={}){let{filename:n="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=t,o=[];e=nr(e);let c=_c(e)||n,{code:l,tests:u,mocks:f,testRunner:p}=jt(e),{ast:m,originalSource:d,requiredParams:y,unsafeFunctions:b}=xe(l,{filename:n,colonShorthand:!0,dialect:t.dialect,moduleLoader:t.moduleLoader}),$=jc(m),T=en(l,{dialect:t.dialect,moduleLoader:t.moduleLoader,filename:n});for(let I of u)I.body=gt(I.body),T.tjsModes.tjsEquals&&(I.body=ht(I.body)),T.tjsModes.tjsStandard&&(I.body=Rr(I.body));for(let I of f)I.body=gt(I.body),T.tjsModes.tjsEquals&&(I.body=ht(I.body)),T.tjsModes.tjsStandard&&(I.body=Rr(I.body));let x={},w=[],E=[];for(let I of $){let J=I.id?.name||"anonymous",W=Ec(l,J),be;if(W&&W.includes("="))try{let ne=W.matchAll(/(\w+)\s*=\s*/g),le=Ni(W),je=new Function(`return ${le}`)(),ue={};for(let Xn of ne){let dt=Xn[1];dt in je&&(ue[dt]=je[dt])}Object.keys(ue).length>0&&(be=ue)}catch{}let{types:ke,warnings:xo}=Sc(I,d,y,W,l);o.push(...xo),x[J]=ke;for(let ne of I.params)if(ne.type==="AssignmentPattern"&&ne.left.type==="Identifier"&&ne.right.type==="Identifier"){let le=ne.left.name,je=ne.right.name,ue=x[je];if(ue&&ke.params[le]){let Xn=Object.entries(ue.params).map(([$o,_o])=>({name:$o,type:_o.type})),dt=ue.returns??{kind:"any"};ke.params[le].type={kind:"function",params:Xn,returns:dt}}}for(let ne of I.params)if(ne.type==="AssignmentPattern"){let le=ne.left?.name||ne.left?.value,je=le?ke.params[le]:null;if(je?.required&&je.default===null)E.push({start:ne.left.end,end:ne.right.end});else{let ue=ne.right;ue.type==="BinaryExpression"&&ue.operator==="|"&&E.push({start:ue.left.end,end:ue.end})}}let as=T.moduleSafety==="none"||b.has(J),wo=T.safeFunctions.has(J),So=$c(l,J),To=kc(e,J),et={file:c,line:To??I.loc?.start.line??0,column:I.loc?.start.column??0},Eo={unsafe:as,safe:wo,returnSafety:So},cs=T.polymorphicNames.has(J),Yn;if(cs){let ne=[];for(let je of $){let ue=je.id?.name||"";ue.startsWith(J+"$")&&ne.push(ue)}let le={polymorphic:!0,variants:ne};et&&(le.source=`${et.file}:${et.line}`),Yn=`${J}.__tjs = ${JSON.stringify(le,null,2)}`}else Yn=vc(J,ke,Eo,{debug:s,source:et,returnDefaults:be});if(w.push({position:I.end,text:`
|
|
351
|
+
${Yn}`}),!as&&!cs){let ne=`${et.file}:${et.line}`,le=Tc(J,ke,ne);le&&I.body&&I.body.start!==void 0&&(w.push({position:I.body.start+1,text:`
|
|
352
352
|
${le.preamble}
|
|
353
|
-
`}),le.suffix&&
|
|
353
|
+
`}),le.suffix&&w.push({position:I.body.end-1,text:`
|
|
354
354
|
${le.suffix}
|
|
355
|
-
`}))}}if(T.tjsModes.tjsStandard){let I=Cr(m,T.source);for(let J of I)E.push({start:J.start,end:J.end}),
|
|
355
|
+
`}))}}if(T.tjsModes.tjsStandard){let I=Cr(m,T.source);for(let J of I)E.push({start:J.start,end:J.end}),w.push({position:J.start,text:J.newText})}E.sort((I,J)=>J.start-I.start);let S=T.source;for(let{start:I,end:J}of E)S=S.slice(0,I)+S.slice(J);for(let I of w){let J=0;for(let W of E)W.start<I.position&&(J+=W.end-W.start);I.position-=J}w.sort((I,J)=>J.position-I.position);for(let{position:I,text:J}of w)S=S.slice(0,I)+J+S.slice(I);let j=S.includes("__tjs.typeError("),A=S.includes("__tjs.pushStack("),k=S.includes("Is("),v=S.includes("IsNot("),C=S.includes("Eq("),P=S.includes("NotEq("),M=S.includes("TypeOf("),D=/\bType\(/.test(S),B=/\bGeneric\(/.test(S),F=/\bFunctionPredicate\(/.test(S),Y=/\bEnum\(/.test(S),ce=/\bUnion\(/.test(S),Qe=S.includes("__tjs.bang("),zt=S.includes("__tjs.toBool("),Zn=S.includes("__tjs.checkFnShape("),is=T.tjsModes.tjsSafeEval;if(j||A||k||v||C||P||M||D||B||F||Y||ce||Qe||zt||Zn||is){let I=[];j&&I.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),A&&I.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),C&&I.push("function Eq(a,b){if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a===null||a===undefined)&&(b===null||b===undefined))return true;return false}"),P&&I.push("function NotEq(a,b){return!Eq(a,b)}"),M&&I.push("function TypeOf(v){return v===null?'null':typeof v}"),k&&I.push("const tjsEquals=Symbol.for('tjs.equals');function Is(a,b){if(a!=null&&typeof a==='object'&&typeof a[tjsEquals]==='function')return a[tjsEquals](b);if(b!=null&&typeof b==='object'&&typeof b[tjsEquals]==='function')return b[tjsEquals](a);if(a!=null&&typeof a==='object'&&typeof a.Equals==='function')return a.Equals(b);if(b!=null&&typeof b==='object'&&typeof b.Equals==='function')return b.Equals(a);if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a==null)&&(b==null))return true;if(a==null||b==null)return false;if(typeof a!==typeof b)return false;if(typeof a!=='object')return false;if(a instanceof Set&&b instanceof Set){if(a.size!==b.size)return false;for(const v of a)if(!b.has(v))return false;return true}if(a instanceof Map&&b instanceof Map){if(a.size!==b.size)return false;for(const[k,v]of a)if(!b.has(k)||!Is(v,b.get(k)))return false;return true}if(a instanceof Date&&b instanceof Date)return a.getTime()===b.getTime();if(a instanceof RegExp&&b instanceof RegExp)return a.toString()===b.toString();if(Array.isArray(a)&&Array.isArray(b)){if(a.length!==b.length)return false;return a.every((v,i)=>Is(v,b[i]))}if(Array.isArray(a)!==Array.isArray(b))return false;const ka=Object.keys(a),kb=Object.keys(b);if(ka.length!==kb.length)return false;return ka.every(k=>Is(a[k],b[k]))}"),v&&I.push("function IsNot(a,b){return!Is(a,b)}"),D&&I.push("function Type(d,p,e){const t={description:d,__runtimeType:true};if(typeof p==='function'){t.check=p;t.default=e??null}else{const ex=e??p;t.default=ex;t.check=v=>{if(ex===null)return true;return typeof v===typeof ex}}return t}"),B&&I.push("function Generic(tp,pred,d){const f=(...args)=>{const t={description:d||'generic',__runtimeType:true,check:v=>pred(v,...args)};return t};f.__runtimeType=true;f.description=d;return f}"),F&&I.push("function FunctionPredicate(n,s,b){if(Array.isArray(s)&&b){const f=(...a)=>FunctionPredicate(n,b(...a));f.typeParamNames=s.map(p=>Array.isArray(p)?p[0]:p);f.description=n;f.__runtimeType=true;return f}const spec=typeof s==='function'?{}:s||{};return{description:n,params:spec.params||{},returns:spec.returns,returnContract:spec.returnContract||'assertReturns',check:v=>typeof v==='function',__runtimeType:true}}"),Y&&I.push("function Enum(d,m){const vals=typeof m==='object'?Object.values(m):[];return{description:d,check:v=>vals.includes(v),values:vals,__runtimeType:true}}"),ce&&I.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),zt&&I.push("function toBool(v){if(v instanceof Boolean||v instanceof Number||v instanceof String)return Boolean(v.valueOf());return Boolean(v)}"),Zn&&(j||I.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),I.push(`function checkFnShape(fn,expectedParams,expectedReturn,path){if(typeof fn!=='function')return fn;const meta=fn.__tjs;if(!meta||!meta.params)return fn;const entries=Object.entries(meta.params);for(let i=0;i<expectedParams.length;i++){const e=expectedParams[i];if(e==='any')continue;const a=entries[i];if(!a)continue;const ak=a[1]&&a[1].type&&a[1].type.kind;if(!ak||ak==='any')continue;if(ak!==e)return new MonadicError("Expected (...arg"+i+": "+e+", ...) for '"+path+"', but callback declares arg"+i+" as "+ak,path+"(arg"+i+")",e,ak)}if(expectedReturn!=='any'&&meta.returns){const ar=(meta.returns.type&&meta.returns.type.kind)||meta.returns.kind;if(ar&&ar!=='any'&&ar!==expectedReturn)return new MonadicError("Expected callback returning "+expectedReturn+" for '"+path+"', but callback returns "+ar,path+"(return)",expectedReturn,ar)}return fn}`)),Qe&&(j||I.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),I.push("function bang(o,p){if(o===null||o===undefined)return typeError('bang.'+p,'non-null',o);if(isMonadicError(o))return o;return o[p]}"));let J=I.length>0?I.join(`;
|
|
356
356
|
`)+`;
|
|
357
|
-
`:"",
|
|
358
|
-
`+
|
|
359
|
-
`+
|
|
357
|
+
`:"",W=[];j&&W.push("typeError","isMonadicError"),A&&W.push("pushStack","popStack","getStack"),C&&W.push("Eq"),P&&W.push("NotEq"),M&&W.push("TypeOf"),k&&W.push("Is","tjsEquals"),v&&W.push("IsNot"),D&&W.push("Type"),B&&W.push("Generic"),F&&W.push("FunctionPredicate"),Y&&W.push("Enum"),ce&&W.push("Union"),zt&&W.push("toBool"),Zn&&(W.push("checkFnShape"),j||W.push("typeError","isMonadicError")),Qe&&(W.push("bang"),j||W.push("typeError","isMonadicError"));let be=W.length>0?`{${W.join(",")}}`:"undefined";S=J+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${be};
|
|
358
|
+
`+S}is&&(S=`import { Eval, SafeFunction } from 'tjs-lang';
|
|
359
|
+
`+S);let mt;if(r){let I=bi(e);mt=xi(u,f,I,S,i,T.extensions);let J=mt.filter(W=>!W.passed&&!W.inconclusive);if(J.length>0&&r===!0){let W=J.map(be=>{if(be.isSignatureTest)return` Function signature example is inconsistent:
|
|
360
360
|
${be.error}`;let ke=be.line?` (line ${be.line})`:"";return` Test '${be.description}'${ke} failed:
|
|
361
361
|
${be.error}`});throw new Error(`Transpile-time test failures:
|
|
362
|
-
${
|
|
363
|
-
`)}`)}}if(r==="only")return{code:"",types:x,metadata:x,testResults:mt,testCount:mt?.length};let os;if(T.wasmBlocks.length>0){let I=vi(T.wasmBlocks);I.code&&(
|
|
364
|
-
`+w),os=I.results}return{code:w,types:x,metadata:x,warnings:o.length>0?o:void 0,testRunner:u.length>0?p:void 0,testCount:u.length>0?u.length:void 0,testResults:mt,wasmCompiled:os}}function jc(e){let t=[];for(let n of e.body)n.type==="FunctionDeclaration"?t.push(n):(n.type==="ExportNamedDeclaration"&&n.declaration?.type==="FunctionDeclaration"||n.type==="ExportDefaultDeclaration"&&n.declaration?.type==="FunctionDeclaration")&&t.push(n.declaration);return t}function Dt(e){let t={kind:e.kind};return e.nullable&&(t.nullable=!0),e.items&&(t.items=Dt(e.items)),e.shape&&(t.shape=Object.fromEntries(Object.entries(e.shape).map(([n,r])=>[n,Dt(r)]))),e.members&&(t.members=e.members.map(Dt)),t}function vc(e,t,n={},r={}){let s={};for(let[o,a]of Object.entries(t.params))s[o]={type:Dt(a.type),required:a.required},a.default!==void 0&&(s[o].default=a.default),a.description&&(s[o].description=a.description);let i={params:s};if(t.returns&&(i.returns={type:Dt(t.returns)},r.returnDefaults&&(i.returns.defaults=r.returnDefaults),n.returnSafety==="safe"?i.safeReturn=!0:n.returnSafety==="unsafe"&&(i.unsafeReturn=!0)),t.description&&(i.description=t.description),n.unsafe&&(i.unsafe=!0),n.safe&&(i.safe=!0),r.source){let{file:o,line:a}=r.source;i.source=`${o}:${a}`}return`${e}.__tjs = ${JSON.stringify(i,null,2)}`}function Nn(e,t){let n;switch(t.kind){case"string":n=`typeof ${e} !== 'string'`;break;case"number":n=`typeof ${e} !== 'number'`;break;case"integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}))`;break;case"non-negative-integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}) || ${e} < 0)`;break;case"boolean":n=`typeof ${e} !== 'boolean'`;break;case"null":return`${e} !== null`;case"undefined":return`${e} !== undefined`;case"array":{let r=t.items&&t.items.kind!=="any"?Nn("__a",t.items):null;r?n=`(!Array.isArray(${e}) || ${e}.some(__a => ${r}))`:n=`!Array.isArray(${e})`;break}case"object":n=`(typeof ${e} !== 'object' || ${e} === null || Array.isArray(${e}))`;break;case"function":n=`typeof ${e} !== 'function'`;break;case"union":{let r=t.members.map(s=>Nn(e,s)).filter(s=>s!==null);if(r.length===0)return null;n=`(${r.join(" && ")})`;break}case"any":return null;default:return null}return n&&t.nullable&&(n=`(${e} !== null && ${n})`),n}var Ri=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function Mc(e,t,n){let r=t.params??[],s=t.returns??{kind:"any"},i=r.map(l=>l.type?.kind),o=i.every(l=>l&&Ri.has(l))&&Ri.has(s.kind),a=i.some(l=>l!=="any")||s.kind!=="any";if(!o||!a)return null;let c=JSON.stringify(i);return`if (typeof ${e} === 'function') ${e} = __tjs.checkFnShape(${e}, ${c}, '${s.kind}', '${n}');`}function _e(e){let t;switch(e.kind){case"string":t="string";break;case"number":case"integer":case"non-negative-integer":t="number";break;case"boolean":t="boolean";break;case"null":return"null";case"undefined":return"undefined";case"any":t="any";break;case"array":if(e.items){let n=_e(e.items);t=n.includes("|")?`(${n})[]`:`${n}[]`}else t="any[]";break;case"object":e.shape&&Object.keys(e.shape).length>0?t=`{ ${Object.entries(e.shape).map(([r,s])=>`${r}: ${_e(s)}`).join("; ")} }`:t="Record<string, any>";break;case"union":if(e.members&&e.members.length>0)return e.members.map(_e).join(" | ");t="any";break;case"function":{let n=e.params??[],r=e.returns?_e(e.returns):"any";t=`(${n.map(i=>`${i.name}: ${_e(i.type)}`).join(", ")}) => ${r}`;break}default:t="any"}return e.nullable?`${t} | null`:t}function Ac(e,t,n,r){let s=Object.entries(t.params).map(([a,c])=>{let l=!c.required,u=_e(c.type);return l?`${a}?: ${u}`:`${a}: ${u}`}).join(", "),i=t.returns?_e(t.returns):"any";return`${n?r?"export default function":"export declare function":"declare function"} ${e}(${s}): ${i};`}function Cc(e){let t=new Map,n,r=/^[ \t]*export\s+(default\s+)?function\s+(\w+)/gm;for(;(n=r.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let s=/^[ \t]*export\s+(default\s+)?class\s+(\w+)/gm;for(;(n=s.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let i=/^[ \t]*export\s+(default\s+)?(?:const|let|var)\s+(\w+)/gm;for(;(n=i.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let o=/^[ \t]*export\s+Type\s+(\w+)/gm;for(;(n=o.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let a=/^[ \t]*export\s+Generic\s+(\w+)/gm;for(;(n=a.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let c=/^[ \t]*export\s+FunctionPredicate\s+(\w+)/gm;for(;(n=c.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let l=/^[ \t]*export\s*\{([^}]+)\}/gm;for(;(n=l.exec(e))!==null;){let u=n[1].split(",").map(f=>f.trim().split(/\s+as\s+/));for(let f of u){let p=f.length>1?f[1]:f[0];p&&/^\w+$/.test(p)&&t.set(p,{exported:!0,isDefault:!1})}}return t}function Rc(e){let t=new Map,n=/^[ \t]*(?:export\s+)?FunctionPredicate\s+(\w+)\s*(?:<([^>]+)>)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2],o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u;i&&(u=i.split(",").map(y=>y.trim()));let f=[],p=l.match(/params\s*:\s*\{([^}]*)\}/);if(p){let y=p[1],b=Ii(y);for(let $ of b){let T=$.match(/^(\w+)\s*:\s*(.+)$/);T&&f.push({name:T[1],example:T[2].trim()})}}let m,d=l.match(/returns\s*:\s*(.+?)(?:\n|$)/);d&&(m=d[1].trim()),t.set(s,{params:f,returns:m,typeParams:u})}return t}function Nc(e){let t=new Map,n=/^[ \t]*(?:export\s+(?:default\s+)?)?class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r.index+r[0].length-1,o=1,a=i+1;for(;a<e.length&&o>0;)e[a]==="{"?o++:e[a]==="}"&&o--,a++;let c=e.slice(i+1,a-1),l=c.indexOf("constructor"),u="";if(l!==-1){let p=c.indexOf("(",l);if(p!==-1){let m=1,d=p+1;for(;d<c.length&&m>0;)c[d]==="("?m++:c[d]===")"&&m--,d++;u=c.slice(p+1,d-1).trim()}}let f=[];{let p=0,m=0;for(;p<c.length;){let d=c[p];if(d==="{"){m++,p++;continue}if(d==="}"){m--,p++;continue}if(m===0){let y=c.slice(p).match(/^(\w+)\s*\(/);if(y){let b=y[1];if(b==="constructor"||b==="get"||b==="set"){p+=b.length;continue}else{let $=p+y[0].length-1,T=1,x=$+1;for(;x<c.length&&T>0;)c[x]==="("?T++:c[x]===")"&&T--,x++;let S=c.slice($+1,x-1).trim(),E=c.slice(x).match(/^\s*->\s*(.+?)\s*\{/),w=E?E[1].trim():null;f.push({name:b,params:S,returnType:w}),p=x;continue}}}p++}}t.set(s,{name:s,constructorParams:u,methods:f})}return t}function Ii(e){let t=[],n=0,r="";for(let s of e)s==="{"||s==="["||s==="("?n++:(s==="}"||s==="]"||s===")")&&n--,s===","&&n===0?(t.push(r.trim()),r=""):r+=s;return r.trim()&&t.push(r.trim()),t}function Pi(e){return e.trim()?Ii(e).map(t=>{let n=t.match(/^(\w+)\s*:\s*(.+)$/);if(n){let s=n[1],i=Oe(n[2].trim());return`${s}: ${i}`}let r=t.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=Oe(r[2].trim());return`${s}?: ${i}`}return t.startsWith("{")?"options: any":`${t}: any`}).join(", "):""}function Pc(e){let t=new Map,n,r=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*=\s*(.+)$/gm;for(;(n=r.exec(e))!==null;)t.set(n[1],n[2].trim());let s=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s+([^{=].*)$/gm;for(;(n=s.exec(e))!==null;)t.has(n[1])||t.set(n[1],n[2].trim());let i=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*example\s*:\s*(.+?)(?:\n|\s*[,}])/gm;for(;(n=i.exec(e))!==null;)t.set(n[1],n[2].trim());let o=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*\/\/\s*TS:\s*(.+?)(?:\n|\s*\})/gm;for(;(n=o.exec(e))!==null;)t.has(n[1])||t.set(n[1],`__ts__:${n[2].trim()}`);let a=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{\s*\}/gm;for(;(n=a.exec(e))!==null;)t.has(n[1])||t.set(n[1],"");return t}function Ic(e){let t=new Map,n=/^[ \t]*(?:export\s+)?Generic\s+(\w+)\s*<([^>]+)>\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2].split(",").map(p=>p.trim().split(/\s*=/)[0].trim()),o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u,f=l.match(/\bdeclaration\s*\{/);if(f&&f.index!==void 0){let p=f.index+f[0].length-1,m=1,d=p+1;for(;d<l.length&&m>0;)l[d]==="{"?m++:l[d]==="}"&&m--,d++;u=l.slice(p+1,d-1).trim()}t.set(s,{typeParams:i,declaration:u})}return t}function Dc(e){let t=[],n=/^[ \t]*export\s+(?:default\s+)?(const|let|var)\s+(\w+)\s*(?::\s*\w+\s*)?=\s*(.+)/gm,r;for(;(r=n.exec(e))!==null;){let s=r[3].trim();s.endsWith(";")&&(s=s.slice(0,-1).trim()),t.push({name:r[2],value:s,kind:r[1]})}return t}function Oc(e){return/^['"]/.test(e)||e.startsWith("`")?"string":e==="true"||e==="false"?"boolean":/^[+-]?\d+(\.\d+)?$/.test(e)?"number":e.startsWith("Symbol(")||e.startsWith("Symbol.")?"symbol":e.startsWith("[")?"any[]":e.startsWith("new WeakMap")?"WeakMap<any, any>":e.startsWith("new Map")?"Map<any, any>":e.startsWith("new Set")?"Set<any>":e.startsWith("new ")?"any":e.startsWith("{")?"Record<string, any>":e==="null"?"null":e==="undefined"?"undefined":"any"}function Bc(e,t,n={}){let r=[],s=Cc(t),i=Pc(t),o=Nc(t),a=Ic(t),c=s.size>0,l=new Set;for(let[p,m]of Object.entries(e.types)){if(p.includes("$"))continue;let d=s.get(p),y=c?!!d?.exported:!0,b=d?.isDefault??!1;y&&(m.description&&r.push(`/** ${m.description} */`),r.push(Ac(p,m,!0,b)),l.add(p))}for(let[p,m]of o){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let b=m.constructorParams?Pi(m.constructorParams):"";if(r.push(`export declare function ${p}(${b}): any;`),b||m.methods.length>0){r.push(`export declare class ${p} {`),m.constructorParams&&r.push(` constructor(${b});`);for(let $ of m.methods){let T=$.params?Pi($.params):"";r.push(` ${$.name}(${T}): any;`)}r.push("}")}l.add(p)}for(let[p,m]of i){if(l.has(p))continue;let d=s.get(p);if(!c||d?.exported){if(m.startsWith("__ts__:")){let b=m.slice(7);r.push(`export type ${p} = ${b};`)}else if(m==="")r.push(`export type ${p} = any;`);else{let b=Oe(m);r.push(`export declare const ${p}: { check(value: any): boolean; default: ${b}; (value: any): boolean; };`)}l.add(p)}}for(let[p,m]of a){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let b=m.typeParams.length>0?`<${m.typeParams.join(", ")}>`:"";if(m.declaration){let $=m.declaration.trim(),T=$.match(/^\/\/\s*TS:\s*(.+)$/s);if(T)r.push(`export type ${p}${b} = ${T[1].trim()};`);else{let x=$.split(`
|
|
365
|
-
`).map(
|
|
362
|
+
${W.join(`
|
|
363
|
+
`)}`)}}if(r==="only")return{code:"",types:x,metadata:x,testResults:mt,testCount:mt?.length};let os;if(T.wasmBlocks.length>0){let I=vi(T.wasmBlocks);I.code&&(S=I.code+`
|
|
364
|
+
`+S),os=I.results}return{code:S,types:x,metadata:x,warnings:o.length>0?o:void 0,testRunner:u.length>0?p:void 0,testCount:u.length>0?u.length:void 0,testResults:mt,wasmCompiled:os}}function jc(e){let t=[];for(let n of e.body)n.type==="FunctionDeclaration"?t.push(n):(n.type==="ExportNamedDeclaration"&&n.declaration?.type==="FunctionDeclaration"||n.type==="ExportDefaultDeclaration"&&n.declaration?.type==="FunctionDeclaration")&&t.push(n.declaration);return t}function Dt(e){let t={kind:e.kind};return e.nullable&&(t.nullable=!0),e.items&&(t.items=Dt(e.items)),e.shape&&(t.shape=Object.fromEntries(Object.entries(e.shape).map(([n,r])=>[n,Dt(r)]))),e.members&&(t.members=e.members.map(Dt)),t}function vc(e,t,n={},r={}){let s={};for(let[o,a]of Object.entries(t.params))s[o]={type:Dt(a.type),required:a.required},a.default!==void 0&&(s[o].default=a.default),a.description&&(s[o].description=a.description);let i={params:s};if(t.returns&&(i.returns={type:Dt(t.returns)},r.returnDefaults&&(i.returns.defaults=r.returnDefaults),n.returnSafety==="safe"?i.safeReturn=!0:n.returnSafety==="unsafe"&&(i.unsafeReturn=!0)),t.description&&(i.description=t.description),n.unsafe&&(i.unsafe=!0),n.safe&&(i.safe=!0),r.source){let{file:o,line:a}=r.source;i.source=`${o}:${a}`}return`${e}.__tjs = ${JSON.stringify(i,null,2)}`}function Nn(e,t){let n;switch(t.kind){case"string":n=`typeof ${e} !== 'string'`;break;case"number":n=`typeof ${e} !== 'number'`;break;case"integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}))`;break;case"non-negative-integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}) || ${e} < 0)`;break;case"boolean":n=`typeof ${e} !== 'boolean'`;break;case"null":return`${e} !== null`;case"undefined":return`${e} !== undefined`;case"array":{let r=t.items&&t.items.kind!=="any"?Nn("__a",t.items):null;r?n=`(!Array.isArray(${e}) || ${e}.some(__a => ${r}))`:n=`!Array.isArray(${e})`;break}case"object":n=`(typeof ${e} !== 'object' || ${e} === null || Array.isArray(${e}))`;break;case"function":n=`typeof ${e} !== 'function'`;break;case"union":{let r=t.members.map(s=>Nn(e,s)).filter(s=>s!==null);if(r.length===0)return null;n=`(${r.join(" && ")})`;break}case"any":return null;default:return null}return n&&t.nullable&&(n=`(${e} !== null && ${n})`),n}var Ri=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function Mc(e,t,n){let r=t.params??[],s=t.returns??{kind:"any"},i=r.map(l=>l.type?.kind),o=i.every(l=>l&&Ri.has(l))&&Ri.has(s.kind),a=i.some(l=>l!=="any")||s.kind!=="any";if(!o||!a)return null;let c=JSON.stringify(i);return`if (typeof ${e} === 'function') ${e} = __tjs.checkFnShape(${e}, ${c}, '${s.kind}', '${n}');`}function _e(e){let t;switch(e.kind){case"string":t="string";break;case"number":case"integer":case"non-negative-integer":t="number";break;case"boolean":t="boolean";break;case"null":return"null";case"undefined":return"undefined";case"any":t="any";break;case"array":if(e.items){let n=_e(e.items);t=n.includes("|")?`(${n})[]`:`${n}[]`}else t="any[]";break;case"object":e.shape&&Object.keys(e.shape).length>0?t=`{ ${Object.entries(e.shape).map(([r,s])=>`${r}: ${_e(s)}`).join("; ")} }`:t="Record<string, any>";break;case"union":if(e.members&&e.members.length>0)return e.members.map(_e).join(" | ");t="any";break;case"function":{let n=e.params??[],r=e.returns?_e(e.returns):"any";t=`(${n.map(i=>`${i.name}: ${_e(i.type)}`).join(", ")}) => ${r}`;break}default:t="any"}return e.nullable?`${t} | null`:t}function Ac(e,t,n,r){let s=Object.entries(t.params).map(([a,c])=>{let l=!c.required,u=_e(c.type);return l?`${a}?: ${u}`:`${a}: ${u}`}).join(", "),i=t.returns?_e(t.returns):"any";return`${n?r?"export default function":"export declare function":"declare function"} ${e}(${s}): ${i};`}function Cc(e){let t=new Map,n,r=/^[ \t]*export\s+(default\s+)?function\s+(\w+)/gm;for(;(n=r.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let s=/^[ \t]*export\s+(default\s+)?class\s+(\w+)/gm;for(;(n=s.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let i=/^[ \t]*export\s+(default\s+)?(?:const|let|var)\s+(\w+)/gm;for(;(n=i.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let o=/^[ \t]*export\s+Type\s+(\w+)/gm;for(;(n=o.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let a=/^[ \t]*export\s+Generic\s+(\w+)/gm;for(;(n=a.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let c=/^[ \t]*export\s+FunctionPredicate\s+(\w+)/gm;for(;(n=c.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let l=/^[ \t]*export\s*\{([^}]+)\}/gm;for(;(n=l.exec(e))!==null;){let u=n[1].split(",").map(f=>f.trim().split(/\s+as\s+/));for(let f of u){let p=f.length>1?f[1]:f[0];p&&/^\w+$/.test(p)&&t.set(p,{exported:!0,isDefault:!1})}}return t}function Rc(e){let t=new Map,n=/^[ \t]*(?:export\s+)?FunctionPredicate\s+(\w+)\s*(?:<([^>]+)>)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2],o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u;i&&(u=i.split(",").map(y=>y.trim()));let f=[],p=l.match(/params\s*:\s*\{([^}]*)\}/);if(p){let y=p[1],b=Ii(y);for(let $ of b){let T=$.match(/^(\w+)\s*:\s*(.+)$/);T&&f.push({name:T[1],example:T[2].trim()})}}let m,d=l.match(/returns\s*:\s*(.+?)(?:\n|$)/);d&&(m=d[1].trim()),t.set(s,{params:f,returns:m,typeParams:u})}return t}function Nc(e){let t=new Map,n=/^[ \t]*(?:export\s+(?:default\s+)?)?class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r.index+r[0].length-1,o=1,a=i+1;for(;a<e.length&&o>0;)e[a]==="{"?o++:e[a]==="}"&&o--,a++;let c=e.slice(i+1,a-1),l=c.indexOf("constructor"),u="";if(l!==-1){let p=c.indexOf("(",l);if(p!==-1){let m=1,d=p+1;for(;d<c.length&&m>0;)c[d]==="("?m++:c[d]===")"&&m--,d++;u=c.slice(p+1,d-1).trim()}}let f=[];{let p=0,m=0;for(;p<c.length;){let d=c[p];if(d==="{"){m++,p++;continue}if(d==="}"){m--,p++;continue}if(m===0){let y=c.slice(p).match(/^(\w+)\s*\(/);if(y){let b=y[1];if(b==="constructor"||b==="get"||b==="set"){p+=b.length;continue}else{let $=p+y[0].length-1,T=1,x=$+1;for(;x<c.length&&T>0;)c[x]==="("?T++:c[x]===")"&&T--,x++;let w=c.slice($+1,x-1).trim(),E=c.slice(x).match(/^\s*->\s*(.+?)\s*\{/),S=E?E[1].trim():null;f.push({name:b,params:w,returnType:S}),p=x;continue}}}p++}}t.set(s,{name:s,constructorParams:u,methods:f})}return t}function Ii(e){let t=[],n=0,r="";for(let s of e)s==="{"||s==="["||s==="("?n++:(s==="}"||s==="]"||s===")")&&n--,s===","&&n===0?(t.push(r.trim()),r=""):r+=s;return r.trim()&&t.push(r.trim()),t}function Pi(e){return e.trim()?Ii(e).map(t=>{let n=t.match(/^(\w+)\s*:\s*(.+)$/);if(n){let s=n[1],i=Oe(n[2].trim());return`${s}: ${i}`}let r=t.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=Oe(r[2].trim());return`${s}?: ${i}`}return t.startsWith("{")?"options: any":`${t}: any`}).join(", "):""}function Pc(e){let t=new Map,n,r=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*=\s*(.+)$/gm;for(;(n=r.exec(e))!==null;)t.set(n[1],n[2].trim());let s=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s+([^{=].*)$/gm;for(;(n=s.exec(e))!==null;)t.has(n[1])||t.set(n[1],n[2].trim());let i=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*example\s*:\s*(.+?)(?:\n|\s*[,}])/gm;for(;(n=i.exec(e))!==null;)t.set(n[1],n[2].trim());let o=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*\/\/\s*TS:\s*(.+?)(?:\n|\s*\})/gm;for(;(n=o.exec(e))!==null;)t.has(n[1])||t.set(n[1],`__ts__:${n[2].trim()}`);let a=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{\s*\}/gm;for(;(n=a.exec(e))!==null;)t.has(n[1])||t.set(n[1],"");return t}function Ic(e){let t=new Map,n=/^[ \t]*(?:export\s+)?Generic\s+(\w+)\s*<([^>]+)>\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2].split(",").map(p=>p.trim().split(/\s*=/)[0].trim()),o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u,f=l.match(/\bdeclaration\s*\{/);if(f&&f.index!==void 0){let p=f.index+f[0].length-1,m=1,d=p+1;for(;d<l.length&&m>0;)l[d]==="{"?m++:l[d]==="}"&&m--,d++;u=l.slice(p+1,d-1).trim()}t.set(s,{typeParams:i,declaration:u})}return t}function Dc(e){let t=[],n=/^[ \t]*export\s+(?:default\s+)?(const|let|var)\s+(\w+)\s*(?::\s*\w+\s*)?=\s*(.+)/gm,r;for(;(r=n.exec(e))!==null;){let s=r[3].trim();s.endsWith(";")&&(s=s.slice(0,-1).trim()),t.push({name:r[2],value:s,kind:r[1]})}return t}function Oc(e){return/^['"]/.test(e)||e.startsWith("`")?"string":e==="true"||e==="false"?"boolean":/^[+-]?\d+(\.\d+)?$/.test(e)?"number":e.startsWith("Symbol(")||e.startsWith("Symbol.")?"symbol":e.startsWith("[")?"any[]":e.startsWith("new WeakMap")?"WeakMap<any, any>":e.startsWith("new Map")?"Map<any, any>":e.startsWith("new Set")?"Set<any>":e.startsWith("new ")?"any":e.startsWith("{")?"Record<string, any>":e==="null"?"null":e==="undefined"?"undefined":"any"}function Bc(e,t,n={}){let r=[],s=Cc(t),i=Pc(t),o=Nc(t),a=Ic(t),c=s.size>0,l=new Set;for(let[p,m]of Object.entries(e.types)){if(p.includes("$"))continue;let d=s.get(p),y=c?!!d?.exported:!0,b=d?.isDefault??!1;y&&(m.description&&r.push(`/** ${m.description} */`),r.push(Ac(p,m,!0,b)),l.add(p))}for(let[p,m]of o){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let b=m.constructorParams?Pi(m.constructorParams):"";if(r.push(`export declare function ${p}(${b}): any;`),b||m.methods.length>0){r.push(`export declare class ${p} {`),m.constructorParams&&r.push(` constructor(${b});`);for(let $ of m.methods){let T=$.params?Pi($.params):"";r.push(` ${$.name}(${T}): any;`)}r.push("}")}l.add(p)}for(let[p,m]of i){if(l.has(p))continue;let d=s.get(p);if(!c||d?.exported){if(m.startsWith("__ts__:")){let b=m.slice(7);r.push(`export type ${p} = ${b};`)}else if(m==="")r.push(`export type ${p} = any;`);else{let b=Oe(m);r.push(`export declare const ${p}: { check(value: any): boolean; default: ${b}; (value: any): boolean; };`)}l.add(p)}}for(let[p,m]of a){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let b=m.typeParams.length>0?`<${m.typeParams.join(", ")}>`:"";if(m.declaration){let $=m.declaration.trim(),T=$.match(/^\/\/\s*TS:\s*(.+)$/s);if(T)r.push(`export type ${p}${b} = ${T[1].trim()};`);else{let x=$.split(`
|
|
365
|
+
`).map(w=>w.trim()).filter(w=>w.length>0).map(w=>` ${w}`).join(`
|
|
366
366
|
`);r.push(`export interface ${p}${b} {
|
|
367
367
|
${x}
|
|
368
|
-
}`)}}else r.push(`export declare function ${p}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(p)}let u=Rc(t);for(let[p,m]of u){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let b=new Set(m.typeParams?.map(
|
|
368
|
+
}`)}}else r.push(`export declare function ${p}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(p)}let u=Rc(t);for(let[p,m]of u){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let b=new Set(m.typeParams?.map(w=>w.split("=")[0].trim())??[]),$=m.typeParams?`<${m.typeParams.join(", ")}>`:"",T=m.params.map((w,E)=>{let S=E===m.params.length-1;if(w.example.startsWith("[")&&w.example.endsWith("]")&&S){let A=w.example.slice(1,-1).trim(),k=!A||A==="null"?"any":b.has(A)?A:Oe(A);return`...${w.name}: ${k}[]`}if(w.example.startsWith("[")&&w.example.endsWith("]")){let A=w.example.slice(1,-1).trim(),k=!A||A==="null"?"any":b.has(A)?A:Oe(A);return`${w.name}: ${k}[]`}let j=w.example==="null"?"any":b.has(w.example)?w.example:Oe(w.example);return`${w.name}: ${j}`}).join(", "),x=m.returns!==void 0?m.returns==="null"?"any":b.has(m.returns)?m.returns:Oe(m.returns):"void";r.push(`export type ${p}${$} = (${T}) => ${x};`),l.add(p)}let f=Dc(t);for(let p of f){if(l.has(p.name))continue;let m=s.get(p.name);if(!(c?!!m?.exported:!0))continue;let y=Oc(p.value);r.push(`export declare const ${p.name}: ${y};`),l.add(p.name)}if(n.moduleName){let p=r.map(m=>` ${m}`).join(`
|
|
369
369
|
`);return`declare module '${n.moduleName}' {
|
|
370
370
|
${p}
|
|
371
371
|
}
|
|
372
372
|
`}return r.join(`
|
|
373
373
|
`)+`
|
|
374
|
-
`}function Oe(e){let t=e.trim();if(Lc(t)){let n=Fc(t).map(r=>Oe(r.trim()));return[...new Set(n)].join(" | ")}return/^['"]/.test(t)?"string":t==="true"||t==="false"?"boolean":t==="null"?"null":t==="undefined"?"undefined":/^[+-]?\d+\.\d+$/.test(t)||/^[+-]?\d+$/.test(t)?"number":t.startsWith("[")?"any[]":t.startsWith("{")?"Record<string, any>":"any"}function Lc(e){let t=0,n=null;for(let r of e){if(n){r===n&&(n=null);continue}if(r==="'"||r==='"'||r==="`"){n=r;continue}if(r==="{"||r==="["||r==="(")t++;else if(r==="}"||r==="]"||r===")")t--;else if(r==="|"&&t===0)return!0}return!1}function Fc(e){let t=[],n=0,r=null,s="";for(let i of e){if(r){s+=i,i===r&&(r=null);continue}if(i==="'"||i==='"'||i==="`"){r=i,s+=i;continue}i==="{"||i==="["||i==="("?n++:(i==="}"||i==="]"||i===")")&&n--,i==="|"&&n===0?(t.push(s),s=""):s+=i}return s&&t.push(s),t}import _ from"typescript";var Uc=20,Oi=new Set(["Event","CustomEvent","MouseEvent","KeyboardEvent","PointerEvent","TouchEvent","FocusEvent","InputEvent","CompositionEvent","WheelEvent","DragEvent","AnimationEvent","TransitionEvent","ClipboardEvent","UIEvent","ProgressEvent","ErrorEvent","MessageEvent","PopStateEvent","HashChangeEvent","PageTransitionEvent","StorageEvent","BeforeUnloadEvent","SubmitEvent","EventTarget","EventListener","Node","Element","HTMLElement","SVGElement","Document","DocumentFragment","ShadowRoot","Text","Comment","Attr","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","HTMLButtonElement","HTMLFormElement","HTMLAnchorElement","HTMLImageElement","HTMLVideoElement","HTMLAudioElement","HTMLCanvasElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLTableElement","HTMLTemplateElement","HTMLSlotElement","HTMLDialogElement","HTMLDetailsElement","HTMLLabelElement","HTMLOptionElement","HTMLIFrameElement","HTMLScriptElement","HTMLStyleElement","HTMLLinkElement","HTMLMetaElement","HTMLHeadElement","HTMLBodyElement","HTMLMediaElement","SVGSVGElement","SVGPathElement","SVGGElement","SVGCircleElement","SVGRectElement","SVGTextElement","SVGLineElement","SVGPolygonElement","NodeList","HTMLCollection","NamedNodeMap","DOMTokenList","DOMStringMap","CSSStyleDeclaration","DOMRect","DOMRectReadOnly","DOMPoint","DOMMatrix","Range","Selection","StaticRange","MutationObserver","MutationRecord","IntersectionObserver","IntersectionObserverEntry","ResizeObserver","ResizeObserverEntry","PerformanceObserver","PerformanceEntry","Window","Location","History","Navigator","Screen","Storage","CanvasRenderingContext2D","WebGLRenderingContext","WebGL2RenderingContext","OffscreenCanvas","ImageData","ImageBitmap","MediaStream","MediaRecorder","AudioContext","AudioNode","AudioBuffer","Worker","SharedWorker","ServiceWorker","ServiceWorkerRegistration","BroadcastChannel","MessageChannel","MessagePort","WebSocket","XMLHttpRequest","FileReader","FileList","DataTransfer","Crypto","SubtleCrypto","CryptoKey","Geolocation","Notification","PermissionStatus","MediaQueryList","TreeWalker","NodeIterator","ClipboardItem"]);function W(e,t,n,r){if(!e)return"undefined";switch(e.kind){case _.SyntaxKind.StringKeyword:return"''";case _.SyntaxKind.NumberKeyword:return"0.0";case _.SyntaxKind.BooleanKeyword:return"false";case _.SyntaxKind.NullKeyword:return"null";case _.SyntaxKind.UndefinedKeyword:return"undefined";case _.SyntaxKind.VoidKeyword:return"undefined";case _.SyntaxKind.AnyKeyword:return"any";case _.SyntaxKind.UnknownKeyword:return"any";case _.SyntaxKind.NeverKeyword:return"null";case _.SyntaxKind.SymbolKeyword:return"Symbol('example')";case _.SyntaxKind.BigIntKeyword:return"0n";case _.SyntaxKind.ObjectKeyword:return"{}";case _.SyntaxKind.ArrayType:{let i=W(e.elementType,t);return i==="any"&&(i="null"),`[${i}]`}case _.SyntaxKind.TypeReference:{let s=e,i=s.typeName.getText();if(i==="Array"&&s.typeArguments?.length)return`[${W(s.typeArguments[0],t,n,r)}]`;if(i==="Promise"||i==="Generator"||i==="AsyncGenerator"||i==="IterableIterator"||i==="AsyncIterableIterator")return s.typeArguments?.length?W(s.typeArguments[0],t,n,r):"undefined";if(i==="Record")return"{}";let o={Map:"new Map()",Set:"new Set()",WeakMap:"new WeakMap()",WeakSet:"new WeakSet()",WeakRef:"new WeakRef({})",Error:"new Error('example')",TypeError:"new TypeError('example')",RangeError:"new RangeError('example')",SyntaxError:"new SyntaxError('example')",ReferenceError:"new ReferenceError('example')",URIError:"new URIError('example')",EvalError:"new EvalError('example')",Date:"new Date()",RegExp:"/example/",ArrayBuffer:"new ArrayBuffer(0)",SharedArrayBuffer:"new SharedArrayBuffer(0)",DataView:"new DataView(new ArrayBuffer(0))",Float32Array:"new Float32Array(0)",Float64Array:"new Float64Array(0)",Int8Array:"new Int8Array(0)",Int16Array:"new Int16Array(0)",Int32Array:"new Int32Array(0)",Uint8Array:"new Uint8Array(0)",Uint16Array:"new Uint16Array(0)",Uint32Array:"new Uint32Array(0)",Uint8ClampedArray:"new Uint8ClampedArray(0)",BigInt64Array:"new BigInt64Array(0)",BigUint64Array:"new BigUint64Array(0)",URL:"new URL('https://example.com')",URLSearchParams:"new URLSearchParams()",Headers:"new Headers()",FormData:"new FormData()",Blob:"new Blob()",File:"new File([], 'example')",Response:"new Response()",Request:"new Request('https://example.com')",AbortController:"new AbortController()",AbortSignal:"AbortSignal.abort()",ReadableStream:"new ReadableStream()",WritableStream:"new WritableStream()",TransformStream:"new TransformStream()",TextEncoder:"new TextEncoder()",TextDecoder:"new TextDecoder()",Promise:"Promise.resolve(null)"};if(i in o)return o[i];if(r?.typeAliases?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.typeAliases.get(i);return W(c,t,n,{...r,visited:a})}if(r?.interfaces?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.interfaces.get(i),l=[];for(let u of c.members)if(_.isPropertySignature(u)&&u.name){let f=u.name.getText(r.sourceFile),p=W(u.type,t,n,{...r,visited:a});l.push(`${f}: ${p}`)}return`{ ${l.join(", ")} }`}if(r?.typeParams?.has(i)){let a=r.typeParams.get(i);if(a.constraint)return W(a.constraint,t,n,r);if(a.default)return W(a.default,t,n,r)}return Oi.has(i)?"{}":/^[A-Z]$/.test(i)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(i)?(n?.push(`Generic type parameter '${i}' converted to 'any' - consider specializing`),"any"):(n?.push(`Unknown type '${i}' converted to 'any' - may need manual review`),"any")}case _.SyntaxKind.TypeLiteral:{let s=e,i=[];for(let o of s.members)if(_.isPropertySignature(o)&&o.name){let a=o.name.getText(),c=W(o.type,t);c==="any"&&(c="null"),i.push(`${a}: ${c}`)}return`{ ${i.join(", ")} }`}case _.SyntaxKind.UnionType:{let s=e,i=f=>f.kind===_.SyntaxKind.NullKeyword||_.isLiteralTypeNode(f)&&f.literal.kind===_.SyntaxKind.NullKeyword,o=f=>f.kind===_.SyntaxKind.UndefinedKeyword||_.isLiteralTypeNode(f)&&f.literal.kind===_.SyntaxKind.UndefinedKeyword,a=s.types.filter(f=>!i(f)&&!o(f)),c=s.types.some(i),l=s.types.some(o);if(a.length===0)return c?"null":"undefined";if(a.length===1&&(c||l)){let f=W(a[0],t,n,r);if(f==="any")return"any";if(c)return`${f} | null`;if(l)return`${f} | undefined`}let u=s.types.map(f=>W(f,t,n,r)).filter((f,p,m)=>m.indexOf(f)===p);return u.some(f=>f==="any")?"any":u.length===1?u[0]:u.length>0?u.some(p=>/[()]/.test(p)||p.startsWith("new "))?"any":u.join(" | "):"undefined"}case _.SyntaxKind.LiteralType:{let s=e;return _.isStringLiteral(s.literal)?`'${s.literal.text}'`:_.isNumericLiteral(s.literal)?s.literal.text:s.literal.kind===_.SyntaxKind.TrueKeyword?"true":s.literal.kind===_.SyntaxKind.FalseKeyword?"false":s.literal.kind===_.SyntaxKind.NullKeyword?"null":"undefined"}case _.SyntaxKind.ParenthesizedType:return W(e.type,t);case _.SyntaxKind.FunctionType:{let s=e,i=[];for(let c of s.parameters){let l=c.name?.getText()||"_";if(l==="this")continue;let u=W(c.type,t,n,r);u==="any"&&(u="null"),i.push(`${l}: ${u}`)}let o=W(s.type,t,n,r);o==="any"&&(o="null");let a=[];return i.length>0&&a.push(`params: { ${i.join(", ")} }`),o!=="undefined"&&a.push(`returns: ${o}`),`FunctionPredicate('function', { ${a.join(", ")} })`}case _.SyntaxKind.TupleType:return`[${e.elements.map(o=>{let a=_.isNamedTupleMember(o)?W(o.type,t):W(o,t);return a==="any"?"null":a}).join(", ")}]`;default:return"undefined"}}function ee(e,t){if(!e)return{kind:"any"};let n=t?.depth??0;if(n>Uc)return{kind:"any"};switch(t=t?{...t,depth:n+1}:void 0,e.kind){case _.SyntaxKind.StringKeyword:return{kind:"string"};case _.SyntaxKind.NumberKeyword:return{kind:"number"};case _.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case _.SyntaxKind.NullKeyword:return{kind:"null"};case _.SyntaxKind.UndefinedKeyword:case _.SyntaxKind.VoidKeyword:return{kind:"undefined"};case _.SyntaxKind.ArrayType:return{kind:"array",items:ee(e.elementType,t)};case _.SyntaxKind.TypeLiteral:{let r=e,s={};for(let i of r.members)if(_.isPropertySignature(i)&&i.name){let o=i.name.getText();s[o]=ee(i.type,t)}return{kind:"object",shape:s}}case _.SyntaxKind.UnionType:{let r=e,s=r.types.filter(o=>o.kind!==_.SyntaxKind.NullKeyword&&o.kind!==_.SyntaxKind.UndefinedKeyword),i=r.types.some(o=>o.kind===_.SyntaxKind.NullKeyword);return s.length===1&&i?{...ee(s[0],t),nullable:!0}:{kind:"union",members:r.types.map(o=>ee(o,t))}}case _.SyntaxKind.IntersectionType:{let r=e,s={};for(let i of r.types){let o=ee(i,t);o.kind==="object"&&o.shape&&Object.assign(s,o.shape)}return Object.keys(s).length>0?{kind:"object",shape:s}:{kind:"any"}}case _.SyntaxKind.TupleType:{let r=e,s=[];for(let i of r.elements)_.isNamedTupleMember(i)?s.push(ee(i.type,t)):s.push(ee(i,t));return{kind:"tuple",elements:s}}case _.SyntaxKind.TypeReference:{let r=e,s=r.typeName.getText();if(s==="Array"&&r.typeArguments?.length)return{kind:"array",items:ee(r.typeArguments[0],t)};if(s==="Promise"&&r.typeArguments?.length||(s==="Generator"||s==="AsyncGenerator"||s==="IterableIterator"||s==="AsyncIterableIterator")&&r.typeArguments?.length)return ee(r.typeArguments[0],t);if(r.typeArguments?.length){let i=ee(r.typeArguments[0],t);if(s==="Partial"||s==="Required"||s==="Readonly")return i;if(s==="Record"&&r.typeArguments.length>=2)return{kind:"object",shape:{"[key]":ee(r.typeArguments[1],t)}};if(s==="Pick"||s==="Omit")return i;if(s==="NonNullable")return i.nullable?{...i,nullable:!1}:i;if(["ReturnType","Parameters","ConstructorParameters"].includes(s))return{kind:"any"}}if(t?.typeAliases?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.typeAliases.get(s),a=ee(o,{...t,visited:i});return t.resolvedCache?.set(s,a),a}if(t?.interfaces?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.interfaces.get(s),a={};if(o.heritageClauses){for(let l of o.heritageClauses)if(l.token===_.SyntaxKind.ExtendsKeyword)for(let u of l.types){let f=u.expression.getText(t.sourceFile);if(t.interfaces?.has(f)&&!i.has(f)){let p={kind:_.SyntaxKind.TypeReference,typeName:{getText:()=>f}},m=ee(p,{...t,visited:i});m.kind==="object"&&m.shape&&Object.assign(a,m.shape)}}}for(let l of o.members)if(_.isPropertySignature(l)&&l.name){let u=l.name.getText(t.sourceFile);a[u]=ee(l.type,{...t,visited:i})}let c={kind:"object",shape:a};return t.resolvedCache?.set(s,c),c}if(t?.typeParams?.has(s)){let i=t.typeParams.get(s);if(i.constraint)return ee(i.constraint,t);if(i.default)return ee(i.default,t)}return Oi.has(s)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function qc(e,t){if(!e.typeParameters||e.typeParameters.length===0)return;let n={};for(let r of e.typeParameters){let s=r.name.getText(),i={};if(r.constraint){let o=W(r.constraint,void 0,t);if(o.startsWith("{"))try{i.constraint=o}catch{i.constraint=o}else i.constraint=o}if(r.default){let o=W(r.default,void 0,t);i.default=o}n[s]=i}return Object.keys(n).length>0?n:void 0}function Wc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return Jc(e,t,n,r);let i=r?.find(l=>l.kind==="example"),o=r?.find(l=>l.kind==="predicate"),a;if(i?.text)a=i.text;else{let l=[];for(let u of e.members)if(_.isPropertySignature(u)&&u.name){let f=u.name.getText(t),p=W(u.type,void 0,n);p==="any"&&(p="null"),l.push(`${f}: ${p}`)}if(l.length===0&&!o)return`Type ${s} {}`;a=l.length>0?`{ ${l.join(", ")} }`:"{}"}let c=[`example: ${a}`];return o?.text&&c.push(o.text),`Type ${s} {
|
|
374
|
+
`}function Oe(e){let t=e.trim();if(Lc(t)){let n=Fc(t).map(r=>Oe(r.trim()));return[...new Set(n)].join(" | ")}return/^['"]/.test(t)?"string":t==="true"||t==="false"?"boolean":t==="null"?"null":t==="undefined"?"undefined":/^[+-]?\d+\.\d+$/.test(t)||/^[+-]?\d+$/.test(t)?"number":t.startsWith("[")?"any[]":t.startsWith("{")?"Record<string, any>":"any"}function Lc(e){let t=0,n=null;for(let r of e){if(n){r===n&&(n=null);continue}if(r==="'"||r==='"'||r==="`"){n=r;continue}if(r==="{"||r==="["||r==="(")t++;else if(r==="}"||r==="]"||r===")")t--;else if(r==="|"&&t===0)return!0}return!1}function Fc(e){let t=[],n=0,r=null,s="";for(let i of e){if(r){s+=i,i===r&&(r=null);continue}if(i==="'"||i==='"'||i==="`"){r=i,s+=i;continue}i==="{"||i==="["||i==="("?n++:(i==="}"||i==="]"||i===")")&&n--,i==="|"&&n===0?(t.push(s),s=""):s+=i}return s&&t.push(s),t}import _ from"typescript";var Uc=20,Oi=new Set(["Event","CustomEvent","MouseEvent","KeyboardEvent","PointerEvent","TouchEvent","FocusEvent","InputEvent","CompositionEvent","WheelEvent","DragEvent","AnimationEvent","TransitionEvent","ClipboardEvent","UIEvent","ProgressEvent","ErrorEvent","MessageEvent","PopStateEvent","HashChangeEvent","PageTransitionEvent","StorageEvent","BeforeUnloadEvent","SubmitEvent","EventTarget","EventListener","Node","Element","HTMLElement","SVGElement","Document","DocumentFragment","ShadowRoot","Text","Comment","Attr","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","HTMLButtonElement","HTMLFormElement","HTMLAnchorElement","HTMLImageElement","HTMLVideoElement","HTMLAudioElement","HTMLCanvasElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLTableElement","HTMLTemplateElement","HTMLSlotElement","HTMLDialogElement","HTMLDetailsElement","HTMLLabelElement","HTMLOptionElement","HTMLIFrameElement","HTMLScriptElement","HTMLStyleElement","HTMLLinkElement","HTMLMetaElement","HTMLHeadElement","HTMLBodyElement","HTMLMediaElement","SVGSVGElement","SVGPathElement","SVGGElement","SVGCircleElement","SVGRectElement","SVGTextElement","SVGLineElement","SVGPolygonElement","NodeList","HTMLCollection","NamedNodeMap","DOMTokenList","DOMStringMap","CSSStyleDeclaration","DOMRect","DOMRectReadOnly","DOMPoint","DOMMatrix","Range","Selection","StaticRange","MutationObserver","MutationRecord","IntersectionObserver","IntersectionObserverEntry","ResizeObserver","ResizeObserverEntry","PerformanceObserver","PerformanceEntry","Window","Location","History","Navigator","Screen","Storage","CanvasRenderingContext2D","WebGLRenderingContext","WebGL2RenderingContext","OffscreenCanvas","ImageData","ImageBitmap","MediaStream","MediaRecorder","AudioContext","AudioNode","AudioBuffer","Worker","SharedWorker","ServiceWorker","ServiceWorkerRegistration","BroadcastChannel","MessageChannel","MessagePort","WebSocket","XMLHttpRequest","FileReader","FileList","DataTransfer","Crypto","SubtleCrypto","CryptoKey","Geolocation","Notification","PermissionStatus","MediaQueryList","TreeWalker","NodeIterator","ClipboardItem"]);function q(e,t,n,r){if(!e)return"undefined";switch(e.kind){case _.SyntaxKind.StringKeyword:return"''";case _.SyntaxKind.NumberKeyword:return"0.0";case _.SyntaxKind.BooleanKeyword:return"false";case _.SyntaxKind.NullKeyword:return"null";case _.SyntaxKind.UndefinedKeyword:return"undefined";case _.SyntaxKind.VoidKeyword:return"undefined";case _.SyntaxKind.AnyKeyword:return"any";case _.SyntaxKind.UnknownKeyword:return"any";case _.SyntaxKind.NeverKeyword:return"null";case _.SyntaxKind.SymbolKeyword:return"Symbol('example')";case _.SyntaxKind.BigIntKeyword:return"0n";case _.SyntaxKind.ObjectKeyword:return"{}";case _.SyntaxKind.ArrayType:{let i=q(e.elementType,t);return i==="any"&&(i="null"),`[${i}]`}case _.SyntaxKind.TypeReference:{let s=e,i=s.typeName.getText();if(i==="Array"&&s.typeArguments?.length)return`[${q(s.typeArguments[0],t,n,r)}]`;if(i==="Promise"||i==="Generator"||i==="AsyncGenerator"||i==="IterableIterator"||i==="AsyncIterableIterator")return s.typeArguments?.length?q(s.typeArguments[0],t,n,r):"undefined";if(i==="Record")return"{}";let o={Map:"new Map()",Set:"new Set()",WeakMap:"new WeakMap()",WeakSet:"new WeakSet()",WeakRef:"new WeakRef({})",Error:"new Error('example')",TypeError:"new TypeError('example')",RangeError:"new RangeError('example')",SyntaxError:"new SyntaxError('example')",ReferenceError:"new ReferenceError('example')",URIError:"new URIError('example')",EvalError:"new EvalError('example')",Date:"new Date()",RegExp:"/example/",ArrayBuffer:"new ArrayBuffer(0)",SharedArrayBuffer:"new SharedArrayBuffer(0)",DataView:"new DataView(new ArrayBuffer(0))",Float32Array:"new Float32Array(0)",Float64Array:"new Float64Array(0)",Int8Array:"new Int8Array(0)",Int16Array:"new Int16Array(0)",Int32Array:"new Int32Array(0)",Uint8Array:"new Uint8Array(0)",Uint16Array:"new Uint16Array(0)",Uint32Array:"new Uint32Array(0)",Uint8ClampedArray:"new Uint8ClampedArray(0)",BigInt64Array:"new BigInt64Array(0)",BigUint64Array:"new BigUint64Array(0)",URL:"new URL('https://example.com')",URLSearchParams:"new URLSearchParams()",Headers:"new Headers()",FormData:"new FormData()",Blob:"new Blob()",File:"new File([], 'example')",Response:"new Response()",Request:"new Request('https://example.com')",AbortController:"new AbortController()",AbortSignal:"AbortSignal.abort()",ReadableStream:"new ReadableStream()",WritableStream:"new WritableStream()",TransformStream:"new TransformStream()",TextEncoder:"new TextEncoder()",TextDecoder:"new TextDecoder()",Promise:"Promise.resolve(null)"};if(i in o)return o[i];if(r?.typeAliases?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.typeAliases.get(i);return q(c,t,n,{...r,visited:a})}if(r?.interfaces?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.interfaces.get(i),l=[];for(let u of c.members)if(_.isPropertySignature(u)&&u.name){let f=u.name.getText(r.sourceFile),p=q(u.type,t,n,{...r,visited:a});l.push(`${f}: ${p}`)}return`{ ${l.join(", ")} }`}if(r?.typeParams?.has(i)){let a=r.typeParams.get(i);if(a.constraint)return q(a.constraint,t,n,r);if(a.default)return q(a.default,t,n,r)}return Oi.has(i)?"{}":/^[A-Z]$/.test(i)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(i)?(n?.push(`Generic type parameter '${i}' converted to 'any' - consider specializing`),"any"):(n?.push(`Unknown type '${i}' converted to 'any' - may need manual review`),"any")}case _.SyntaxKind.TypeLiteral:{let s=e,i=[];for(let o of s.members)if(_.isPropertySignature(o)&&o.name){let a=o.name.getText(),c=q(o.type,t);c==="any"&&(c="null"),i.push(`${a}: ${c}`)}return`{ ${i.join(", ")} }`}case _.SyntaxKind.UnionType:{let s=e,i=f=>f.kind===_.SyntaxKind.NullKeyword||_.isLiteralTypeNode(f)&&f.literal.kind===_.SyntaxKind.NullKeyword,o=f=>f.kind===_.SyntaxKind.UndefinedKeyword||_.isLiteralTypeNode(f)&&f.literal.kind===_.SyntaxKind.UndefinedKeyword,a=s.types.filter(f=>!i(f)&&!o(f)),c=s.types.some(i),l=s.types.some(o);if(a.length===0)return c?"null":"undefined";if(a.length===1&&(c||l)){let f=q(a[0],t,n,r);if(f==="any")return"any";if(c)return`${f} | null`;if(l)return`${f} | undefined`}let u=s.types.map(f=>q(f,t,n,r)).filter((f,p,m)=>m.indexOf(f)===p);return u.some(f=>f==="any")?"any":u.length===1?u[0]:u.length>0?u.some(p=>/[()]/.test(p)||p.startsWith("new "))?"any":u.join(" | "):"undefined"}case _.SyntaxKind.LiteralType:{let s=e;return _.isStringLiteral(s.literal)?`'${s.literal.text}'`:_.isNumericLiteral(s.literal)?s.literal.text:s.literal.kind===_.SyntaxKind.TrueKeyword?"true":s.literal.kind===_.SyntaxKind.FalseKeyword?"false":s.literal.kind===_.SyntaxKind.NullKeyword?"null":"undefined"}case _.SyntaxKind.ParenthesizedType:return q(e.type,t);case _.SyntaxKind.FunctionType:{let s=e,i=[];for(let c of s.parameters){let l=c.name?.getText()||"_";if(l==="this")continue;let u=q(c.type,t,n,r);u==="any"&&(u="null"),i.push(`${l}: ${u}`)}let o=q(s.type,t,n,r);o==="any"&&(o="null");let a=[];return i.length>0&&a.push(`params: { ${i.join(", ")} }`),o!=="undefined"&&a.push(`returns: ${o}`),`FunctionPredicate('function', { ${a.join(", ")} })`}case _.SyntaxKind.TupleType:return`[${e.elements.map(o=>{let a=_.isNamedTupleMember(o)?q(o.type,t):q(o,t);return a==="any"?"null":a}).join(", ")}]`;default:return"undefined"}}function ee(e,t){if(!e)return{kind:"any"};let n=t?.depth??0;if(n>Uc)return{kind:"any"};switch(t=t?{...t,depth:n+1}:void 0,e.kind){case _.SyntaxKind.StringKeyword:return{kind:"string"};case _.SyntaxKind.NumberKeyword:return{kind:"number"};case _.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case _.SyntaxKind.NullKeyword:return{kind:"null"};case _.SyntaxKind.UndefinedKeyword:case _.SyntaxKind.VoidKeyword:return{kind:"undefined"};case _.SyntaxKind.ArrayType:return{kind:"array",items:ee(e.elementType,t)};case _.SyntaxKind.TypeLiteral:{let r=e,s={};for(let i of r.members)if(_.isPropertySignature(i)&&i.name){let o=i.name.getText();s[o]=ee(i.type,t)}return{kind:"object",shape:s}}case _.SyntaxKind.UnionType:{let r=e,s=r.types.filter(o=>o.kind!==_.SyntaxKind.NullKeyword&&o.kind!==_.SyntaxKind.UndefinedKeyword),i=r.types.some(o=>o.kind===_.SyntaxKind.NullKeyword);return s.length===1&&i?{...ee(s[0],t),nullable:!0}:{kind:"union",members:r.types.map(o=>ee(o,t))}}case _.SyntaxKind.IntersectionType:{let r=e,s={};for(let i of r.types){let o=ee(i,t);o.kind==="object"&&o.shape&&Object.assign(s,o.shape)}return Object.keys(s).length>0?{kind:"object",shape:s}:{kind:"any"}}case _.SyntaxKind.TupleType:{let r=e,s=[];for(let i of r.elements)_.isNamedTupleMember(i)?s.push(ee(i.type,t)):s.push(ee(i,t));return{kind:"tuple",elements:s}}case _.SyntaxKind.TypeReference:{let r=e,s=r.typeName.getText();if(s==="Array"&&r.typeArguments?.length)return{kind:"array",items:ee(r.typeArguments[0],t)};if(s==="Promise"&&r.typeArguments?.length||(s==="Generator"||s==="AsyncGenerator"||s==="IterableIterator"||s==="AsyncIterableIterator")&&r.typeArguments?.length)return ee(r.typeArguments[0],t);if(r.typeArguments?.length){let i=ee(r.typeArguments[0],t);if(s==="Partial"||s==="Required"||s==="Readonly")return i;if(s==="Record"&&r.typeArguments.length>=2)return{kind:"object",shape:{"[key]":ee(r.typeArguments[1],t)}};if(s==="Pick"||s==="Omit")return i;if(s==="NonNullable")return i.nullable?{...i,nullable:!1}:i;if(["ReturnType","Parameters","ConstructorParameters"].includes(s))return{kind:"any"}}if(t?.typeAliases?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.typeAliases.get(s),a=ee(o,{...t,visited:i});return t.resolvedCache?.set(s,a),a}if(t?.interfaces?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.interfaces.get(s),a={};if(o.heritageClauses){for(let l of o.heritageClauses)if(l.token===_.SyntaxKind.ExtendsKeyword)for(let u of l.types){let f=u.expression.getText(t.sourceFile);if(t.interfaces?.has(f)&&!i.has(f)){let p={kind:_.SyntaxKind.TypeReference,typeName:{getText:()=>f}},m=ee(p,{...t,visited:i});m.kind==="object"&&m.shape&&Object.assign(a,m.shape)}}}for(let l of o.members)if(_.isPropertySignature(l)&&l.name){let u=l.name.getText(t.sourceFile);a[u]=ee(l.type,{...t,visited:i})}let c={kind:"object",shape:a};return t.resolvedCache?.set(s,c),c}if(t?.typeParams?.has(s)){let i=t.typeParams.get(s);if(i.constraint)return ee(i.constraint,t);if(i.default)return ee(i.default,t)}return Oi.has(s)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function qc(e,t){if(!e.typeParameters||e.typeParameters.length===0)return;let n={};for(let r of e.typeParameters){let s=r.name.getText(),i={};if(r.constraint){let o=q(r.constraint,void 0,t);if(o.startsWith("{"))try{i.constraint=o}catch{i.constraint=o}else i.constraint=o}if(r.default){let o=q(r.default,void 0,t);i.default=o}n[s]=i}return Object.keys(n).length>0?n:void 0}function Wc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return Jc(e,t,n,r);let i=r?.find(l=>l.kind==="example"),o=r?.find(l=>l.kind==="predicate"),a;if(i?.text)a=i.text;else{let l=[];for(let u of e.members)if(_.isPropertySignature(u)&&u.name){let f=u.name.getText(t),p=q(u.type,void 0,n);p==="any"&&(p="null"),l.push(`${f}: ${p}`)}if(l.length===0&&!o)return`Type ${s} {}`;a=l.length>0?`{ ${l.join(", ")} }`:"{}"}let c=[`example: ${a}`];return o?.text&&c.push(o.text),`Type ${s} {
|
|
375
375
|
${c.join(`
|
|
376
376
|
`)}
|
|
377
|
-
}`}function Jc(e,t,n,r){let s=e.name.getText(t),i=[];for(let u of e.typeParameters||[]){let f=u.name.getText(t);if(u.default){let p=
|
|
377
|
+
}`}function Jc(e,t,n,r){let s=e.name.getText(t),i=[];for(let u of e.typeParameters||[]){let f=u.name.getText(t);if(u.default){let p=q(u.default,void 0,n);i.push(`${f} = ${p}`)}else i.push(f)}let o=r?.find(u=>u.kind==="predicate"),a=r?.find(u=>u.kind==="declaration"),c;if(o?.text)c=o.text;else{let u=(e.typeParameters||[]).map(m=>m.name.getText(t)),f=["typeof x === 'object'","x !== null"];for(let m of e.members)if(_.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=d.startsWith("[")&&d.endsWith("]"),b=y?d.slice(1,-1):null;if(y?f.push(`${b} in x`):f.push(`'${d}' in x`),m.type&&_.isTypeReferenceNode(m.type)){let $=m.type.typeName.getText(t);u.includes($)&&(y?f.push(`${$}(x[${b}])`):f.push(`${$}(x.${d})`))}}c=`predicate(${["x",...u].join(", ")}) { return ${f.join(" && ")} }`}let l=[`description: '${s}'`,c];if(a?.text)l.push(`declaration ${a.text}`);else{let u=[];for(let f of e.members)if(_.isPropertySignature(f)&&f.name){let p=f.name.getText(t),m=f.questionToken?"?":"",d=f.type?q(f.type,void 0,n):"null";u.push(`${p}${m}: ${d}`)}else if(_.isMethodSignature(f)&&f.name){let p=f.name.getText(t),m=f.type?q(f.type,void 0,n):"null";u.push(`${p}: FunctionPredicate('function', { returns: ${m} })`)}u.length>0&&l.push(`declaration {
|
|
378
378
|
${u.join(`
|
|
379
379
|
`)}
|
|
380
380
|
}`)}return`Generic ${s}<${i.join(", ")}> {
|
|
@@ -383,31 +383,31 @@ ${p}
|
|
|
383
383
|
}`}function Vc(e,t){if(!_.isUnionTypeNode(e))return null;let n=[];for(let r of e.types)if(_.isLiteralTypeNode(r))if(_.isStringLiteral(r.literal))n.push(`'${r.literal.text}'`);else if(_.isNumericLiteral(r.literal))n.push(r.literal.text);else if(r.literal.kind===_.SyntaxKind.TrueKeyword)n.push("true");else if(r.literal.kind===_.SyntaxKind.FalseKeyword)n.push("false");else if(r.literal.kind===_.SyntaxKind.NullKeyword)n.push("null");else return null;else if(r.kind===_.SyntaxKind.NullKeyword)n.push("null");else if(r.kind===_.SyntaxKind.UndefinedKeyword)n.push("undefined");else return null;return n.length>0?n:null}function Kc(e,t,n){let r=e.name.getText(t),s=[],i=0;for(let o of e.members){let a=o.name.getText(t);if(o.initializer)if(_.isStringLiteral(o.initializer))s.push(` ${a} = '${o.initializer.text}'`);else if(_.isNumericLiteral(o.initializer)){let c=parseInt(o.initializer.text,10);s.push(` ${a} = ${c}`),i=c+1}else if(_.isPrefixUnaryExpression(o.initializer)&&o.initializer.operator===_.SyntaxKind.MinusToken){let c=o.initializer.operand;if(_.isNumericLiteral(c)){let l=-parseInt(c.text,10);s.push(` ${a} = ${l}`),i=l+1}}else s.push(` ${a} = ${o.initializer.getText(t)}`);else s.push(` ${a} = ${i}`),i++}return`Enum ${r} '${r}' {
|
|
384
384
|
${s.join(`
|
|
385
385
|
`)}
|
|
386
|
-
}`}function zc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return e.type.kind===_.SyntaxKind.FunctionType?Gc(e,t,n):Hc(e,t,n,r);let i=Vc(e.type,t);if(i)return`Union ${s} '${s}' ${i.join(" | ")}`;if(e.type.kind===_.SyntaxKind.FunctionType){let a=e.type,c=[];for(let f of a.parameters){let p=f.name?.getText(t)||"_";if(p==="this")continue;let m=
|
|
386
|
+
}`}function zc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return e.type.kind===_.SyntaxKind.FunctionType?Gc(e,t,n):Hc(e,t,n,r);let i=Vc(e.type,t);if(i)return`Union ${s} '${s}' ${i.join(" | ")}`;if(e.type.kind===_.SyntaxKind.FunctionType){let a=e.type,c=[];for(let f of a.parameters){let p=f.name?.getText(t)||"_";if(p==="this")continue;let m=q(f.type,void 0,n);m==="any"&&(m="null"),c.push(`${p}: ${m}`)}let l=q(a.type,void 0,n);l==="any"&&(l="null");let u=[];return c.length>0&&u.push(`params: { ${c.join(", ")} }`),l!=="undefined"&&u.push(`returns: ${l}`),`FunctionPredicate ${s} {
|
|
387
387
|
${u.join(`
|
|
388
388
|
`)}
|
|
389
|
-
}`}let o=
|
|
389
|
+
}`}let o=q(e.type,void 0,n);if(o==="any"||o==="undefined"){let a=e.type.getText(t).trim().replace(/\s+/g," ");return`Type ${s} {
|
|
390
390
|
// TS: ${a}
|
|
391
391
|
}`}return o==="''"||o==="0"||o==="true"||o==="null"?`Type ${s} ${o}`:`Type ${s} {
|
|
392
392
|
example: ${o}
|
|
393
|
-
}`}function Gc(e,t,n){let r=e.name.getText(t),s=e.type,i=new Set,o=[];for(let f of e.typeParameters){let p=f.name.getText(t);if(i.add(p),f.default){let m=
|
|
393
|
+
}`}function Gc(e,t,n){let r=e.name.getText(t),s=e.type,i=new Set,o=[];for(let f of e.typeParameters){let p=f.name.getText(t);if(i.add(p),f.default){let m=q(f.default,void 0,n);o.push(`${p} = ${m}`)}else o.push(p)}let a=[];for(let f of s.parameters){let p=f.name?.getText(t)||"_";if(p==="this")continue;let m=f.type?.getText(t)||"any";if(i.has(m))a.push(`${p}: ${m}`);else{let d=q(f.type,void 0,n);d==="any"&&(d="null"),a.push(`${p}: ${d}`)}}let c=s.type?.getText(t)||"void",l;c!=="void"&&(i.has(c)?l=c:(l=q(s.type,void 0,n),l==="any"&&(l="null"),l==="undefined"&&(l=void 0)));let u=[];return a.length>0&&u.push(`params: { ${a.join(", ")} }`),l!==void 0&&u.push(`returns: ${l}`),`FunctionPredicate ${r}<${o.join(", ")}> {
|
|
394
394
|
${u.join(`
|
|
395
395
|
`)}
|
|
396
|
-
}`}function Hc(e,t,n,r){let s=e.name.getText(t),i=[];for(let f of e.typeParameters||[]){let p=f.name.getText(t);if(f.default){let m=
|
|
396
|
+
}`}function Hc(e,t,n,r){let s=e.name.getText(t),i=[];for(let f of e.typeParameters||[]){let p=f.name.getText(t);if(f.default){let m=q(f.default,void 0,n);i.push(`${p} = ${m}`)}else i.push(p)}let o=(e.typeParameters||[]).map(f=>f.name.getText(t)),a=r?.find(f=>f.kind==="predicate"),c=r?.find(f=>f.kind==="declaration"),l;a?.text?l=a.text:l=`predicate(${["x",...o].join(", ")}) { return true }`;let u=[`description: '${s}'`,l];if(c?.text)u.push(`declaration ${c.text}`);else{let f=e.type;if(f&&_.isTypeLiteralNode(f)){let p=[];for(let m of f.members)if(_.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=m.questionToken?"?":"",b=m.type?q(m.type,void 0,n):"null";p.push(`${d}${y}: ${b}`)}else if(_.isMethodSignature(m)&&m.name){let d=m.name.getText(t),y=m.type?q(m.type,void 0,n):"null";p.push(`${d}: FunctionPredicate('function', { returns: ${y} })`)}p.length>0&&u.push(`declaration {
|
|
397
397
|
${p.join(`
|
|
398
398
|
`)}
|
|
399
|
-
}`)}else if(f){let p=f.getText(t).trim();u.push(`declaration {
|
|
399
|
+
}`)}else if(f){let p=f.getText(t).trim().replace(/\s+/g," ");u.push(`declaration {
|
|
400
400
|
// TS: ${p}
|
|
401
401
|
}`)}}return`Generic ${s}<${i.join(", ")}> {
|
|
402
402
|
${u.join(`
|
|
403
403
|
`)}
|
|
404
404
|
}`}function Di(e,t,n,r,s,i){let o;if(e.typeParameters&&e.typeParameters.length>0){o=new Map;for(let j of e.typeParameters)o.set(j.name.getText(t),{constraint:j.constraint,default:j.default})}let a=o||i?{...i,typeParams:o??i?.typeParams}:i,c=[],l=at(e.parameters,t,r,c,a),{line:u}=t.getLineAndCharacterOfPosition(e.getStart(t)),f=s?`/* line ${u+1} */
|
|
405
|
-
`:"",p=n||(_.isFunctionDeclaration(e)&&e.name?e.name.getText(t):""),m=e.type?
|
|
406
|
-
`:"";return`${f}${
|
|
407
|
-
`,
|
|
405
|
+
`:"",p=n||(_.isFunctionDeclaration(e)&&e.name?e.name.getText(t):""),m=e.type?q(e.type,void 0,r,a):"",d=m&&m!=="undefined"&&m!=="any"&&!m.startsWith("new ")?`:! ${m}`:"";if(e.type&&(m==="any"||m==="undefined")){let j=e.type.getText(t);j!=="any"&&j!=="unknown"&&j!=="void"&&c.push(`return: ${j}`)}let y;if(e.body){let j=_.isBlock(e.body)?e.body.getText(t):`{ return ${e.body.getText(t)} }`;y=_.transpileModule(j,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else y="{ }";let b=e.modifiers?.some(j=>j.kind===_.SyntaxKind.ExportKeyword),$=e.modifiers?.some(j=>j.kind===_.SyntaxKind.AsyncKeyword),T=!!e.asteriskToken,x=b?"export ":"",w=$?"async ":"",E=T?"function* ":"function ",S=c.length>0?`/* TODO: TS types degraded \u2014 ${c.join(", ")} */
|
|
406
|
+
`:"";return`${f}${S}${x}${w}${E}${p}(${l.join(", ")})${d} ${y}`}function Zc(e,t,n,r){let s=t.name?.getText(n)||"",i=`_${s}_impl`,o=[],a=at(t.parameters,n,r),c="{ }";if(t.body){let m=t.body.getText(n);c=_.transpileModule(m,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}let l=t.modifiers?.some(m=>m.kind===_.SyntaxKind.AsyncKeyword),u=!!t.asteriskToken,f=l?"async ":"",p=u?"function* ":"function ";o.push(`${f}${p}${i}(${a.join(", ")}) ${c}`);for(let m of e){let d=at(m.parameters,n,r),y=m.parameters.map(E=>E.name.getText(n)),b=m.type?q(m.type,void 0,r):"",$=b&&b!=="undefined"&&b!=="any"?`:! ${b}`:"",{line:T}=n.getLineAndCharacterOfPosition(m.getStart(n)),x=`/* line ${T+1} */
|
|
407
|
+
`,w=u?"yield* ":"return ";o.push(`${x}${f}${p}${s}(${d.join(", ")})${$} { ${w}${i}(${y.join(", ")}) }`)}return o}function Yc(e,t,n,r,s=!1){let i=r;if(e.typeParameters&&e.typeParameters.length>0){let y=new Map;for(let b of e.typeParameters)y.set(b.name.getText(t),{constraint:b.constraint,default:b.default});i={...r,typeParams:y}}let o=e.name?.getText(t)||"Anonymous",c=e.heritageClauses?.find(y=>y.token===_.SyntaxKind.ExtendsKeyword)?.types[0]?.expression?.getText(t),l=new Map;if(s){for(let y of e.members)if(_.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t);y.modifiers?.some(T=>T.kind===_.SyntaxKind.PrivateKeyword)&&!b.startsWith("#")&&l.set(b,`#${b}`)}}let u=y=>{let b=y;for(let[$,T]of l)b=b.replace(new RegExp(`(\\b\\w+)\\.${$}\\b`,"g"),`$1.${T}`);return b},f=[];for(let y of e.members){if(_.isConstructorDeclaration(y)){let b=at(y.parameters,t,n),$="{ }";if(y.body){let T=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});$=u(T.outputText.trim())}f.push(` constructor(${b.join(", ")}) ${$}`)}if(_.isMethodDeclaration(y)&&y.name){let b=y.name.getText(t),$=y.modifiers?.some(C=>C.kind===_.SyntaxKind.StaticKeyword),T=y.modifiers?.some(C=>C.kind===_.SyntaxKind.AsyncKeyword),x=at(y.parameters,t,n,void 0,i),w=y.type?q(y.type,void 0,n,i):"",E=w&&w!=="undefined"&&w!=="any"?`:! ${w}`:"",S="{ }";if(y.body){let C=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});S=u(C.outputText.trim())}let j=!!y.asteriskToken,A=$?"static ":"",k=T?"async ":"",v=j?"*":"";f.push(` ${A}${k}${v}${b}(${x.join(", ")})${E} ${S}`)}if(_.isGetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),T=y.modifiers?.some(S=>S.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=y.type?q(y.type,void 0,n,i):"",w=x&&x!=="undefined"&&x!=="any"&&!x.startsWith("new ")?`: ${x}`:"",E="{ }";if(y.body){let S=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});E=u(S.outputText.trim())}f.push(` ${T}get ${b}()${w} ${E}`)}if(_.isSetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),T=y.modifiers?.some(E=>E.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=at(y.parameters,t,n),w="{ }";if(y.body){let E=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});w=u(E.outputText.trim())}f.push(` ${T}set ${b}(${x.join(", ")}) ${w}`)}if(_.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t),T=y.modifiers?.some(w=>w.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=l.get(b)||b;if(y.initializer){let w=y.initializer.getText(t),E=w.trimStart().startsWith("{")?`(${w})`:w,j=_.transpileModule(E,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();E!==w&&(j=j.replace(/^\(/,"").replace(/\);?\s*$/,"")),f.push(` ${T}${x} = ${j}`)}else f.push(` ${T}${x}`)}}let m=e.modifiers?.some(y=>y.kind===_.SyntaxKind.ExportKeyword)?"export ":"",d=c?` extends ${c}`:"";return`${m}class ${o}${d} {
|
|
408
408
|
${f.join(`
|
|
409
409
|
`)}
|
|
410
|
-
}`}function at(e,t,n,r,s){let i=[];for(let o of e){let a=o.name.getText(t);if(a==="this")continue;let c=!!o.dotDotDotToken,l=!!o.questionToken||!!o.initializer,u=
|
|
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(`
|
|
411
411
|
`)+`
|
|
412
412
|
|
|
413
413
|
`:""}/* tjs <- ${k} */
|
|
@@ -424,12 +424,12 @@ ${k}.__tjs = ${P};
|
|
|
424
424
|
${k}.__tjs = ${P};
|
|
425
425
|
`,A+=`
|
|
426
426
|
${yi(k)}
|
|
427
|
-
`}return{code:A,types:d,classes:Object.keys(y).length>0?y:void 0,warnings:s.length>0?s:void 0}}import{s as Bi}from"tosijs-schema";function Li(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function In(e){return Bi.infer(e)}function Nr(e){return In(e)}Nr.type=Li;Nr.infer=In;var ol=new Proxy(Nr,{get(e,t){return t==="type"?Li:t==="infer"?In:Bi[t]},apply(e,t,n){return In(n[0])}});async function Dn(e){let t=`${fe}:${e}`;if(typeof crypto<"u"&&crypto.subtle){let s=new TextEncoder().encode(t),i=await crypto.subtle.digest("SHA-256",s);return Array.from(new Uint8Array(i)).map(a=>a.toString(16).padStart(2,"0")).join("")}let n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}function al(e){let t=`${fe}:${e}`,n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}var cl="tjs-metadata-cache",ll=1,re="modules",On=class{db=null;stats={hits:0,misses:0};pendingOpen=null;async open(){if(!this.db){if(this.pendingOpen)return this.pendingOpen;this.pendingOpen=this._open(),await this.pendingOpen,this.pendingOpen=null}}async _open(){return new Promise((t,n)=>{if(typeof indexedDB>"u"){t();return}let r=indexedDB.open(cl,ll);r.onerror=()=>{console.warn("MetadataCache: Failed to open IndexedDB",r.error),t()},r.onsuccess=()=>{this.db=r.result,t()},r.onupgradeneeded=s=>{let i=s.target.result;if(!i.objectStoreNames.contains(re)){let o=i.createObjectStore(re,{keyPath:"hash"});o.createIndex("timestamp","timestamp"),o.createIndex("version","version")}}})}async get(t){if(!this.db){this.stats.misses++;return}let n=await Dn(t);return new Promise(r=>{let o=this.db.transaction(re,"readonly").objectStore(re).get(n);o.onerror=()=>{this.stats.misses++,r(void 0)},o.onsuccess=()=>{let a=o.result;if(a&&a.version!==fe){this.stats.misses++,r(void 0);return}a?this.stats.hits++:this.stats.misses++,r(a)}})}async getTranspile(t){return(await this.get(t))?.transpile}async getTJS(t){return(await this.get(t))?.tjs}async setTranspile(t,n){await this._set(t,{transpile:n})}async setTJS(t,n){await this._set(t,{tjs:n})}async _set(t,n){if(!this.db)return;let r=await Dn(t);return new Promise((s,i)=>{let a=this.db.transaction(re,"readwrite").objectStore(re),c=a.get(r);c.onsuccess=()=>{let l=c.result,u={hash:r,version:fe,timestamp:Date.now(),transpile:n.transpile??l?.transpile,tjs:n.tjs??l?.tjs},f=a.put(u);f.onerror=()=>i(f.error),f.onsuccess=()=>s()},c.onerror=()=>i(c.error)})}async delete(t){if(!this.db)return;let n=await Dn(t);return new Promise((r,s)=>{let a=this.db.transaction(re,"readwrite").objectStore(re).delete(n);a.onerror=()=>s(a.error),a.onsuccess=()=>r()})}async clear(){if(this.db)return new Promise((t,n)=>{let i=this.db.transaction(re,"readwrite").objectStore(re).clear();i.onerror=()=>n(i.error),i.onsuccess=()=>{this.stats={hits:0,misses:0},t()}})}async prune(t){if(!this.db)return 0;let n=Date.now()-t;return new Promise((r,s)=>{let a=this.db.transaction(re,"readwrite").objectStore(re).index("timestamp"),c=IDBKeyRange.upperBound(n),l=0,u=a.openCursor(c);u.onsuccess=f=>{let p=f.target.result;p?(p.delete(),l++,p.continue()):r(l)},u.onerror=()=>s(u.error)})}async pruneOldVersions(){return this.db?new Promise((t,n)=>{let s=this.db.transaction(re,"readwrite").objectStore(re),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(c.value.version!==fe&&(c.delete(),i++),c.continue()):t(i)},o.onerror=()=>n(o.error)}):0}async getStats(){let t=await this.count(),n=await this.estimateSize(),r=this.stats.hits+this.stats.misses,s=r>0?this.stats.hits/r:0;return{entries:t,bytes:n,hits:this.stats.hits,misses:this.stats.misses,hitRate:s}}async count(){return this.db?new Promise((t,n)=>{let i=this.db.transaction(re,"readonly").objectStore(re).count();i.onerror=()=>n(i.error),i.onsuccess=()=>t(i.result)}):0}async estimateSize(){if(!this.db)return 0;if(typeof navigator<"u"&&navigator.storage?.estimate)try{return(await navigator.storage.estimate()).usage??0}catch{}return new Promise((t,n)=>{let s=this.db.transaction(re,"readonly").objectStore(re),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(i+=JSON.stringify(c.value).length*2,c.continue()):t(i)},o.onerror=()=>n(o.error)})}close(){this.db&&(this.db.close(),this.db=null)}isAvailable(){return this.db!==null}resetStats(){this.stats={hits:0,misses:0}}},Bt=null;async function Bn(){return Bt||(Bt=new On,await Bt.open()),Bt}function ul(e){Bt=e}var fl={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function pl(e,t={}){let n={...fl,...t},r=[],s,i=new Map,o;try{let u=xe(e,{filename:n.filename,colonShorthand:!0});s=u.ast,i=u.letAnnotations,o=u.tjsModes.tjsSafeAssign}catch(u){return{diagnostics:[{severity:"error",message:u.message,line:u.loc?.line,column:u.loc?.column,rule:"parse-error"}],valid:!1}}let a=n.safeAssign!==void 0?n.safeAssign:o,c=n.strict?"error":"warning",l=[Fi()];if(Ks(s,{FunctionDeclaration(u,f,p){let m=Fi();l.push(m);for(let d of u.params)ml(m,d,"parameter");u.id&&(l[l.length-2]||l[0]).declarations.set(u.id.name,{node:u.id,kind:"function",used:!1})},VariableDeclaration(u){let f=l[l.length-1];for(let p of u.declarations)p.id.type==="Identifier"&&f.declarations.set(p.id.name,{node:p.id,kind:u.kind,used:!1})}}),
|
|
427
|
+
`}return{code:A,types:d,classes:Object.keys(y).length>0?y:void 0,warnings:s.length>0?s:void 0}}import{s as Bi}from"tosijs-schema";function Li(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function In(e){return Bi.infer(e)}function Nr(e){return In(e)}Nr.type=Li;Nr.infer=In;var ol=new Proxy(Nr,{get(e,t){return t==="type"?Li:t==="infer"?In:Bi[t]},apply(e,t,n){return In(n[0])}});async function Dn(e){let t=`${fe}:${e}`;if(typeof crypto<"u"&&crypto.subtle){let s=new TextEncoder().encode(t),i=await crypto.subtle.digest("SHA-256",s);return Array.from(new Uint8Array(i)).map(a=>a.toString(16).padStart(2,"0")).join("")}let n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}function al(e){let t=`${fe}:${e}`,n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}var cl="tjs-metadata-cache",ll=1,re="modules",On=class{db=null;stats={hits:0,misses:0};pendingOpen=null;async open(){if(!this.db){if(this.pendingOpen)return this.pendingOpen;this.pendingOpen=this._open(),await this.pendingOpen,this.pendingOpen=null}}async _open(){return new Promise((t,n)=>{if(typeof indexedDB>"u"){t();return}let r=indexedDB.open(cl,ll);r.onerror=()=>{console.warn("MetadataCache: Failed to open IndexedDB",r.error),t()},r.onsuccess=()=>{this.db=r.result,t()},r.onupgradeneeded=s=>{let i=s.target.result;if(!i.objectStoreNames.contains(re)){let o=i.createObjectStore(re,{keyPath:"hash"});o.createIndex("timestamp","timestamp"),o.createIndex("version","version")}}})}async get(t){if(!this.db){this.stats.misses++;return}let n=await Dn(t);return new Promise(r=>{let o=this.db.transaction(re,"readonly").objectStore(re).get(n);o.onerror=()=>{this.stats.misses++,r(void 0)},o.onsuccess=()=>{let a=o.result;if(a&&a.version!==fe){this.stats.misses++,r(void 0);return}a?this.stats.hits++:this.stats.misses++,r(a)}})}async getTranspile(t){return(await this.get(t))?.transpile}async getTJS(t){return(await this.get(t))?.tjs}async setTranspile(t,n){await this._set(t,{transpile:n})}async setTJS(t,n){await this._set(t,{tjs:n})}async _set(t,n){if(!this.db)return;let r=await Dn(t);return new Promise((s,i)=>{let a=this.db.transaction(re,"readwrite").objectStore(re),c=a.get(r);c.onsuccess=()=>{let l=c.result,u={hash:r,version:fe,timestamp:Date.now(),transpile:n.transpile??l?.transpile,tjs:n.tjs??l?.tjs},f=a.put(u);f.onerror=()=>i(f.error),f.onsuccess=()=>s()},c.onerror=()=>i(c.error)})}async delete(t){if(!this.db)return;let n=await Dn(t);return new Promise((r,s)=>{let a=this.db.transaction(re,"readwrite").objectStore(re).delete(n);a.onerror=()=>s(a.error),a.onsuccess=()=>r()})}async clear(){if(this.db)return new Promise((t,n)=>{let i=this.db.transaction(re,"readwrite").objectStore(re).clear();i.onerror=()=>n(i.error),i.onsuccess=()=>{this.stats={hits:0,misses:0},t()}})}async prune(t){if(!this.db)return 0;let n=Date.now()-t;return new Promise((r,s)=>{let a=this.db.transaction(re,"readwrite").objectStore(re).index("timestamp"),c=IDBKeyRange.upperBound(n),l=0,u=a.openCursor(c);u.onsuccess=f=>{let p=f.target.result;p?(p.delete(),l++,p.continue()):r(l)},u.onerror=()=>s(u.error)})}async pruneOldVersions(){return this.db?new Promise((t,n)=>{let s=this.db.transaction(re,"readwrite").objectStore(re),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(c.value.version!==fe&&(c.delete(),i++),c.continue()):t(i)},o.onerror=()=>n(o.error)}):0}async getStats(){let t=await this.count(),n=await this.estimateSize(),r=this.stats.hits+this.stats.misses,s=r>0?this.stats.hits/r:0;return{entries:t,bytes:n,hits:this.stats.hits,misses:this.stats.misses,hitRate:s}}async count(){return this.db?new Promise((t,n)=>{let i=this.db.transaction(re,"readonly").objectStore(re).count();i.onerror=()=>n(i.error),i.onsuccess=()=>t(i.result)}):0}async estimateSize(){if(!this.db)return 0;if(typeof navigator<"u"&&navigator.storage?.estimate)try{return(await navigator.storage.estimate()).usage??0}catch{}return new Promise((t,n)=>{let s=this.db.transaction(re,"readonly").objectStore(re),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(i+=JSON.stringify(c.value).length*2,c.continue()):t(i)},o.onerror=()=>n(o.error)})}close(){this.db&&(this.db.close(),this.db=null)}isAvailable(){return this.db!==null}resetStats(){this.stats={hits:0,misses:0}}},Bt=null;async function Bn(){return Bt||(Bt=new On,await Bt.open()),Bt}function ul(e){Bt=e}var fl={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function pl(e,t={}){let n={...fl,...t},r=[],s,i=new Map,o;try{let u=xe(e,{filename:n.filename,colonShorthand:!0});s=u.ast,i=u.letAnnotations,o=u.tjsModes.tjsSafeAssign}catch(u){return{diagnostics:[{severity:"error",message:u.message,line:u.loc?.line,column:u.loc?.column,rule:"parse-error"}],valid:!1}}let a=n.safeAssign!==void 0?n.safeAssign:o,c=n.strict?"error":"warning",l=[Fi()];if(Ks(s,{FunctionDeclaration(u,f,p){let m=Fi();l.push(m);for(let d of u.params)ml(m,d,"parameter");u.id&&(l[l.length-2]||l[0]).declarations.set(u.id.name,{node:u.id,kind:"function",used:!1})},VariableDeclaration(u){let f=l[l.length-1];for(let p of u.declarations)p.id.type==="Identifier"&&f.declarations.set(p.id.name,{node:p.id,kind:u.kind,used:!1})}}),Se(s,{Identifier(u){for(let f=l.length-1;f>=0;f--){let p=l[f].declarations.get(u.name);if(p){p.used=!0;break}}}}),n.unusedVariables)for(let u of l)for(let[f,p]of u.declarations)f.startsWith("_")||!p.used&&p.kind!=="function"&&r.push({severity:"warning",message:`'${f}' is declared but never used`,line:p.node.loc?.start?.line,column:p.node.loc?.start?.column,rule:"no-unused-vars"});if(n.unreachableCode&&Se(s,{BlockStatement(u){let f=!1;for(let p of u.body){if(f){r.push({severity:"warning",message:"Unreachable code after return statement",line:p.loc?.start?.line,column:p.loc?.start?.column,rule:"no-unreachable"});break}p.type==="ReturnStatement"&&(f=!0)}}}),a){let u=new Set;Se(s,{VariableDeclaration(f){if(f.kind==="let")for(let p of f.declarations){if(p.id.type!=="Identifier")continue;let m=p.id.name,d=i.has(m),y=p.init;(d||y&&!Pr(y))&&u.add(m)}}}),Se(s,{VariableDeclaration(f){if(f.kind==="let")for(let p of f.declarations){if(p.id.type!=="Identifier")continue;let m=p.id.name;i.has(m)||(p.init?Pr(p.init)&&r.push({severity:c,message:`'let ${m}' is initialized to ${Ui(p.init)} with no type annotation. Annotate (let ${m}: <example>) to record the intended type.`,line:p.loc?.start?.line,column:p.loc?.start?.column,rule:"safe-assign-let-needs-type"}):r.push({severity:c,message:`'let ${m}' has no initializer or type annotation. Add an initializer (let ${m} = ...) or annotate (let ${m}: <example>).`,line:p.loc?.start?.line,column:p.loc?.start?.column,rule:"safe-assign-let-needs-type"}))}}}),Se(s,{AssignmentExpression(f){if(f.operator!=="="||f.left.type!=="Identifier")return;let p=f.left.name;u.has(p)&&Pr(f.right)&&r.push({severity:c,message:`Cannot assign ${Ui(f.right)} to typed let '${p}'.`,line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"safe-assign-no-nullish"})}})}return n.noExplicitNew&&Se(s,{NewExpression(u){let f="class";u.callee.type==="Identifier"?f=u.callee.name:u.callee.type==="MemberExpression"&&u.callee.property.type==="Identifier"&&(f=u.callee.property.name),r.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${f}(...) instead of new ${f}(...)`,line:u.loc?.start?.line,column:u.loc?.start?.column,rule:"no-explicit-new"})}}),{diagnostics:r,valid:r.filter(u=>u.severity==="error").length===0}}function Fi(){return{declarations:new Map}}function Pr(e){return e?e.type==="Identifier"&&e.name==="undefined"||e.type==="Literal"&&e.value===null||e.type==="UnaryExpression"&&e.operator==="void":!1}function Ui(e){return e.type==="Identifier"?"undefined":e.type==="Literal"&&e.value===null?"null":e.type==="UnaryExpression"&&e.operator==="void"?"void <expr> (undefined)":"a nullish value"}function ml(e,t,n){t.type==="Identifier"?e.declarations.set(t.name,{node:t,kind:n,used:!1}):t.type==="AssignmentPattern"&&t.left.type==="Identifier"&&e.declarations.set(t.left.name,{node:t.left,kind:n,used:!1})}function dl(e){let t=new Array(e.length).fill(!1),n=0;for(;n<e.length;){let r=e[n],s=e[n+1];if(r==='"'||r==="'"||r==="`"){let i=r;for(n++;n<e.length;){if(e[n]==="\\"){n+=2;continue}if(e[n]===i){n++;break}n++}continue}if(r==="/"&&s==="/"){for(;n<e.length&&e[n]!==`
|
|
428
428
|
`;)t[n]=!0,n++;continue}if(r==="/"&&s==="*"){let i=n;for(n+=2;n<e.length-1&&!(e[n]==="*"&&e[n+1]==="/");)n++;let o=Math.min(e.length,n+2);for(let a=i;a<o;a++)t[a]=!0;n=o;continue}n++}return t}function Wi(e){let t=[],n=0,r=null;for(let s=0;s<e.length;s++){let i=e[s],o=s>0?e[s-1]:"";!r&&(i==='"'||i==="'"||i==="`")?r=i:r&&i===r&&o!=="\\"&&(r=null),r||(i==="{"&&n++,i==="}"&&n--),t[s]=n}return t}function qi(e){let t=e.split(`
|
|
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,
|
|
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
|
|
433
433
|
${f.signature}
|
|
434
434
|
\`\`\``:`\`\`\`tjs
|
|
435
435
|
${gl(f)}
|
|
@@ -448,7 +448,7 @@ ${i.signature}
|
|
|
448
448
|
\`\`\`
|
|
449
449
|
|
|
450
450
|
`,o?.params&&Object.keys(o.params).length>0){r+=`**Parameters:**
|
|
451
|
-
`;for(let[a,c]of Object.entries(o.params)){let l=c.required?"":" *(optional)*",u=c.type?_e(c.type):"any",f=c.example!==void 0?
|
|
451
|
+
`;for(let[a,c]of Object.entries(o.params)){let l=c.required?"":" *(optional)*",u=c.type?_e(c.type):"any",f=c.example!==void 0?Sl(c.example):null,p=f?` (e.g. \`${f}\`)`:"";r+=`- \`${a}\`: ${u}${l}${p}
|
|
452
452
|
`}r+=`
|
|
453
453
|
`}o?.returns&&(r+=`**Returns:** ${o.returns.kind||"void"}
|
|
454
454
|
|
|
@@ -459,8 +459,8 @@ ${i.signature}
|
|
|
459
459
|
`)+`
|
|
460
460
|
`;r+="```tjs\n"+o+a+"}\n```\n\n"}let{tests:s}=jt(e);for(let i of s)i.description&&(/^test \d+$/.test(i.description)||(r+=`### ${i.description} (test cases)
|
|
461
461
|
|
|
462
|
-
`,r+="```tjs\n",r+=
|
|
463
|
-
`,r+="```\n\n"));return r.trim()||"*No documentation available*"}function Sl(e){let t=0,n="",r=null;for(;t<e.length;){let s=e[t],i=t>0?e[t-1]:"";if(r){n+=s,s===r&&i!=="\\"&&(r=null),t++;continue}if(s==='"'||s==="'"||s==="`"){r=s,n+=s,t++;continue}if(e.slice(t).startsWith("expect(")){let o=t+7,a=Ln(e,o);if(a>o){let l=e.slice(a+1).match(/^\.(\w+)(\()?/);if(l&&l[2]==="("){let u=a+1+l[0].length,f=Ln(e,u);if(f>=u){let p=e.slice(o,a),m=l[1],d=e.slice(u,f);n+=Tl(p,m,d),t=f+1;continue}}}}n+=s,t++}return n}function Ln(e,t){let n=1,r=t,s=null;for(;r<e.length;){let i=e[r],o=r>0?e[r-1]:"";if(s)i===s&&o!=="\\"&&(s=null);else if(i==='"'||i==="'"||i==="`")s=i;else if(i==="(")n++;else if(i===")"&&(n--,n===0))return r;r++}return-1}function wl(e){if(typeof e=="function")return null;try{let t=JSON.stringify(e);return t===void 0?null:t}catch{return null}}function Tl(e,t,n){let r=e.trim(),s=n.trim();switch(t){case"toBe":return`${r} // \u2192 ${s}`;case"toEqual":return`${r} // \u2261 ${s}`;case"toBeTruthy":return`${r} // \u2192 truthy`;case"toBeFalsy":return`${r} // \u2192 falsy`;case"toBeNull":return`${r} // \u2192 null`;case"toBeUndefined":return`${r} // \u2192 undefined`;case"toContain":return`${r} // \u2192 contains ${s}`;case"toThrow":return`${r} // \u2192 throws`;case"toBeGreaterThan":return`${r} // \u2192 > ${s}`;case"toBeLessThan":return`${r} // \u2192 < ${s}`;case"toBeNaN":return`${r} // \u2192 NaN`;default:return`${r} // .${t}(${s})`}}import{existsSync as El,readFileSync as $l}from"node:fs";import{dirname as Ir,isAbsolute as _l,resolve as Lt,sep as kl}from"node:path";var Dr=[".tjs",".ts",".js"],jl={readFile(e){try{return $l(e,"utf8")}catch{return null}},exists(e){try{return El(e)}catch{return!1}}},Or=class{cache=new Map;fs;baseDir;bareSpecifierRoots;cacheLimit;constructor(t={}){this.fs=t.fs??jl,this.baseDir=t.baseDir??process.cwd(),this.bareSpecifierRoots=t.bareSpecifierRoots??[],this.cacheLimit=t.cacheLimit??256}resolve(t,n){return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:")||t.startsWith("file://")?null:t.startsWith("./")||t.startsWith("../")?this.tryExtensions(Lt(n?Ir(n):this.baseDir,t)):_l(t)?this.tryExtensions(t):this.resolveBare(t,n)}load(t,n){let r=this.resolve(t,n);if(!r)return null;let s=this.cache.get(r);if(s)return s;let i=this.fs.readFile(r);if(i===null)return null;let o;try{o=xe(i,{filename:r})}catch{return null}let a=vl(o.ast),c=Ml(o.ast),l={path:r,source:i,parseResult:o,imports:a,exports:c};if(this.cacheLimit>0){if(this.cache.size>=this.cacheLimit){let u=this.cache.keys().next().value;u!==void 0&&this.cache.delete(u)}this.cache.set(r,l)}return l}clearCache(){this.cache.clear()}tryExtensions(t){if(Dr.some(n=>t.endsWith(n)))return this.fs.exists(t)?t:null;for(let n of Dr){let r=t+n;if(this.fs.exists(r))return r}for(let n of Dr){let r=Lt(t,"index"+n);if(this.fs.exists(r))return r}return null}resolveBare(t,n){for(let s of this.bareSpecifierRoots){let i=this.tryExtensions(Lt(s,t));if(i)return i}let r=n?Ir(n):this.baseDir;for(r=Lt(r);;){let s=this.tryExtensions(Lt(r,"node_modules",t));if(s)return s;let i=Ir(r);if(i===r)break;r=i}return null}};function vl(e){let t=[];if(!e||!Array.isArray(e.body))return t;for(let n of e.body){if(n.type!=="ImportDeclaration")continue;let r=n.source?.value;if(typeof r=="string")for(let s of n.specifiers??[]){let i=s.local?.name;if(typeof i=="string")switch(s.type){case"ImportSpecifier":t.push({specifier:r,local:i,imported:s.imported?.name??i,namespace:!1});break;case"ImportDefaultSpecifier":t.push({specifier:r,local:i,imported:"default",namespace:!1});break;case"ImportNamespaceSpecifier":t.push({specifier:r,local:i,imported:"*",namespace:!0});break}}}return t}function Ml(e){let t=[];if(!e||!Array.isArray(e.body))return t;for(let n of e.body)if(n.type==="ExportNamedDeclaration"){if(n.declaration){let r=n.declaration;if(r.type==="FunctionDeclaration"&&r.id?.name)t.push({name:r.id.name,kind:"function"});else if(r.type==="ClassDeclaration"&&r.id?.name)t.push({name:r.id.name,kind:"class"});else if(r.type==="VariableDeclaration")for(let s of r.declarations)s.id?.type==="Identifier"&&s.id.name&&t.push({name:s.id.name,kind:"variable"})}if(Array.isArray(n.specifiers))for(let r of n.specifiers){let s=r.exported?.name;typeof s=="string"&&t.push({name:s,kind:n.source?"re-export":"unknown",fromSpecifier:n.source?.value})}}else if(n.type==="ExportDefaultDeclaration"){let r=n.declaration,s=r?.type==="FunctionDeclaration"||r?.type==="FunctionExpression"||r?.type==="ArrowFunctionExpression"?"function":r?.type==="ClassDeclaration"||r?.type==="ClassExpression"?"class":"unknown";t.push({name:"default",kind:s})}else if(n.type==="ExportAllDeclaration"){let r=n.source?.value;typeof r=="string"&&t.push({name:"*",kind:"re-export",fromSpecifier:r})}return t}function Al(e){let t=e instanceof Map?e:new Map(Object.entries(e)),n=s=>s.split("/").join(kl),r=s=>t.get(s)??t.get(n(s))??null;return{readFile:s=>r(s),exists:s=>r(s)!==null}}import{s as h,validate as Br,filter as Qi}from"tosijs-schema";function Vi(e,t){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),!!(e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)}var oe=class{$error=!0;message;op;cause;constructor(t,n,r){this.message=t,this.op=n,this.cause=r}toString(){return`AgentError[${this.op}]: ${this.message}`}toJSON(){return{$error:!0,message:this.message,op:this.op}}};function Cl(e){return e instanceof oe||e&&e.$error===!0}var lt=new Map,Rl=3600*1e3,Nl=100*1024,Lr="proc_";function Fr(e){return typeof e=="string"&&e.startsWith(Lr)}function Ur(e){let t=lt.get(e);if(!t)throw new Error(`Procedure not found: ${e}`);if(Date.now()>t.expiresAt)throw lt.delete(e),new Error(`Procedure expired: ${e}`);return t.ast}function Pl(){return typeof crypto<"u"&&crypto.randomUUID?Lr+crypto.randomUUID():Lr+Math.random().toString(36).slice(2)+Date.now().toString(36)}var eo=new Set(["__proto__","constructor","prototype"]);function Ki(e){if(eo.has(e))throw new Error(`Security Error: Access to '${e}' is forbidden`)}var Il=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function Dl(e){try{let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")return!0;let n=t.hostname.toLowerCase();return!!(Il.has(n)||n.endsWith(".internal")||n.endsWith(".local")||n==="169.254.169.254"||/^10\./.test(n)||/^192\.168\./.test(n)||/^172\.(1[6-9]|2\d|3[01])\./.test(n))}catch{return!0}}function Ol(e){return!!(/\([^)]*[+*][^)]*\)[+*]/.test(e)||/\(([^|)]+)\|\1\)[+*]/.test(e)||/\(\.\*\)\+/.test(e)||/\(\.\+\)\+/.test(e)||/\(\[.*\]\+\)\+/.test(e))}function Be(e){return{...e,state:Object.create(e.state)}}function Bl(e,t){let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let s of r){let i=e[s],o=t[s];o!==i&&(n[s]=o)}return n}function R(e,t){if(e&&typeof e=="object"&&e.$kind==="arg")return t.args[e.path];if(e&&typeof e=="object"&&e.$expr)return Q(e,t);if(typeof e=="string"){if(e.startsWith("args.")&&!("args"in t.state))return t.args[e.replace("args.","")];if(e.includes(".")){let n=e.split(".");for(let s of n)if(eo.has(s))throw new Error(`Security Error: Access to '${s}' is forbidden`);let r=t.state[n[0]];if(r!==void 0){for(let s=1;s<n.length;s++)r=r?.[n[s]];return r}}return e in t.state?t.state[e]:e}if(e&&typeof e=="object"&&!Array.isArray(e)&&e.constructor===Object){let n={};for(let r of Object.keys(e))n[r]=R(e[r],t);return n}return Array.isArray(e)?e.map(n=>R(n,t)):e}function Ze(e,t,n){return new Proxy(t,{get(r,s){if(s in r)return r[s];let i=n?.[s];throw i?new Error(`${e}.${s} is not available. ${i}`):new Error(`${e}.${s} is not supported in AsyncJS. Check docs for available ${e} methods.`)}})}function ct(e){if(e===null)return{type:"null"};if(e===void 0)return{};if(typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string")return e;if(typeof e=="object"&&e!==null&&"schema"in e&&typeof e.schema=="object")return e.schema;let t=typeof e;if(t==="string")return{type:"string"};if(t==="number")return Number.isInteger(e)?{type:"integer"}:{type:"number"};if(t==="boolean")return{type:"boolean"};if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:ct(e[0])};if(t==="object"){let n={},r=[];for(let[s,i]of Object.entries(e))n[s]=ct(i),r.push(s);return{type:"object",properties:n,required:r}}return{}}var Re={Math:Ze("Math",{PI:Math.PI,E:Math.E,LN2:Math.LN2,LN10:Math.LN10,LOG2E:Math.LOG2E,LOG10E:Math.LOG10E,SQRT2:Math.SQRT2,SQRT1_2:Math.SQRT1_2,abs:Math.abs,ceil:Math.ceil,floor:Math.floor,round:Math.round,trunc:Math.trunc,sign:Math.sign,sqrt:Math.sqrt,cbrt:Math.cbrt,pow:Math.pow,exp:Math.exp,expm1:Math.expm1,log:Math.log,log2:Math.log2,log10:Math.log10,log1p:Math.log1p,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,asinh:Math.asinh,acosh:Math.acosh,atanh:Math.atanh,hypot:Math.hypot,min:Math.min,max:Math.max,clz32:Math.clz32,imul:Math.imul,fround:Math.fround,random:()=>{if(typeof crypto<"u"&&crypto.getRandomValues){let e=new Uint32Array(1);return crypto.getRandomValues(e),e[0]/4294967296}return Math.random()}}),JSON:Ze("JSON",{parse:e=>JSON.parse(e),stringify:(e,t,n)=>JSON.stringify(e,t,n)}),console:Ze("console",{log:(...e)=>{},warn:(...e)=>{},error:(...e)=>{},info:(...e)=>{}},{table:"Use console.log with JSON.stringify for structured data.",dir:"Use console.log instead.",trace:"Stack traces are not available in AsyncJS."}),Array:Ze("Array",{isArray:e=>Array.isArray(e),from:(e,t,n)=>Array.from(e,t,n),of:(...e)=>Array.of(...e)},{prototype:"Prototype access is not allowed."}),Object:Ze("Object",{keys:e=>Object.keys(e),values:e=>Object.values(e),entries:e=>Object.entries(e),fromEntries:e=>Object.fromEntries(e),assign:(e,...t)=>Object.assign({},e,...t),hasOwn:(e,t)=>Object.hasOwn(e,t)},{prototype:"Prototype access is not allowed.",create:"Use object literals instead.",defineProperty:"Property descriptors are not supported.",getPrototypeOf:"Prototype access is not allowed.",setPrototypeOf:"Prototype modification is not allowed."}),String:Ze("String",{fromCharCode:(...e)=>String.fromCharCode(...e),fromCodePoint:(...e)=>String.fromCodePoint(...e)}),Number:Ze("Number",{isNaN:Number.isNaN,isFinite:Number.isFinite,isInteger:Number.isInteger,isSafeInteger:Number.isSafeInteger,parseFloat,parseInt,MAX_VALUE:Number.MAX_VALUE,MIN_VALUE:Number.MIN_VALUE,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,POSITIVE_INFINITY:Number.POSITIVE_INFINITY,NEGATIVE_INFINITY:Number.NEGATIVE_INFINITY,NaN:Number.NaN,EPSILON:Number.EPSILON}),parseInt,parseFloat,isNaN,isFinite,encodeURI,decodeURI,encodeURIComponent,decodeURIComponent,undefined:void 0,null:null,NaN:NaN,Infinity:1/0,filter:(e,t)=>{let n=ct(t),r=Qi(e,n);if(r instanceof Error)throw r;return r},Schema:{...h,response:(e,t)=>{let n=t?.schema!=null?t.schema:ct(t);return{type:"json_schema",json_schema:{name:e,strict:!0,schema:n}}},fromExample:e=>ct(e),isValid:(e,t)=>t?.schema!=null?Br(e,t):Br(e,ct(t))},Set:(e=[])=>{let t=[...new globalThis.Set(e)];return{add(n){return t.includes(n)||t.push(n),this},remove(n){let r=t.indexOf(n);return r!==-1&&t.splice(r,1),this},clear(){return t.length=0,this},has(n){return t.includes(n)},get size(){return t.length},toArray(){return[...t]},union(n){let r=n?.toArray?.()??n??[];return Re.Set([...t,...r])},intersection(n){let r=n?.toArray?.()??n??[];return Re.Set(t.filter(s=>r.includes(s)))},diff(n){let r=n?.toArray?.()??n??[];return Re.Set(t.filter(s=>!r.includes(s)))},forEach(n){t.forEach(n)},map(n){return Re.Set(t.map(n))},filter(n){return Re.Set(t.filter(n))},toJSON(){return[...t]}}},Date:(()=>{let e=n=>({get value(){return n.toISOString()},get timestamp(){return n.getTime()},get year(){return n.getFullYear()},get month(){return n.getMonth()+1},get day(){return n.getDate()},get hours(){return n.getHours()},get minutes(){return n.getMinutes()},get seconds(){return n.getSeconds()},get dayOfWeek(){return n.getDay()},add({years:r=0,months:s=0,days:i=0,hours:o=0,minutes:a=0,seconds:c=0,ms:l=0}={}){let u=new globalThis.Date(n.getTime());return r&&u.setFullYear(u.getFullYear()+r),s&&u.setMonth(u.getMonth()+s),i&&u.setDate(u.getDate()+i),o&&u.setHours(u.getHours()+o),a&&u.setMinutes(u.getMinutes()+a),c&&u.setSeconds(u.getSeconds()+c),l&&u.setMilliseconds(u.getMilliseconds()+l),e(u)},diff(r,s="ms"){let i=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime(),o=n.getTime()-i;switch(s){case"seconds":return o/1e3;case"minutes":return o/6e4;case"hours":return o/36e5;case"days":return o/864e5;default:return o}},format(r="ISO"){return r==="ISO"?n.toISOString():r==="date"?n.toISOString().split("T")[0]:r==="time"?n.toISOString().split("T")[1].split(".")[0]:r.replace("YYYY",String(n.getFullYear())).replace("MM",String(n.getMonth()+1).padStart(2,"0")).replace("DD",String(n.getDate()).padStart(2,"0")).replace("HH",String(n.getHours()).padStart(2,"0")).replace("mm",String(n.getMinutes()).padStart(2,"0")).replace("ss",String(n.getSeconds()).padStart(2,"0"))},isBefore(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return n.getTime()<s},isAfter(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return n.getTime()>s},toString(){return n.toISOString()},toJSON(){return n.toISOString()}}),t=n=>{let r=n!==void 0?new globalThis.Date(n):new globalThis.Date;if(isNaN(r.getTime()))throw new Error(`Invalid date: ${n}`);return e(r)};return t.now=()=>globalThis.Date.now(),t.parse=n=>e(new globalThis.Date(n)),t})()},Fn={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."},Ll=.01,zi=1e-4,Gi=.001,Fl=new Set(["concat","slice","map","filter","flatMap","flat","toReversed","toSorted","toSpliced","repeat","padStart","padEnd","split","join","replace","replaceAll","substring","substr","trim","trimStart","trimEnd","toLowerCase","toUpperCase","match","matchAll","parse","stringify"]);function Q(e,t){if(e==null||typeof e!="object"||!("$expr"in e))return e;if(t.fuel&&(t.fuel.current-=Ll,t.fuel.current<=0))throw new Error("Out of Fuel");switch(e.$expr){case"literal":return e.value;case"ident":{if(e.name in t.state)return t.state[e.name];if(e.name in t.args)return t.args[e.name];if(e.name in Re)return Re[e.name];if(e.name in Fn)throw new Error(Fn[e.name]);return}case"member":{let n=Q(e.object,t);if(e.optional&&n==null)return;let r=typeof e.property=="object"&&e.property!==null?Q(e.property,t):e.property;return Ki(String(r)),n?.[r]}case"binary":{let n=Q(e.left,t),r=Q(e.right,t);switch(e.op){case"+":{let s=n+r;if(typeof s=="string"&&t.fuel&&(t.fuel.current-=s.length*zi,t.fuel.current<=0)){t.error=new oe("Out of Fuel","expr.concat");return}return s}case"-":return n-r;case"*":return n*r;case"/":return n/r;case"%":return n%r;case"**":return n**r;case">":return n>r;case"<":return n<r;case">=":return n>=r;case"<=":return n<=r;case"==":return Vi(n,r);case"!=":return!Vi(n,r);case"===":return n===r;case"!==":return n!==r;default:throw new Error(`Unknown binary operator: ${e.op}`)}}case"unary":{let n=Q(e.argument,t);switch(e.op){case"!":return!n;case"-":return-n;case"+":return+n;case"typeof":return typeof n;default:throw new Error(`Unknown unary operator: ${e.op}`)}}case"logical":{let n=Q(e.left,t);return e.op==="&&"?n&&Q(e.right,t):e.op==="??"?n??Q(e.right,t):n||Q(e.right,t)}case"conditional":{let n=Q(e.test,t);return Q(n?e.consequent:e.alternate,t)}case"array":return e.elements.map(n=>Q(n,t));case"object":{let n={};for(let r of e.properties)n[r.key]=Q(r.value,t);return n}case"call":{if(e.callee==="Error"){let r=e.arguments.map(i=>Q(i,t)),s=typeof r[0]=="string"?r[0]:"Error";t.error=new oe(s,"Error");return}if(e.callee in Re){let r=Re[e.callee];if(typeof r=="function"){let s=e.arguments.map(i=>Q(i,t));return r(...s)}}throw t.resolver(e.callee)?new Error(`Atom calls in expressions not yet supported: ${e.callee}`):e.callee in Fn?new Error(Fn[e.callee]):new Error(`Unknown function: ${e.callee}`)}case"methodCall":{let n=Q(e.object,t);if(e.optional&&n==null)return;let r=e.method;if(Ki(r),n==null)throw new Error(`Cannot call method '${r}' on ${n}`);let s=n[r];if(typeof s!="function")throw new Error(`'${r}' is not a function`);let i=e.arguments.map(a=>Q(a,t)),o=s.apply(n,i);if(t.fuel&&Fl.has(r)){let a=0;if(typeof o=="string"?a=o.length*zi:Array.isArray(o)?a=o.length*Gi:typeof o=="object"&&o!==null&&(a=Object.keys(o).length*Gi),t.fuel.current-=a,t.fuel.current<=0){t.error=new oe("Out of Fuel",`expr.${r}`);return}}return o}default:throw new Error(`Unknown expression type: ${e.$expr}`)}}function O(e,t,n,r,s={}){let{docs:i="",timeoutMs:o=1e3,cost:a=1,effects:c="pure"}=typeof s=="string"?{docs:s}:s;return{op:e,inputSchema:t,outputSchema:n,exec:async(u,f)=>{let{op:p,result:m,...d}=u;if(f.error)return;let y=f.trace?{...f.state}:null,b=f.fuel.current,$,T;try{let x=f.costOverrides?.[e],S=x!==void 0?x:a,E=typeof S=="function"?S(d,f):S;if((f.fuel.current-=E)<=0){f.error=new oe("Out of Fuel",e);return}let w=f.timeoutOverrides?.[e],j=w!==void 0?w:o,A=typeof j=="function"?j(d,f):j,k,v=async()=>r(u,f);if($=A>0?await Promise.race([v(),new Promise((C,P)=>{k=setTimeout(()=>P(new Error(`Atom '${e}' timed out`)),A)})]).finally(()=>clearTimeout(k)):await v(),u.result){if(f.consts.has(u.result))throw new Error(`Cannot reassign const variable '${u.result}'`);if($!==void 0&&n&&!Br($,n)){f.error=new oe(`Output validation failed for '${e}'`,e);return}f.state[u.result]=$,u.resultConst&&f.consts.add(u.result)}}catch(x){T=x.message||String(x),f.error=new oe(T,e,x)}finally{if(f.trace&&y){let x=Bl(y,f.state);f.trace.push({op:e,input:d,stateDiff:x,result:$,error:T,fuelBefore:b,fuelAfter:f.fuel.current,timestamp:new Date().toISOString()})}}},docs:i,timeoutMs:o,cost:a,effects:c,create:u=>({op:e,...u})}}var ye=O("seq",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{for(let n of e){if(t.output!==void 0||t.error)return;let r=t.resolver(n.op);if(!r)throw new Error(`Unknown Atom: ${n.op}`);await r.exec(n,t)}},{docs:"Sequence",timeoutMs:0,cost:.1}),Ul=O("if",h.object({condition:h.any,then:h.array(h.any),else:h.array(h.any).optional}),void 0,async(e,t)=>{Q(e.condition,t)?await ye.exec({op:"seq",steps:e.then},t):e.else&&await ye.exec({op:"seq",steps:e.else},t)},{docs:"If/Else",timeoutMs:0,cost:.1}),ql=O("while",h.object({condition:h.any,body:h.array(h.any)}),void 0,async(e,t)=>{for(;Q(e.condition,t);){if(t.signal?.aborted)throw new Error("Execution aborted");if((t.fuel.current-=.1)<=0)throw new Error("Out of Fuel");if(await ye.exec({op:"seq",steps:e.body},t),t.output!==void 0||t.error)return}},{docs:"While Loop",timeoutMs:0,cost:.1}),Wl=O("return",void 0,h.any,async(e,t)=>{if(t.error)return t.output=t.error,t.error;if("value"in e){let r=R(e.value,t);if(!t.localCall&&r!==void 0&&r!==null&&!Cl(r)&&(typeof r!="object"||Array.isArray(r))){let s=new oe(`Agent must return an object, got ${Array.isArray(r)?"array":typeof r}`,"return");return t.error=s,t.output=s,s}return t.output=r,r}let n={};if(e.schema?.properties){for(let r of Object.keys(e.schema.properties))n[r]=t.state[r];if(e.filter!==!1){let r=Qi(n,e.schema);r instanceof Error||(n=r)}}return t.output=n,n},{docs:"Return",cost:.1}),Jl=O("try",h.object({try:h.array(h.any),catch:h.array(h.any).optional,catchParam:h.string.optional}),void 0,async(e,t)=>{if(await ye.exec({op:"seq",steps:e.try},t),t.error&&e.catch){let n=e.catchParam||"error";t.state[n]=t.error.message,t.state.errorOp=t.error.op,t.error=void 0,await ye.exec({op:"seq",steps:e.catch},t)}},{docs:"Try/Catch",timeoutMs:0,cost:.1}),Vl=O("Error",h.object({args:h.array(h.any).optional}),void 0,async(e,t)=>{let n=e.args?.[0]??"Error";t.error=new oe(String(n),"Error")},{docs:"Trigger error flow",cost:.1}),Kl=O("varSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{if(n.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);n.state[e]=R(t,n)},{docs:"Set Variable",cost:.1}),zl=O("constSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{if(n.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);if(e in n.state)throw new Error(`Cannot redeclare variable '${e}' as const`);n.state[e]=R(t,n),n.consts.add(e)},{docs:"Set Const Variable (immutable)",cost:.1}),Gl=O("varGet",h.object({key:h.string}),h.any,async({key:e},t)=>R(e,t),{docs:"Get Variable",cost:.1}),Hl=O("varsImport",h.object({keys:h.union([h.array(h.string),h.record(h.string)])}),void 0,async({keys:e},t)=>{if(Array.isArray(e))for(let n of e)t.state[n]=R({$kind:"arg",path:n},t);else for(let[n,r]of Object.entries(e))t.state[n]=R({$kind:"arg",path:r},t)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:.2}),Zl=O("varsLet",h.record(h.any),void 0,async(e,t)=>{for(let n of Object.keys(e))n==="op"||n==="result"||(t.state[n]=R(e[n],t))},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:.1}),Yl=O("varsExport",h.object({keys:h.union([h.array(h.string),h.record(h.string)])}),h.record(h.any),async({keys:e},t)=>{let n={};if(Array.isArray(e))for(let r of e)n[r]=R(r,t);else for(let[r,s]of Object.entries(e))n[r]=R(s,t);return n},{docs:"Export variables from the current scope, with optional renaming.",cost:.2}),Xl=O("scope",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{let n=Be(t);await ye.exec({op:"seq",steps:e},n),n.output!==void 0&&(t.output=n.output)},{docs:"Create new scope",timeoutMs:0,cost:.1}),Hi=256,Ql=O("callLocal",h.object({name:h.string,args:h.array(h.any)}),void 0,async({name:e,args:t},n)=>{let r=n.helpers?.[e];if(!r)return n.error=new oe(`Unknown helper: ${e}`,"callLocal"),n.error;let s=(n.callDepth??0)+1;if(s>Hi)return n.error=new oe(`Maximum helper call depth (${Hi}) exceeded \u2014 likely infinite recursion in '${e}'`,"callLocal"),n.error;let i=t.map(a=>R(a,n)),o={...n,state:{},consts:new Set,output:void 0,error:void 0,localCall:!0,callDepth:s};for(let a=0;a<r.paramNames.length;a++)o.state[r.paramNames[a]]=i[a];return await ye.exec({op:"seq",steps:r.steps},o),o.error&&(n.error=o.error),o.output},{docs:"Invoke a local helper function by name",timeoutMs:0,cost:.1}),eu=O("map",h.object({items:h.array(h.any),as:h.string,steps:h.array(h.any)}),h.array(h.any),async({items:e,as:t,steps:n},r)=>{let s=[],i=R(e,r);if(!Array.isArray(i))throw new Error("map: items is not an array");for(let o of i){if(r.signal?.aborted)throw new Error("Execution aborted");let a=Be(r);a.state[t]=o,await ye.exec({op:"seq",steps:n},a),s.push(a.state.result??null)}return s},{docs:"Map Array",timeoutMs:0,cost:1}),tu=O("filter",h.object({items:h.array(h.any),as:h.string,condition:h.any}),h.array(h.any),async({items:e,as:t,condition:n},r)=>{let s=[],i=R(e,r);if(!Array.isArray(i))throw new Error("filter: items is not an array");for(let o of i){if(r.signal?.aborted)throw new Error("Execution aborted");let a=Be(r);a.state[t]=o,Q(n,a)&&s.push(o)}return s},{docs:"Filter Array",timeoutMs:0,cost:1}),nu=O("reduce",h.object({items:h.array(h.any),as:h.string,accumulator:h.string,initial:h.any,steps:h.array(h.any)}),h.any,async({items:e,as:t,accumulator:n,initial:r,steps:s},i)=>{let o=R(e,i),a=R(r,i);if(!Array.isArray(o))throw new Error("reduce: items is not an array");let c=a;for(let l of o){if(i.signal?.aborted)throw new Error("Execution aborted");let u=Be(i);u.state[t]=l,u.state[n]=c,await ye.exec({op:"seq",steps:s},u),c=u.state.result??c}return c},{docs:"Reduce Array",timeoutMs:0,cost:1}),ru=O("find",h.object({items:h.array(h.any),as:h.string,condition:h.any}),h.any,async({items:e,as:t,condition:n},r)=>{let s=R(e,r);if(!Array.isArray(s))throw new Error("find: items is not an array");for(let i of s){if(r.signal?.aborted)throw new Error("Execution aborted");let o=Be(r);if(o.state[t]=i,Q(n,o))return i}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),su=O("push",h.object({list:h.array(h.any),item:h.any}),h.array(h.any),async({list:e,item:t},n)=>{let r=R(e,n),s=R(t,n);return Array.isArray(r)&&r.push(s),r},{docs:"Push to Array",cost:1}),iu=O("len",h.object({list:h.any}),h.number,async({list:e},t)=>{let n=R(e,t);return Array.isArray(n)||typeof n=="string"?n.length:0},{docs:"Length",cost:1}),ou=O("split",h.object({str:h.string,sep:h.string}),h.array(h.string),async({str:e,sep:t},n)=>R(e,n).split(R(t,n)),{docs:"Split String",cost:1}),au=O("join",h.object({list:h.array(h.string),sep:h.string}),h.string,async({list:e,sep:t},n)=>R(e,n).join(R(t,n)),{docs:"Join String",cost:1}),cu=O("template",h.object({tmpl:h.string,vars:h.record(h.any)}),h.string,async({tmpl:e,vars:t},n)=>R(e,n).replace(/\{\{(\w+)\}\}/g,(s,i)=>String(R(t[i],n)??"")),{docs:"String Template",cost:1}),lu=O("regexMatch",h.object({pattern:h.string,value:h.any}),h.boolean,async({pattern:e,value:t},n)=>{if(Ol(e))throw new Error(`Suspicious regex pattern rejected (potential ReDoS): ${e}`);let r=R(t,n);return new RegExp(e).test(r)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),uu=O("pick",h.object({obj:h.record(h.any),keys:h.array(h.string)}),h.record(h.any),async({obj:e,keys:t},n)=>{let r=R(e,n),s=R(t,n),i={};return r&&Array.isArray(s)&&s.forEach(o=>i[o]=r[o]),i},{docs:"Pick Keys",cost:1}),fu=O("omit",h.object({obj:h.record(h.any),keys:h.array(h.string)}),h.record(h.any),async({obj:e,keys:t},n)=>{let r=R(e,n),s=new Set(R(t,n)),i={};return r&&Object.keys(r).forEach(o=>{s.has(o)||(i[o]=r[o])}),i},{docs:"Omit Keys",cost:1}),pu=O("merge",h.object({a:h.record(h.any),b:h.record(h.any)}),h.record(h.any),async({a:e,b:t},n)=>({...R(e,n),...R(t,n)}),{docs:"Merge Objects",cost:1}),mu=O("keys",h.object({obj:h.record(h.any)}),h.array(h.string),async({obj:e},t)=>Object.keys(R(e,t)??{}),{docs:"Object Keys",cost:1}),Zi=10,Yi="X-Agent-Depth";function du(e,t){try{let r=new URL(e).hostname.toLowerCase();for(let s of t){let i=s.toLowerCase();if(i.startsWith("*.")){let o=i.slice(1);if(r.endsWith(o)||r===i.slice(2))return!0}else if(r===i)return!0}return!1}catch{return!1}}var yu=O("httpFetch",h.object({url:h.string,method:h.string.optional,headers:h.record(h.string).optional,body:h.any.optional,responseType:h.string.optional}),h.any,async(e,t)=>{let n=R(e.url,t),r=R(e.method,t),s=R(e.headers,t)||{},i=R(e.body,t),o=R(e.responseType,t),a=t.context?.requestDepth??0;if(a>=Zi)throw new Error(`Agent request depth exceeded (max ${Zi}). This prevents recursive agent loops.`);if(t.capabilities.fetch)return t.capabilities.fetch(n,{method:r,headers:{...s,[Yi]:String(a+1)},body:i,signal:t.signal,responseType:o});let c=t.context?.allowedFetchDomains;if(c){if(!du(n,c))throw new Error(`Fetch blocked: domain not in allowlist. Allowed: ${c.join(", ")}`)}else{if(Dl(n))throw new Error("Blocked URL: private/internal addresses not allowed in default fetch");try{let u=new URL(n).hostname.toLowerCase();if(u!=="localhost"&&u!=="127.0.0.1"&&u!=="[::1]")throw new Error("Fetch blocked: no allowedFetchDomains configured. Set ctx.context.allowedFetchDomains or provide a custom fetch capability.")}catch(l){throw l.message.includes("allowedFetchDomains")?l:new Error(`Invalid URL: ${n}`,{cause:l})}}if(typeof globalThis.fetch=="function"){let l=await globalThis.fetch(n,{method:r,headers:{...s,[Yi]:String(a+1)},body:i?JSON.stringify(i):void 0,signal:t.signal});if(o==="dataUrl"){let f=await l.arrayBuffer(),p=new Uint8Array(f),m="";for(let b=0;b<p.length;b++)m+=String.fromCharCode(p[b]);let d=btoa(m);return`data:${l.headers.get("content-type")||"application/octet-stream"};base64,${d}`}let u=l.headers.get("content-type");return o==="json"||u&&u.includes("application/json")?l.json():l.text()}throw new Error("Capability 'fetch' missing and no global fetch available")},{docs:"HTTP Fetch",timeoutMs:3e4,cost:5}),gu=O("storeGet",h.object({key:h.string}),h.any,async({key:e},t)=>{let n=R(e,t);return t.capabilities.store?.get(n)},{docs:"Store Get",cost:5}),hu=O("storeSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{let r=R(e,n),s=R(t,n);return n.capabilities.store?.set(r,s)},{docs:"Store Set",cost:5}),bu=O("storeQuery",h.object({query:h.any}),h.array(h.any),async({query:e},t)=>t.capabilities.store?.query?.(R(e,t))??[],{docs:"Store Query",cost:5}),xu=O("storeVectorSearch",h.object({collection:h.string.optional,vector:h.array(h.number),k:h.number.optional}),h.array(h.any),async({collection:e,vector:t,k:n},r)=>r.capabilities.store?.vectorSearch?.(R(e,r),R(t,r),R(n,r))??[],{docs:"Vector Search",cost:(e,t)=>5+(R(e.k,t)??5)}),Su=O("llmPredict",h.object({prompt:h.string,options:h.any.optional}),h.string,async({prompt:e,options:t},n)=>{if(!n.capabilities.llm?.predict)throw new Error("Capability 'llm.predict' missing");return n.capabilities.llm.predict(R(e,n),R(t,n))},{docs:"LLM Predict",timeoutMs:12e4,cost:100}),wu=O("agentRun",h.object({agentId:h.any,input:h.any}),h.any,async({agentId:e,input:t},n)=>{let r=R(e,n),s=R(t,n),i=s;if(s&&typeof s=="object"&&!Array.isArray(s)){i={};for(let a in s)i[a]=R(s[a],n)}if(Fr(r)){let a=Ur(r),c={...n,args:i,state:{},consts:new Set,output:void 0,error:void 0},l=n.resolver("seq");if(!l)throw new Error("seq atom not found");if(await l.exec(a,c),c.error)throw new Error(c.error.message||"Sub-agent failed");return c.output}if(r&&typeof r=="object"&&"op"in r){let a={...n,args:i,state:{},consts:new Set,output:void 0,error:void 0},c=n.resolver("seq");if(!c)throw new Error("seq atom not found");if(await c.exec(r,a),a.error)throw new Error(a.error.message||"Sub-agent failed");return a.output}if(!n.capabilities.agent?.run)throw new Error("Capability 'agent.run' missing");let o=await n.capabilities.agent.run(r,i);if(o&&typeof o=="object"&&"fuelUsed"in o&&typeof o.fuelUsed=="number"){if(o.error)throw new Error(o.error.message||"Sub-agent failed");return o.result}return o},{docs:"Run Sub-Agent (accepts procedure token, AST, or agent ID)",cost:1}),Tu=O("transpileCode",h.object({code:h.string}),h.any,async({code:e},t)=>{if(!t.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let n=R(e,t);try{return t.capabilities.code.transpile(n)}catch(r){throw new Error(`Code transpilation failed: ${r.message}`,{cause:r})}},{docs:"Transpile AsyncJS code to AST",cost:1}),Xi=10,Eu=O("runCode",h.object({code:h.string,args:h.record(h.any).optional}),h.any,async({code:e,args:t},n)=>{let r=n.runCodeDepth??0;if(r>=Xi)throw new Error(`runCode recursion limit exceeded (max ${Xi}). This prevents infinite loops from dynamically generated code calling runCode.`);if(!n.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable dynamic code execution by providing the code capability.");let s=R(e,n),i=t?R(t,n):{},o;try{o=n.capabilities.code.transpile(s)}catch(c){throw new Error(`Code transpilation failed: ${c.message}`,{cause:c})}if(o.op!=="seq")throw new Error("Transpiled code must be a seq node");let a=Be(n);if(a.args=i,a.output=void 0,a.runCodeDepth=r+1,await ye.exec(o,a),a.error){n.error=a.error;return}return a.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),$u=O("jsonParse",h.object({str:h.string}),h.any,async({str:e},t)=>JSON.parse(R(e,t)),{docs:"Parse JSON",cost:1}),_u=O("jsonStringify",h.object({value:h.any}),h.string,async({value:e},t)=>JSON.stringify(R(e,t)),{docs:"Stringify JSON",cost:1}),ku=O("xmlParse",h.object({str:h.string}),h.any,async({str:e},t)=>{if(!t.capabilities.xml?.parse)throw new Error("Capability 'xml.parse' missing");return t.capabilities.xml.parse(R(e,t))},{docs:"Parse XML",cost:1}),ju=O("memoize",h.object({key:h.string.optional,steps:h.array(h.any)}),h.any,async({key:e,steps:t},n)=>{n.memo||(n.memo=new Map);let r=R(e,n)??await qr.exec({value:t,algorithm:"SHA-256"},n);if(n.memo.has(r))return n.memo.get(r);let s=Be(n);await ye.exec({op:"seq",steps:t},s);let i=s.output??s.state.result;return n.memo.set(r,i),i},{docs:"Memoize steps result in memory",cost:1}),vu=O("cache",h.object({key:h.string.optional,steps:h.array(h.any),ttlMs:h.number.optional}),h.any,async({key:e,steps:t,ttlMs:n},r)=>{if(!r.capabilities.store)throw new Error("Capability 'store' missing for caching");let i=`cache:${R(e,r)??await qr.exec({value:t,algorithm:"SHA-256"},r)}`,o=await r.capabilities.store.get(i);if(o)if(typeof o=="object"&&o._exp){if(Date.now()<o._exp)return o.val}else return o;let a=Be(r);await ye.exec({op:"seq",steps:t},a);let c=a.output??a.state.result,l=Date.now()+(n??24*3600*1e3);if((r.fuel.current-=5)<=0)throw new Error("Out of Fuel");return await r.capabilities.store.set(i,{val:c,_exp:l}),c},{docs:"Cache steps result in store with TTL",cost:5}),Mu=O("random",h.object({min:h.number.optional,max:h.number.optional,format:h.string.optional,length:h.number.optional}),h.any,async({min:e,max:t,format:n,length:r},s)=>{let i=R(n,s)??"float",o=R(r,s)??10,a=R(e,s)??0,c=R(t,s)??1;if(i==="base36"){let p="0123456789abcdefghijklmnopqrstuvwxyz",m="";if(typeof crypto<"u"&&crypto.getRandomValues){let d=new Uint8Array(o);crypto.getRandomValues(d);for(let y=0;y<o;y++)m+=p[d[y]%36]}else for(let d=0;d<o;d++)m+=p.charAt(Math.floor(Math.random()*36));return m}let l;if(typeof crypto<"u"&&crypto.getRandomValues){let p=new Uint32Array(1);crypto.getRandomValues(p),l=p[0]/4294967296}else l=Math.random();let u=c-a,f=l*u+a;return i==="integer"?Math.floor(f):f},{docs:"Generate Random",cost:1}),Au=O("uuid",void 0,h.string,async()=>{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();if(typeof crypto<"u"&&crypto.getRandomValues){let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})},{docs:"Generate UUID",cost:1}),qr=O("hash",h.object({value:h.any,algorithm:h.string.optional}),h.string,async({value:e,algorithm:t},n)=>{let r=typeof e=="string"?e:JSON.stringify(R(e,n)),s=R(t,n)||"SHA-256";if(typeof crypto<"u"&&crypto.subtle){let a=new TextEncoder().encode(r),c=await crypto.subtle.digest(s,a);return Array.from(new Uint8Array(c)).map(u=>u.toString(16).padStart(2,"0")).join("")}let i=0;for(let o=0;o<r.length;o++){let a=r.charCodeAt(o);i=(i<<5)-i+a,i|=0}return String(i)},{docs:"Hash a value",cost:1}),Cu=O("consoleLog",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=R(e,t);t.trace&&t.trace.push({op:"console.log",input:{message:n},stateDiff:{},result:n,fuelBefore:t.fuel.current,fuelAfter:t.fuel.current,timestamp:new Date().toISOString()})},{docs:"Log to trace",cost:.1}),Ru=O("consoleWarn",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=R(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.warnings||(t.warnings=[]),t.warnings.push(r),t.trace&&t.trace.push({op:"console.warn",input:{message:n},stateDiff:{},result:n,fuelBefore:t.fuel.current,fuelAfter:t.fuel.current,timestamp:new Date().toISOString()})},{docs:"Add warning",cost:.1}),Nu=O("consoleError",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=R(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.error=new oe(r,"console.error")},{docs:"Emit error and stop",cost:.1}),Pu=O("storeProcedure",h.object({ast:h.any,ttl:h.number.optional,maxSize:h.number.optional}),h.string,async({ast:e,ttl:t,maxSize:n},r)=>{let s=R(e,r),i=t?R(t,r):Rl,o=n?R(n,r):Nl;if(!s||typeof s!="object"||!s.op)throw new Error('Invalid AST: must be an object with an "op" property');let a=JSON.stringify(s);if(a.length>o)throw new Error(`AST too large: ${a.length} bytes exceeds limit of ${o} bytes. Consider reducing AST size or using a shorter TTL.`);let c=Pl(),l=Date.now();return lt.set(c,{ast:s,createdAt:l,expiresAt:l+i}),c},{docs:"Store an AST and return a token for later execution",cost:1}),Iu=O("releaseProcedure",h.object({token:h.string}),h.boolean,async({token:e},t)=>{let n=R(e,t);return lt.delete(n)},{docs:"Release a stored procedure by token",cost:.1}),Du=O("clearExpiredProcedures",void 0,h.number,async()=>{let e=Date.now(),t=0;for(let[n,r]of lt)e>r.expiresAt&&(lt.delete(n),t++);return t},{docs:"Clear all expired procedures and return count",cost:.5}),Ft={seq:ye,if:Ul,while:ql,return:Wl,try:Jl,Error:Vl,varSet:Kl,constSet:zl,varGet:Gl,varsImport:Hl,varsLet:Zl,varsExport:Yl,scope:Xl,callLocal:Ql,map:eu,filter:tu,reduce:nu,find:ru,push:su,len:iu,split:ou,join:au,template:cu,regexMatch:lu,pick:uu,omit:fu,merge:pu,keys:mu,httpFetch:yu,storeGet:gu,storeSet:hu,storeQuery:bu,storeVectorSearch:xu,llmPredict:Su,agentRun:wu,transpileCode:Tu,runCode:Eu,jsonParse:$u,jsonStringify:_u,xmlParse:ku,memoize:ju,cache:vu,random:Mu,uuid:Au,hash:qr,consoleLog:Cu,consoleWarn:Ru,consoleError:Nu,storeProcedure:Pu,releaseProcedure:Iu,clearExpiredProcedures:Du},Ou=["httpFetch","storeGet","storeSet","storeQuery","storeVectorSearch","llmPredict","agentRun","transpileCode","runCode","random","uuid","consoleLog","consoleWarn","consoleError","storeProcedure","releaseProcedure","clearExpiredProcedures","cache","memoize"];for(let e of Ou){let t=Ft[e];t&&(t.effects="io")}var Bu=new Set(["true","false","null","undefined","and","or","not"]);function Lu(e,t){let n=e.replace(/"[^"]*"/g,'""').replace(/'[^']*'/g,"''"),r=[],s=/(?<![.])\b([a-zA-Z_][a-zA-Z0-9_]*)\b/g,i;for(;(i=s.exec(n))!==null;)r.push(i[1]);let a=[...new Set(r)].filter(c=>!Bu.has(c)&&!(c in t)&&!new RegExp(`\\b${c}\\s*\\(`).test(n));a.length>0&&console.warn(`[Agent99 Builder] Condition "${e}" references variables not in vars mapping: ${a.join(", ")}. Add them to vars or use AsyncJS syntax (ajs\`...\`) which handles this automatically.`)}function Un(e,t){Lu(e,t);let n=Fu(e),r=io(n,0,t);if(r.pos<n.length){let s=n.slice(r.pos).join(" ");throw new Error(`Unsupported condition syntax near '${s}' in: ${e}
|
|
464
|
-
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return r.node}function Fu(e){let t=[],n=0;for(;n<e.length;){for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)break;if(e[n]==='"'||e[n]==="'"){let r=e[n++],s="";for(;n<e.length&&e[n]!==r;)e[n]==="\\"&&n+1<e.length&&n++,s+=e[n++];n++,t.push(JSON.stringify(s));continue}if(e.slice(n,n+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){t.push(e.slice(n,n+2)),n+=2;continue}if("+-*/%><!().?:[]".includes(e[n])){t.push(e[n]),n++;continue}if(/\d/.test(e[n])){let r="";for(;n<e.length&&/[\d.]/.test(e[n]);)r+=e[n++];t.push(r);continue}if(/[a-zA-Z_]/.test(e[n])){let r="";for(;n<e.length&&/[a-zA-Z0-9_]/.test(e[n]);)r+=e[n++];t.push(r);continue}n++}return t}function io(e,t,n){return Uu(e,t,n)}function Uu(e,t,n){let{node:r,pos:s}=to(e,t,n);for(;e[s]==="||";){s++;let{node:i,pos:o}=to(e,s,n);r={$expr:"logical",op:"||",left:r,right:i},s=o}return{node:r,pos:s}}function to(e,t,n){let{node:r,pos:s}=no(e,t,n);for(;e[s]==="&&";){s++;let{node:i,pos:o}=no(e,s,n);r={$expr:"logical",op:"&&",left:r,right:i},s=o}return{node:r,pos:s}}function no(e,t,n){let{node:r,pos:s}=ro(e,t,n),i=["==","!=",">","<",">=","<="];for(;i.includes(e[s]);){let o=e[s++],{node:a,pos:c}=ro(e,s,n);r={$expr:"binary",op:o,left:r,right:a},s=c}return{node:r,pos:s}}function ro(e,t,n){let{node:r,pos:s}=so(e,t,n);for(;e[s]==="+"||e[s]==="-";){let i=e[s++],{node:o,pos:a}=so(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function so(e,t,n){let{node:r,pos:s}=Wr(e,t,n);for(;e[s]==="*"||e[s]==="/"||e[s]==="%";){let i=e[s++],{node:o,pos:a}=Wr(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function Wr(e,t,n){if(e[t]==="!"||e[t]==="-"){let r=e[t++],{node:s,pos:i}=Wr(e,t,n);return{node:{$expr:"unary",op:r,argument:s},pos:i}}return qu(e,t,n)}function qu(e,t,n){let r=e[t];if(r==="("){let{node:s,pos:i}=io(e,t+1,n);return{node:s,pos:i+1}}if(r&&r.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(r)},pos:t+1};if(r&&/^\d/.test(r))return{node:{$expr:"literal",value:parseFloat(r)},pos:t+1};if(r==="true")return{node:{$expr:"literal",value:!0},pos:t+1};if(r==="false")return{node:{$expr:"literal",value:!1},pos:t+1};if(r==="null")return{node:{$expr:"literal",value:null},pos:t+1};if(r&&/^[a-zA-Z_]/.test(r)){let s={$expr:"ident",name:r},i=t+1;for(;e[i]===".";){i++;let o=e[i++];s={$expr:"member",object:s,property:o}}return{node:s,pos:i}}return{node:{$expr:"literal",value:null},pos:t+1}}var Ye=class e{steps=[];atoms;proxy;constructor(t){return this.atoms=t,this.proxy=new Proxy(this,{get:(n,r,s)=>{if(r in n)return n[r];if(typeof r=="string"&&r in n.atoms)return i=>{let o=n.atoms[r];return n.add(o.create(i)),s}}}),this.proxy}add(t){return this.steps.push(t),this.proxy}as(t){if(this.steps.length===0)throw new Error("No step to capture");let n=this.steps[this.steps.length-1];return n.result=t,this.proxy}step(t){return this.add(t)}return(t){let n=this.atoms.return;if(!n)throw new Error("Atom 'return' not found");let r=t.schema??t;return this.add(n.create({schema:r}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport(t){return this.add(this.atoms.varsImport.create({keys:t}))}varsExport(t){return this.add(this.atoms.varsExport.create({keys:t}))}if(t,n,r,s){let i=new e(this.atoms);r(i);let o;if(s){let l=new e(this.atoms);s(l),o=l.steps}let a=Un(t,n),c=this.atoms.if;return this.add(c.create({condition:a,then:i.steps,else:o}))}while(t,n,r){let s=new e(this.atoms);r(s);let i=Un(t,n),o=this.atoms.while;return this.add(o.create({condition:i,body:s.steps}))}scope(t){let n=new e(this.atoms);t(n);let r=this.atoms.scope;return this.add(r.create({steps:n.steps}))}map(t,n,r){let s=new e(this.atoms);r(s);let i=this.atoms.map;return this.add(i.create({items:t,as:n,steps:s.steps}))}filter(t,n,r,s={}){let i=Un(r,s),o=this.atoms.filter;return this.add(o.create({items:t,as:n,condition:i}))}find(t,n,r,s={}){let i=Un(r,s),o=this.atoms.find;return this.add(o.create({items:t,as:n,condition:i}))}reduce(t,n,r,s,i){let o=new e(this.atoms);i(o);let a=this.atoms.reduce;return this.add(a.create({items:t,as:n,accumulator:r,initial:s,steps:o.steps}))}memoize(t,n){let r=new e(this.atoms);t(r);let s=this.atoms.memoize;return this.add(s.create({key:n,steps:r.steps}))}cache(t,n,r){let s=new e(this.atoms);t(s);let i=this.atoms.cache;return this.add(i.create({key:n,steps:s.steps,ttlMs:r}))}try(t){let n=new e(this.atoms);t.try(n);let r;if(t.catch){let i=new e(this.atoms);t.catch(i),r=i.steps}let s=this.atoms.try;return this.add(s.create({try:n.steps,catch:r}))}},Wu={take(e){return new Ye(Ft)},custom(e){return new Ye(e)},args(e){return{$kind:"arg",path:e}},val(e){return e}},Bm=Wu;import{validate as Ju}from"tosijs-schema";function Ut(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=xe(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=St(n,t.filename),{ast:c,signature:l,warnings:u}=$t(o,s,r,t,i,a.size>0?a:void 0);return{ast:c,signature:l,warnings:u}}var Vu=6e4,qn=class{atoms;_defaultRunTimeout;constructor(t={}){this.atoms={...Ft,...t}}get defaultRunTimeout(){if(this._defaultRunTimeout===void 0){let t=0;for(let n of Object.values(this.atoms)){let r=n.timeoutMs??1e3;r>0&&r>t&&(t=r)}this._defaultRunTimeout=Math.max(Vu,t*2)}return this._defaultRunTimeout}get builder(){return new Ye(this.atoms)}get Agent(){return new Ye(this.atoms)}get A99(){return this.Agent}resolve(t){return this.atoms[t]}getTools(t="all"){let n=Object.values(this.atoms);if(Array.isArray(t))n=n.filter(r=>t.includes(r.op));else if(t==="flow"){let r=["seq","if","while","return","try","varSet","varGet","scope"];n=n.filter(s=>r.includes(s.op))}return n.map(r=>({type:"function",function:{name:r.op,description:r.docs,parameters:r.inputSchema?.schema??{}}}))}async run(t,n={},r={}){let s;if(typeof t=="string")if(Fr(t))s=Ur(t);else try{s=Ut(t).ast}catch(d){throw new Error(`AJS transpilation failed: ${d.message}`,{cause:d})}else s=t;let i=r.fuel??1e3,o=r.timeoutMs??this.defaultRunTimeout,a=r.capabilities??{},c=[];if(!a.store){let d=new Map,y=!1;a.store={get:async b=>(y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.get(b)),set:async(b,$)=>{y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.set(b,$)}}}let l=new AbortController,u=setTimeout(()=>l.abort(),o);r.signal&&r.signal.addEventListener("abort",()=>l.abort());let f={fuel:{current:i},args:n,state:{},consts:new Set,capabilities:a,resolver:d=>this.resolve(d),output:void 0,signal:l.signal,costOverrides:r.costOverrides,timeoutOverrides:r.timeoutOverrides,context:r.context,warnings:c,helpers:s.helpers};if(r.trace&&(f.trace=[]),s.op!=="seq")throw new Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let p=s.inputSchema;if(p&&!Ju(n,p)){let d=new oe("Input validation failed: args do not match expected schema","vm.run");return{result:d,error:d,fuelUsed:0,trace:f.trace,warnings:c.length>0?c:void 0}}try{await Promise.race([this.resolve("seq")?.exec(s,f),new Promise((d,y)=>{l.signal.addEventListener("abort",()=>{y(new Error(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))}),l.signal.aborted&&y(new Error(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))})])}catch(d){if(d.message?.includes("timeout")||d.message?.includes("aborted")||l.signal.aborted)f.error=new oe(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`,"vm.run");else throw d}finally{clearTimeout(u)}f.error&&f.output===void 0&&(f.output=f.error);let m=[...c,...f.warnings??[]];return{result:f.output,error:f.error,fuelUsed:i-f.fuel.current,trace:f.trace,warnings:m.length>0?m:void 0}}};var Ku=null,oo=()=>Ku??=new qn;function Xe(e){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let t of e)Xe(t);return}e.op==="return"&&"value"in e&&(e.value={__result:e.value}),e.steps&&Xe(e.steps),e.then&&Xe(e.then),e.else&&Xe(e.else),e.body&&Xe(e.body)}}async function zu(e){let{code:t,context:n={},fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=oo(),c=/\breturn\b/.test(t)?`function __eval() { ${t} }`:`function __eval() { return (${t}) }`;try{let{ast:l}=Ut(c);Xe(l);let u=await o.run(l,n,{fuel:r,timeoutMs:s,capabilities:i}),f=u.result;return{result:f&&typeof f=="object"&&"__result"in f?f.__result:f,fuelUsed:u.fuelUsed,error:u.error?{message:u.error.message||String(u.error)}:void 0}}catch(l){return{result:void 0,fuelUsed:r,error:{message:l.message||String(l)}}}}async function Gu(e){let{body:t,params:n=[],fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=oo(),c=`function __safeFn(${n.join(", ")}) { ${t} }`,{ast:l}=Ut(c);return Xe(l),async(...u)=>{let f={};for(let p=0;p<n.length;p++)f[n[p]]=u[p];try{let p=await o.run(l,f,{fuel:r,timeoutMs:s,capabilities:i}),m=p.result;return{result:m&&typeof m=="object"&&"__result"in m?m.__result:m,fuelUsed:p.fuelUsed,error:p.error?{message:p.error.message||String(p.error)}:void 0}}catch(p){return{result:void 0,fuelUsed:r,error:{message:p.message||String(p)}}}}}function Wn(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=xe(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=St(n,t.filename),{ast:c,signature:l,warnings:u}=$t(o,s,r,t,i,a.size>0?a:void 0);return{ast:c,signature:l,warnings:u}}function rd(e,...t){if(typeof e=="string")return Wn(e).ast;let n=e.reduce((r,s,i)=>r+s+(t[i]!==void 0?String(t[i]):""),"");return Wn(n).ast}function id(e,t,...n){if(typeof e=="string")return Ot(e,t);let r=t!==void 0?[t,...n]:n,s=e.reduce((i,o,a)=>i+o+(r[a]!==void 0?String(r[a]):""),"");return Ot(s)}async function od(e,t={},n){let r=n??await Bn(),s=await r.getTranspile(e);if(s)return{ast:s.ast,signature:s.signature,warnings:s.warnings};let i=Wn(e,t);return r.setTranspile(e,{ast:i.ast,signature:i.signature,warnings:i.warnings}),i}async function ad(e,t={},n){let r=n??await Bn(),s=await r.getTJS(e);if(s)return{code:s.code,types:s.types,metadata:s.types,testRunner:s.testRunner,testCount:s.testCount,warnings:s.warnings};let i=Ot(e,t);return r.setTJS(e,{code:i.code,types:i.types,testRunner:i.testRunner,testCount:i.testCount,warnings:i.warnings}),i}function cd(e,t,n){let{ast:r,signature:s}=Wn(e),i=async o=>(await t.run(r,o,n)).result;return i.signature=s,i.ast=r,i}function ld(e){return Object.entries(e).map(([t,n])=>{let r=n.signature,s={},i=[];for(let[o,a]of Object.entries(r.parameters))s[o]=Me(a.type),a.description&&(s[o].description=a.description),a.required&&i.push(o);return{type:"function",function:{name:r.name||t,description:r.description,parameters:{type:"object",properties:s,required:i}}}})}import{s as L}from"tosijs-schema";var Jr=O("storeVectorize",L.object({text:L.string,model:L.string.optional}),L.array(L.number),async({text:e},t)=>{let n=t.capabilities.vector;if(!n)throw new Error("Capability 'vector' missing. Ensure vector battery is loaded.");let r=R(e,t);return n.embed(r)},{docs:"Generate embeddings using vector battery",cost:20,timeoutMs:6e4}),Vr=O("storeCreateCollection",L.object({collection:L.string,dimension:L.number.optional}),void 0,async({collection:e,dimension:t},n)=>{let r=n.capabilities.store;if(!r?.createCollection)throw new Error("Capability 'store' missing or does not support createCollection.");let s=R(e,n),i=R(t,n);return r.createCollection(s,void 0,i)},{docs:"Create a vector store collection",cost:5}),Kr=O("storeVectorAdd",L.object({collection:L.string,doc:L.any}),void 0,async({collection:e,doc:t},n)=>{let r=n.capabilities.store;if(!r?.vectorAdd)throw new Error("Capability 'store' missing or does not support vectorAdd.");let s=R(e,n),i=R(t,n);return r.vectorAdd(s,i)},{docs:"Add a document to a vector store collection",cost:5,timeoutMs:6e4}),zr=O("storeSearch",L.object({collection:L.string,queryVector:L.array(L.number),k:L.number.optional,filter:L.record(L.any).optional}),L.array(L.any),async({collection:e,queryVector:t,k:n,filter:r},s)=>{let i=s.capabilities.store;if(!i?.vectorSearch)throw new Error("Capability 'store' missing or does not support vectorSearch.");let o=R(e,s),a=R(t,s),c=R(n,s)??5,l=R(r,s);return i.vectorSearch(o,a,c,l)},{docs:"Search vector store",cost:(e,t)=>5+(R(e.k,t)??5)}),Gr=O("llmPredictBattery",L.object({system:L.string.optional,user:L.union([L.string,L.array(L.any)]),tools:L.array(L.any).optional,responseFormat:L.any.optional}),L.object({role:L.string.optional,content:L.string.optional,tool_calls:L.array(L.any).optional}),async({system:e,user:t,tools:n,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=R(e,s)??"You are a helpful agent.",a=R(t,s),c=R(n,s),l=R(r,s);return i.predict(o,a,c,l)},{docs:"Generate completion using LLM battery",cost:100,timeoutMs:12e4}),Hr=O("llmVision",L.object({system:L.string.optional,prompt:L.string,images:L.array(L.string),responseFormat:L.any.optional}),L.object({role:L.string.optional,content:L.string.optional,tool_calls:L.array(L.any).optional}),async({system:e,prompt:t,images:n,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=R(e,s)??"You analyze images accurately and concisely.",a=R(t,s),c=R(n,s)??[],l=R(r,s);return i.predict(o,{text:a,images:c},void 0,l)},{docs:"Analyze images using a vision model",timeoutMs:12e4,cost:150});for(let e of[Jr,Vr,Kr,zr,Gr,Hr])e.effects="io";var Dd={storeCreateCollection:Vr,storeSearch:zr,storeVectorAdd:Kr,storeVectorize:Jr,llmPredictBattery:Gr,llmVision:Hr};var ao=new Map,Jn=new Map;function Hu(e,t){if(e.length!==t.length)throw new Error("Vectors must have the same length for cosine similarity.");let n=0,r=0,s=0;for(let i=0;i<e.length;i++)n+=e[i]*t[i],r+=e[i]*e[i],s+=t[i]*t[i];return r=Math.sqrt(r),s=Math.sqrt(s),r===0||s===0?0:n/(r*s)}function Zr(){return{async get(e){return ao.get(e)},async set(e,t){ao.set(e,t)},async createCollection(e,t,n){Jn.has(e)&&console.warn(`Collection '${e}' already exists. Overwriting.`),Jn.set(e,[])},async vectorAdd(e,t){let n=Jn.get(e);if(!n)throw new Error(`Collection '${e}' not found. Create it first.`);if(!t.embedding||!Array.isArray(t.embedding))throw new Error("Document must have an 'embedding' property that is an array of numbers.");n.push(t)},async vectorSearch(e,t,n=5){let r=Jn.get(e);if(!r)throw new Error(`Collection '${e}' not found. Create it first.`);let s=r.map(i=>({doc:i,score:Hu(t,i.embedding)}));return s.sort((i,o)=>o.score-i.score),s.slice(0,n).map(i=>i.doc)}}}function Zu(e){if(typeof e=="string")return{role:"user",content:e};let t=[{type:"text",text:e.text}];for(let n of e.images||[])t.push({type:"image_url",image_url:{url:n}});return{role:"user",content:t}}var Yu="http://localhost:1234/v1";function co(e,t=Yu){return{async predict(n,r,s,i){try{let o=i?e.getStructuredLLM():e.getLLM(),a=[{role:"system",content:n},Zu(r)],c=await fetch(`${t}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:o.id,messages:a,temperature:.7,...s&&s.length>0?{tools:s}:{},response_format:i})});if(!c.ok)throw new Error(`LLM Error: ${c.status} ${c.statusText}`);return(await c.json()).choices[0]?.message??{content:""}}catch(o){throw o.cause?.code==="ECONNREFUSED"?new Error("No LLM provider configured. Please start LM Studio or provide an API key.",{cause:o}):o}},async embed(n){try{let r=e.getEmbedding(),s=await fetch(`${t}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r.id,input:n})});if(!s.ok)throw new Error(`Embedding Error: ${s.status}`);return(await s.json()).data[0]?.embedding??[]}catch(r){throw r.cause?.code==="ECONNREFUSED"?new Error("No LLM provider configured. Please start LM Studio or provide an API key.",{cause:r}):r}}}}var Vn=".models.cache.json";var qt=typeof window<"u"&&typeof window.localStorage<"u";async function Xu(e){try{if(qt){let t=window.localStorage.getItem(Vn);if(!t)return null;let n=JSON.parse(t);return n.baseUrl!==e||Date.now()-n.timestamp>864e5?null:n.models}else{let t=await import("node:fs/promises"),r=(await import("node:path")).join(process.cwd(),Vn);try{let s=await t.readFile(r,"utf-8"),i=JSON.parse(s);return i.baseUrl!==e||Date.now()-i.timestamp>864e5?null:i.models}catch{return null}}}catch(t){return console.warn("\u26A0\uFE0F Error reading model cache:",t),null}}async function Qu(e,t){let n={timestamp:Date.now(),baseUrl:e,models:t};try{if(qt)window.localStorage.setItem(Vn,JSON.stringify(n));else{let r=await import("node:fs/promises"),i=(await import("node:path")).join(process.cwd(),Vn);await r.writeFile(i,JSON.stringify(n,null,2))}}catch(r){console.error("\u274C Error writing model cache:",r)}}var Wt=async(e,t)=>{let n=new AbortController,r=setTimeout(()=>n.abort(),6e4);try{let s=await fetch(e,{...t,signal:n.signal});return clearTimeout(r),s}catch(s){throw clearTimeout(r),s}};async function ef(e,t){try{let n={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},r=await Wt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"system",content:"You respond in JSON."},{role:"user",content:'Return JSON: {"status": "ok"}'}],response_format:n,max_tokens:20})});if(!r.ok)return r.status===400?tf(e,t):{ok:!1,msg:`HTTP ${r.status}`};let s=await r.json();return JSON.parse(s.choices[0].message.content),{ok:!0,msg:"OK (Schema)"}}catch(n){return{ok:!1,msg:n.message||"Error"}}}async function tf(e,t){try{return(await Wt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:'JSON: {"a":1}'}],response_format:{type:"json_object"},max_tokens:10})})).ok?{ok:!0,msg:"OK (Legacy Mode)"}:{ok:!1,msg:"Not Supported"}}catch{return{ok:!1,msg:"Legacy Fail"}}}async function nf(e,t){try{return(await Wt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function rf(e,t){try{let n=await Wt(`${e}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,input:"test"})});return n.ok?(await n.json()).data[0]?.embedding?.length??null:null}catch{return null}}var sf="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAMUlEQVR4nGO4o6FBU8QwasFoEI2motF8MFpUjJamo/XBaJU52qoYbReNNh01hkg+AACGobA9N+tfoAAAAABJRU5ErkJggg==";async function of(e,t){try{return(await Wt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:sf}}]}],max_tokens:10})})).ok}catch{return!1}}async function lo(e){let t=await Xu(e),n;try{let o=await fetch(`${e}/models`);if(!o.ok)throw new Error("Could not connect");n=(await o.json()).data.map(c=>c.id).sort()}catch{return t?(console.log("\u26A0\uFE0F LM Studio unavailable, using cached model audit."),t):(console.error("\u274C Failed to connect to LM Studio."),[])}if(t){let o=t.map(a=>a.id).sort();if(JSON.stringify(n)===JSON.stringify(o))return console.log("\u2705 Using cached model audit."),t;console.log("\u{1F50D} Model list changed. Re-running audit...")}console.log("\u{1F50D} Scanning models (this may take a moment)...");let r=[],s=n.map(o=>({id:o})),i;qt||(i=await import("node:readline"));for(let o of s){!qt&&i&&(i.cursorTo(process.stdout,0),process.stdout.write(`\u{1F449} Testing: ${o.id}...`),i.clearLine(process.stdout,1));let a="Unknown",c=!1,l=!1,u,f,p=await nf(e,o.id),m=await rf(e,o.id);if(m&&(f=m),p){a="LLM";let d=await ef(e,o.id);c=d.ok,l=await of(e,o.id),u=c?d.msg:`Fail: ${d.msg}`,l&&(u+=" +Vision")}else m?(a="Embedding",u=`OK (Dim: ${m})`):u="LLM Fail";r.push({id:o.id,type:a,structuredOutput:c,vision:l,dimension:f,status:u})}return!qt&&i&&(i.cursorTo(process.stdout,0),i.clearLine(process.stdout,0)),console.log(`
|
|
465
|
-
`),console.table(r),await Qu(e,r),console.log("\u{1F4DD} Audit results saved to cache."),r}var af="http://localhost:1234/v1",Kn=class{constructor(t=af){this.baseUrl=t}baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;async audit(){this.models=await lo(this.baseUrl),this.selectDefaults()}selectDefaults(){this.defaultEmbedding=this.models.find(t=>t.type==="Embedding")||null,this.defaultLLM=this.models.find(t=>t.type==="LLM")||null,this.defaultStructuredLLM=this.models.find(t=>t.type==="LLM"&&t.structuredOutput)||null,this.defaultEmbedding||console.warn("\u26A0\uFE0F No embedding model found."),this.defaultLLM||console.warn("\u26A0\uFE0F No LLM found."),this.defaultStructuredLLM||console.warn("\u26A0\uFE0F No LLM with structured output support found.")}getModels(){return this.models}_setDefaultModel(t,n,r,s){let i=this.models.find(o=>o.id===t&&r(o));if(!i)throw new Error(`Model '${t}' not found or is not ${s}.`);this[n]=i}setDefaultLLM(t){this._setDefaultModel(t,"defaultLLM",n=>n.type==="LLM","an LLM")}setDefaultEmbedding(t){this._setDefaultModel(t,"defaultEmbedding",n=>n.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM(t){this._setDefaultModel(t,"defaultStructuredLLM",n=>n.type==="LLM"&&n.structuredOutput,"a structured-output LLM")}getLLM(){if(!this.defaultLLM)throw new Error("No LLM available.");return this.defaultLLM}getEmbedding(){if(!this.defaultEmbedding)throw new Error("No embedding model available.");return this.defaultEmbedding}getStructuredLLM(){if(!this.defaultStructuredLLM)throw new Error("No structured-output LLM available.");return this.defaultStructuredLLM}};var cf=typeof window<"u",lf=cf&&window.location.protocol==="https:",Jt=null,Yr=null,uo=!1;async function uf(){if(uo)return{localModels:Jt,llm:Yr};if(uo=!0,lf)return console.log("\u{1F4E1} HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{Jt=new Kn,await Jt.audit(),Yr=co(Jt)}catch(e){console.warn("\u26A0\uFE0F Could not connect to local LLM:",e)}return{localModels:Jt,llm:Yr}}async function ff(){let{localModels:e,llm:t}=await uf();return{vector:t?{embed:t.embed}:void 0,store:Zr(),llmBattery:t,models:e}}async function Kd(){return ff()}var zd={store:Zr(),llmBattery:null,vector:void 0,models:null};function pf(e){if(typeof e!="string")return!1;let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")}function mf(){return new Date().toISOString()}function ut(e,t,n,r=0,s=0,i=0,o=0){return new Date(Date.UTC(e,t-1,n,r,s,i,o)).toISOString()}function fo(e){let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);return t.toISOString()}function df(e){try{return fo(e)}catch{return null}}function Vt(e,t){let n=new Date(e);return n.setTime(n.getTime()+t),n.toISOString()}function yf(e,t){return Vt(e,t*1e3)}function gf(e,t){return Vt(e,t*60*1e3)}function hf(e,t){return Vt(e,t*60*60*1e3)}function po(e,t){return Vt(e,t*24*60*60*1e3)}function bf(e,t){return po(e,t*7)}function xf(e,t){let n=new Date(e),r=n.getUTCMonth()+t;return n.setUTCMonth(r),n.getUTCMonth()!==(r%12+12)%12&&n.setUTCDate(0),n.toISOString()}function Sf(e,t){let n=new Date(e),r=n.getUTCDate();return n.setUTCFullYear(n.getUTCFullYear()+t),n.getUTCDate()!==r&&n.setUTCDate(0),n.toISOString()}function Le(e,t){return new Date(e).getTime()-new Date(t).getTime()}function wf(e,t){return Math.floor(Le(e,t)/1e3)}function Tf(e,t){return Math.floor(Le(e,t)/(60*1e3))}function Ef(e,t){return Math.floor(Le(e,t)/(3600*1e3))}function $f(e,t){return Math.floor(Le(e,t)/(1440*60*1e3))}function ft(e){return new Date(e).getUTCFullYear()}function zn(e){return new Date(e).getUTCMonth()+1}function Xr(e){return new Date(e).getUTCDate()}function _f(e){return new Date(e).getUTCHours()}function kf(e){return new Date(e).getUTCMinutes()}function jf(e){return new Date(e).getUTCSeconds()}function vf(e){return new Date(e).getUTCMilliseconds()}function Mf(e){let t=new Date(e).getUTCDay();return t===0?7:t}function Gn(e,t,n){let r=new Date(e),s={timeZone:t,...n};return new Intl.DateTimeFormat(void 0,s).format(r)}function Af(e,t){return Gn(e,t,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Cf(e,t){return Gn(e,t,{year:"numeric",month:"short",day:"numeric"})}function Rf(e,t){return Gn(e,t,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Nf(e){return e.slice(0,10)}function mo(e,t){return Le(e,t)<0}function yo(e,t){return Le(e,t)>0}function Pf(e,t){return Le(e,t)===0}function If(e,t){return mo(e,t)?e:t}function Df(e,t){return yo(e,t)?e:t}function Of(e){return ut(ft(e),zn(e),Xr(e))}function Bf(e){return ut(ft(e),zn(e),Xr(e),23,59,59,999)}function Lf(e){return ut(ft(e),zn(e),1)}function Ff(e){let t=new Date(e);return t.setUTCMonth(t.getUTCMonth()+1,0),t.setUTCHours(23,59,59,999),t.toISOString()}function Uf(e){return ut(ft(e),1,1)}function qf(e){return ut(ft(e),12,31,23,59,59,999)}var pt={isValid:pf,now:mf,from:ut,parse:fo,tryParse:df,addMilliseconds:Vt,addSeconds:yf,addMinutes:gf,addHours:hf,addDays:po,addWeeks:bf,addMonths:xf,addYears:Sf,diff:Le,diffSeconds:wf,diffMinutes:Tf,diffHours:Ef,diffDays:$f,year:ft,month:zn,day:Xr,hour:_f,minute:kf,second:jf,millisecond:vf,dayOfWeek:Mf,toLocal:Gn,format:Af,formatDate:Cf,formatTime:Rf,toDate:Nf,isBefore:mo,isAfter:yo,isEqual:Pf,min:If,max:Df,startOfDay:Of,endOfDay:Bf,startOfMonth:Lf,endOfMonth:Ff,startOfYear:Uf,endOfYear:qf};function Qr(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=parseInt(e.slice(0,4),10),n=parseInt(e.slice(5,7),10),r=parseInt(e.slice(8,10),10);if(n<1||n>12||r<1)return!1;let s=[31,28,31,30,31,30,31,31,30,31,30,31],i=n===2&&(t%4===0&&t%100!==0||t%400===0)?29:s[n-1];return r<=i}function Wf(){return pt.toDate(pt.now())}function Jf(e){let t=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function he(e,t,n){let r=String(e).padStart(4,"0"),s=String(t).padStart(2,"0"),i=String(n).padStart(2,"0"),o=`${r}-${s}-${i}`;if(!Qr(o))throw new Error(`Invalid date: ${e}-${t}-${n}`);return o}function go(e){if(/^\d{4}-\d{2}-\d{2}$/.test(e)){if(!Qr(e))throw new Error(`Invalid date: ${e}`);return e}let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);let n=t.getUTCFullYear(),r=t.getUTCMonth()+1,s=t.getUTCDate();return he(n,r,s)}function Vf(e){try{return go(e)}catch{return null}}function Hn(e,t){let n=bo(e);return pt.toDate(pt.addDays(n,t))}function Kf(e,t){return Hn(e,t*7)}function zf(e,t){let n=me(e),r=Fe(e),s=es(e),i=n*12+(r-1)+t,o=Math.floor(i/12),a=i%12+1,c=Kt(o,a),l=Math.min(s,c);return he(o,a,l)}function Gf(e,t){let n=me(e),r=Fe(e),s=es(e),i=n+t,o=Kt(i,r),a=Math.min(s,o);return he(i,r,a)}function ho(e,t){let r=new Date(e+"T00:00:00Z").getTime(),s=new Date(t+"T00:00:00Z").getTime();return Math.round((r-s)/864e5)}function Hf(e,t){let n=me(e),r=Fe(e),s=me(t),i=Fe(t);return(n-s)*12+(r-i)}function Zf(e,t){return me(e)-me(t)}function me(e){return parseInt(e.slice(0,4),10)}function Fe(e){return parseInt(e.slice(5,7),10)}function es(e){return parseInt(e.slice(8,10),10)}function ts(e){let t=new Date(e+"T00:00:00Z").getUTCDay();return t===0?7:t}function Yf(e){let t=new Date(e+"T00:00:00Z"),n=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-n);let r=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t.getTime()-r.getTime())/864e5+1)/7)}function Xf(e){let t=he(me(e),1,1);return ho(e,t)+1}function ns(e){return Math.ceil(Fe(e)/3)}function rs(e){return e%4===0&&e%100!==0||e%400===0}function Kt(e,t){let n=[31,28,31,30,31,30,31,31,30,31,30,31];return t===2&&rs(e)?29:n[t-1]}function Qf(e){return rs(e)?366:365}function bo(e){return e+"T00:00:00.000Z"}function ep(e){return Math.floor(new Date(e+"T00:00:00Z").getTime()/1e3)}function tp(e){let t=new Date(e*1e3);return he(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate())}function ss(e,t){let n=new Date(e+"T00:00:00Z"),r={timeZone:"UTC",...t};return new Intl.DateTimeFormat(void 0,r).format(n)}function np(e){return ss(e,{year:"numeric",month:"long",day:"numeric"})}function rp(e){return ss(e,{year:"numeric",month:"short",day:"numeric"})}function sp(e,t){return e<t}function ip(e,t){return e>t}function op(e,t){return e===t}function ap(e,t){return e<t?e:t}function cp(e,t){return e>t?e:t}function lp(e,t,n){return e>=t&&e<=n}function up(e){return he(me(e),Fe(e),1)}function fp(e){let t=me(e),n=Fe(e);return he(t,n,Kt(t,n))}function pp(e){let n=(ns(e)-1)*3+1;return he(me(e),n,1)}function mp(e){let n=ns(e)*3;return he(me(e),n,Kt(me(e),n))}function dp(e){return he(me(e),1,1)}function yp(e){return he(me(e),12,31)}function gp(e){let t=ts(e);return Hn(e,-(t-1))}function hp(e){let t=ts(e);return Hn(e,7-t)}var bp={isValid:Qr,today:Wf,todayIn:Jf,from:he,parse:go,tryParse:Vf,addDays:Hn,addWeeks:Kf,addMonths:zf,addYears:Gf,diff:ho,diffMonths:Hf,diffYears:Zf,year:me,month:Fe,day:es,dayOfWeek:ts,weekOfYear:Yf,dayOfYear:Xf,quarter:ns,isLeapYear:rs,daysInMonth:Kt,daysInYear:Qf,toTimestamp:bo,toUnix:ep,fromUnix:tp,format:ss,formatLong:np,formatShort:rp,isBefore:sp,isAfter:ip,isEqual:op,min:ap,max:cp,isBetween:lp,startOfMonth:up,endOfMonth:fp,startOfQuarter:pp,endOfQuarter:mp,startOfYear:dp,endOfYear:yp,startOfWeek:gp,endOfWeek:hp};export{Bm as A99,Wu as Agent,oe as AgentError,qn as AgentVM,Nl as DEFAULT_MAX_AST_SIZE,Rl as DEFAULT_PROCEDURE_TTL,Ou as EFFECTFUL_CORE_OPS,En as Enum,zu as Eval,vt as FunctionPredicate,tt as Generic,bp as LegalDate,pr as LegalDateType,Kn as LocalModels,Hi as MAX_CALL_DEPTH,On as MetadataCache,Or as ModuleLoader,hn as Nullable,bn as Optional,Lr as PROCEDURE_TOKEN_PREFIX,_t as PredicateFuelExhausted,Gu as SafeFunction,ol as Schema,H as SyntaxError,Sn as TArray,un as TBoolean,dn as TEmail,fn as TInteger,fe as TJS_VERSION,mn as TNonEmptyString,ln as TNumber,wn as TPair,pn as TPositiveInt,Tn as TRecord,cn as TString,yn as TUrl,gn as TUuid,pt as Timestamp,fr as TimestampType,K as TranspileError,te as Type,ls as TypeError,Ye as TypedBuilder,xn as Union,wu as agentRun,rd as ajs,Xs as assertFunction,zd as batteries,Dd as batteryAtoms,Re as builtins,vu as cache,Ql as callLocal,ze as checkType,Du as clearExpiredProcedures,sn as compilePredicate,Zs as compilePredicateSchema,$i as compileToWasm,hc as compileWasmBlocks,Nu as consoleError,Cu as consoleLog,Ru as consoleWarn,zl as constSet,Ft as coreAtoms,cd as createAgent,ge as createChildContext,Be as createChildScope,O as defineAtom,fa as dialectForFilename,ga as effectfulFromAtoms,qa as emitRuntimeWrapper,$e as error,Vl as errorAtom,Q as evaluateExpr,We as exampleToJSONSchema,Qs as expectFunction,St as extractFunctions,Ee as extractLiteralValue,wt as extractTDoc,jt as extractTests,yu as fetch,tu as filter,ru as find,Gs as formatPredicateDiagnostics,il as fromTS,on as functionMetaToJSONSchema,Bc as generateDTS,Ji as generateDocs,xl as generateDocsMarkdown,ff as getBatteries,Bn as getGlobalCache,co as getLLMCapability,Z as getLocation,Kd as getStandardCapabilities,Zr as getStoreCapabilityDefault,ld as getToolDefinitions,qr as hash,Dn as hashSource,al as hashSourceSync,Ul as iff,Al as inMemoryFileSystem,ae as inferTypeFromValue,Tr as installRuntime,ki as instantiateWasm,Cl as isAgentError,Ae as isError,Fr as isProcedureToken,Pe as isRuntimeType,ur as isValidLegalDate,lr as isValidTimestamp,cr as isValidUrl,au as join,$u as jsonParse,_u as jsonStringify,mu as keys,iu as len,pl as lint,Su as llmPredict,jo as lookupVariable,eu as map,ju as memoize,pu as merge,fu as omit,xe as parse,Ne as parseParameter,Us as parseReturnType,uu as pick,en as preprocess,lt as procedureStore,su as push,Mu as random,nu as reduce,lu as regexMatch,ji as registerWasmBlock,Iu as releaseProcedure,Ur as resolveProcedureToken,R as resolveValue,Wl as ret,Eu as runCode,Je as runtime,Xl as scope,ye as seq,ul as setGlobalCache,Vs as sourceKindForFilename,ou as split,gu as storeGet,Pu as storeProcedure,bu as storeQuery,hu as storeSet,An as stripModuleSyntax,hi as stripTjsPreamble,ha as suggest,cu as template,$a as testUtils,id as tjs,ad as tjsWithCache,$t as transformFunction,Wn as transpile,Tu as transpileCode,Ot as transpileToJS,od as transpileWithCache,Jl as tryCatch,Me as typeDescriptorToJSONSchema,_e as typeDescriptorToTS,st as typeOf,rr as typeToString,Au as uuid,Sr as validateArgs,Sa as validatePredicateSchema,Fo as validateSingleFunction,Gl as varGet,Kl as varSet,Yl as varsExport,Hl as varsImport,Zl as varsLet,xu as vectorSearch,kt as verifyPredicate,ql as whileLoop,wr as wrap,ku as xmlParse};
|
|
462
|
+
`,r+="```tjs\n",r+=wl(i.body).trim()+`
|
|
463
|
+
`,r+="```\n\n"));return r.trim()||"*No documentation available*"}function wl(e){let t=0,n="",r=null;for(;t<e.length;){let s=e[t],i=t>0?e[t-1]:"";if(r){n+=s,s===r&&i!=="\\"&&(r=null),t++;continue}if(s==='"'||s==="'"||s==="`"){r=s,n+=s,t++;continue}if(e.slice(t).startsWith("expect(")){let o=t+7,a=Ln(e,o);if(a>o){let l=e.slice(a+1).match(/^\.(\w+)(\()?/);if(l&&l[2]==="("){let u=a+1+l[0].length,f=Ln(e,u);if(f>=u){let p=e.slice(o,a),m=l[1],d=e.slice(u,f);n+=Tl(p,m,d),t=f+1;continue}}}}n+=s,t++}return n}function Ln(e,t){let n=1,r=t,s=null;for(;r<e.length;){let i=e[r],o=r>0?e[r-1]:"";if(s)i===s&&o!=="\\"&&(s=null);else if(i==='"'||i==="'"||i==="`")s=i;else if(i==="(")n++;else if(i===")"&&(n--,n===0))return r;r++}return-1}function Sl(e){if(typeof e=="function")return null;try{let t=JSON.stringify(e);return t===void 0?null:t}catch{return null}}function Tl(e,t,n){let r=e.trim(),s=n.trim();switch(t){case"toBe":return`${r} // \u2192 ${s}`;case"toEqual":return`${r} // \u2261 ${s}`;case"toBeTruthy":return`${r} // \u2192 truthy`;case"toBeFalsy":return`${r} // \u2192 falsy`;case"toBeNull":return`${r} // \u2192 null`;case"toBeUndefined":return`${r} // \u2192 undefined`;case"toContain":return`${r} // \u2192 contains ${s}`;case"toThrow":return`${r} // \u2192 throws`;case"toBeGreaterThan":return`${r} // \u2192 > ${s}`;case"toBeLessThan":return`${r} // \u2192 < ${s}`;case"toBeNaN":return`${r} // \u2192 NaN`;default:return`${r} // .${t}(${s})`}}import{existsSync as El,readFileSync as $l}from"node:fs";import{dirname as Ir,isAbsolute as _l,resolve as Lt,sep as kl}from"node:path";var Dr=[".tjs",".ts",".js"],jl={readFile(e){try{return $l(e,"utf8")}catch{return null}},exists(e){try{return El(e)}catch{return!1}}},Or=class{cache=new Map;fs;baseDir;bareSpecifierRoots;cacheLimit;constructor(t={}){this.fs=t.fs??jl,this.baseDir=t.baseDir??process.cwd(),this.bareSpecifierRoots=t.bareSpecifierRoots??[],this.cacheLimit=t.cacheLimit??256}resolve(t,n){return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:")||t.startsWith("file://")?null:t.startsWith("./")||t.startsWith("../")?this.tryExtensions(Lt(n?Ir(n):this.baseDir,t)):_l(t)?this.tryExtensions(t):this.resolveBare(t,n)}load(t,n){let r=this.resolve(t,n);if(!r)return null;let s=this.cache.get(r);if(s)return s;let i=this.fs.readFile(r);if(i===null)return null;let o;try{o=xe(i,{filename:r})}catch{return null}let a=vl(o.ast),c=Ml(o.ast),l={path:r,source:i,parseResult:o,imports:a,exports:c};if(this.cacheLimit>0){if(this.cache.size>=this.cacheLimit){let u=this.cache.keys().next().value;u!==void 0&&this.cache.delete(u)}this.cache.set(r,l)}return l}clearCache(){this.cache.clear()}tryExtensions(t){if(Dr.some(n=>t.endsWith(n)))return this.fs.exists(t)?t:null;for(let n of Dr){let r=t+n;if(this.fs.exists(r))return r}for(let n of Dr){let r=Lt(t,"index"+n);if(this.fs.exists(r))return r}return null}resolveBare(t,n){for(let s of this.bareSpecifierRoots){let i=this.tryExtensions(Lt(s,t));if(i)return i}let r=n?Ir(n):this.baseDir;for(r=Lt(r);;){let s=this.tryExtensions(Lt(r,"node_modules",t));if(s)return s;let i=Ir(r);if(i===r)break;r=i}return null}};function vl(e){let t=[];if(!e||!Array.isArray(e.body))return t;for(let n of e.body){if(n.type!=="ImportDeclaration")continue;let r=n.source?.value;if(typeof r=="string")for(let s of n.specifiers??[]){let i=s.local?.name;if(typeof i=="string")switch(s.type){case"ImportSpecifier":t.push({specifier:r,local:i,imported:s.imported?.name??i,namespace:!1});break;case"ImportDefaultSpecifier":t.push({specifier:r,local:i,imported:"default",namespace:!1});break;case"ImportNamespaceSpecifier":t.push({specifier:r,local:i,imported:"*",namespace:!0});break}}}return t}function Ml(e){let t=[];if(!e||!Array.isArray(e.body))return t;for(let n of e.body)if(n.type==="ExportNamedDeclaration"){if(n.declaration){let r=n.declaration;if(r.type==="FunctionDeclaration"&&r.id?.name)t.push({name:r.id.name,kind:"function"});else if(r.type==="ClassDeclaration"&&r.id?.name)t.push({name:r.id.name,kind:"class"});else if(r.type==="VariableDeclaration")for(let s of r.declarations)s.id?.type==="Identifier"&&s.id.name&&t.push({name:s.id.name,kind:"variable"})}if(Array.isArray(n.specifiers))for(let r of n.specifiers){let s=r.exported?.name;typeof s=="string"&&t.push({name:s,kind:n.source?"re-export":"unknown",fromSpecifier:n.source?.value})}}else if(n.type==="ExportDefaultDeclaration"){let r=n.declaration,s=r?.type==="FunctionDeclaration"||r?.type==="FunctionExpression"||r?.type==="ArrowFunctionExpression"?"function":r?.type==="ClassDeclaration"||r?.type==="ClassExpression"?"class":"unknown";t.push({name:"default",kind:s})}else if(n.type==="ExportAllDeclaration"){let r=n.source?.value;typeof r=="string"&&t.push({name:"*",kind:"re-export",fromSpecifier:r})}return t}function Al(e){let t=e instanceof Map?e:new Map(Object.entries(e)),n=s=>s.split("/").join(kl),r=s=>t.get(s)??t.get(n(s))??null;return{readFile:s=>r(s),exists:s=>r(s)!==null}}import{s as h,validate as Br,filter as Qi}from"tosijs-schema";function Vi(e,t){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),!!(e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)}var oe=class{$error=!0;message;op;cause;constructor(t,n,r){this.message=t,this.op=n,this.cause=r}toString(){return`AgentError[${this.op}]: ${this.message}`}toJSON(){return{$error:!0,message:this.message,op:this.op}}};function Cl(e){return e instanceof oe||e&&e.$error===!0}var lt=new Map,Rl=3600*1e3,Nl=100*1024,Lr="proc_";function Fr(e){return typeof e=="string"&&e.startsWith(Lr)}function Ur(e){let t=lt.get(e);if(!t)throw new Error(`Procedure not found: ${e}`);if(Date.now()>t.expiresAt)throw lt.delete(e),new Error(`Procedure expired: ${e}`);return t.ast}function Pl(){return typeof crypto<"u"&&crypto.randomUUID?Lr+crypto.randomUUID():Lr+Math.random().toString(36).slice(2)+Date.now().toString(36)}var eo=new Set(["__proto__","constructor","prototype"]);function Ki(e){if(eo.has(e))throw new Error(`Security Error: Access to '${e}' is forbidden`)}var Il=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function Dl(e){try{let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")return!0;let n=t.hostname.toLowerCase();return!!(Il.has(n)||n.endsWith(".internal")||n.endsWith(".local")||n==="169.254.169.254"||/^10\./.test(n)||/^192\.168\./.test(n)||/^172\.(1[6-9]|2\d|3[01])\./.test(n))}catch{return!0}}function Ol(e){return!!(/\([^)]*[+*][^)]*\)[+*]/.test(e)||/\(([^|)]+)\|\1\)[+*]/.test(e)||/\(\.\*\)\+/.test(e)||/\(\.\+\)\+/.test(e)||/\(\[.*\]\+\)\+/.test(e))}function Be(e){return{...e,state:Object.create(e.state)}}function Bl(e,t){let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let s of r){let i=e[s],o=t[s];o!==i&&(n[s]=o)}return n}function R(e,t){if(e&&typeof e=="object"&&e.$kind==="arg")return t.args[e.path];if(e&&typeof e=="object"&&e.$expr)return Q(e,t);if(typeof e=="string"){if(e.startsWith("args.")&&!("args"in t.state))return t.args[e.replace("args.","")];if(e.includes(".")){let n=e.split(".");for(let s of n)if(eo.has(s))throw new Error(`Security Error: Access to '${s}' is forbidden`);let r=t.state[n[0]];if(r!==void 0){for(let s=1;s<n.length;s++)r=r?.[n[s]];return r}}return e in t.state?t.state[e]:e}if(e&&typeof e=="object"&&!Array.isArray(e)&&e.constructor===Object){let n={};for(let r of Object.keys(e))n[r]=R(e[r],t);return n}return Array.isArray(e)?e.map(n=>R(n,t)):e}function Ze(e,t,n){return new Proxy(t,{get(r,s){if(s in r)return r[s];let i=n?.[s];throw i?new Error(`${e}.${s} is not available. ${i}`):new Error(`${e}.${s} is not supported in AsyncJS. Check docs for available ${e} methods.`)}})}function ct(e){if(e===null)return{type:"null"};if(e===void 0)return{};if(typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string")return e;if(typeof e=="object"&&e!==null&&"schema"in e&&typeof e.schema=="object")return e.schema;let t=typeof e;if(t==="string")return{type:"string"};if(t==="number")return Number.isInteger(e)?{type:"integer"}:{type:"number"};if(t==="boolean")return{type:"boolean"};if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:ct(e[0])};if(t==="object"){let n={},r=[];for(let[s,i]of Object.entries(e))n[s]=ct(i),r.push(s);return{type:"object",properties:n,required:r}}return{}}var Re={Math:Ze("Math",{PI:Math.PI,E:Math.E,LN2:Math.LN2,LN10:Math.LN10,LOG2E:Math.LOG2E,LOG10E:Math.LOG10E,SQRT2:Math.SQRT2,SQRT1_2:Math.SQRT1_2,abs:Math.abs,ceil:Math.ceil,floor:Math.floor,round:Math.round,trunc:Math.trunc,sign:Math.sign,sqrt:Math.sqrt,cbrt:Math.cbrt,pow:Math.pow,exp:Math.exp,expm1:Math.expm1,log:Math.log,log2:Math.log2,log10:Math.log10,log1p:Math.log1p,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,asinh:Math.asinh,acosh:Math.acosh,atanh:Math.atanh,hypot:Math.hypot,min:Math.min,max:Math.max,clz32:Math.clz32,imul:Math.imul,fround:Math.fround,random:()=>{if(typeof crypto<"u"&&crypto.getRandomValues){let e=new Uint32Array(1);return crypto.getRandomValues(e),e[0]/4294967296}return Math.random()}}),JSON:Ze("JSON",{parse:e=>JSON.parse(e),stringify:(e,t,n)=>JSON.stringify(e,t,n)}),console:Ze("console",{log:(...e)=>{},warn:(...e)=>{},error:(...e)=>{},info:(...e)=>{}},{table:"Use console.log with JSON.stringify for structured data.",dir:"Use console.log instead.",trace:"Stack traces are not available in AsyncJS."}),Array:Ze("Array",{isArray:e=>Array.isArray(e),from:(e,t,n)=>Array.from(e,t,n),of:(...e)=>Array.of(...e)},{prototype:"Prototype access is not allowed."}),Object:Ze("Object",{keys:e=>Object.keys(e),values:e=>Object.values(e),entries:e=>Object.entries(e),fromEntries:e=>Object.fromEntries(e),assign:(e,...t)=>Object.assign({},e,...t),hasOwn:(e,t)=>Object.hasOwn(e,t)},{prototype:"Prototype access is not allowed.",create:"Use object literals instead.",defineProperty:"Property descriptors are not supported.",getPrototypeOf:"Prototype access is not allowed.",setPrototypeOf:"Prototype modification is not allowed."}),String:Ze("String",{fromCharCode:(...e)=>String.fromCharCode(...e),fromCodePoint:(...e)=>String.fromCodePoint(...e)}),Number:Ze("Number",{isNaN:Number.isNaN,isFinite:Number.isFinite,isInteger:Number.isInteger,isSafeInteger:Number.isSafeInteger,parseFloat,parseInt,MAX_VALUE:Number.MAX_VALUE,MIN_VALUE:Number.MIN_VALUE,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,POSITIVE_INFINITY:Number.POSITIVE_INFINITY,NEGATIVE_INFINITY:Number.NEGATIVE_INFINITY,NaN:Number.NaN,EPSILON:Number.EPSILON}),parseInt,parseFloat,isNaN,isFinite,encodeURI,decodeURI,encodeURIComponent,decodeURIComponent,undefined:void 0,null:null,NaN:NaN,Infinity:1/0,filter:(e,t)=>{let n=ct(t),r=Qi(e,n);if(r instanceof Error)throw r;return r},Schema:{...h,response:(e,t)=>{let n=t?.schema!=null?t.schema:ct(t);return{type:"json_schema",json_schema:{name:e,strict:!0,schema:n}}},fromExample:e=>ct(e),isValid:(e,t)=>t?.schema!=null?Br(e,t):Br(e,ct(t))},Set:(e=[])=>{let t=[...new globalThis.Set(e)];return{add(n){return t.includes(n)||t.push(n),this},remove(n){let r=t.indexOf(n);return r!==-1&&t.splice(r,1),this},clear(){return t.length=0,this},has(n){return t.includes(n)},get size(){return t.length},toArray(){return[...t]},union(n){let r=n?.toArray?.()??n??[];return Re.Set([...t,...r])},intersection(n){let r=n?.toArray?.()??n??[];return Re.Set(t.filter(s=>r.includes(s)))},diff(n){let r=n?.toArray?.()??n??[];return Re.Set(t.filter(s=>!r.includes(s)))},forEach(n){t.forEach(n)},map(n){return Re.Set(t.map(n))},filter(n){return Re.Set(t.filter(n))},toJSON(){return[...t]}}},Date:(()=>{let e=n=>({get value(){return n.toISOString()},get timestamp(){return n.getTime()},get year(){return n.getFullYear()},get month(){return n.getMonth()+1},get day(){return n.getDate()},get hours(){return n.getHours()},get minutes(){return n.getMinutes()},get seconds(){return n.getSeconds()},get dayOfWeek(){return n.getDay()},add({years:r=0,months:s=0,days:i=0,hours:o=0,minutes:a=0,seconds:c=0,ms:l=0}={}){let u=new globalThis.Date(n.getTime());return r&&u.setFullYear(u.getFullYear()+r),s&&u.setMonth(u.getMonth()+s),i&&u.setDate(u.getDate()+i),o&&u.setHours(u.getHours()+o),a&&u.setMinutes(u.getMinutes()+a),c&&u.setSeconds(u.getSeconds()+c),l&&u.setMilliseconds(u.getMilliseconds()+l),e(u)},diff(r,s="ms"){let i=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime(),o=n.getTime()-i;switch(s){case"seconds":return o/1e3;case"minutes":return o/6e4;case"hours":return o/36e5;case"days":return o/864e5;default:return o}},format(r="ISO"){return r==="ISO"?n.toISOString():r==="date"?n.toISOString().split("T")[0]:r==="time"?n.toISOString().split("T")[1].split(".")[0]:r.replace("YYYY",String(n.getFullYear())).replace("MM",String(n.getMonth()+1).padStart(2,"0")).replace("DD",String(n.getDate()).padStart(2,"0")).replace("HH",String(n.getHours()).padStart(2,"0")).replace("mm",String(n.getMinutes()).padStart(2,"0")).replace("ss",String(n.getSeconds()).padStart(2,"0"))},isBefore(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return n.getTime()<s},isAfter(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return n.getTime()>s},toString(){return n.toISOString()},toJSON(){return n.toISOString()}}),t=n=>{let r=n!==void 0?new globalThis.Date(n):new globalThis.Date;if(isNaN(r.getTime()))throw new Error(`Invalid date: ${n}`);return e(r)};return t.now=()=>globalThis.Date.now(),t.parse=n=>e(new globalThis.Date(n)),t})()},Fn={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."},Ll=.01,zi=1e-4,Gi=.001,Fl=new Set(["concat","slice","map","filter","flatMap","flat","toReversed","toSorted","toSpliced","repeat","padStart","padEnd","split","join","replace","replaceAll","substring","substr","trim","trimStart","trimEnd","toLowerCase","toUpperCase","match","matchAll","parse","stringify"]);function Q(e,t){if(e==null||typeof e!="object"||!("$expr"in e))return e;if(t.fuel&&(t.fuel.current-=Ll,t.fuel.current<=0))throw new Error("Out of Fuel");switch(e.$expr){case"literal":return e.value;case"ident":{if(e.name in t.state)return t.state[e.name];if(e.name in t.args)return t.args[e.name];if(e.name in Re)return Re[e.name];if(e.name in Fn)throw new Error(Fn[e.name]);return}case"member":{let n=Q(e.object,t);if(e.optional&&n==null)return;let r=typeof e.property=="object"&&e.property!==null?Q(e.property,t):e.property;return Ki(String(r)),n?.[r]}case"binary":{let n=Q(e.left,t),r=Q(e.right,t);switch(e.op){case"+":{let s=n+r;if(typeof s=="string"&&t.fuel&&(t.fuel.current-=s.length*zi,t.fuel.current<=0)){t.error=new oe("Out of Fuel","expr.concat");return}return s}case"-":return n-r;case"*":return n*r;case"/":return n/r;case"%":return n%r;case"**":return n**r;case">":return n>r;case"<":return n<r;case">=":return n>=r;case"<=":return n<=r;case"==":return Vi(n,r);case"!=":return!Vi(n,r);case"===":return n===r;case"!==":return n!==r;default:throw new Error(`Unknown binary operator: ${e.op}`)}}case"unary":{let n=Q(e.argument,t);switch(e.op){case"!":return!n;case"-":return-n;case"+":return+n;case"typeof":return typeof n;default:throw new Error(`Unknown unary operator: ${e.op}`)}}case"logical":{let n=Q(e.left,t);return e.op==="&&"?n&&Q(e.right,t):e.op==="??"?n??Q(e.right,t):n||Q(e.right,t)}case"conditional":{let n=Q(e.test,t);return Q(n?e.consequent:e.alternate,t)}case"array":return e.elements.map(n=>Q(n,t));case"object":{let n={};for(let r of e.properties)n[r.key]=Q(r.value,t);return n}case"call":{if(e.callee==="Error"){let r=e.arguments.map(i=>Q(i,t)),s=typeof r[0]=="string"?r[0]:"Error";t.error=new oe(s,"Error");return}if(e.callee in Re){let r=Re[e.callee];if(typeof r=="function"){let s=e.arguments.map(i=>Q(i,t));return r(...s)}}throw t.resolver(e.callee)?new Error(`Atom calls in expressions not yet supported: ${e.callee}`):e.callee in Fn?new Error(Fn[e.callee]):new Error(`Unknown function: ${e.callee}`)}case"methodCall":{let n=Q(e.object,t);if(e.optional&&n==null)return;let r=e.method;if(Ki(r),n==null)throw new Error(`Cannot call method '${r}' on ${n}`);let s=n[r];if(typeof s!="function")throw new Error(`'${r}' is not a function`);let i=e.arguments.map(a=>Q(a,t)),o=s.apply(n,i);if(t.fuel&&Fl.has(r)){let a=0;if(typeof o=="string"?a=o.length*zi:Array.isArray(o)?a=o.length*Gi:typeof o=="object"&&o!==null&&(a=Object.keys(o).length*Gi),t.fuel.current-=a,t.fuel.current<=0){t.error=new oe("Out of Fuel",`expr.${r}`);return}}return o}default:throw new Error(`Unknown expression type: ${e.$expr}`)}}function O(e,t,n,r,s={}){let{docs:i="",timeoutMs:o=1e3,cost:a=1,effects:c="pure"}=typeof s=="string"?{docs:s}:s;return{op:e,inputSchema:t,outputSchema:n,exec:async(u,f)=>{let{op:p,result:m,...d}=u;if(f.error)return;let y=f.trace?{...f.state}:null,b=f.fuel.current,$,T;try{let x=f.costOverrides?.[e],w=x!==void 0?x:a,E=typeof w=="function"?w(d,f):w;if((f.fuel.current-=E)<=0){f.error=new oe("Out of Fuel",e);return}let S=f.timeoutOverrides?.[e],j=S!==void 0?S:o,A=typeof j=="function"?j(d,f):j,k,v=async()=>r(u,f);if($=A>0?await Promise.race([v(),new Promise((C,P)=>{k=setTimeout(()=>P(new Error(`Atom '${e}' timed out`)),A)})]).finally(()=>clearTimeout(k)):await v(),u.result){if(f.consts.has(u.result))throw new Error(`Cannot reassign const variable '${u.result}'`);if($!==void 0&&n&&!Br($,n)){f.error=new oe(`Output validation failed for '${e}'`,e);return}f.state[u.result]=$,u.resultConst&&f.consts.add(u.result)}}catch(x){T=x.message||String(x),f.error=new oe(T,e,x)}finally{if(f.trace&&y){let x=Bl(y,f.state);f.trace.push({op:e,input:d,stateDiff:x,result:$,error:T,fuelBefore:b,fuelAfter:f.fuel.current,timestamp:new Date().toISOString()})}}},docs:i,timeoutMs:o,cost:a,effects:c,create:u=>({op:e,...u})}}var ye=O("seq",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{for(let n of e){if(t.output!==void 0||t.error)return;let r=t.resolver(n.op);if(!r)throw new Error(`Unknown Atom: ${n.op}`);await r.exec(n,t)}},{docs:"Sequence",timeoutMs:0,cost:.1}),Ul=O("if",h.object({condition:h.any,then:h.array(h.any),else:h.array(h.any).optional}),void 0,async(e,t)=>{Q(e.condition,t)?await ye.exec({op:"seq",steps:e.then},t):e.else&&await ye.exec({op:"seq",steps:e.else},t)},{docs:"If/Else",timeoutMs:0,cost:.1}),ql=O("while",h.object({condition:h.any,body:h.array(h.any)}),void 0,async(e,t)=>{for(;Q(e.condition,t);){if(t.signal?.aborted)throw new Error("Execution aborted");if((t.fuel.current-=.1)<=0)throw new Error("Out of Fuel");if(await ye.exec({op:"seq",steps:e.body},t),t.output!==void 0||t.error)return}},{docs:"While Loop",timeoutMs:0,cost:.1}),Wl=O("return",void 0,h.any,async(e,t)=>{if(t.error)return t.output=t.error,t.error;if("value"in e){let r=R(e.value,t);if(!t.localCall&&r!==void 0&&r!==null&&!Cl(r)&&(typeof r!="object"||Array.isArray(r))){let s=new oe(`Agent must return an object, got ${Array.isArray(r)?"array":typeof r}`,"return");return t.error=s,t.output=s,s}return t.output=r,r}let n={};if(e.schema?.properties){for(let r of Object.keys(e.schema.properties))n[r]=t.state[r];if(e.filter!==!1){let r=Qi(n,e.schema);r instanceof Error||(n=r)}}return t.output=n,n},{docs:"Return",cost:.1}),Jl=O("try",h.object({try:h.array(h.any),catch:h.array(h.any).optional,catchParam:h.string.optional}),void 0,async(e,t)=>{if(await ye.exec({op:"seq",steps:e.try},t),t.error&&e.catch){let n=e.catchParam||"error";t.state[n]=t.error.message,t.state.errorOp=t.error.op,t.error=void 0,await ye.exec({op:"seq",steps:e.catch},t)}},{docs:"Try/Catch",timeoutMs:0,cost:.1}),Vl=O("Error",h.object({args:h.array(h.any).optional}),void 0,async(e,t)=>{let n=e.args?.[0]??"Error";t.error=new oe(String(n),"Error")},{docs:"Trigger error flow",cost:.1}),Kl=O("varSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{if(n.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);n.state[e]=R(t,n)},{docs:"Set Variable",cost:.1}),zl=O("constSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{if(n.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);if(e in n.state)throw new Error(`Cannot redeclare variable '${e}' as const`);n.state[e]=R(t,n),n.consts.add(e)},{docs:"Set Const Variable (immutable)",cost:.1}),Gl=O("varGet",h.object({key:h.string}),h.any,async({key:e},t)=>R(e,t),{docs:"Get Variable",cost:.1}),Hl=O("varsImport",h.object({keys:h.union([h.array(h.string),h.record(h.string)])}),void 0,async({keys:e},t)=>{if(Array.isArray(e))for(let n of e)t.state[n]=R({$kind:"arg",path:n},t);else for(let[n,r]of Object.entries(e))t.state[n]=R({$kind:"arg",path:r},t)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:.2}),Zl=O("varsLet",h.record(h.any),void 0,async(e,t)=>{for(let n of Object.keys(e))n==="op"||n==="result"||(t.state[n]=R(e[n],t))},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:.1}),Yl=O("varsExport",h.object({keys:h.union([h.array(h.string),h.record(h.string)])}),h.record(h.any),async({keys:e},t)=>{let n={};if(Array.isArray(e))for(let r of e)n[r]=R(r,t);else for(let[r,s]of Object.entries(e))n[r]=R(s,t);return n},{docs:"Export variables from the current scope, with optional renaming.",cost:.2}),Xl=O("scope",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{let n=Be(t);await ye.exec({op:"seq",steps:e},n),n.output!==void 0&&(t.output=n.output)},{docs:"Create new scope",timeoutMs:0,cost:.1}),Hi=256,Ql=O("callLocal",h.object({name:h.string,args:h.array(h.any)}),void 0,async({name:e,args:t},n)=>{let r=n.helpers?.[e];if(!r)return n.error=new oe(`Unknown helper: ${e}`,"callLocal"),n.error;let s=(n.callDepth??0)+1;if(s>Hi)return n.error=new oe(`Maximum helper call depth (${Hi}) exceeded \u2014 likely infinite recursion in '${e}'`,"callLocal"),n.error;let i=t.map(a=>R(a,n)),o={...n,state:{},consts:new Set,output:void 0,error:void 0,localCall:!0,callDepth:s};for(let a=0;a<r.paramNames.length;a++)o.state[r.paramNames[a]]=i[a];return await ye.exec({op:"seq",steps:r.steps},o),o.error&&(n.error=o.error),o.output},{docs:"Invoke a local helper function by name",timeoutMs:0,cost:.1}),eu=O("map",h.object({items:h.array(h.any),as:h.string,steps:h.array(h.any)}),h.array(h.any),async({items:e,as:t,steps:n},r)=>{let s=[],i=R(e,r);if(!Array.isArray(i))throw new Error("map: items is not an array");for(let o of i){if(r.signal?.aborted)throw new Error("Execution aborted");let a=Be(r);a.state[t]=o,await ye.exec({op:"seq",steps:n},a),s.push(a.state.result??null)}return s},{docs:"Map Array",timeoutMs:0,cost:1}),tu=O("filter",h.object({items:h.array(h.any),as:h.string,condition:h.any}),h.array(h.any),async({items:e,as:t,condition:n},r)=>{let s=[],i=R(e,r);if(!Array.isArray(i))throw new Error("filter: items is not an array");for(let o of i){if(r.signal?.aborted)throw new Error("Execution aborted");let a=Be(r);a.state[t]=o,Q(n,a)&&s.push(o)}return s},{docs:"Filter Array",timeoutMs:0,cost:1}),nu=O("reduce",h.object({items:h.array(h.any),as:h.string,accumulator:h.string,initial:h.any,steps:h.array(h.any)}),h.any,async({items:e,as:t,accumulator:n,initial:r,steps:s},i)=>{let o=R(e,i),a=R(r,i);if(!Array.isArray(o))throw new Error("reduce: items is not an array");let c=a;for(let l of o){if(i.signal?.aborted)throw new Error("Execution aborted");let u=Be(i);u.state[t]=l,u.state[n]=c,await ye.exec({op:"seq",steps:s},u),c=u.state.result??c}return c},{docs:"Reduce Array",timeoutMs:0,cost:1}),ru=O("find",h.object({items:h.array(h.any),as:h.string,condition:h.any}),h.any,async({items:e,as:t,condition:n},r)=>{let s=R(e,r);if(!Array.isArray(s))throw new Error("find: items is not an array");for(let i of s){if(r.signal?.aborted)throw new Error("Execution aborted");let o=Be(r);if(o.state[t]=i,Q(n,o))return i}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),su=O("push",h.object({list:h.array(h.any),item:h.any}),h.array(h.any),async({list:e,item:t},n)=>{let r=R(e,n),s=R(t,n);return Array.isArray(r)&&r.push(s),r},{docs:"Push to Array",cost:1}),iu=O("len",h.object({list:h.any}),h.number,async({list:e},t)=>{let n=R(e,t);return Array.isArray(n)||typeof n=="string"?n.length:0},{docs:"Length",cost:1}),ou=O("split",h.object({str:h.string,sep:h.string}),h.array(h.string),async({str:e,sep:t},n)=>R(e,n).split(R(t,n)),{docs:"Split String",cost:1}),au=O("join",h.object({list:h.array(h.string),sep:h.string}),h.string,async({list:e,sep:t},n)=>R(e,n).join(R(t,n)),{docs:"Join String",cost:1}),cu=O("template",h.object({tmpl:h.string,vars:h.record(h.any)}),h.string,async({tmpl:e,vars:t},n)=>R(e,n).replace(/\{\{(\w+)\}\}/g,(s,i)=>String(R(t[i],n)??"")),{docs:"String Template",cost:1}),lu=O("regexMatch",h.object({pattern:h.string,value:h.any}),h.boolean,async({pattern:e,value:t},n)=>{if(Ol(e))throw new Error(`Suspicious regex pattern rejected (potential ReDoS): ${e}`);let r=R(t,n);return new RegExp(e).test(r)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),uu=O("pick",h.object({obj:h.record(h.any),keys:h.array(h.string)}),h.record(h.any),async({obj:e,keys:t},n)=>{let r=R(e,n),s=R(t,n),i={};return r&&Array.isArray(s)&&s.forEach(o=>i[o]=r[o]),i},{docs:"Pick Keys",cost:1}),fu=O("omit",h.object({obj:h.record(h.any),keys:h.array(h.string)}),h.record(h.any),async({obj:e,keys:t},n)=>{let r=R(e,n),s=new Set(R(t,n)),i={};return r&&Object.keys(r).forEach(o=>{s.has(o)||(i[o]=r[o])}),i},{docs:"Omit Keys",cost:1}),pu=O("merge",h.object({a:h.record(h.any),b:h.record(h.any)}),h.record(h.any),async({a:e,b:t},n)=>({...R(e,n),...R(t,n)}),{docs:"Merge Objects",cost:1}),mu=O("keys",h.object({obj:h.record(h.any)}),h.array(h.string),async({obj:e},t)=>Object.keys(R(e,t)??{}),{docs:"Object Keys",cost:1}),Zi=10,Yi="X-Agent-Depth";function du(e,t){try{let r=new URL(e).hostname.toLowerCase();for(let s of t){let i=s.toLowerCase();if(i.startsWith("*.")){let o=i.slice(1);if(r.endsWith(o)||r===i.slice(2))return!0}else if(r===i)return!0}return!1}catch{return!1}}var yu=O("httpFetch",h.object({url:h.string,method:h.string.optional,headers:h.record(h.string).optional,body:h.any.optional,responseType:h.string.optional}),h.any,async(e,t)=>{let n=R(e.url,t),r=R(e.method,t),s=R(e.headers,t)||{},i=R(e.body,t),o=R(e.responseType,t),a=t.context?.requestDepth??0;if(a>=Zi)throw new Error(`Agent request depth exceeded (max ${Zi}). This prevents recursive agent loops.`);if(t.capabilities.fetch)return t.capabilities.fetch(n,{method:r,headers:{...s,[Yi]:String(a+1)},body:i,signal:t.signal,responseType:o});let c=t.context?.allowedFetchDomains;if(c){if(!du(n,c))throw new Error(`Fetch blocked: domain not in allowlist. Allowed: ${c.join(", ")}`)}else{if(Dl(n))throw new Error("Blocked URL: private/internal addresses not allowed in default fetch");try{let u=new URL(n).hostname.toLowerCase();if(u!=="localhost"&&u!=="127.0.0.1"&&u!=="[::1]")throw new Error("Fetch blocked: no allowedFetchDomains configured. Set ctx.context.allowedFetchDomains or provide a custom fetch capability.")}catch(l){throw l.message.includes("allowedFetchDomains")?l:new Error(`Invalid URL: ${n}`,{cause:l})}}if(typeof globalThis.fetch=="function"){let l=await globalThis.fetch(n,{method:r,headers:{...s,[Yi]:String(a+1)},body:i?JSON.stringify(i):void 0,signal:t.signal});if(o==="dataUrl"){let f=await l.arrayBuffer(),p=new Uint8Array(f),m="";for(let b=0;b<p.length;b++)m+=String.fromCharCode(p[b]);let d=btoa(m);return`data:${l.headers.get("content-type")||"application/octet-stream"};base64,${d}`}let u=l.headers.get("content-type");return o==="json"||u&&u.includes("application/json")?l.json():l.text()}throw new Error("Capability 'fetch' missing and no global fetch available")},{docs:"HTTP Fetch",timeoutMs:3e4,cost:5}),gu=O("storeGet",h.object({key:h.string}),h.any,async({key:e},t)=>{let n=R(e,t);return t.capabilities.store?.get(n)},{docs:"Store Get",cost:5}),hu=O("storeSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{let r=R(e,n),s=R(t,n);return n.capabilities.store?.set(r,s)},{docs:"Store Set",cost:5}),bu=O("storeQuery",h.object({query:h.any}),h.array(h.any),async({query:e},t)=>t.capabilities.store?.query?.(R(e,t))??[],{docs:"Store Query",cost:5}),xu=O("storeVectorSearch",h.object({collection:h.string.optional,vector:h.array(h.number),k:h.number.optional}),h.array(h.any),async({collection:e,vector:t,k:n},r)=>r.capabilities.store?.vectorSearch?.(R(e,r),R(t,r),R(n,r))??[],{docs:"Vector Search",cost:(e,t)=>5+(R(e.k,t)??5)}),wu=O("llmPredict",h.object({prompt:h.string,options:h.any.optional}),h.string,async({prompt:e,options:t},n)=>{if(!n.capabilities.llm?.predict)throw new Error("Capability 'llm.predict' missing");return n.capabilities.llm.predict(R(e,n),R(t,n))},{docs:"LLM Predict",timeoutMs:12e4,cost:100}),Su=O("agentRun",h.object({agentId:h.any,input:h.any}),h.any,async({agentId:e,input:t},n)=>{let r=R(e,n),s=R(t,n),i=s;if(s&&typeof s=="object"&&!Array.isArray(s)){i={};for(let a in s)i[a]=R(s[a],n)}if(Fr(r)){let a=Ur(r),c={...n,args:i,state:{},consts:new Set,output:void 0,error:void 0},l=n.resolver("seq");if(!l)throw new Error("seq atom not found");if(await l.exec(a,c),c.error)throw new Error(c.error.message||"Sub-agent failed");return c.output}if(r&&typeof r=="object"&&"op"in r){let a={...n,args:i,state:{},consts:new Set,output:void 0,error:void 0},c=n.resolver("seq");if(!c)throw new Error("seq atom not found");if(await c.exec(r,a),a.error)throw new Error(a.error.message||"Sub-agent failed");return a.output}if(!n.capabilities.agent?.run)throw new Error("Capability 'agent.run' missing");let o=await n.capabilities.agent.run(r,i);if(o&&typeof o=="object"&&"fuelUsed"in o&&typeof o.fuelUsed=="number"){if(o.error)throw new Error(o.error.message||"Sub-agent failed");return o.result}return o},{docs:"Run Sub-Agent (accepts procedure token, AST, or agent ID)",cost:1}),Tu=O("transpileCode",h.object({code:h.string}),h.any,async({code:e},t)=>{if(!t.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let n=R(e,t);try{return t.capabilities.code.transpile(n)}catch(r){throw new Error(`Code transpilation failed: ${r.message}`,{cause:r})}},{docs:"Transpile AsyncJS code to AST",cost:1}),Xi=10,Eu=O("runCode",h.object({code:h.string,args:h.record(h.any).optional}),h.any,async({code:e,args:t},n)=>{let r=n.runCodeDepth??0;if(r>=Xi)throw new Error(`runCode recursion limit exceeded (max ${Xi}). This prevents infinite loops from dynamically generated code calling runCode.`);if(!n.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable dynamic code execution by providing the code capability.");let s=R(e,n),i=t?R(t,n):{},o;try{o=n.capabilities.code.transpile(s)}catch(c){throw new Error(`Code transpilation failed: ${c.message}`,{cause:c})}if(o.op!=="seq")throw new Error("Transpiled code must be a seq node");let a=Be(n);if(a.args=i,a.output=void 0,a.runCodeDepth=r+1,await ye.exec(o,a),a.error){n.error=a.error;return}return a.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),$u=O("jsonParse",h.object({str:h.string}),h.any,async({str:e},t)=>JSON.parse(R(e,t)),{docs:"Parse JSON",cost:1}),_u=O("jsonStringify",h.object({value:h.any}),h.string,async({value:e},t)=>JSON.stringify(R(e,t)),{docs:"Stringify JSON",cost:1}),ku=O("xmlParse",h.object({str:h.string}),h.any,async({str:e},t)=>{if(!t.capabilities.xml?.parse)throw new Error("Capability 'xml.parse' missing");return t.capabilities.xml.parse(R(e,t))},{docs:"Parse XML",cost:1}),ju=O("memoize",h.object({key:h.string.optional,steps:h.array(h.any)}),h.any,async({key:e,steps:t},n)=>{n.memo||(n.memo=new Map);let r=R(e,n)??await qr.exec({value:t,algorithm:"SHA-256"},n);if(n.memo.has(r))return n.memo.get(r);let s=Be(n);await ye.exec({op:"seq",steps:t},s);let i=s.output??s.state.result;return n.memo.set(r,i),i},{docs:"Memoize steps result in memory",cost:1}),vu=O("cache",h.object({key:h.string.optional,steps:h.array(h.any),ttlMs:h.number.optional}),h.any,async({key:e,steps:t,ttlMs:n},r)=>{if(!r.capabilities.store)throw new Error("Capability 'store' missing for caching");let i=`cache:${R(e,r)??await qr.exec({value:t,algorithm:"SHA-256"},r)}`,o=await r.capabilities.store.get(i);if(o)if(typeof o=="object"&&o._exp){if(Date.now()<o._exp)return o.val}else return o;let a=Be(r);await ye.exec({op:"seq",steps:t},a);let c=a.output??a.state.result,l=Date.now()+(n??24*3600*1e3);if((r.fuel.current-=5)<=0)throw new Error("Out of Fuel");return await r.capabilities.store.set(i,{val:c,_exp:l}),c},{docs:"Cache steps result in store with TTL",cost:5}),Mu=O("random",h.object({min:h.number.optional,max:h.number.optional,format:h.string.optional,length:h.number.optional}),h.any,async({min:e,max:t,format:n,length:r},s)=>{let i=R(n,s)??"float",o=R(r,s)??10,a=R(e,s)??0,c=R(t,s)??1;if(i==="base36"){let p="0123456789abcdefghijklmnopqrstuvwxyz",m="";if(typeof crypto<"u"&&crypto.getRandomValues){let d=new Uint8Array(o);crypto.getRandomValues(d);for(let y=0;y<o;y++)m+=p[d[y]%36]}else for(let d=0;d<o;d++)m+=p.charAt(Math.floor(Math.random()*36));return m}let l;if(typeof crypto<"u"&&crypto.getRandomValues){let p=new Uint32Array(1);crypto.getRandomValues(p),l=p[0]/4294967296}else l=Math.random();let u=c-a,f=l*u+a;return i==="integer"?Math.floor(f):f},{docs:"Generate Random",cost:1}),Au=O("uuid",void 0,h.string,async()=>{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();if(typeof crypto<"u"&&crypto.getRandomValues){let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})},{docs:"Generate UUID",cost:1}),qr=O("hash",h.object({value:h.any,algorithm:h.string.optional}),h.string,async({value:e,algorithm:t},n)=>{let r=typeof e=="string"?e:JSON.stringify(R(e,n)),s=R(t,n)||"SHA-256";if(typeof crypto<"u"&&crypto.subtle){let a=new TextEncoder().encode(r),c=await crypto.subtle.digest(s,a);return Array.from(new Uint8Array(c)).map(u=>u.toString(16).padStart(2,"0")).join("")}let i=0;for(let o=0;o<r.length;o++){let a=r.charCodeAt(o);i=(i<<5)-i+a,i|=0}return String(i)},{docs:"Hash a value",cost:1}),Cu=O("consoleLog",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=R(e,t);t.trace&&t.trace.push({op:"console.log",input:{message:n},stateDiff:{},result:n,fuelBefore:t.fuel.current,fuelAfter:t.fuel.current,timestamp:new Date().toISOString()})},{docs:"Log to trace",cost:.1}),Ru=O("consoleWarn",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=R(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.warnings||(t.warnings=[]),t.warnings.push(r),t.trace&&t.trace.push({op:"console.warn",input:{message:n},stateDiff:{},result:n,fuelBefore:t.fuel.current,fuelAfter:t.fuel.current,timestamp:new Date().toISOString()})},{docs:"Add warning",cost:.1}),Nu=O("consoleError",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=R(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.error=new oe(r,"console.error")},{docs:"Emit error and stop",cost:.1}),Pu=O("storeProcedure",h.object({ast:h.any,ttl:h.number.optional,maxSize:h.number.optional}),h.string,async({ast:e,ttl:t,maxSize:n},r)=>{let s=R(e,r),i=t?R(t,r):Rl,o=n?R(n,r):Nl;if(!s||typeof s!="object"||!s.op)throw new Error('Invalid AST: must be an object with an "op" property');let a=JSON.stringify(s);if(a.length>o)throw new Error(`AST too large: ${a.length} bytes exceeds limit of ${o} bytes. Consider reducing AST size or using a shorter TTL.`);let c=Pl(),l=Date.now();return lt.set(c,{ast:s,createdAt:l,expiresAt:l+i}),c},{docs:"Store an AST and return a token for later execution",cost:1}),Iu=O("releaseProcedure",h.object({token:h.string}),h.boolean,async({token:e},t)=>{let n=R(e,t);return lt.delete(n)},{docs:"Release a stored procedure by token",cost:.1}),Du=O("clearExpiredProcedures",void 0,h.number,async()=>{let e=Date.now(),t=0;for(let[n,r]of lt)e>r.expiresAt&&(lt.delete(n),t++);return t},{docs:"Clear all expired procedures and return count",cost:.5}),Ft={seq:ye,if:Ul,while:ql,return:Wl,try:Jl,Error:Vl,varSet:Kl,constSet:zl,varGet:Gl,varsImport:Hl,varsLet:Zl,varsExport:Yl,scope:Xl,callLocal:Ql,map:eu,filter:tu,reduce:nu,find:ru,push:su,len:iu,split:ou,join:au,template:cu,regexMatch:lu,pick:uu,omit:fu,merge:pu,keys:mu,httpFetch:yu,storeGet:gu,storeSet:hu,storeQuery:bu,storeVectorSearch:xu,llmPredict:wu,agentRun:Su,transpileCode:Tu,runCode:Eu,jsonParse:$u,jsonStringify:_u,xmlParse:ku,memoize:ju,cache:vu,random:Mu,uuid:Au,hash:qr,consoleLog:Cu,consoleWarn:Ru,consoleError:Nu,storeProcedure:Pu,releaseProcedure:Iu,clearExpiredProcedures:Du},Ou=["httpFetch","storeGet","storeSet","storeQuery","storeVectorSearch","llmPredict","agentRun","transpileCode","runCode","random","uuid","consoleLog","consoleWarn","consoleError","storeProcedure","releaseProcedure","clearExpiredProcedures","cache","memoize"];for(let e of Ou){let t=Ft[e];t&&(t.effects="io")}var Bu=new Set(["true","false","null","undefined","and","or","not"]);function Lu(e,t){let n=e.replace(/"[^"]*"/g,'""').replace(/'[^']*'/g,"''"),r=[],s=/(?<![.])\b([a-zA-Z_][a-zA-Z0-9_]*)\b/g,i;for(;(i=s.exec(n))!==null;)r.push(i[1]);let a=[...new Set(r)].filter(c=>!Bu.has(c)&&!(c in t)&&!new RegExp(`\\b${c}\\s*\\(`).test(n));a.length>0&&console.warn(`[Agent99 Builder] Condition "${e}" references variables not in vars mapping: ${a.join(", ")}. Add them to vars or use AsyncJS syntax (ajs\`...\`) which handles this automatically.`)}function Un(e,t){Lu(e,t);let n=Fu(e),r=io(n,0,t);if(r.pos<n.length){let s=n.slice(r.pos).join(" ");throw new Error(`Unsupported condition syntax near '${s}' in: ${e}
|
|
464
|
+
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return r.node}function Fu(e){let t=[],n=0;for(;n<e.length;){for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)break;if(e[n]==='"'||e[n]==="'"){let r=e[n++],s="";for(;n<e.length&&e[n]!==r;)e[n]==="\\"&&n+1<e.length&&n++,s+=e[n++];n++,t.push(JSON.stringify(s));continue}if(e.slice(n,n+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){t.push(e.slice(n,n+2)),n+=2;continue}if("+-*/%><!().?:[]".includes(e[n])){t.push(e[n]),n++;continue}if(/\d/.test(e[n])){let r="";for(;n<e.length&&/[\d.]/.test(e[n]);)r+=e[n++];t.push(r);continue}if(/[a-zA-Z_]/.test(e[n])){let r="";for(;n<e.length&&/[a-zA-Z0-9_]/.test(e[n]);)r+=e[n++];t.push(r);continue}n++}return t}function io(e,t,n){return Uu(e,t,n)}function Uu(e,t,n){let{node:r,pos:s}=to(e,t,n);for(;e[s]==="||";){s++;let{node:i,pos:o}=to(e,s,n);r={$expr:"logical",op:"||",left:r,right:i},s=o}return{node:r,pos:s}}function to(e,t,n){let{node:r,pos:s}=no(e,t,n);for(;e[s]==="&&";){s++;let{node:i,pos:o}=no(e,s,n);r={$expr:"logical",op:"&&",left:r,right:i},s=o}return{node:r,pos:s}}function no(e,t,n){let{node:r,pos:s}=ro(e,t,n),i=["==","!=",">","<",">=","<="];for(;i.includes(e[s]);){let o=e[s++],{node:a,pos:c}=ro(e,s,n);r={$expr:"binary",op:o,left:r,right:a},s=c}return{node:r,pos:s}}function ro(e,t,n){let{node:r,pos:s}=so(e,t,n);for(;e[s]==="+"||e[s]==="-";){let i=e[s++],{node:o,pos:a}=so(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function so(e,t,n){let{node:r,pos:s}=Wr(e,t,n);for(;e[s]==="*"||e[s]==="/"||e[s]==="%";){let i=e[s++],{node:o,pos:a}=Wr(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function Wr(e,t,n){if(e[t]==="!"||e[t]==="-"){let r=e[t++],{node:s,pos:i}=Wr(e,t,n);return{node:{$expr:"unary",op:r,argument:s},pos:i}}return qu(e,t,n)}function qu(e,t,n){let r=e[t];if(r==="("){let{node:s,pos:i}=io(e,t+1,n);return{node:s,pos:i+1}}if(r&&r.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(r)},pos:t+1};if(r&&/^\d/.test(r))return{node:{$expr:"literal",value:parseFloat(r)},pos:t+1};if(r==="true")return{node:{$expr:"literal",value:!0},pos:t+1};if(r==="false")return{node:{$expr:"literal",value:!1},pos:t+1};if(r==="null")return{node:{$expr:"literal",value:null},pos:t+1};if(r&&/^[a-zA-Z_]/.test(r)){let s={$expr:"ident",name:r},i=t+1;for(;e[i]===".";){i++;let o=e[i++];s={$expr:"member",object:s,property:o}}return{node:s,pos:i}}return{node:{$expr:"literal",value:null},pos:t+1}}var Ye=class e{steps=[];atoms;proxy;constructor(t){return this.atoms=t,this.proxy=new Proxy(this,{get:(n,r,s)=>{if(r in n)return n[r];if(typeof r=="string"&&r in n.atoms)return i=>{let o=n.atoms[r];return n.add(o.create(i)),s}}}),this.proxy}add(t){return this.steps.push(t),this.proxy}as(t){if(this.steps.length===0)throw new Error("No step to capture");let n=this.steps[this.steps.length-1];return n.result=t,this.proxy}step(t){return this.add(t)}return(t){let n=this.atoms.return;if(!n)throw new Error("Atom 'return' not found");let r=t.schema??t;return this.add(n.create({schema:r}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport(t){return this.add(this.atoms.varsImport.create({keys:t}))}varsExport(t){return this.add(this.atoms.varsExport.create({keys:t}))}if(t,n,r,s){let i=new e(this.atoms);r(i);let o;if(s){let l=new e(this.atoms);s(l),o=l.steps}let a=Un(t,n),c=this.atoms.if;return this.add(c.create({condition:a,then:i.steps,else:o}))}while(t,n,r){let s=new e(this.atoms);r(s);let i=Un(t,n),o=this.atoms.while;return this.add(o.create({condition:i,body:s.steps}))}scope(t){let n=new e(this.atoms);t(n);let r=this.atoms.scope;return this.add(r.create({steps:n.steps}))}map(t,n,r){let s=new e(this.atoms);r(s);let i=this.atoms.map;return this.add(i.create({items:t,as:n,steps:s.steps}))}filter(t,n,r,s={}){let i=Un(r,s),o=this.atoms.filter;return this.add(o.create({items:t,as:n,condition:i}))}find(t,n,r,s={}){let i=Un(r,s),o=this.atoms.find;return this.add(o.create({items:t,as:n,condition:i}))}reduce(t,n,r,s,i){let o=new e(this.atoms);i(o);let a=this.atoms.reduce;return this.add(a.create({items:t,as:n,accumulator:r,initial:s,steps:o.steps}))}memoize(t,n){let r=new e(this.atoms);t(r);let s=this.atoms.memoize;return this.add(s.create({key:n,steps:r.steps}))}cache(t,n,r){let s=new e(this.atoms);t(s);let i=this.atoms.cache;return this.add(i.create({key:n,steps:s.steps,ttlMs:r}))}try(t){let n=new e(this.atoms);t.try(n);let r;if(t.catch){let i=new e(this.atoms);t.catch(i),r=i.steps}let s=this.atoms.try;return this.add(s.create({try:n.steps,catch:r}))}},Wu={take(e){return new Ye(Ft)},custom(e){return new Ye(e)},args(e){return{$kind:"arg",path:e}},val(e){return e}},Bm=Wu;import{validate as Ju}from"tosijs-schema";function Ut(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=xe(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=wt(n,t.filename),{ast:c,signature:l,warnings:u}=$t(o,s,r,t,i,a.size>0?a:void 0);return{ast:c,signature:l,warnings:u}}var Vu=6e4,qn=class{atoms;_defaultRunTimeout;constructor(t={}){this.atoms={...Ft,...t}}get defaultRunTimeout(){if(this._defaultRunTimeout===void 0){let t=0;for(let n of Object.values(this.atoms)){let r=n.timeoutMs??1e3;r>0&&r>t&&(t=r)}this._defaultRunTimeout=Math.max(Vu,t*2)}return this._defaultRunTimeout}get builder(){return new Ye(this.atoms)}get Agent(){return new Ye(this.atoms)}get A99(){return this.Agent}resolve(t){return this.atoms[t]}getTools(t="all"){let n=Object.values(this.atoms);if(Array.isArray(t))n=n.filter(r=>t.includes(r.op));else if(t==="flow"){let r=["seq","if","while","return","try","varSet","varGet","scope"];n=n.filter(s=>r.includes(s.op))}return n.map(r=>({type:"function",function:{name:r.op,description:r.docs,parameters:r.inputSchema?.schema??{}}}))}async run(t,n={},r={}){let s;if(typeof t=="string")if(Fr(t))s=Ur(t);else try{s=Ut(t).ast}catch(d){throw new Error(`AJS transpilation failed: ${d.message}`,{cause:d})}else s=t;let i=r.fuel??1e3,o=r.timeoutMs??this.defaultRunTimeout,a=r.capabilities??{},c=[];if(!a.store){let d=new Map,y=!1;a.store={get:async b=>(y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.get(b)),set:async(b,$)=>{y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.set(b,$)}}}let l=new AbortController,u=setTimeout(()=>l.abort(),o);r.signal&&r.signal.addEventListener("abort",()=>l.abort());let f={fuel:{current:i},args:n,state:{},consts:new Set,capabilities:a,resolver:d=>this.resolve(d),output:void 0,signal:l.signal,costOverrides:r.costOverrides,timeoutOverrides:r.timeoutOverrides,context:r.context,warnings:c,helpers:s.helpers};if(r.trace&&(f.trace=[]),s.op!=="seq")throw new Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let p=s.inputSchema;if(p&&!Ju(n,p)){let d=new oe("Input validation failed: args do not match expected schema","vm.run");return{result:d,error:d,fuelUsed:0,trace:f.trace,warnings:c.length>0?c:void 0}}try{await Promise.race([this.resolve("seq")?.exec(s,f),new Promise((d,y)=>{l.signal.addEventListener("abort",()=>{y(new Error(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))}),l.signal.aborted&&y(new Error(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))})])}catch(d){if(d.message?.includes("timeout")||d.message?.includes("aborted")||l.signal.aborted)f.error=new oe(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`,"vm.run");else throw d}finally{clearTimeout(u)}f.error&&f.output===void 0&&(f.output=f.error);let m=[...c,...f.warnings??[]];return{result:f.output,error:f.error,fuelUsed:i-f.fuel.current,trace:f.trace,warnings:m.length>0?m:void 0}}};var Ku=null,oo=()=>Ku??=new qn;function Xe(e){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let t of e)Xe(t);return}e.op==="return"&&"value"in e&&(e.value={__result:e.value}),e.steps&&Xe(e.steps),e.then&&Xe(e.then),e.else&&Xe(e.else),e.body&&Xe(e.body)}}async function zu(e){let{code:t,context:n={},fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=oo(),c=/\breturn\b/.test(t)?`function __eval() { ${t} }`:`function __eval() { return (${t}) }`;try{let{ast:l}=Ut(c);Xe(l);let u=await o.run(l,n,{fuel:r,timeoutMs:s,capabilities:i}),f=u.result;return{result:f&&typeof f=="object"&&"__result"in f?f.__result:f,fuelUsed:u.fuelUsed,error:u.error?{message:u.error.message||String(u.error)}:void 0}}catch(l){return{result:void 0,fuelUsed:r,error:{message:l.message||String(l)}}}}async function Gu(e){let{body:t,params:n=[],fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=oo(),c=`function __safeFn(${n.join(", ")}) { ${t} }`,{ast:l}=Ut(c);return Xe(l),async(...u)=>{let f={};for(let p=0;p<n.length;p++)f[n[p]]=u[p];try{let p=await o.run(l,f,{fuel:r,timeoutMs:s,capabilities:i}),m=p.result;return{result:m&&typeof m=="object"&&"__result"in m?m.__result:m,fuelUsed:p.fuelUsed,error:p.error?{message:p.error.message||String(p.error)}:void 0}}catch(p){return{result:void 0,fuelUsed:r,error:{message:p.message||String(p)}}}}}function Wn(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=xe(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=wt(n,t.filename),{ast:c,signature:l,warnings:u}=$t(o,s,r,t,i,a.size>0?a:void 0);return{ast:c,signature:l,warnings:u}}function rd(e,...t){if(typeof e=="string")return Wn(e).ast;let n=e.reduce((r,s,i)=>r+s+(t[i]!==void 0?String(t[i]):""),"");return Wn(n).ast}function id(e,t,...n){if(typeof e=="string")return Ot(e,t);let r=t!==void 0?[t,...n]:n,s=e.reduce((i,o,a)=>i+o+(r[a]!==void 0?String(r[a]):""),"");return Ot(s)}async function od(e,t={},n){let r=n??await Bn(),s=await r.getTranspile(e);if(s)return{ast:s.ast,signature:s.signature,warnings:s.warnings};let i=Wn(e,t);return r.setTranspile(e,{ast:i.ast,signature:i.signature,warnings:i.warnings}),i}async function ad(e,t={},n){let r=n??await Bn(),s=await r.getTJS(e);if(s)return{code:s.code,types:s.types,metadata:s.types,testRunner:s.testRunner,testCount:s.testCount,warnings:s.warnings};let i=Ot(e,t);return r.setTJS(e,{code:i.code,types:i.types,testRunner:i.testRunner,testCount:i.testCount,warnings:i.warnings}),i}function cd(e,t,n){let{ast:r,signature:s}=Wn(e),i=async o=>(await t.run(r,o,n)).result;return i.signature=s,i.ast=r,i}function ld(e){return Object.entries(e).map(([t,n])=>{let r=n.signature,s={},i=[];for(let[o,a]of Object.entries(r.parameters))s[o]=Me(a.type),a.description&&(s[o].description=a.description),a.required&&i.push(o);return{type:"function",function:{name:r.name||t,description:r.description,parameters:{type:"object",properties:s,required:i}}}})}import{s as L}from"tosijs-schema";var Jr=O("storeVectorize",L.object({text:L.string,model:L.string.optional}),L.array(L.number),async({text:e},t)=>{let n=t.capabilities.vector;if(!n)throw new Error("Capability 'vector' missing. Ensure vector battery is loaded.");let r=R(e,t);return n.embed(r)},{docs:"Generate embeddings using vector battery",cost:20,timeoutMs:6e4}),Vr=O("storeCreateCollection",L.object({collection:L.string,dimension:L.number.optional}),void 0,async({collection:e,dimension:t},n)=>{let r=n.capabilities.store;if(!r?.createCollection)throw new Error("Capability 'store' missing or does not support createCollection.");let s=R(e,n),i=R(t,n);return r.createCollection(s,void 0,i)},{docs:"Create a vector store collection",cost:5}),Kr=O("storeVectorAdd",L.object({collection:L.string,doc:L.any}),void 0,async({collection:e,doc:t},n)=>{let r=n.capabilities.store;if(!r?.vectorAdd)throw new Error("Capability 'store' missing or does not support vectorAdd.");let s=R(e,n),i=R(t,n);return r.vectorAdd(s,i)},{docs:"Add a document to a vector store collection",cost:5,timeoutMs:6e4}),zr=O("storeSearch",L.object({collection:L.string,queryVector:L.array(L.number),k:L.number.optional,filter:L.record(L.any).optional}),L.array(L.any),async({collection:e,queryVector:t,k:n,filter:r},s)=>{let i=s.capabilities.store;if(!i?.vectorSearch)throw new Error("Capability 'store' missing or does not support vectorSearch.");let o=R(e,s),a=R(t,s),c=R(n,s)??5,l=R(r,s);return i.vectorSearch(o,a,c,l)},{docs:"Search vector store",cost:(e,t)=>5+(R(e.k,t)??5)}),Gr=O("llmPredictBattery",L.object({system:L.string.optional,user:L.union([L.string,L.array(L.any)]),tools:L.array(L.any).optional,responseFormat:L.any.optional}),L.object({role:L.string.optional,content:L.string.optional,tool_calls:L.array(L.any).optional}),async({system:e,user:t,tools:n,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=R(e,s)??"You are a helpful agent.",a=R(t,s),c=R(n,s),l=R(r,s);return i.predict(o,a,c,l)},{docs:"Generate completion using LLM battery",cost:100,timeoutMs:12e4}),Hr=O("llmVision",L.object({system:L.string.optional,prompt:L.string,images:L.array(L.string),responseFormat:L.any.optional}),L.object({role:L.string.optional,content:L.string.optional,tool_calls:L.array(L.any).optional}),async({system:e,prompt:t,images:n,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=R(e,s)??"You analyze images accurately and concisely.",a=R(t,s),c=R(n,s)??[],l=R(r,s);return i.predict(o,{text:a,images:c},void 0,l)},{docs:"Analyze images using a vision model",timeoutMs:12e4,cost:150});for(let e of[Jr,Vr,Kr,zr,Gr,Hr])e.effects="io";var Dd={storeCreateCollection:Vr,storeSearch:zr,storeVectorAdd:Kr,storeVectorize:Jr,llmPredictBattery:Gr,llmVision:Hr};var ao=new Map,Jn=new Map;function Hu(e,t){if(e.length!==t.length)throw new Error("Vectors must have the same length for cosine similarity.");let n=0,r=0,s=0;for(let i=0;i<e.length;i++)n+=e[i]*t[i],r+=e[i]*e[i],s+=t[i]*t[i];return r=Math.sqrt(r),s=Math.sqrt(s),r===0||s===0?0:n/(r*s)}function Zr(){return{async get(e){return ao.get(e)},async set(e,t){ao.set(e,t)},async createCollection(e,t,n){Jn.has(e)&&console.warn(`Collection '${e}' already exists. Overwriting.`),Jn.set(e,[])},async vectorAdd(e,t){let n=Jn.get(e);if(!n)throw new Error(`Collection '${e}' not found. Create it first.`);if(!t.embedding||!Array.isArray(t.embedding))throw new Error("Document must have an 'embedding' property that is an array of numbers.");n.push(t)},async vectorSearch(e,t,n=5){let r=Jn.get(e);if(!r)throw new Error(`Collection '${e}' not found. Create it first.`);let s=r.map(i=>({doc:i,score:Hu(t,i.embedding)}));return s.sort((i,o)=>o.score-i.score),s.slice(0,n).map(i=>i.doc)}}}function Zu(e){if(typeof e=="string")return{role:"user",content:e};let t=[{type:"text",text:e.text}];for(let n of e.images||[])t.push({type:"image_url",image_url:{url:n}});return{role:"user",content:t}}var Yu="http://localhost:1234/v1";function co(e,t=Yu){return{async predict(n,r,s,i){try{let o=i?e.getStructuredLLM():e.getLLM(),a=[{role:"system",content:n},Zu(r)],c=await fetch(`${t}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:o.id,messages:a,temperature:.7,...s&&s.length>0?{tools:s}:{},response_format:i})});if(!c.ok)throw new Error(`LLM Error: ${c.status} ${c.statusText}`);return(await c.json()).choices[0]?.message??{content:""}}catch(o){throw o.cause?.code==="ECONNREFUSED"?new Error("No LLM provider configured. Please start LM Studio or provide an API key.",{cause:o}):o}},async embed(n){try{let r=e.getEmbedding(),s=await fetch(`${t}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r.id,input:n})});if(!s.ok)throw new Error(`Embedding Error: ${s.status}`);return(await s.json()).data[0]?.embedding??[]}catch(r){throw r.cause?.code==="ECONNREFUSED"?new Error("No LLM provider configured. Please start LM Studio or provide an API key.",{cause:r}):r}}}}var Vn=".models.cache.json";var qt=typeof window<"u"&&typeof window.localStorage<"u";async function Xu(e){try{if(qt){let t=window.localStorage.getItem(Vn);if(!t)return null;let n=JSON.parse(t);return n.baseUrl!==e||Date.now()-n.timestamp>864e5?null:n.models}else{let t=await import("node:fs/promises"),r=(await import("node:path")).join(process.cwd(),Vn);try{let s=await t.readFile(r,"utf-8"),i=JSON.parse(s);return i.baseUrl!==e||Date.now()-i.timestamp>864e5?null:i.models}catch{return null}}}catch(t){return console.warn("\u26A0\uFE0F Error reading model cache:",t),null}}async function Qu(e,t){let n={timestamp:Date.now(),baseUrl:e,models:t};try{if(qt)window.localStorage.setItem(Vn,JSON.stringify(n));else{let r=await import("node:fs/promises"),i=(await import("node:path")).join(process.cwd(),Vn);await r.writeFile(i,JSON.stringify(n,null,2))}}catch(r){console.error("\u274C Error writing model cache:",r)}}var Wt=async(e,t)=>{let n=new AbortController,r=setTimeout(()=>n.abort(),6e4);try{let s=await fetch(e,{...t,signal:n.signal});return clearTimeout(r),s}catch(s){throw clearTimeout(r),s}};async function ef(e,t){try{let n={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},r=await Wt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"system",content:"You respond in JSON."},{role:"user",content:'Return JSON: {"status": "ok"}'}],response_format:n,max_tokens:20})});if(!r.ok)return r.status===400?tf(e,t):{ok:!1,msg:`HTTP ${r.status}`};let s=await r.json();return JSON.parse(s.choices[0].message.content),{ok:!0,msg:"OK (Schema)"}}catch(n){return{ok:!1,msg:n.message||"Error"}}}async function tf(e,t){try{return(await Wt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:'JSON: {"a":1}'}],response_format:{type:"json_object"},max_tokens:10})})).ok?{ok:!0,msg:"OK (Legacy Mode)"}:{ok:!1,msg:"Not Supported"}}catch{return{ok:!1,msg:"Legacy Fail"}}}async function nf(e,t){try{return(await Wt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function rf(e,t){try{let n=await Wt(`${e}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,input:"test"})});return n.ok?(await n.json()).data[0]?.embedding?.length??null:null}catch{return null}}var sf="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAMUlEQVR4nGO4o6FBU8QwasFoEI2motF8MFpUjJamo/XBaJU52qoYbReNNh01hkg+AACGobA9N+tfoAAAAABJRU5ErkJggg==";async function of(e,t){try{return(await Wt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:sf}}]}],max_tokens:10})})).ok}catch{return!1}}async function lo(e){let t=await Xu(e),n;try{let o=await fetch(`${e}/models`);if(!o.ok)throw new Error("Could not connect");n=(await o.json()).data.map(c=>c.id).sort()}catch{return t?(console.log("\u26A0\uFE0F LM Studio unavailable, using cached model audit."),t):(console.error("\u274C Failed to connect to LM Studio."),[])}if(t){let o=t.map(a=>a.id).sort();if(JSON.stringify(n)===JSON.stringify(o))return console.log("\u2705 Using cached model audit."),t;console.log("\u{1F50D} Model list changed. Re-running audit...")}console.log("\u{1F50D} Scanning models (this may take a moment)...");let r=[],s=n.map(o=>({id:o})),i;qt||(i=await import("node:readline"));for(let o of s){!qt&&i&&(i.cursorTo(process.stdout,0),process.stdout.write(`\u{1F449} Testing: ${o.id}...`),i.clearLine(process.stdout,1));let a="Unknown",c=!1,l=!1,u,f,p=await nf(e,o.id),m=await rf(e,o.id);if(m&&(f=m),p){a="LLM";let d=await ef(e,o.id);c=d.ok,l=await of(e,o.id),u=c?d.msg:`Fail: ${d.msg}`,l&&(u+=" +Vision")}else m?(a="Embedding",u=`OK (Dim: ${m})`):u="LLM Fail";r.push({id:o.id,type:a,structuredOutput:c,vision:l,dimension:f,status:u})}return!qt&&i&&(i.cursorTo(process.stdout,0),i.clearLine(process.stdout,0)),console.log(`
|
|
465
|
+
`),console.table(r),await Qu(e,r),console.log("\u{1F4DD} Audit results saved to cache."),r}var af="http://localhost:1234/v1",Kn=class{constructor(t=af){this.baseUrl=t}baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;async audit(){this.models=await lo(this.baseUrl),this.selectDefaults()}selectDefaults(){this.defaultEmbedding=this.models.find(t=>t.type==="Embedding")||null,this.defaultLLM=this.models.find(t=>t.type==="LLM")||null,this.defaultStructuredLLM=this.models.find(t=>t.type==="LLM"&&t.structuredOutput)||null,this.defaultEmbedding||console.warn("\u26A0\uFE0F No embedding model found."),this.defaultLLM||console.warn("\u26A0\uFE0F No LLM found."),this.defaultStructuredLLM||console.warn("\u26A0\uFE0F No LLM with structured output support found.")}getModels(){return this.models}_setDefaultModel(t,n,r,s){let i=this.models.find(o=>o.id===t&&r(o));if(!i)throw new Error(`Model '${t}' not found or is not ${s}.`);this[n]=i}setDefaultLLM(t){this._setDefaultModel(t,"defaultLLM",n=>n.type==="LLM","an LLM")}setDefaultEmbedding(t){this._setDefaultModel(t,"defaultEmbedding",n=>n.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM(t){this._setDefaultModel(t,"defaultStructuredLLM",n=>n.type==="LLM"&&n.structuredOutput,"a structured-output LLM")}getLLM(){if(!this.defaultLLM)throw new Error("No LLM available.");return this.defaultLLM}getEmbedding(){if(!this.defaultEmbedding)throw new Error("No embedding model available.");return this.defaultEmbedding}getStructuredLLM(){if(!this.defaultStructuredLLM)throw new Error("No structured-output LLM available.");return this.defaultStructuredLLM}};var cf=typeof window<"u",lf=cf&&window.location.protocol==="https:",Jt=null,Yr=null,uo=!1;async function uf(){if(uo)return{localModels:Jt,llm:Yr};if(uo=!0,lf)return console.log("\u{1F4E1} HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{Jt=new Kn,await Jt.audit(),Yr=co(Jt)}catch(e){console.warn("\u26A0\uFE0F Could not connect to local LLM:",e)}return{localModels:Jt,llm:Yr}}async function ff(){let{localModels:e,llm:t}=await uf();return{vector:t?{embed:t.embed}:void 0,store:Zr(),llmBattery:t,models:e}}async function Kd(){return ff()}var zd={store:Zr(),llmBattery:null,vector:void 0,models:null};function pf(e){if(typeof e!="string")return!1;let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")}function mf(){return new Date().toISOString()}function ut(e,t,n,r=0,s=0,i=0,o=0){return new Date(Date.UTC(e,t-1,n,r,s,i,o)).toISOString()}function fo(e){let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);return t.toISOString()}function df(e){try{return fo(e)}catch{return null}}function Vt(e,t){let n=new Date(e);return n.setTime(n.getTime()+t),n.toISOString()}function yf(e,t){return Vt(e,t*1e3)}function gf(e,t){return Vt(e,t*60*1e3)}function hf(e,t){return Vt(e,t*60*60*1e3)}function po(e,t){return Vt(e,t*24*60*60*1e3)}function bf(e,t){return po(e,t*7)}function xf(e,t){let n=new Date(e),r=n.getUTCMonth()+t;return n.setUTCMonth(r),n.getUTCMonth()!==(r%12+12)%12&&n.setUTCDate(0),n.toISOString()}function wf(e,t){let n=new Date(e),r=n.getUTCDate();return n.setUTCFullYear(n.getUTCFullYear()+t),n.getUTCDate()!==r&&n.setUTCDate(0),n.toISOString()}function Le(e,t){return new Date(e).getTime()-new Date(t).getTime()}function Sf(e,t){return Math.floor(Le(e,t)/1e3)}function Tf(e,t){return Math.floor(Le(e,t)/(60*1e3))}function Ef(e,t){return Math.floor(Le(e,t)/(3600*1e3))}function $f(e,t){return Math.floor(Le(e,t)/(1440*60*1e3))}function ft(e){return new Date(e).getUTCFullYear()}function zn(e){return new Date(e).getUTCMonth()+1}function Xr(e){return new Date(e).getUTCDate()}function _f(e){return new Date(e).getUTCHours()}function kf(e){return new Date(e).getUTCMinutes()}function jf(e){return new Date(e).getUTCSeconds()}function vf(e){return new Date(e).getUTCMilliseconds()}function Mf(e){let t=new Date(e).getUTCDay();return t===0?7:t}function Gn(e,t,n){let r=new Date(e),s={timeZone:t,...n};return new Intl.DateTimeFormat(void 0,s).format(r)}function Af(e,t){return Gn(e,t,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Cf(e,t){return Gn(e,t,{year:"numeric",month:"short",day:"numeric"})}function Rf(e,t){return Gn(e,t,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Nf(e){return e.slice(0,10)}function mo(e,t){return Le(e,t)<0}function yo(e,t){return Le(e,t)>0}function Pf(e,t){return Le(e,t)===0}function If(e,t){return mo(e,t)?e:t}function Df(e,t){return yo(e,t)?e:t}function Of(e){return ut(ft(e),zn(e),Xr(e))}function Bf(e){return ut(ft(e),zn(e),Xr(e),23,59,59,999)}function Lf(e){return ut(ft(e),zn(e),1)}function Ff(e){let t=new Date(e);return t.setUTCMonth(t.getUTCMonth()+1,0),t.setUTCHours(23,59,59,999),t.toISOString()}function Uf(e){return ut(ft(e),1,1)}function qf(e){return ut(ft(e),12,31,23,59,59,999)}var pt={isValid:pf,now:mf,from:ut,parse:fo,tryParse:df,addMilliseconds:Vt,addSeconds:yf,addMinutes:gf,addHours:hf,addDays:po,addWeeks:bf,addMonths:xf,addYears:wf,diff:Le,diffSeconds:Sf,diffMinutes:Tf,diffHours:Ef,diffDays:$f,year:ft,month:zn,day:Xr,hour:_f,minute:kf,second:jf,millisecond:vf,dayOfWeek:Mf,toLocal:Gn,format:Af,formatDate:Cf,formatTime:Rf,toDate:Nf,isBefore:mo,isAfter:yo,isEqual:Pf,min:If,max:Df,startOfDay:Of,endOfDay:Bf,startOfMonth:Lf,endOfMonth:Ff,startOfYear:Uf,endOfYear:qf};function Qr(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=parseInt(e.slice(0,4),10),n=parseInt(e.slice(5,7),10),r=parseInt(e.slice(8,10),10);if(n<1||n>12||r<1)return!1;let s=[31,28,31,30,31,30,31,31,30,31,30,31],i=n===2&&(t%4===0&&t%100!==0||t%400===0)?29:s[n-1];return r<=i}function Wf(){return pt.toDate(pt.now())}function Jf(e){let t=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function he(e,t,n){let r=String(e).padStart(4,"0"),s=String(t).padStart(2,"0"),i=String(n).padStart(2,"0"),o=`${r}-${s}-${i}`;if(!Qr(o))throw new Error(`Invalid date: ${e}-${t}-${n}`);return o}function go(e){if(/^\d{4}-\d{2}-\d{2}$/.test(e)){if(!Qr(e))throw new Error(`Invalid date: ${e}`);return e}let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);let n=t.getUTCFullYear(),r=t.getUTCMonth()+1,s=t.getUTCDate();return he(n,r,s)}function Vf(e){try{return go(e)}catch{return null}}function Hn(e,t){let n=bo(e);return pt.toDate(pt.addDays(n,t))}function Kf(e,t){return Hn(e,t*7)}function zf(e,t){let n=me(e),r=Fe(e),s=es(e),i=n*12+(r-1)+t,o=Math.floor(i/12),a=i%12+1,c=Kt(o,a),l=Math.min(s,c);return he(o,a,l)}function Gf(e,t){let n=me(e),r=Fe(e),s=es(e),i=n+t,o=Kt(i,r),a=Math.min(s,o);return he(i,r,a)}function ho(e,t){let r=new Date(e+"T00:00:00Z").getTime(),s=new Date(t+"T00:00:00Z").getTime();return Math.round((r-s)/864e5)}function Hf(e,t){let n=me(e),r=Fe(e),s=me(t),i=Fe(t);return(n-s)*12+(r-i)}function Zf(e,t){return me(e)-me(t)}function me(e){return parseInt(e.slice(0,4),10)}function Fe(e){return parseInt(e.slice(5,7),10)}function es(e){return parseInt(e.slice(8,10),10)}function ts(e){let t=new Date(e+"T00:00:00Z").getUTCDay();return t===0?7:t}function Yf(e){let t=new Date(e+"T00:00:00Z"),n=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-n);let r=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t.getTime()-r.getTime())/864e5+1)/7)}function Xf(e){let t=he(me(e),1,1);return ho(e,t)+1}function ns(e){return Math.ceil(Fe(e)/3)}function rs(e){return e%4===0&&e%100!==0||e%400===0}function Kt(e,t){let n=[31,28,31,30,31,30,31,31,30,31,30,31];return t===2&&rs(e)?29:n[t-1]}function Qf(e){return rs(e)?366:365}function bo(e){return e+"T00:00:00.000Z"}function ep(e){return Math.floor(new Date(e+"T00:00:00Z").getTime()/1e3)}function tp(e){let t=new Date(e*1e3);return he(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate())}function ss(e,t){let n=new Date(e+"T00:00:00Z"),r={timeZone:"UTC",...t};return new Intl.DateTimeFormat(void 0,r).format(n)}function np(e){return ss(e,{year:"numeric",month:"long",day:"numeric"})}function rp(e){return ss(e,{year:"numeric",month:"short",day:"numeric"})}function sp(e,t){return e<t}function ip(e,t){return e>t}function op(e,t){return e===t}function ap(e,t){return e<t?e:t}function cp(e,t){return e>t?e:t}function lp(e,t,n){return e>=t&&e<=n}function up(e){return he(me(e),Fe(e),1)}function fp(e){let t=me(e),n=Fe(e);return he(t,n,Kt(t,n))}function pp(e){let n=(ns(e)-1)*3+1;return he(me(e),n,1)}function mp(e){let n=ns(e)*3;return he(me(e),n,Kt(me(e),n))}function dp(e){return he(me(e),1,1)}function yp(e){return he(me(e),12,31)}function gp(e){let t=ts(e);return Hn(e,-(t-1))}function hp(e){let t=ts(e);return Hn(e,7-t)}var bp={isValid:Qr,today:Wf,todayIn:Jf,from:he,parse:go,tryParse:Vf,addDays:Hn,addWeeks:Kf,addMonths:zf,addYears:Gf,diff:ho,diffMonths:Hf,diffYears:Zf,year:me,month:Fe,day:es,dayOfWeek:ts,weekOfYear:Yf,dayOfYear:Xf,quarter:ns,isLeapYear:rs,daysInMonth:Kt,daysInYear:Qf,toTimestamp:bo,toUnix:ep,fromUnix:tp,format:ss,formatLong:np,formatShort:rp,isBefore:sp,isAfter:ip,isEqual:op,min:ap,max:cp,isBetween:lp,startOfMonth:up,endOfMonth:fp,startOfQuarter:pp,endOfQuarter:mp,startOfYear:dp,endOfYear:yp,startOfWeek:gp,endOfWeek:hp};export{Bm as A99,Wu as Agent,oe as AgentError,qn as AgentVM,Nl as DEFAULT_MAX_AST_SIZE,Rl as DEFAULT_PROCEDURE_TTL,Ou as EFFECTFUL_CORE_OPS,En as Enum,zu as Eval,vt as FunctionPredicate,tt as Generic,bp as LegalDate,pr as LegalDateType,Kn as LocalModels,Hi as MAX_CALL_DEPTH,On as MetadataCache,Or as ModuleLoader,hn as Nullable,bn as Optional,Lr as PROCEDURE_TOKEN_PREFIX,_t as PredicateFuelExhausted,Gu as SafeFunction,ol as Schema,H as SyntaxError,wn as TArray,un as TBoolean,dn as TEmail,fn as TInteger,fe as TJS_VERSION,mn as TNonEmptyString,ln as TNumber,Sn as TPair,pn as TPositiveInt,Tn as TRecord,cn as TString,yn as TUrl,gn as TUuid,pt as Timestamp,fr as TimestampType,K as TranspileError,te as Type,ls as TypeError,Ye as TypedBuilder,xn as Union,Su as agentRun,rd as ajs,Xs as assertFunction,zd as batteries,Dd as batteryAtoms,Re as builtins,vu as cache,Ql as callLocal,ze as checkType,Du as clearExpiredProcedures,sn as compilePredicate,Zs as compilePredicateSchema,$i as compileToWasm,hc as compileWasmBlocks,Nu as consoleError,Cu as consoleLog,Ru as consoleWarn,zl as constSet,Ft as coreAtoms,cd as createAgent,ge as createChildContext,Be as createChildScope,O as defineAtom,fa as dialectForFilename,ga as effectfulFromAtoms,qa as emitRuntimeWrapper,$e as error,Vl as errorAtom,Q as evaluateExpr,We as exampleToJSONSchema,Qs as expectFunction,wt as extractFunctions,Ee as extractLiteralValue,St as extractTDoc,jt as extractTests,yu as fetch,tu as filter,ru as find,Gs as formatPredicateDiagnostics,il as fromTS,on as functionMetaToJSONSchema,Bc as generateDTS,Ji as generateDocs,xl as generateDocsMarkdown,ff as getBatteries,Bn as getGlobalCache,co as getLLMCapability,Z as getLocation,Kd as getStandardCapabilities,Zr as getStoreCapabilityDefault,ld as getToolDefinitions,qr as hash,Dn as hashSource,al as hashSourceSync,Ul as iff,Al as inMemoryFileSystem,ae as inferTypeFromValue,Tr as installRuntime,ki as instantiateWasm,Cl as isAgentError,Ae as isError,Fr as isProcedureToken,Pe as isRuntimeType,ur as isValidLegalDate,lr as isValidTimestamp,cr as isValidUrl,au as join,$u as jsonParse,_u as jsonStringify,mu as keys,iu as len,pl as lint,wu as llmPredict,jo as lookupVariable,eu as map,ju as memoize,pu as merge,fu as omit,xe as parse,Ne as parseParameter,Us as parseReturnType,uu as pick,en as preprocess,lt as procedureStore,su as push,Mu as random,nu as reduce,lu as regexMatch,ji as registerWasmBlock,Iu as releaseProcedure,Ur as resolveProcedureToken,R as resolveValue,Wl as ret,Eu as runCode,Je as runtime,Xl as scope,ye as seq,ul as setGlobalCache,Vs as sourceKindForFilename,ou as split,gu as storeGet,Pu as storeProcedure,bu as storeQuery,hu as storeSet,An as stripModuleSyntax,hi as stripTjsPreamble,ha as suggest,cu as template,$a as testUtils,id as tjs,ad as tjsWithCache,$t as transformFunction,Wn as transpile,Tu as transpileCode,Ot as transpileToJS,od as transpileWithCache,Jl as tryCatch,Me as typeDescriptorToJSONSchema,_e as typeDescriptorToTS,st as typeOf,rr as typeToString,Au as uuid,wr as validateArgs,wa as validatePredicateSchema,Fo as validateSingleFunction,Gl as varGet,Kl as varSet,Yl as varsExport,Hl as varsImport,Zl as varsLet,xu as vectorSearch,kt as verifyPredicate,ql as whileLoop,Sr as wrap,ku as xmlParse};
|
|
466
466
|
//# sourceMappingURL=index.js.map
|