tjs-lang 0.8.1 → 0.8.2
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 +9 -3
- package/demo/examples.test.ts +6 -2
- package/demo/src/playground-shared.ts +48 -16
- package/demo/src/playground-test-results.test.ts +112 -0
- package/demo/src/tjs-playground.ts +11 -5
- package/dist/examples/modules/dist/main.d.ts +34 -0
- package/dist/examples/modules/dist/math.d.ts +120 -0
- package/dist/index.js +115 -112
- package/dist/index.js.map +4 -4
- package/dist/src/lang/core.d.ts +1 -1
- package/dist/src/lang/dialect.d.ts +35 -0
- package/dist/src/lang/emitters/ast.d.ts +1 -1
- package/dist/src/lang/emitters/js-tests.d.ts +7 -0
- package/dist/src/lang/emitters/js.d.ts +12 -0
- package/dist/src/lang/index.d.ts +2 -1
- package/dist/src/lang/parser-types.d.ts +17 -0
- package/dist/src/lang/parser.d.ts +18 -0
- package/dist/src/lang/transpiler.d.ts +1 -0
- package/dist/src/lang/types.d.ts +18 -0
- package/dist/src/vm/runtime.d.ts +18 -0
- package/dist/src/vm/vm.d.ts +15 -1
- package/dist/tjs-batteries.js +2 -2
- package/dist/tjs-batteries.js.map +2 -2
- package/dist/tjs-eval.js +43 -43
- package/dist/tjs-eval.js.map +3 -3
- package/dist/tjs-from-ts.js +1 -1
- package/dist/tjs-from-ts.js.map +2 -2
- package/dist/tjs-lang.js +76 -73
- package/dist/tjs-lang.js.map +4 -4
- package/dist/tjs-vm.js +49 -49
- package/dist/tjs-vm.js.map +3 -3
- package/llms.txt +1 -0
- package/package.json +20 -1
- package/src/batteries/audit.ts +3 -2
- package/src/cli/commands/check.ts +3 -2
- package/src/cli/commands/emit.ts +4 -2
- package/src/cli/commands/run.ts +6 -2
- package/src/cli/commands/types.ts +2 -2
- package/src/lang/codegen.test.ts +4 -1
- package/src/lang/core.ts +6 -4
- package/src/lang/dialect.test.ts +63 -0
- package/src/lang/dialect.ts +50 -0
- package/src/lang/emitters/ast.ts +145 -2
- package/src/lang/emitters/js-tests.ts +46 -37
- package/src/lang/emitters/js.ts +19 -2
- package/src/lang/features.test.ts +6 -5
- package/src/lang/index.ts +18 -5
- package/src/lang/parser-types.ts +17 -0
- package/src/lang/parser.test.ts +12 -6
- package/src/lang/parser.ts +113 -3
- package/src/lang/subset-invariant.test.ts +90 -0
- package/src/lang/transpiler.ts +8 -0
- package/src/lang/types.ts +18 -0
- package/src/lang/wasm.test.ts +8 -2
- package/src/linalg/linalg.test.ts +8 -2
- package/src/use-cases/batteries.test.ts +4 -0
- package/src/use-cases/local-helpers.test.ts +219 -0
- package/src/use-cases/timeout-overrides.test.ts +169 -0
- package/src/vm/atoms/batteries.ts +17 -3
- package/src/vm/runtime.ts +89 -4
- package/src/vm/vm.ts +47 -9
package/dist/index.js
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
var
|
|
1
|
+
var ho=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Fs=ho((vp,ma)=>{ma.exports={name:"tjs-lang",version:"0.8.2",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"],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"},"./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-walk":"^8.3.4","tosijs-schema":"^1.3.0"}}});import*as As 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
|
-
`)}},Qr=class extends
|
|
4
|
-
`);if(
|
|
5
|
-
${u}${
|
|
3
|
+
`)}},Qr=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 bo(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 bo(e,t.parent)}function Z(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}function xo(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 ss(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 is(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 w=e[l];w==="{"?c++:w==="}"&&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 w=l+m[0].length;c=1;let j=w;for(;j<e.length&&c>0;){let A=e[j];A==="{"?c++:A==="}"&&c--,j++}c===0&&(f=e.slice(w,j-1),p=j)}let y=So(u).map(w=>{let j=Eo(e,o,w);return j?`${w}: ${j}`:w}),b={id:`__tjs_wasm_${s}`,body:u,fallback:f,captures:y,start:o,end:p};t.push(b);let $=f??u,S=y.map(w=>w.split(":")[0].trim()),x=S.length>0?S.join(", "):"",T=S.length>0?`globalThis.${b.id}(${x})`:`globalThis.${b.id}()`,E=`(globalThis.${b.id} ? ${T} : (() => {${$}})())`;n+=E,r=p,s++}else n+=e[r],r++}return{source:n,blocks:t}}function os(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.`,je(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 S=y+$[0].length,x=1,T=S;for(;T<e.length&&x>0;)e[T]==="{"?x++:e[T]==="}"&&x--,T++;if(x!==0){n+=e[r],r++;continue}let E=e.slice(S,T-1),w=To(p),j=`__tjs_wasm_${a}`,A={id:j,name:a,returnType:d,body:E,captures:w,start:c,end:T};t.push(A);let k=w.map(P=>P.split(":")[0].trim()),C=`${o?"export ":""}function ${a}(${k.join(", ")}) { return globalThis.${j}(${k.join(", ")}) }`;n+=C,r=T}return{source:n,blocks:t}}function as(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),$=[],S=[];for(let E of b){let w=E.match(/^(\w+)(?:\s+as\s+(\w+))?$/);if(!w){S.push(E);continue}let j=w[1],A=w[2]??w[1],k=y.get(j);if(!k){S.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(S.length===0)return x?`${u}${x}`:`${u}`;let T=`${u}import { ${S.join(", ")} } from '${m}'`;return x?`${T}
|
|
5
|
+
${u}${x}`:T}),blocks:s}}function To(e){let t=e.trim();return t?t.split(",").map(n=>n.trim()).filter(n=>n.length>0):[]}function wo(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function So(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)&&!wo(p)&&f.push(p);return f.sort()}function Eo(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?es(a[1],n):void 0}return es(i[1],n)}function es(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 cs(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
|
-
`)}function
|
|
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=
|
|
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
|
|
10
|
-
`,o);a===-1&&(a=e.length);let c=e.slice(o,a).trim();if(c){let l=ts(c);t+=`const ${s} = Union('${i}', [${l.join(", ")}])`,n=a;continue}}}t+=e[n],n++}return t}function ts(e){let t=[],n=e.split("|").map(r=>r.trim());for(let r of n)r&&t.push(r);return t}function ms(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
|
|
11
|
-
`||e[r-1]===";"||e[r-1]==="}"){let
|
|
12
|
-
`)
|
|
7
|
+
`)}function _o(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
|
+
`&&(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=_o(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=$o(i,a),f=ko(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 $o(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 ko(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 ls(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 S,x=y.match(/example\s*:\s*/);if(x){let E=x.index+x[0].length,w=js(y,E);w&&(S=w.value.trim())}let T=y.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(T&&S){let E=T[1].trim(),w=T[2].trim(),j=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', (${E}) => { if (!globalThis.__tjs?.validate(${E}, globalThis.__tjs?.infer(${S}))) return false; ${w} }, ${S}${j})`}else if(T){let E=T[1].trim(),w=T[2].trim(),j=l?`, undefined, ${l}`:"";t+=`const ${s} = Type('${o}', (${E}) => { ${w} }${j})`}else if(S){let E=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', undefined, ${S}${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 us(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=xo(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(S=>{let x=S.trim().split("=").map(T=>T.trim());if(x.length===2){let T=x[1]==="any"||x[1]==="undefined"?"null":x[1];return`['${x[0]}', ${T}]`}return`'${x[0]}'`}),$=i.split(",").map(S=>S.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 fs(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 S=e[l];S==="{"?c++:S==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),f=l,p=i.split(",").map(S=>{let x=S.trim().split("=").map(T=>T.trim());if(x.length===2){let T=x[1]==="any"||x[1]==="undefined"?"null":x[1];return`['${x[0]}', ${T}]`}return`'${x[0]}'`}),m=u,d=m.search(/\bdeclaration\s*\{/);if(d!==-1){let S=m.indexOf("{",d),x=1,T=S+1;for(;T<m.length&&x>0;)m[T]==="{"?x++:m[T]==="}"&&x--,T++;m=m.slice(0,d)+m.slice(T)}let y=m.match(/description\s*:\s*(['"`])([^]*?)\1/),b=m.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),$=y?y[2]:s;if(b){let S=b[1].trim().split(",").map(j=>j.trim()),x=b[2].trim(),T=S[0]||"x",E=S.slice(1),w=E.map(j=>`check${j}`);E.forEach((j,A)=>{x=x.replace(new RegExp(`\\b${j}\\s*\\(`,"g"),`${w[A]}(`)}),t+=`const ${s} = Generic([${p.join(", ")}], (${T}, ${w.join(", ")}) => { ${x} }, '${$}')`}else t+=`const ${s} = Generic([${p.join(", ")}], () => true, '${$}')`;n=f;continue}t+=e[n],n++}return t}function ps(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=ts(u);t+=`const ${s} = Union('${i}', [${p.join(", ")}])`,n=f;continue}else{let a=e.indexOf(`
|
|
10
|
+
`,o);a===-1&&(a=e.length);let c=e.slice(o,a).trim();if(c){let l=ts(c);t+=`const ${s} = Union('${i}', [${l.join(", ")}])`,n=a;continue}}}t+=e[n],n++}return t}function ts(e){let t=[],n=e.split("|").map(r=>r.trim());for(let r of n)r&&t.push(r);return t}function ms(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=jo(u).map(([d,y])=>`${d}: ${y}`).join(", ");t+=`const ${s} = Enum('${i}', { ${m} })`,n=f;continue}t+=e[n],n++}return t}function jo(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 ds(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 T=x[1],E=!!x[2],w=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=je(e,c+1+p);throw new H(`Arrow functions are not allowed in extend blocks (method '${w}' 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:w,isAsync:E,fullText:`${w}: ${B}function(${D}) {${F}}`}),p=P}let d=!t.has(a);d&&t.set(a,new Set);let y=t.get(a);for(let S of f)y.add(S.name);let b=f.map(S=>` ${S.fullText}`).join(`,
|
|
12
|
+
`),$;d?$=`${o}const __ext_${a} = {
|
|
13
13
|
${b}
|
|
14
14
|
${o}}
|
|
15
|
-
|
|
15
|
+
`:$=`${o}Object.assign(__ext_${a}, {
|
|
16
16
|
${b}
|
|
17
17
|
${o}})
|
|
18
|
-
`;for(let
|
|
19
|
-
`;n
|
|
20
|
-
`?(n++,r=0):r++;return{line:n,column:r}}function ys(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
|
|
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 gs(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
|
|
18
|
+
`;for(let S of f)$+=`${o}if (__tjs?.registerExtension) { __tjs.registerExtension('${a}', '${S.name}', __ext_${a}.${S.name}) }
|
|
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 je(e,t){let n=1,r=0;for(let s=0;s<t&&s<e.length;s++)e[s]===`
|
|
20
|
+
`?(n++,r=0):r++;return{line:n,column:r}}function ys(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 Vt(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 Zn(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=ns(s.trim(),t);l&&n.push(l),s="";continue}s+=c}let o=s.trim();if(o){let a=ns(o,t);a&&n.push(a)}return n}function ns(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 gs(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 S=yt(e,$),x=f.fullMatchStart;for(;x>0&&e[x-1]===" ";)x--;let T=s.get(f.name),E=Zn(b,t);if(b.includes("...")){let j=je(e,f.funcKeywordStart);throw new H(`Rest parameters are not supported in polymorphic function '${f.name}'. Use separate function names instead.`,j)}T.push({index:T.length+1,start:x,end:S,text:e.slice(x,S),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=je(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 S=!0;for(let x=0;x<b.params.length;x++){let T=b.params[x].defaultValue?Vt(b.params[x].defaultValue):"any",E=$.params[x].defaultValue?Vt($.params[x].defaultValue):"any";if(T!==E){S=!1;break}}if(S){let x=je(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(T=>T.exported),y=m?"async ":"",b=d?"export ":"",$=[...p].sort((T,E)=>{if(T.params.length!==E.params.length)return 0;let w=0,j=0;for(let A of T.params){let k=A.defaultValue?Vt(A.defaultValue):"any";k==="non-negative-integer"?w+=3:k==="integer"?w+=2:k!=="any"&&(w+=1)}for(let A of E.params){let k=A.defaultValue?Vt(A.defaultValue):"any";k==="non-negative-integer"?j+=3:k==="integer"?j+=2:k!=="any"&&(j+=1)}return j-w}),S=[];for(let T of $){let E=[`__args.length === ${T.params.length}`],w=[];for(let j=0;j<T.params.length;j++){let A=T.params[j];if(w.push(`__args[${j}]`),A.defaultValue){let k=ys(`__args[${j}]`,A.defaultValue);k!=="true"&&E.push(k)}}S.push(` if (${E.join(" && ")}) return ${f}$${T.index}(${w.join(", ")})`)}let x=`
|
|
22
22
|
${b}${y}function ${f}(...__args) {
|
|
23
|
-
${
|
|
23
|
+
${S.join(`
|
|
24
24
|
`)}
|
|
25
25
|
return __tjs.typeError('${f}', 'no matching overload', __args)
|
|
26
26
|
}
|
|
27
|
-
`;u+=
|
|
28
|
-
`,m);m
|
|
29
|
-
${
|
|
30
|
-
`.repeat(
|
|
31
|
-
`&&j
|
|
32
|
-
function ${c}$ctor$${
|
|
33
|
-
const __obj = Object.create(${c}.prototype)`,
|
|
34
|
-
;(function() {${
|
|
35
|
-
return __obj`,
|
|
27
|
+
`;u+=x}return{source:u,polymorphicNames:n}}function hs(e){return e.replace(/(?<=^|[;\n{])\s*([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(t,n)=>t.replace(n,`const ${n}`))}function bs(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,S=(e.slice(0,a).match(/\n/g)||[]).length+1;if(n.push({description:l,body:b,start:a,end:$,line:S}),!t)try{new Function(b)()}catch(E){let w=l||`test at line ${S}`;r.push(`Test failed: ${w} (line ${S})
|
|
29
|
+
${E.message||E}`)}let T=(e.slice(a,$).match(/\n/g)||[]).length;s+=`
|
|
30
|
+
`.repeat(T),i=$;continue}}}s+=e[i],i++}return{source:s,tests:n,errors:r}}function xs(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 w=y[E],j=p.indexOf("(",w),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:w,fullEnd:P})}let $=p;for(let E=b.length-1;E>=1;E--){let w=b[E],j=w.fullStart;for(;j>0&&$[j-1]===" ";)j--;j>0&&$[j-1]===`
|
|
31
|
+
`&&j--,$=$.slice(0,j)+$.slice(w.fullEnd)}let S="";for(let E=1;E<b.length;E++){let w=b[E],j=Zn(w.paramStr,t);if(w.paramStr.includes("...")){let k=je(e,u+w.fullStart);throw new H(`Rest parameters are not supported in polymorphic constructors for '${c}'.`,k)}S+=`
|
|
32
|
+
function ${c}$ctor$${w.index}(${w.paramStr}) {`,S+=`
|
|
33
|
+
const __obj = Object.create(${c}.prototype)`,S+=`
|
|
34
|
+
;(function() {${w.bodyText}}).call(__obj)`,S+=`
|
|
35
|
+
return __obj`,S+=`
|
|
36
36
|
}
|
|
37
|
-
`}let
|
|
37
|
+
`}let x=[];for(let E=0;E<b.length;E++){let w=b[E],j=Zn(w.paramStr,t),A=[`a.length === ${j.length}`];for(let k=0;k<j.length;k++){let v=j[k];if(v.defaultValue){let C=ys(`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$${w.index}(${k})`)}}S+=`
|
|
38
38
|
function ${c}$dispatch(t, a) {
|
|
39
|
-
`,
|
|
39
|
+
`,S+=x.join(`
|
|
40
40
|
`)+`
|
|
41
|
-
`,
|
|
42
|
-
`,
|
|
43
|
-
`,o=o.slice(0,u)
|
|
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
|
|
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=
|
|
46
|
-
`))return n;n++}return n}function
|
|
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
|
|
48
|
-
`})(),
|
|
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 Xn(e,t,n){let r=
|
|
50
|
-
`,n),i=s===-1?e.length:s;t+=" ".repeat(i-n),n=i;continue}t+=r,n++}return t}function
|
|
51
|
-
`),d=m.filter(y=>y.trim().length>0).reduce((y,b)=>{let
|
|
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 Mo}from"acorn";function ie(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=>ie(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]=ie(r.value)}return{kind:"object",shape:n}}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="||"?ie(n):t==="&&"||t==="??"?ie(r):{kind:"any"}}case"BinaryExpression":{let{operator:t,left:n,right:r}=e;if(t==="|"){let s=ie(n),i=ie(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=>Ao(s)),r={kind:"any"};return t.type==="ArrowFunctionExpression"&&t.body&&t.body.type!=="BlockStatement"&&(r=ie(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 Ao(e){return e.type==="Identifier"?{name:e.name,type:{kind:"any"}}:e.type==="AssignmentPattern"&&e.left?.type==="Identifier"?{name:e.left.name,type:ie(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 H("Only simple parameter names are supported",Y(e));let s=n.name,i=t?.has(s)??!1,o=ie(r),a=Te(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 H(`Unsupported parameter pattern: ${e.type}`,Y(e))}function Te(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(t=>t?Te(t):null);case"ObjectExpression":{let t={};for(let n of e.properties)n.type==="Property"&&n.key.type==="Identifier"&&(t[n.key.name]=Te(n.value));return t}case"UnaryExpression":if(e.operator==="-"){let t=Te(e.argument);return typeof t=="number"?-t:void 0}if(e.operator==="+"){let t=Te(e.argument);return typeof t=="number"?+t:void 0}return;case"BinaryExpression":{let{operator:t,left:n}=e;return t==="|"?Te(n):void 0}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="&&"&&n.type==="Literal"&&n.value===null?null:t==="||"||t==="??"?Te(n)??Te(r):void 0}default:return}}function Cs(e){try{let t=Mo(e,0,{ecmaVersion:2022});return ie(t)}catch{return{kind:"any"}}}function er(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?er(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}: ${er(r)}`).join(", ");return e.nullable?`{ ${t} } | null`:`{ ${t} }`}case"union":return e.members?.map(er).join(" | ")||"any";default:return"any"}}function Xt(e){switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{};case"undefined":return{};case"any":return{};case"array":return{type:"array",items:e.items?Xt(e.items):{}};case"object":if(e.shape){let t={};for(let[n,r]of Object.entries(e.shape))t[n]=Xt(r);return{type:"object",properties:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(Xt)}:{};default:return{}}}function Co(e){let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Xt(s.type),s.required&&n.push(r);return{type:"object",properties:t,required:n.length>0?n:void 0,additionalProperties:!1}}function Et(e,t,n,r={},s){let i=St(t,e),o=new Map;for(let b of e.params){let w=Ne(b,s);if(w.name==="__destructured__"&&w.type.kind==="object"&&w.type.destructuredParams)for(let[E,T]of Object.entries(w.type.destructuredParams))o.set(E,{...T,description:i.params[E]});else w.description=i.params[w.name],o.set(w.name,w)}let a;n&&(a=Cs(n));let c={depth:0,locals:new Map,parameters:o,atoms:new Set(Object.keys(r.atoms||{})),warnings:[],source:t,filename:r.filename||"<source>",options:r},l=we(e.body,c),u=[],f=[],p=[];for(let[b,w]of o.entries())w.required?f.push(b):w.default!==void 0?p.push({name:b,defaultValue:w.default}):f.push(b);f.length>0&&u.push({op:"varsImport",keys:f});for(let{name:b,defaultValue:w}of p)u.push({op:"varsImport",keys:[b]}),u.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:b},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:b,value:w}]});u.push(...l);let m=Object.fromEntries(o),d={name:e.id?.name||"anonymous",description:i.description,parameters:m,returns:a},y=Co(m);return{ast:{op:"seq",steps:u,inputSchema:y},signature:d,warnings:c.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 No(e,t);case"ExpressionStatement":return Ro(e,t);case"IfStatement":return Io(e,t);case"WhileStatement":return Do(e,t);case"ForOfStatement":return Oo(e,t);case"TryStatement":return Bo(e,t);case"ReturnStatement":return Lo(e,t);case"ThrowStatement":throw new H("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",Y(e),t.source,t.filename);case"BlockStatement":return{op:"scope",steps:we(e,ye(t))};case"EmptyStatement":return null;default:throw new H(`Unsupported statement type: ${e.type}`,Y(e),t.source,t.filename)}}function No(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 H("Only simple variable names are supported",Y(i),t.source,t.filename);let o=i.id.name;if(i.init){let{step:a,resultVar:c}=Fe(i.init,t,o,r);a?n.push(a):c!==o&&n.push({op:s,key:o,value:c});let l=ie(i.init);t.locals.set(o,l)}else{if(r)throw new H("const declarations must be initialized",Y(i),t.source,t.filename);n.push({op:"varSet",key:o,value:null}),t.locals.set(o,{kind:"any",nullable:!0})}}return n}function Ro(e,t){let n=e.expression;if(n.type==="AssignmentExpression")return Po(n,t);if(n.type==="CallExpression"){let{step:r,resultVar:s}=Fe(n,t);return r||(s?{op:"varSet",key:"_",value:s}:null)}return t.warnings.push({message:"Expression statement has no effect",line:Y(e).line,column:Y(e).column}),null}function Po(e,t){if(e.left.type!=="Identifier")throw new H("Only simple variable assignment is supported",Y(e),t.source,t.filename);let n=e.left.name,{step:r,resultVar:s}=Fe(e.right,t,n);return r||{op:"varSet",key:n,value:s}}function Io(e,t){let n=K(e.test,t),r=e.consequent.type==="BlockStatement"?we(e.consequent,ye(t)):[Tt(e.consequent,t)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?we(e.alternate,ye(t)):[Tt(e.alternate,t)].filter(Boolean)),{op:"if",condition:n,then:r,...s&&{else:s}}}function Do(e,t){let n=K(e.test,t),r=e.body.type==="BlockStatement"?we(e.body,ye(t)):[Tt(e.body,t)].filter(Boolean);return{op:"while",condition:n,body:r}}function Oo(e,t){let n;if(e.left.type==="VariableDeclaration"){let o=e.left.declarations[0];if(o.id.type!=="Identifier")throw new H("Only simple variable names are supported in for...of",Y(e.left),t.source,t.filename);n=o.id.name}else if(e.left.type==="Identifier")n=e.left.name;else throw new H("Unsupported for...of left-hand side",Y(e.left),t.source,t.filename);let r=oe(e.right,t),s=ye(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 Bo(e,t){let n=we(e.block,ye(t)),r,s;if(e.handler){let i=ye(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 Lo(e,t){if(!e.argument)return{op:"return",value:{}};let{step:n,resultVar:r}=Fe(e.argument,t,"__returnVal__");return n?[n,{op:"return",value:r}]:{op:"return",value:oe(e.argument,t)}}var Rs=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),Fo=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),wt=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),Uo=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 qo(e){if(e.callee.type==="Identifier"){let t=e.callee.name;return Fo.has(t)||wt.has(t)}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(Rs.has(n)||wt.has(n))return!0}if(t.property.type==="Identifier"){let n=t.property.name;if(Uo.has(n))return!0}}return!1}function Wo(e){if(e.object.type==="Identifier"){let t=e.object.name;return Rs.has(t)||wt.has(t)}return!1}var Ns={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 Jo(e){if(e.callee.type==="Identifier"){let t=e.callee.name;if(wt.has(t))return Ns[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(wt.has(n))return Ns[n]||`${n} is not available in AsyncJS.`}}return null}function Ps(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 Fe(e,t,n,r){let s=r?"constSet":"varSet";if(e.type==="ChainExpression")return Fe(e.expression,t,n,r);if(e.type==="NewExpression"){let o=e,a="constructor";o.callee.type==="Identifier"&&(a=o.callee.name);let c=Ps(a);throw new H(`The 'new' keyword is not supported in AsyncJS.${c}`,Y(e),t.source,t.filename)}if(e.type==="CallExpression"){let o=Jo(e);if(o)throw new H(o,Y(e),t.source,t.filename)}if(e.type==="CallExpression"&&qo(e)){let o=K(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="MemberExpression"&&Wo(e)){let o=K(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="CallExpression")return Vo(e,t,n,r);if(e.type==="TemplateLiteral")return zo(e,t,n,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let o=K(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}return{step:null,resultVar:oe(e,t)}}function Vo(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=oe(c.object,t);else throw new H("Computed method names are not supported",Y(e),t.source,t.filename)}else throw new H("Only named function calls are supported",Y(e),t.source,t.filename);if(i)return Ko(s,o,e.arguments,t,n,r);s==="console"&&e.callee.type;let a=Go(e,t);return{step:{op:s,...a,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function Ko(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=ye(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}=Fe(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=ye(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new H("filter callback must be an expression, not a block",Y(n[0]),r.source,r.filename);return u=K(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=ye(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new H("find callback must be an expression, not a block",Y(n[0]),r.source,r.filename);return u=K(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=ye(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}=Fe(o.body,f,"result");p=d?[d]:[{op:"varSet",key:"result",value:y}]}let m=oe(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:oe(n[0],r),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"join":return{step:{op:"join",list:t,sep:n.length>0?oe(n[0],r):"",...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"split":return{step:{op:"split",str:t,sep:n.length>0?oe(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=>oe(o,r)),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}function zo(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]=oe(a,t),s+=`{{${c}}}`}return{step:{op:"template",tmpl:s,vars:i,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function K(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=K(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:K(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 K(e.expression,t);case"BinaryExpression":{let n=e;return{$expr:"binary",op:n.operator,left:K(n.left,t),right:K(n.right,t)}}case"LogicalExpression":{let n=e;return{$expr:"logical",op:n.operator,left:K(n.left,t),right:K(n.right,t)}}case"UnaryExpression":{let n=e;return{$expr:"unary",op:n.operator,argument:K(n.argument,t)}}case"ConditionalExpression":{let n=e;return{$expr:"conditional",test:K(n.test,t),consequent:K(n.consequent,t),alternate:K(n.alternate,t)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>K(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:K(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:K(r.object,t),method:s,arguments:n.arguments.map(o=>K(o,t)),...i&&{optional:!0}}}if(n.callee.type==="Identifier")return{$expr:"call",callee:n.callee.name,arguments:n.arguments.map(s=>K(s,t))};throw new H("Complex function calls in expressions should be lifted to statements",Y(e),t.source,t.filename)}case"NewExpression":{let n=e,r="constructor";n.callee.type==="Identifier"&&(r=n.callee.name);let s=Ps(r);throw new H(`The 'new' keyword is not supported in AsyncJS.${s}`,Y(e),t.source,t.filename)}case"TemplateLiteral":throw new H("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",Y(e),t.source,t.filename);default:throw new H(`Unsupported expression type in condition: ${e.type}`,Y(e),t.source,t.filename)}}function oe(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 K(e,t);let s=oe(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 K(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 oe(e.expression,t);case"ArrayExpression":return e.elements.map(n=>n?oe(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]=oe(r.value,t)}return n}case"TemplateLiteral":return K(e,t);case"CallExpression":return K(e,t);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return K(e,t);default:return null}}function Go(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]=oe(s.value,t)}return r}return{args:e.arguments.map(n=>oe(n,t))}}import{parseExpressionAt as yi}from"acorn";function Ho(e,t){let n=t;for(;n>0&&e[n-1]!==`
|
|
53
|
-
`;)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
|
|
41
|
+
`,S+=` return __tjs.typeError('${c}', 'no matching constructor', a)
|
|
42
|
+
`,S+=`}
|
|
43
|
+
`,o=o.slice(0,u)+$+o.slice(f);let T=u+$.length;o=o.slice(0,T)+S+o.slice(T)}return{source:o,polyCtorClasses:n}}function Ts(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 ws(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 Ss(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 Es(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 _s(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 $s(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=vo(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
|
+
`&&(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 vo(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=rs(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=rs(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 rs(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 ks(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
|
+
`&&(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=Mo(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 Mo(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
|
+
`))return n;n++}return n}function Ht(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],T=y[0].length,E=e[r+T],w,j=r+T;(E==="?"||E==="!")&&(w=E,j++,w==="!"?t.unsafeFunctions.add(x):t.safeFunctions.add(x)),n+=`function ${x}(`,r=j;let A=Kt(e,r,"(",")");if(!A){n+=e[r],r++;continue}let{content:k,endPos:v}=A;r=v;let C=Xn(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=Yn(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 `=>`.",je(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
|
+
`})(),S=$!=="="&&$!==","&&$!=="("&&$!=="["&&$!==">";if(b&&f()&&!S){let x=b[1].length;n+=e.slice(r,r+x),r+=x;continue}if(b&&f()&&S){let x=b[1],T=b[0].length,E=r+T;n+=x+"(",r=E;let w=Kt(e,r,"(",")");if(!w){n+=e[r],r++;continue}let{content:j,endPos:A}=w;r=A;let k=Xn(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=Yn(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 `=>`.",je(t.originalSource,C),t.originalSource);continue}if(e[r]==="("){let x=Kt(e,r+1,"(",")");if(!x){n+=e[r],r++;continue}let T=x.content,E=x.endPos,w=E;for(;w<e.length&&/\s/.test(e[w]);)w++;let j;if(e[w]===":"){let A=e.slice(w,w+2);for(A===":?"||A===":!"?w+=2:w++;w<e.length&&/\s/.test(e[w]);)w++;let k=Yn(e,w);if(k)for(j=k.type,w=k.endPos;w<e.length&&/\s/.test(e[w]);)w++}if(e.slice(w,w+2)==="=>"){let A=null,k=T,v=T.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=Xn(k,t,!1);for(n+=`(${A==="?"?"/* safe */ ":A==="!"?"/* unsafe */ ":""}${C})`,r=E;r<w&&/\s/.test(e[r]);)n+=e[r],r++;j&&(r=w)}else{let A=Ht(T,t);n+=`(${A.source})`,r=E}continue}n+=e[r],r++}return{source:n,returnType:s,returnSafety:i}}function Kt(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 js(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=Kt(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 Yn(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 Zt(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
|
+
`){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 Xn(e,t,n){let r=Ht(e,{originalSource:e,requiredParams:t.requiredParams,unsafeFunctions:t.unsafeFunctions,safeFunctions:t.safeFunctions}).source,s=Zt(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`{ ${vs(m,t)} }`}if(n&&u.startsWith("[")&&u.endsWith("]")){let m=u.slice(1,-1);return`[ ${vs(m,t)} ]`}if(u.startsWith("...")){let m=Ms(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(!Ao(u)){let m=u.match(/^(\w+)\s*=/);return m&&a(m[1]),i=!0,l}let p=Ms(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 vs(e,t){return Zt(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=Gt(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`{ ${Zt(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}: ${Gt(p)}`}let l=i.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,f,p]=l;return`${f}: ${Gt(p)}`}let u=i.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(u){let[,f,p]=u;return`${f}: ${p}`}return s}).join(", ")} }`}function Gt(e){let t=e.slice(1,-1).trim();return`[ ${Zt(t).map(s=>{let i=s.trim();return i?i.startsWith("{")&&i.endsWith("}")?zt(i):i.startsWith("[")&&i.endsWith("]")?Gt(i):s:s}).join(", ")} ]`}function Ao(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 Ms(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 Qn(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 Yt(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=Qn(e),l.tjsStandard&&(e=cs(e)),e=Ss(e),e=$s(e);let m=ks(e);e=m.source;let d=m.annotations,y=os(e);e=y.source,e=gt(e),l.tjsEquals&&!t.vmTarget&&(e=ht(e)),e=ls(e),e=fs(e),e=us(e),e=ps(e),e=ms(e),e=hs(e);let b=as(e,{loader:t.moduleLoader,importerPath:t.filename});e=b.source;let{source:$,returnType:S,returnSafety:x}=Ht(e,{originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o});e=$;let T=ds(e);e=T.source,e=ss(e);let E=gs(e,s);e=E.source;let w=is(e);e=w.source;let j=[...y.blocks,...b.blocks,...w.blocks],A=bs(e,t.dangerouslySkipTests);e=A.source;let k=xs(e,s);e=k.source;for(let v of k.polyCtorClasses)i.add(`${v}$dispatch`);return l.tjsClass&&(e=Ts(e,k.polyCtorClasses)),l.tjsDate&&(e=ws(e)),l.tjsNoeval&&(e=_s(e)),l.tjsNoVar&&(e=Es(e)),e=bt(e,T.extensions),{source:e,returnType:S,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:T.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:S}=r?Yt(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:As.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:S}}catch(x){let T=x.loc||{line:1,column:0};throw new H(x.message.replace(/\s*\(\d+:\d+\)$/,""),T,u,n)}}function Co(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 Tt(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 wt(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
|
+
`),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 Ro}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=>No(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 No(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 Re(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=Se(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=Re(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 Se(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(t=>t?Se(t):null);case"ObjectExpression":{let t={};for(let n of e.properties)n.type==="Property"&&n.key.type==="Identifier"&&(t[n.key.name]=Se(n.value));return t}case"UnaryExpression":if(e.operator==="-"){let t=Se(e.argument);return typeof t=="number"?-t:void 0}if(e.operator==="+"){let t=Se(e.argument);return typeof t=="number"?+t:void 0}return;case"BinaryExpression":{let{operator:t,left:n}=e;return t==="|"?Se(n):void 0}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="&&"&&n.type==="Literal"&&n.value===null?null:t==="||"||t==="??"?Se(n)??Se(r):void 0}default:return}}function Cs(e){try{let t=Ro(e,0,{ecmaVersion:2022});return ae(t)}catch{return{kind:"any"}}}function er(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?er(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}: ${er(r)}`).join(", ");return e.nullable?`{ ${t} } | null`:`{ ${t} }`}case"union":return e.members?.map(er).join(" | ")||"any";default:return"any"}}function Xt(e){switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{};case"undefined":return{};case"any":return{};case"array":return{type:"array",items:e.items?Xt(e.items):{}};case"object":if(e.shape){let t={};for(let[n,r]of Object.entries(e.shape))t[n]=Xt(r);return{type:"object",properties:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(Xt)}:{};default:return{}}}function Po(e){let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Xt(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 S of e.params){let x=Re(S,s);if(x.name==="__destructured__"&&x.type.kind==="object"&&x.type.destructuredParams)for(let[T,E]of Object.entries(x.type.destructuredParams))a.set(T,{...E,description:o.params[T]});else x.description=o.params[x.name],a.set(x.name,x)}let c;n&&(c=Cs(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=Te(e.body,l),f=[],p=[],m=[];for(let[S,x]of a.entries())x.required?p.push(S):x.default!==void 0?m.push({name:S,defaultValue:x.default}):p.push(S);p.length>0&&f.push({op:"varsImport",keys:p});for(let{name:S,defaultValue:x}of m)f.push({op:"varsImport",keys:[S]}),f.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:S},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:S,value:x}]});f.push(...u);let d=Object.fromEntries(a),y={name:e.id?.name||"anonymous",description:o.description,parameters:d,returns:c},b=Po(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 Te(e,t){let n=[];for(let r of e.body){let s=St(r,t);s&&(Array.isArray(s)?n.push(...s):n.push(s))}return n}function St(e,t){switch(e.type){case"VariableDeclaration":return Io(e,t);case"ExpressionStatement":return Do(e,t);case"IfStatement":return Bo(e,t);case"WhileStatement":return Lo(e,t);case"ForOfStatement":return Fo(e,t);case"TryStatement":return Uo(e,t);case"ReturnStatement":return qo(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:Te(e,ge(t))};case"EmptyStatement":return null;default:throw new K(`Unsupported statement type: ${e.type}`,Z(e),t.source,t.filename)}}function Io(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}=Fe(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 Do(e,t){let n=e.expression;if(n.type==="AssignmentExpression")return Oo(n,t);if(n.type==="CallExpression"){let{step:r,resultVar:s}=Fe(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 Oo(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}=Fe(e.right,t,n);return r||{op:"varSet",key:n,value:s}}function Bo(e,t){let n=z(e.test,t),r=e.consequent.type==="BlockStatement"?Te(e.consequent,ge(t)):[St(e.consequent,t)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?Te(e.alternate,ge(t)):[St(e.alternate,t)].filter(Boolean)),{op:"if",condition:n,then:r,...s&&{else:s}}}function Lo(e,t){let n=z(e.test,t),r=e.body.type==="BlockStatement"?Te(e.body,ge(t)):[St(e.body,t)].filter(Boolean);return{op:"while",condition:n,body:r}}function Fo(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"?Te(e.body,s):[St(e.body,s)].filter(Boolean);return{op:"map",items:r,as:n,steps:i}}function Uo(e,t){let n=Te(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=Te(e.handler.body,i)}return{op:"try",try:n,...r&&{catch:r},...s&&{catchParam:s}}}function qo(e,t){if(!e.argument)return{op:"return",value:{}};let{step:n,resultVar:r}=Fe(e.argument,t,"__returnVal__");return n?[n,{op:"return",value:r}]:{op:"return",value:se(e.argument,t)}}var Ns=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),Wo=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"]),Jo=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 Vo(e){if(e.callee.type==="Identifier"){let t=e.callee.name;return Wo.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(Ns.has(n)||Et.has(n))return!0}if(t.property.type==="Identifier"){let n=t.property.name;if(Jo.has(n))return!0}}return!1}function Ko(e){if(e.object.type==="Identifier"){let t=e.object.name;return Ns.has(t)||Et.has(t)}return!1}var Rs={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 zo(e){if(e.callee.type==="Identifier"){let t=e.callee.name;if(Et.has(t))return Rs[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 Rs[n]||`${n} is not available in AsyncJS.`}}return null}function Ps(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 Fe(e,t,n,r){let s=r?"constSet":"varSet";if(e.type==="ChainExpression")return Fe(e.expression,t,n,r);if(e.type==="NewExpression"){let o=e,a="constructor";o.callee.type==="Identifier"&&(a=o.callee.name);let c=Ps(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=zo(e);if(o)throw new K(o,Z(e),t.source,t.filename)}if(e.type==="CallExpression"&&Vo(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"&&Ko(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 Go(e,t,n,r);if(e.type==="TemplateLiteral")return Yo(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 Go(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 Zo(s,o,e.arguments,t,n,r);if(s==="console"&&e.callee.type,t.helpers?.has(s)){let c=Ho(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=Xo(e,t);return{step:{op:s,...a,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function Ho(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=Te(r.body,i);t.helperSteps.set(e,{steps:o,paramNames:s})}finally{t.helperTransforming.delete(e)}return s}function Zo(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=Te(o.body,l);else{let{step:f,resultVar:p}=Fe(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=Te(o.body,f);else{let{step:d,resultVar:y}=Fe(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 Yo(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=Ps(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 Xo(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 Qo=/\.[mc]?js$/i,ea=/\.[mc]?ts$/i,ta=/\.tjs$/i;function Is(e){return ta.test(e)?"tjs":Qo.test(e)?"js":ea.test(e)?"ts":"tjs"}function na(e){return Is(e)==="js"?"js":"tjs"}import{parseExpressionAt as gi}from"acorn";function ra(e,t){let n=t;for(;n>0&&e[n-1]!==`
|
|
53
|
+
`;)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 sa(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:tr(e,r.index)})}return t}function $t(e){let t=[],n=[],r=sa(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(ra(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=Ds(e,d-1);if(y===-1)continue;let b=e.slice(d,y).trim();t.push({description:m,body:b,line:tr(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=Ds(e,m-1);if(d===-1)continue;let y=e.slice(m,d).trim();n.push({body:y,line:tr(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,`
|
|
54
54
|
|
|
55
|
-
`).trim();let f=
|
|
56
|
-
`).length}function
|
|
55
|
+
`).trim();let f=ia(t,n);return{code:o,tests:t,mocks:n,testRunner:f}}function Ds(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 tr(e,t){return e.slice(0,t).split(`
|
|
56
|
+
`).length}function ia(e,t){if(e.length===0)return"// No tests defined";let n=t.map(s=>s.body).join(`
|
|
57
57
|
`);return`(async () => {
|
|
58
58
|
const __results = []
|
|
59
59
|
|
|
@@ -76,13 +76,13 @@ const __failed = __results.filter(r => !r.passed).length
|
|
|
76
76
|
|
|
77
77
|
// Return summary
|
|
78
78
|
return { passed: __passed, failed: __failed, results: __results }
|
|
79
|
-
})()`.trim()}var
|
|
79
|
+
})()`.trim()}var Os=`
|
|
80
80
|
function assert(condition, message) {
|
|
81
81
|
if (!condition) {
|
|
82
82
|
throw new Error(message || 'Assertion failed')
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
`,
|
|
85
|
+
`,Bs=`
|
|
86
86
|
function expect(actual) {
|
|
87
87
|
const deepEqual = (a, b) => {
|
|
88
88
|
if (a === b) return true
|
|
@@ -173,52 +173,55 @@ function expect(actual) {
|
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
-
`,
|
|
177
|
-
`+Os;import{validate as Fs,s as xn}from"tosijs-schema";function ve(e){if(e.nullable)return{anyOf:[ve({...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:ve(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[r,s]of Object.entries(e.shape))t[r]=ve(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(ve)}:{};default:return{}}}function Ue(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:Ue(e[0])};let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Ue(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}default:return{}}}function Qt(e){let t={},n=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=ve(o.type):o?.example!==void 0?t[i]=Ue(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=ve(e.returns.type):e.returns.example!==void 0&&(s=Ue(e.returns.example))),{input:r,output:s}}import{validate as nr,filter as Qo,s as en}from"tosijs-schema";function Re(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function Bs(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function ea(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function ee(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=en.infer(a));else if(t===void 0&&a!==void 0)o=en.infer(a);else if(Bs(t))o=t;else if(ea(t))o=t;else if(t!==void 0)a=t,c=a,o=en.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else Bs(e),o=e,s=ta(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?nr(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?Ue(a):{description:s}},strip(f){return o?Qo(f,o):f},__runtimeType:!0}}function ta(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 tn=ee("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),nn=ee("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),rn=ee("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),sn=ee("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),on=ee("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`),an=ee("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),cn=ee("email address",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?!0:`"${e}" is not a valid email`),rr=e=>{try{return new URL(e),!0}catch{return!1}},ln=ee("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:rr(e)?!0:`"${e}" is not a valid URL`),un=ee("UUID",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?!0:`"${e}" is not a valid UUID`),sr=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},ir=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},or=ee("ISO 8601 timestamp",e=>typeof e=="string"&&sr(e)),ar=ee("date (YYYY-MM-DD)",e=>typeof e=="string"&&ir(e));function fn(e){return ee(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function pn(e){return ee(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function mn(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=[];Re(e)&&r.push(e),Re(t)&&r.push(t),r.push(...n);let s=r.map(i=>i.description).join(" | ");return ee(s,i=>r.some(o=>o.check(i)===!0))}function dn(e){return ee(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function na(e){if(Re(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>nr(n,e);let t=en.infer(e);return n=>nr(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:na(f)}),c=n;return r.forEach((l,u)=>{let f=u<o.length?o[u]:s[u],p="any";Re(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)}),ee(c,l=>t(l,...a))};return i.params=r,i.description=n,i}var yn=tt(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),gn=tt(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function hn(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 ra(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 $t(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 $t(e,l)});return Object.defineProperties(o,{typeParamNames:{value:s,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),o}return sa(e,t)}function sa(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=ra(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 oa=Ls(),ue=oa.version,kt=Symbol.for("tjs.equals");function Sn(e){let[t=0,n=0,r=0]=e.split(".").map(Number);return{major:t,minor:n,patch:r}}function lr(e,t){let n=Sn(e),r=Sn(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 ur(e,t){let n=Sn(e),r=Sn(t);return n.major===r.major}var Pe=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 aa(e,t,n,r){let s=n===null?"null":typeof n,i=z.callStacks||z.debug?pr():void 0,o=r?`Expected ${t} for '${e}': ${r}`:`Expected ${t} for '${e}', got ${s}`,a=new Pe(o,e,t,s,i,r);if(z.trackErrors!==!1){let c=z.maxErrors??Tn;qs[nt]=a,nt=(nt+1)%c,Je<c&&Je++,wn++}if(z.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),z.throwTypeErrors)throw a;return a}function cr(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var fr={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},z={...fr},jt=64,Us=new Array(jt).fill(""),We=0,Ae=0,Tn=64,qs=new Array(Tn).fill(null),nt=0,Je=0,wn=0,it=0;function ca(){it++}function la(){it>0&&it--}function ua(){return it>0}function fa(e){z={...z,...e}}function pa(){return{...z}}function Ws(e){if((z.callStacks||z.debug)&&e){let t=z.maxStackSize??jt;Us[We]=e,We=(We+1)%t,Ae<t&&Ae++}}function bn(){if((z.callStacks||z.debug)&&Ae>0){let e=z.maxStackSize??jt;We=(We-1+e)%e,Ae--}}function pr(){if(Ae===0)return[];let e=z.maxStackSize??jt,t=[],n=(We-Ae+e)%e;for(let r=0;r<Ae;r++)t.push(Us[(n+r)%e]);return t}function Js(){if(z.trackErrors===!1||Je===0)return[];let e=z.maxErrors??Tn,t=[],n=(nt-Je+e)%e;for(let r=0;r<Je;r++)t.push(qs[(n+r)%e]);return t}function ma(){let e=Js();return nt=0,Je=0,wn=0,e}function da(){return wn}function ya(){z={...fr},We=0,Ae=0,nt=0,Je=0,wn=0,it=0}function rt(e,t){if(e!==null&&typeof e=="object"&&typeof e[kt]=="function")return e[kt](t);if(t!==null&&typeof t=="object"&&typeof t[kt]=="function")return t[kt](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 Vs(e,t){return!rt(e,t)}function Ks(e){return e===null?"null":typeof e}function zs(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function mr(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 Gs(e,t){return!mr(e,t)}function Me(e){return e!==null&&typeof e=="object"&&e.$error===!0}function Ee(e,t){let n={$error:!0,message:e,...t};if((z.callStacks||z.debug)&&Ae>0){let r=pr(),s=t?.path?[...r,t.path]:r;n.stack=s}return n}function dr(e,t){if(e.length===0)return Ee("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 Ee(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 Hs(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 Ve(e,t,n){if(Me(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 Ee(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:Ee(`Expected ${t} but got ${r}`,{path:n,expected:t,actual:r})}function Zs(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 Pe(`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 Pe(`Expected callback returning ${n} for '${r}', but callback returns ${o}`,`${r}(return)`,n,o)}return e}function yr(e,t,n){for(let[r,s]of Object.entries(t.params)){let i=e[r];if(Me(i))return i;if(s.required&&i===void 0){let a=typeof s.type=="string"?s.type:s.type.description;return Ee(`Missing required parameter '${r}'`,{path:n?`${n}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(i===void 0)continue;let o=Ve(i,s.type,n?`${n}.${r}`:r);if(o)return s.loc&&(o.loc=s.loc),o}return null}function gr(e,t){if(e.__tjs=t,e.__tjs.schema=()=>Qt(t),!(!t.polymorphic&&(t.safe||t.safeReturn||z.safety!=="none"&&!t.unsafe||t.returns&&z.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&&z.safety!=="none",y=r&&(a||!o&&z.safety==="all");if(!d&&!y)return e.apply(this,m);if(m.length>0&&Me(m[0]))return m[0];if(d){let w=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),E=[];if(w){let T=m[0];for(let S=0;S<u;S++){let[_,x]=l[S],j=T[_];if(Me(j)){E.push(j);continue}if(x.required&&j===void 0){E.push(Ee(`Missing required parameter '${_}'`,{path:`${f}.${_}`,expected:typeof x.type=="string"?x.type:x.type?.description||"value",actual:"undefined",loc:x.loc}));continue}if(j!==void 0){let A=Ve(j,x.type,`${f}.${_}`);A&&(x.loc&&(A.loc=x.loc),E.push(A))}}}else for(let T=0;T<u;T++){let[S,_]=l[T],x=m[T];if(Me(x)){E.push(x);continue}if(_.required&&x===void 0){E.push(Ee(`Missing required parameter '${S}'`,{path:`${f}.${S}`,expected:typeof _.type=="string"?_.type:_.type?.description||"value",actual:"undefined",loc:_.loc}));continue}if(x!==void 0){let j=Ve(x,_.type,`${f}.${S}`);j&&(_.loc&&(j.loc=_.loc),E.push(j))}}if(E.length>0)return dr(E,f)}let b=z.callStacks||z.debug;b&&Ws(f);try{let w=e.apply(this,m);if(y&&t.returns&&!Me(w)){let E=c&&typeof w=="object"&&w!==null?Object.assign({},c,w):w,T=Ve(E,t.returns.type,`${f}()`);if(T)return b&&bn(),T}return b&&bn(),w}catch(w){return b&&bn(),Ee(w.message||String(w),{path:f,cause:w})}};return Object.defineProperty(p,"name",{value:e.name}),p.__tjs=t,p.__tjs.schema=()=>Qt(t),p}function Ys(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 Xs(){let e={...z},t=e.maxStackSize??jt,n=new Array(t).fill(""),r=0,s=0,i=e.maxErrors??Tn,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={...fr},r=0,s=0,a=0,c=0,l=0,u=0}function w(){u++}function E(){u>0&&u--}function T(){return u>0}let S=new Map;function _(M,D,B){S.has(M)||S.set(M,new Map),S.get(M).set(D,B)}function x(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 G=F;for(;G;){let Qe=S.get(G);if(Qe?.has(D))return Qe.get(D);if(B==="object"&&!Array.isArray(M)){if(G=Object.getPrototypeOf(G===F?M:Object.getPrototypeOf(M))?.constructor?.name,G==="Object"||G===F)break}else break}let ae=S.get("Object");if(ae?.has(D))return ae.get(D)}function j(M,D,B){let F=B===null?"null":typeof B,G=e.callStacks||e.debug?y():void 0,ae=new Pe(`Expected ${D} for '${M}', got ${F}`,M,D,F,G);if(e.trackErrors!==!1&&(o[a]=ae,a=(a+1)%i,c<i&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${ae.message}`),e.throwTypeErrors)throw ae;return ae}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):cr(M)?M:M[D]}return{version:ue,MonadicError:Pe,typeError:j,isMonadicError:cr,bang:P,isError:Me,error:C,composeErrors:dr,typeOf:st,isNativeType:Hs,checkType:Ve,validateArgs:yr,wrap:gr,checkFnShape:Zs,wrapClass:Ys,compareVersions:lr,versionsCompatible:ur,createRuntime:Xs,configure:f,getConfig:p,pushStack:m,popStack:d,getStack:y,errors:A,clearErrors:k,getErrorCount:v,resetRuntime:b,enterUnsafe:w,exitUnsafe:E,isUnsafeMode:T,validate:Fs,infer:xn.infer.bind(xn),Type:ee,isRuntimeType:Re,Union:mn,Generic:tt,Enum:hn,FunctionPredicate:$t,Nullable:fn,Optional:pn,TArray:dn,TString:tn,TNumber:nn,TBoolean:rn,TInteger:sn,TPositiveInt:on,TNonEmptyString:an,TEmail:cn,TUrl:ln,TUuid:un,TPair:yn,TRecord:gn,Is:rt,IsNot:Vs,Eq:mr,NotEq:Gs,TypeOf:Ks,toBool:zs,tjsEquals:kt,registerExtension:_,resolveExtension:x}}var qe={version:ue,MonadicError:Pe,typeError:aa,isMonadicError:cr,isError:Me,error:Ee,composeErrors:dr,typeOf:st,isNativeType:Hs,checkType:Ve,validateArgs:yr,wrap:gr,checkFnShape:Zs,wrapClass:Ys,compareVersions:lr,versionsCompatible:ur,configure:fa,getConfig:pa,pushStack:Ws,popStack:bn,getStack:pr,errors:Js,clearErrors:ma,getErrorCount:da,resetRuntime:ya,enterUnsafe:ca,exitUnsafe:la,isUnsafeMode:ua,createRuntime:Xs,validate:Fs,infer:xn.infer.bind(xn),Type:ee,isRuntimeType:Re,Union:mn,Generic:tt,Enum:hn,FunctionPredicate:$t,Nullable:fn,Optional:pn,TArray:dn,TString:tn,TNumber:nn,TBoolean:rn,TInteger:sn,TPositiveInt:on,TNonEmptyString:an,TEmail:cn,TUrl:ln,TUuid:un,Timestamp:or,LegalDate:ar,TPair:yn,TRecord:gn,Is:rt,IsNot:Vs,Eq:mr,NotEq:Gs,TypeOf:Ks,toBool:zs};function hr(){let e=globalThis;if(e.__tjs){let t=e.__tjs.version;if(typeof t!="string")return e.__tjs=qe,qe;let n=lr(ue,t);return n===0||(ur(ue,t)?n>0?(console.info(`TJS runtime: upgrading ${t} \u2192 ${ue}`),e.__tjs=qe):console.info(`TJS runtime: keeping ${t} (newer than ${ue})`):(console.warn(`TJS runtime version conflict: ${t} vs ${ue} (major version mismatch)`),n>0&&(console.warn(`Upgrading to ${ue} - check for breaking changes`),e.__tjs=qe))),e.__tjs}return e.__tjs=qe,qe}function ga(e){return`
|
|
176
|
+
`,oa=Os+`
|
|
177
|
+
`+Bs;import{validate as Us,s as xn}from"tosijs-schema";function ve(e){if(e.nullable)return{anyOf:[ve({...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:ve(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[r,s]of Object.entries(e.shape))t[r]=ve(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(ve)}:{};default:return{}}}function Ue(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:Ue(e[0])};let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Ue(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}default:return{}}}function Qt(e){let t={},n=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=ve(o.type):o?.example!==void 0?t[i]=Ue(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=ve(e.returns.type):e.returns.example!==void 0&&(s=Ue(e.returns.example))),{input:r,output:s}}import{validate as nr,filter as aa,s as en}from"tosijs-schema";function Ne(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function Ls(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function ca(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=en.infer(a));else if(t===void 0&&a!==void 0)o=en.infer(a);else if(Ls(t))o=t;else if(ca(t))o=t;else if(t!==void 0)a=t,c=a,o=en.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else Ls(e),o=e,s=la(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?nr(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?Ue(a):{description:s}},strip(f){return o?aa(f,o):f},__runtimeType:!0}}function la(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 tn=te("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),nn=te("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),rn=te("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),sn=te("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),on=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`),an=te("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),cn=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`),rr=e=>{try{return new URL(e),!0}catch{return!1}},ln=te("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:rr(e)?!0:`"${e}" is not a valid URL`),un=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`),sr=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},ir=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},or=te("ISO 8601 timestamp",e=>typeof e=="string"&&sr(e)),ar=te("date (YYYY-MM-DD)",e=>typeof e=="string"&&ir(e));function fn(e){return te(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function pn(e){return te(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function mn(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=[];Ne(e)&&r.push(e),Ne(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 dn(e){return te(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function ua(e){if(Ne(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>nr(n,e);let t=en.infer(e);return n=>nr(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:ua(f)}),c=n;return r.forEach((l,u)=>{let f=u<o.length?o[u]:s[u],p="any";Ne(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 yn=tt(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),gn=tt(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function hn(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 fa(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 kt(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 kt(e,l)});return Object.defineProperties(o,{typeParamNames:{value:s,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),o}return pa(e,t)}function pa(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=fa(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 da=Fs(),fe=da.version,jt=Symbol.for("tjs.equals");function Tn(e){let[t=0,n=0,r=0]=e.split(".").map(Number);return{major:t,minor:n,patch:r}}function lr(e,t){let n=Tn(e),r=Tn(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 ur(e,t){let n=Tn(e),r=Tn(t);return n.major===r.major}var Pe=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 ya(e,t,n,r){let s=n===null?"null":typeof n,i=G.callStacks||G.debug?pr():void 0,o=r?`Expected ${t} for '${e}': ${r}`:`Expected ${t} for '${e}', got ${s}`,a=new Pe(o,e,t,s,i,r);if(G.trackErrors!==!1){let c=G.maxErrors??wn;Ws[nt]=a,nt=(nt+1)%c,Je<c&&Je++,Sn++}if(G.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),G.throwTypeErrors)throw a;return a}function cr(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var fr={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},G={...fr},vt=64,qs=new Array(vt).fill(""),We=0,Ae=0,wn=64,Ws=new Array(wn).fill(null),nt=0,Je=0,Sn=0,it=0;function ga(){it++}function ha(){it>0&&it--}function ba(){return it>0}function xa(e){G={...G,...e}}function Ta(){return{...G}}function Js(e){if((G.callStacks||G.debug)&&e){let t=G.maxStackSize??vt;qs[We]=e,We=(We+1)%t,Ae<t&&Ae++}}function bn(){if((G.callStacks||G.debug)&&Ae>0){let e=G.maxStackSize??vt;We=(We-1+e)%e,Ae--}}function pr(){if(Ae===0)return[];let e=G.maxStackSize??vt,t=[],n=(We-Ae+e)%e;for(let r=0;r<Ae;r++)t.push(qs[(n+r)%e]);return t}function Vs(){if(G.trackErrors===!1||Je===0)return[];let e=G.maxErrors??wn,t=[],n=(nt-Je+e)%e;for(let r=0;r<Je;r++)t.push(Ws[(n+r)%e]);return t}function wa(){let e=Vs();return nt=0,Je=0,Sn=0,e}function Sa(){return Sn}function Ea(){G={...fr},We=0,Ae=0,nt=0,Je=0,Sn=0,it=0}function rt(e,t){if(e!==null&&typeof e=="object"&&typeof e[jt]=="function")return e[jt](t);if(t!==null&&typeof t=="object"&&typeof t[jt]=="function")return t[jt](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 Ks(e,t){return!rt(e,t)}function zs(e){return e===null?"null":typeof e}function Gs(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function mr(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 Hs(e,t){return!mr(e,t)}function Me(e){return e!==null&&typeof e=="object"&&e.$error===!0}function Ee(e,t){let n={$error:!0,message:e,...t};if((G.callStacks||G.debug)&&Ae>0){let r=pr(),s=t?.path?[...r,t.path]:r;n.stack=s}return n}function dr(e,t){if(e.length===0)return Ee("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 Ee(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 Zs(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 Ve(e,t,n){if(Me(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 Ee(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:Ee(`Expected ${t} but got ${r}`,{path:n,expected:t,actual:r})}function Ys(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 Pe(`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 Pe(`Expected callback returning ${n} for '${r}', but callback returns ${o}`,`${r}(return)`,n,o)}return e}function yr(e,t,n){for(let[r,s]of Object.entries(t.params)){let i=e[r];if(Me(i))return i;if(s.required&&i===void 0){let a=typeof s.type=="string"?s.type:s.type.description;return Ee(`Missing required parameter '${r}'`,{path:n?`${n}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(i===void 0)continue;let o=Ve(i,s.type,n?`${n}.${r}`:r);if(o)return s.loc&&(o.loc=s.loc),o}return null}function gr(e,t){if(e.__tjs=t,e.__tjs.schema=()=>Qt(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&&Me(m[0]))return m[0];if(d){let $=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),S=[];if($){let x=m[0];for(let T=0;T<u;T++){let[E,w]=l[T],j=x[E];if(Me(j)){S.push(j);continue}if(w.required&&j===void 0){S.push(Ee(`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=Ve(j,w.type,`${f}.${E}`);A&&(w.loc&&(A.loc=w.loc),S.push(A))}}}else for(let x=0;x<u;x++){let[T,E]=l[x],w=m[x];if(Me(w)){S.push(w);continue}if(E.required&&w===void 0){S.push(Ee(`Missing required parameter '${T}'`,{path:`${f}.${T}`,expected:typeof E.type=="string"?E.type:E.type?.description||"value",actual:"undefined",loc:E.loc}));continue}if(w!==void 0){let j=Ve(w,E.type,`${f}.${T}`);j&&(E.loc&&(j.loc=E.loc),S.push(j))}}if(S.length>0)return dr(S,f)}let b=G.callStacks||G.debug;b&&Js(f);try{let $=e.apply(this,m);if(y&&t.returns&&!Me($)){let S=c&&typeof $=="object"&&$!==null?Object.assign({},c,$):$,x=Ve(S,t.returns.type,`${f}()`);if(x)return b&&bn(),x}return b&&bn(),$}catch($){return b&&bn(),Ee($.message||String($),{path:f,cause:$})}};return Object.defineProperty(p,"name",{value:e.name}),p.__tjs=t,p.__tjs.schema=()=>Qt(t),p}function Xs(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 Qs(){let e={...G},t=e.maxStackSize??vt,n=new Array(t).fill(""),r=0,s=0,i=e.maxErrors??wn,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={...fr},r=0,s=0,a=0,c=0,l=0,u=0}function $(){u++}function S(){u>0&&u--}function x(){return u>0}let T=new Map;function E(M,D,B){T.has(M)||T.set(M,new Map),T.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=T.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=T.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 Pe(`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):cr(M)?M:M[D]}return{version:fe,MonadicError:Pe,typeError:j,isMonadicError:cr,bang:P,isError:Me,error:C,composeErrors:dr,typeOf:st,isNativeType:Zs,checkType:Ve,validateArgs:yr,wrap:gr,checkFnShape:Ys,wrapClass:Xs,compareVersions:lr,versionsCompatible:ur,createRuntime:Qs,configure:f,getConfig:p,pushStack:m,popStack:d,getStack:y,errors:A,clearErrors:k,getErrorCount:v,resetRuntime:b,enterUnsafe:$,exitUnsafe:S,isUnsafeMode:x,validate:Us,infer:xn.infer.bind(xn),Type:te,isRuntimeType:Ne,Union:mn,Generic:tt,Enum:hn,FunctionPredicate:kt,Nullable:fn,Optional:pn,TArray:dn,TString:tn,TNumber:nn,TBoolean:rn,TInteger:sn,TPositiveInt:on,TNonEmptyString:an,TEmail:cn,TUrl:ln,TUuid:un,TPair:yn,TRecord:gn,Is:rt,IsNot:Ks,Eq:mr,NotEq:Hs,TypeOf:zs,toBool:Gs,tjsEquals:jt,registerExtension:E,resolveExtension:w}}var qe={version:fe,MonadicError:Pe,typeError:ya,isMonadicError:cr,isError:Me,error:Ee,composeErrors:dr,typeOf:st,isNativeType:Zs,checkType:Ve,validateArgs:yr,wrap:gr,checkFnShape:Ys,wrapClass:Xs,compareVersions:lr,versionsCompatible:ur,configure:xa,getConfig:Ta,pushStack:Js,popStack:bn,getStack:pr,errors:Vs,clearErrors:wa,getErrorCount:Sa,resetRuntime:Ea,enterUnsafe:ga,exitUnsafe:ha,isUnsafeMode:ba,createRuntime:Qs,validate:Us,infer:xn.infer.bind(xn),Type:te,isRuntimeType:Ne,Union:mn,Generic:tt,Enum:hn,FunctionPredicate:kt,Nullable:fn,Optional:pn,TArray:dn,TString:tn,TNumber:nn,TBoolean:rn,TInteger:sn,TPositiveInt:on,TNonEmptyString:an,TEmail:cn,TUrl:ln,TUuid:un,Timestamp:or,LegalDate:ar,TPair:yn,TRecord:gn,Is:rt,IsNot:Ks,Eq:mr,NotEq:Hs,TypeOf:zs,toBool:Gs};function hr(){let e=globalThis;if(e.__tjs){let t=e.__tjs.version;if(typeof t!="string")return e.__tjs=qe,qe;let n=lr(fe,t);return n===0||(ur(fe,t)?n>0?(console.info(`TJS runtime: upgrading ${t} \u2192 ${fe}`),e.__tjs=qe):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=qe))),e.__tjs}return e.__tjs=qe,qe}function _a(e){return`
|
|
178
178
|
// TJS runtime wrapper (skips unsafe functions)
|
|
179
179
|
if (typeof ${e}.__tjs === 'object' && !${e}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
|
|
180
180
|
${e} = globalThis.__tjs.wrap(${e}, ${e}.__tjs)
|
|
181
181
|
}
|
|
182
|
-
`.trim()}function
|
|
182
|
+
`.trim()}function ei(e){return`
|
|
183
183
|
// TJS: callable without new
|
|
184
184
|
${e} = new Proxy(${e}, { apply(t, _, a) { return Reflect.construct(t, a) } });
|
|
185
|
-
`.trim()}function
|
|
185
|
+
`.trim()}function $a(e,t,n=1e-9){if(e===t)return!0;if(typeof e=="number"&&typeof t=="number"&&(!Number.isInteger(e)||!Number.isInteger(t))){let r=Math.abs(e-t),s=Math.max(Math.abs(e),Math.abs(t),1);return r/s<n}return!1}function xr(e,t){if(e===t||typeof e=="number"&&typeof t=="number"&&Number.isNaN(e)&&Number.isNaN(t)||$a(e,t))return!0;if(e===null||t===null||e===void 0||t===void 0)return e===t;if(typeof e!=typeof t||typeof e!="object")return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>xr(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=>xr(e[s],t[s]))}function Tr(e,t,n=""){if(t===null)return e===null?{matches:!0}:{matches:!1,error:`Expected null at '${n}', got ${Ke(e)}`};if(t===void 0)return e===void 0?{matches:!0}:{matches:!1,error:`Expected undefined at '${n}', got ${Ke(e)}`};if(typeof t=="number")return typeof e=="number"?{matches:!0}:{matches:!1,error:`Expected number at '${n}', got ${Ke(e)}`};if(typeof t=="string")return typeof e=="string"?{matches:!0}:{matches:!1,error:`Expected string at '${n}', got ${Ke(e)}`};if(typeof t=="boolean")return typeof e=="boolean"?{matches:!0}:{matches:!1,error:`Expected boolean at '${n}', got ${Ke(e)}`};if(Array.isArray(t)){if(!Array.isArray(e))return{matches:!1,error:`Expected array at '${n}', got ${Ke(e)}`};if(t.length===0)return{matches:!0};let r=t[0];for(let s=0;s<e.length;s++){let i=Tr(e[s],r,`${n}[${s}]`);if(!i.matches)return i}return{matches:!0}}if(typeof t=="object"&&t!==null){if(typeof e!="object"||e===null||Array.isArray(e))return{matches:!1,error:`Expected object at '${n}', got ${Ke(e)}`};for(let r of Object.keys(t)){let s=n?`${n}.${r}`:r;if(!(r in e))return{matches:!1,error:`Missing property '${s}'`};let i=Tr(e[r],t[r],s);if(!i.matches)return i}return{matches:!0}}return e===t?{matches:!0}:{matches:!1,error:`Type mismatch at '${n}'`}}function Ke(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function Mt(e,t=0){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="string")return JSON.stringify(e);if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return e.length===0?"[]":e.length<=3?`[${e.map(n=>Mt(n,t)).join(", ")}]`:`[${e.slice(0,3).map(n=>Mt(n,t)).join(", ")}, ...]`;if(typeof e=="object"){let n=Object.entries(e);if(n.length===0)return"{}";let r=c=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(c)?c:JSON.stringify(c);if(n.length<=2)return`{${n.map(([l,u])=>`${r(l)}: ${Mt(u,t)}`).join(", ")}}`;let s=" ".repeat(t+1),i=" ".repeat(t),o=n.slice(0,8).map(([c,l])=>`${s}${r(c)}: ${Mt(l,t+1)}`).join(`,
|
|
186
186
|
`),a=n.length>8?`,
|
|
187
187
|
${s}...`:"";return`{
|
|
188
188
|
${o}${a}
|
|
189
|
-
${i}}`}return String(e)}function
|
|
189
|
+
${i}}`}return String(e)}function ka(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,n=>{let r=n.split(`
|
|
190
190
|
`).length-1;return`
|
|
191
|
-
`.repeat(r)});return t=t.replace(/\/\/[^\n]*/g,""),t}function _n(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
|
|
192
|
-
`)}function
|
|
193
|
-
`).length;if(u===":!")continue;let p=n.slice(s.index+s[0].length),m=En(p);if(!m)continue;let d=br(l);if(!(l.trim()&&d.length===0))try{let y=
|
|
194
|
-
`).length,k=f.slice(
|
|
195
|
-
`),p="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((
|
|
196
|
-
// Test ${
|
|
191
|
+
`.repeat(r)});return t=t.replace(/\/\/[^\n]*/g,""),t}function _n(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 ni(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 ja(e){if(Object.keys(e).length===0)return"";let t=[];for(let[n,r]of Object.entries(e)){let s=_n(r);t.push(`// Resolved import: ${n}`),t.push(s)}return t.join(`
|
|
192
|
+
`)}function ti(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 ri(e){let t=[],n=ka(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(`
|
|
193
|
+
`).length;if(u===":!")continue;let p=n.slice(s.index+s[0].length),m=En(p);if(!m)continue;let d=br(l);if(!(l.trim()&&d.length===0))try{let y=ti(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=br(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,S;for(;(S=$.exec(f))!==null;){let x=S[2];if(x==="constructor")continue;let T=!!S[1],E=S[3];if(S[4]===":!")continue;let j=c+S.index,A=n.slice(0,j).split(`
|
|
194
|
+
`).length,k=f.slice(S.index+S[0].length),v=En(k);if(!v)continue;let C=br(E);if(!(E.trim()&&C.length===0))try{let P=ti(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:T,className:a,constructorArgs:b})}catch{}}}return t}function si(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(T=>{let E=T.match(/from\s+['"]([^'"]+)['"]/);return E&&!(E[1]in s)}),l=_n(r),u=ja(s),f=t.map(T=>T.body).join(`
|
|
195
|
+
`),p="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((T,E)=>{let w=i.size>0?bt(T.body,i):T.body;return`
|
|
196
|
+
// Test ${E}: ${T.description}
|
|
197
197
|
try {
|
|
198
198
|
${p}
|
|
199
|
-
${
|
|
200
|
-
__testResults.push({ idx: ${
|
|
199
|
+
${w}
|
|
200
|
+
__testResults.push({ idx: ${E}, passed: true });
|
|
201
201
|
} catch (e) {
|
|
202
|
-
__testResults.push({ idx: ${
|
|
202
|
+
__testResults.push({ idx: ${E}, passed: false, isRef: e instanceof ReferenceError, error: e.message || String(e) });
|
|
203
203
|
}
|
|
204
204
|
`}).join(`
|
|
205
|
-
`),d=n.filter(
|
|
206
|
-
// Signature test ${
|
|
205
|
+
`),d=n.filter(T=>!T.isAsync),y=n.filter(T=>T.isAsync),b=d.map((T,E)=>{let w=T.className?`${T.className}.${T.funcName}`:T.funcName,j=T.className?`new ${T.className}(${(T.constructorArgs||[]).map(A=>JSON.stringify(A)).join(", ")}).${T.funcName}(${T.args.map(A=>JSON.stringify(A)).join(", ")})`:`${T.funcName}(${T.args.map(A=>JSON.stringify(A)).join(", ")})`;return`
|
|
206
|
+
// Signature test ${E}: ${w}
|
|
207
207
|
try {
|
|
208
208
|
let __actual = ${j};
|
|
209
|
-
const __expected = ${JSON.stringify(
|
|
210
|
-
const __defaults = ${JSON.stringify(
|
|
209
|
+
const __expected = ${JSON.stringify(T.expected)};${T.defaults?`
|
|
210
|
+
const __defaults = ${JSON.stringify(T.defaults)};
|
|
211
211
|
if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
|
|
212
212
|
if (__deepEqual(__actual, __expected)) {
|
|
213
|
-
__sigTestResults.push({ idx: ${
|
|
213
|
+
__sigTestResults.push({ idx: ${E}, passed: true });
|
|
214
214
|
} else {
|
|
215
|
-
__sigTestResults.push({ idx: ${
|
|
215
|
+
__sigTestResults.push({ idx: ${E}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${w}\\', got ' + __format(__actual) });
|
|
216
216
|
}
|
|
217
217
|
} catch (e) {
|
|
218
|
-
|
|
218
|
+
// The function threw on its example inputs \u2014 the example couldn't be
|
|
219
|
+
// *evaluated* (e.g. it calls an atom that doesn't exist at build time).
|
|
220
|
+
// That's inconclusive, not a mismatch. Never block transpilation on it.
|
|
221
|
+
__sigTestResults.push({ idx: ${E}, passed: false, threw: true, error: e.message || String(e) });
|
|
219
222
|
}
|
|
220
223
|
`}).join(`
|
|
221
|
-
`);hr();let
|
|
224
|
+
`);hr();let x=`
|
|
222
225
|
|
|
223
226
|
const __saved_tjs = globalThis.__tjs;
|
|
224
227
|
|
|
@@ -302,8 +305,8 @@ ${i}}`}return String(e)}function ba(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,n=>{l
|
|
|
302
305
|
globalThis.__tjs = __saved_tjs;
|
|
303
306
|
}
|
|
304
307
|
return { testResults: __testResults, sigTestResults: __sigTestResults };
|
|
305
|
-
`;try{let
|
|
306
|
-
`)}var kn={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 $a(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 $n(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 ze(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=Z(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=Z(s.init,t));let a=$n(t,i,o);s.init&&(r.push(...V(s.init,t)),r.push(g.local_set,...U(a)))}return r}case"ForStatement":return ka(e,t);case"IfStatement":return ja(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 ka(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,Se.void),n.push(g.loop,Se.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 ja(e,t){let n=[];return n.push(...V(e.test,t)),n.push(g.if,Se.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 Z(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 ze(t,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let n=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(n.operator)||["|","&","^","<<",">>",">>>"].includes(n.operator))return"i32";let r=Z(n.left,t),s=Z(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":Z(n.argument,t)}case"MemberExpression":{let n=e;if(n.object.type==="Identifier"&&ze(t,n.object.name)){let s=t.params.find(i=>i.name===n.object.name);if(s?.arrayType){let i=kn[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=Z(e,t);return r==="i32"?[g.i32_const,...Nt(n.value|0)]:r==="f32"?[g.f32_const,...wr(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=ze(t,n);return r?[g.local_get,...U(r.index)]:(t.errors.push(`Unknown identifier: ${n}`),[g.f64_const,...de(0)])}case"BinaryExpression":return va(e,t);case"UnaryExpression":return Ma(e,t);case"AssignmentExpression":return Aa(e,t);case"UpdateExpression":return Ca(e,t);case"MemberExpression":return Na(e,t);case"CallExpression":return Pa(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 va(e,t){let n=V(e.left,t),r=V(e.right,t),s=Z(e,t),i=Z(e.left,t),o=Z(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 Ma(e,t){let n=V(e.argument,t),r=Z(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,...Nt(-1),g.i32_xor];default:return t.errors.push(`Unsupported unary operator: ${e.operator}`),n}}function Aa(e,t){if(e.left.type==="MemberExpression")return Ra(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=ze(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[];if(e.operator==="="){s.push(...V(e.right,t));let i=Z(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=Z(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 Ca(e,t){if(e.argument.type!=="Identifier")return t.errors.push("Update expression argument must be identifier"),[];let n=e.argument.name,r=ze(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 Na(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=kn[r.arrayType];if(!s)return t.errors.push(`Unknown array type: ${r.arrayType}`),[];t.needsMemory=!0;let i=[],o=ze(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=Z(e.property,t);return i.push(...a),c==="f64"&&i.push(g.i32_trunc_f64_s),s.bytesPerElement>1&&(i.push(g.i32_const,...Nt(s.bytesPerElement)),i.push(g.i32_mul)),i.push(g.i32_add),i.push(s.loadOp,0,0),i}function Ra(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=kn[i.arrayType];if(!o)return r.errors.push(`Unknown array type: ${i.arrayType}`),[];r.needsMemory=!0;let a=[],c=ze(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=Z(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,...Nt(o.bytesPerElement)),d.push(g.i32_mul)),d.push(g.i32_add),d};if(n==="=")a.push(...V(t,r));else{let d=$n(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=Z(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),w={"+":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(w[b]??g.f64_add);let E=$n(r,`__val_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...U(E)),a.push(g.local_get,...U(d)),a.push(g.local_get,...U(E)),a.push(o.storeOp,0,0),a.push(g.local_get,...U(E)),a}let p=Z(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=$n(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,...Nt(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 Pa(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 Ba(r,e.arguments,t)}}if(e.callee.type==="Identifier"){let n=e.callee.name;if(n.startsWith("f32x4_")||n.startsWith("v128_"))return Oa(n,e.arguments,t);let r=t.moduleFunctions.get(n);if(r)return Ia(r,n,e.arguments,t)}return t.errors.push(`Unsupported function call: ${e.callee.type}`),[g.f64_const,...de(0)]}function Ia(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=Z(o,r);if(s.push(...V(o,r)),c!==a){let l=Da(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 Da(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 Oa(e,t,n){n.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...V(t[0],n)),Z(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...V(t[1],n));let i=Z(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(se.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...V(t[0],n)),Z(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...V(t[1],n));let i=Z(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(se.v128_store,2,0)),r.push(g.i32_const,0),r}case"f32x4_splat":{r.push(...V(t[0],n));let s=Z(t[0],n);return s==="i32"?r.push(g.f32_convert_i32_s):s==="f64"&&r.push(g.f32_demote_f64),r.push(...Tr(se.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,...wr(0)]):(r.push(Ct,...U(se.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,...wr(0)];r.push(...V(t[2],n));let i=Z(t[2],n);return i==="i32"?r.push(g.f32_convert_i32_s):i==="f64"&&r.push(g.f32_demote_f64),r.push(Ct,...U(se.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:se.f32x4_add,f32x4_sub:se.f32x4_sub,f32x4_mul:se.f32x4_mul,f32x4_div:se.f32x4_div};return r.push(...Tr(s[e])),r}case"f32x4_neg":case"f32x4_sqrt":{r.push(...V(t[0],n));let s={f32x4_neg:se.f32x4_neg,f32x4_sqrt:se.f32x4_sqrt};return r.push(...Tr(s[e])),r}default:return n.errors.push(`Unknown SIMD intrinsic: ${e}`),[g.f64_const,...de(0)]}}function Ba(e,t,n){let r=[];for(let a of t){r.push(...V(a,n));let c=Z(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 _r(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 kn[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 La(e,t){let n=e.map(s=>Se[s.type]),r=t?[1,Se.f64]:[0];return[96,...U(e.length),...n,...r]}function Fa(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),Se[i]]),i=t[a],o=1);n.push([...U(o),Se[i]])}let s=[...[...U(n.length),...n.flat()],...e,g.end];return[...U(s.length),...s]}function Ua(){return At(Mt.import,[1,...Er("env"),...Er("memory"),2,0,1])}function oi(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=>La(p.params,p.hasReturn)),s=At(Mt.type,[...U(r.length),...r.flat()]),o=e.some(p=>p.needsMemory)?Ua():[],a=At(Mt.function,[...U(e.length),...e.map((p,m)=>U(m)).flat()]),c=At(Mt.export,[...U(e.length),...t.map((p,m)=>[...Er(p),0,...U(m)]).flat()]),l=e.map(p=>Fa(p.bodyCode,p.localTypes)),u=At(Mt.code,[...U(l.length),...l.flat()]),f=[...n,...s];return o.length>0&&f.push(...o),f.push(...a,...c,...u),f}function qa(e,t,n,r,s){return oi([{params:e,bodyCode:t,localTypes:n,needsMemory:r,hasReturn:s}],["compute"])}function ai(e,t=new Map){try{let n=e.captures.map(_r),r;try{let c=`function __wasm__(${n.map(l=>l.name).join(", ")}) { ${e.body} }`;r=ii.parse(c,{ecmaVersion:2022})}catch(c){return{success:!1,warnings:[],error:`Parse error: ${c.message}`}}let i=r.body[0].body.body,o=$a(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:_a(a,n,o.localTypes),warnings:o.warnings}}catch(n){return{success:!1,warnings:[],error:n.message}}}function ci(e){let t=ai(e);if(!t.success||!t.fn)return{bytes:new Uint8Array,warnings:t.warnings,success:!1,error:t.error};let n=qa(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 li(e){let t=new Map,n=[];for(let c=0;c<e.length;c++){let l=e[c],u=l.captures.map(_r),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=ai(l,t);if(o.push(...u.warnings),!u.success||!u.fn){r.push({id:l.id,success:!1,error:u.error}),s.push(Wa(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=oi(s,i.map(c=>c.exportName));return{bytes:new Uint8Array(a),results:r,exports:i,needsMemory:i.some(c=>c.needsMemory),warnings:o}}function Wa(e){let t=e.hasReturn?[g.f64_const,...de(0)]:[];return{params:e.params,bodyCode:t,localTypes:[],needsMemory:!1,hasReturn:e.hasReturn}}async function ui(e,t){let n={};t&&(n.env={memory:t});let r=await WebAssembly.compile(e);return WebAssembly.instantiate(r,n)}async function Ja(e){let t=ci(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 ui(t.bytes,n)).exports.compute,i=e.captures.map(_r);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,w=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);l.set(w,u),f.push(u),u+=w.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,w=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);w.set(l.slice(u,u+w.length)),u+=w.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 fi(e){let t=await Ja(e);return t.success?(globalThis[e.id]=t.fn,!0):(console.warn(`WASM compilation failed for ${e.id}:`,t.error),!1)}async function Va(e){let t=0,n=0,r=[];for(let s of e)await fi(s)?t++:(n++,r.push(`Failed to compile ${s.id}`));return{compiled:t,failed:n,errors:r}}function pi(e){let t=li(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(`
|
|
308
|
+
`;try{let T=new Function("__deepEqual","__format","__typeMatches",x),{testResults:E,sigTestResults:w}=T(xr,Mt,Tr);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 w){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(T){let E=`Module could not be executed for testing: ${T.message}`;for(let w of e)o.push({description:w.description,passed:!1,inconclusive:!0,error:E});for(let w of d){let j=w.className?`${w.className}.${w.funcName}`:w.funcName;o.push({description:`${j} signature example`,passed:!1,inconclusive:!0,error:E,isSignatureTest:!0})}}for(let T of y){let E=T.className?`${T.className}.${T.funcName}`:T.funcName;o.push({description:`${E} signature example`,passed:!0,isSignatureTest:!0,line:T.line})}return o}function En(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 br(e){if(!e.trim())return[];let t=[],n=va(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 va(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 oi from"acorn";var we={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},At={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},Ma=Object.fromEntries(Object.entries(g).map(([e,t])=>[t,e.replace(/_/g,".")])),Rt=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},Aa=Object.fromEntries(Object.entries(ie).map(([e,t])=>[t,e.replace(/_/g,".")]));function wr(e){return[Rt,...U(e)]}function ii(e,t,n){return[Rt,...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 Nt(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 Sr(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 Er(e){let t=new TextEncoder().encode(e);return[...U(t.length),...t]}function Ct(e,t){return[e,...U(t.length),...t]}function Ie(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 Ca(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 Ra(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=Ma[l]||`unknown(0x${l.toString(16)})`;if(c++,l===g.local_get||l===g.local_set||l===g.local_tee){let[f,p]=Ie(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]=Ie(e,c);c+=p,r.push(`${i()}${u} ${f}`)}else if(l===g.i32_const){let[f,p]=Ie(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=Ca(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===we.void?"":` (result ${f===we.f64?"f64":"i32"})`}`),s++}else if(l===g.if){let f=e[c];c++,r.push(`${i()}if${f===we.void?"":` (result ${f===we.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]=Ie(e,c);c+=p;let[m,d]=Ie(e,c);c+=d,r.push(`${i()}${u}${m?` offset=${m}`:""}`)}else if(l===Rt){let[f,p]=Ie(e,c);c+=p;let m=Aa[f]||`simd.unknown(0x${f.toString(16)})`;if(f===ie.v128_load||f===ie.v128_store){let[d,y]=Ie(e,c);c+=y;let[b,$]=Ie(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(`
|
|
309
|
+
`)}var kn={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 Na(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 $n(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 ze(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=$n(t,i,o);s.init&&(r.push(...V(s.init,t)),r.push(g.local_set,...U(a)))}return r}case"ForStatement":return Pa(e,t);case"IfStatement":return Ia(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 Pa(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,we.void),n.push(g.loop,we.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 Ia(e,t){let n=[];return n.push(...V(e.test,t)),n.push(g.if,we.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 ze(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"&&ze(t,n.object.name)){let s=t.params.find(i=>i.name===n.object.name);if(s?.arrayType){let i=kn[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,...Nt(n.value|0)]:r==="f32"?[g.f32_const,...Sr(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=ze(t,n);return r?[g.local_get,...U(r.index)]:(t.errors.push(`Unknown identifier: ${n}`),[g.f64_const,...de(0)])}case"BinaryExpression":return Da(e,t);case"UnaryExpression":return Oa(e,t);case"AssignmentExpression":return Ba(e,t);case"UpdateExpression":return La(e,t);case"MemberExpression":return Fa(e,t);case"CallExpression":return qa(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 Da(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 Oa(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,...Nt(-1),g.i32_xor];default:return t.errors.push(`Unsupported unary operator: ${e.operator}`),n}}function Ba(e,t){if(e.left.type==="MemberExpression")return Ua(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=ze(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 La(e,t){if(e.argument.type!=="Identifier")return t.errors.push("Update expression argument must be identifier"),[];let n=e.argument.name,r=ze(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 Fa(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=kn[r.arrayType];if(!s)return t.errors.push(`Unknown array type: ${r.arrayType}`),[];t.needsMemory=!0;let i=[],o=ze(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,...Nt(s.bytesPerElement)),i.push(g.i32_mul)),i.push(g.i32_add),i.push(s.loadOp,0,0),i}function Ua(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=kn[i.arrayType];if(!o)return r.errors.push(`Unknown array type: ${i.arrayType}`),[];r.needsMemory=!0;let a=[],c=ze(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,...Nt(o.bytesPerElement)),d.push(g.i32_mul)),d.push(g.i32_add),d};if(n==="=")a.push(...V(t,r));else{let d=$n(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 S=$n(r,`__val_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...U(S)),a.push(g.local_get,...U(d)),a.push(g.local_get,...U(S)),a.push(o.storeOp,0,0),a.push(g.local_get,...U(S)),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=$n(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,...Nt(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 qa(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 Ka(r,e.arguments,t)}}if(e.callee.type==="Identifier"){let n=e.callee.name;if(n.startsWith("f32x4_")||n.startsWith("v128_"))return Va(n,e.arguments,t);let r=t.moduleFunctions.get(n);if(r)return Wa(r,n,e.arguments,t)}return t.errors.push(`Unsupported function call: ${e.callee.type}`),[g.f64_const,...de(0)]}function Wa(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=Ja(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 Ja(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 Va(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(...ii(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(...ii(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(...wr(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,...Sr(0)]):(r.push(Rt,...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,...Sr(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(Rt,...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(...wr(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(...wr(s[e])),r}default:return n.errors.push(`Unknown SIMD intrinsic: ${e}`),[g.f64_const,...de(0)]}}function Ka(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 _r(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 kn[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 za(e,t){let n=e.map(s=>we[s.type]),r=t?[1,we.f64]:[0];return[96,...U(e.length),...n,...r]}function Ga(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),we[i]]),i=t[a],o=1);n.push([...U(o),we[i]])}let s=[...[...U(n.length),...n.flat()],...e,g.end];return[...U(s.length),...s]}function Ha(){return Ct(At.import,[1,...Er("env"),...Er("memory"),2,0,1])}function ai(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=>za(p.params,p.hasReturn)),s=Ct(At.type,[...U(r.length),...r.flat()]),o=e.some(p=>p.needsMemory)?Ha():[],a=Ct(At.function,[...U(e.length),...e.map((p,m)=>U(m)).flat()]),c=Ct(At.export,[...U(e.length),...t.map((p,m)=>[...Er(p),0,...U(m)]).flat()]),l=e.map(p=>Ga(p.bodyCode,p.localTypes)),u=Ct(At.code,[...U(l.length),...l.flat()]),f=[...n,...s];return o.length>0&&f.push(...o),f.push(...a,...c,...u),f}function Za(e,t,n,r,s){return ai([{params:e,bodyCode:t,localTypes:n,needsMemory:r,hasReturn:s}],["compute"])}function ci(e,t=new Map){try{let n=e.captures.map(_r),r;try{let c=`function __wasm__(${n.map(l=>l.name).join(", ")}) { ${e.body} }`;r=oi.parse(c,{ecmaVersion:2022})}catch(c){return{success:!1,warnings:[],error:`Parse error: ${c.message}`}}let i=r.body[0].body.body,o=Na(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:Ra(a,n,o.localTypes),warnings:o.warnings}}catch(n){return{success:!1,warnings:[],error:n.message}}}function li(e){let t=ci(e);if(!t.success||!t.fn)return{bytes:new Uint8Array,warnings:t.warnings,success:!1,error:t.error};let n=Za(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 ui(e){let t=new Map,n=[];for(let c=0;c<e.length;c++){let l=e[c],u=l.captures.map(_r),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=ci(l,t);if(o.push(...u.warnings),!u.success||!u.fn){r.push({id:l.id,success:!1,error:u.error}),s.push(Ya(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=ai(s,i.map(c=>c.exportName));return{bytes:new Uint8Array(a),results:r,exports:i,needsMemory:i.some(c=>c.needsMemory),warnings:o}}function Ya(e){let t=e.hasReturn?[g.f64_const,...de(0)]:[];return{params:e.params,bodyCode:t,localTypes:[],needsMemory:!1,hasReturn:e.hasReturn}}async function fi(e,t){let n={};t&&(n.env={memory:t});let r=await WebAssembly.compile(e);return WebAssembly.instantiate(r,n)}async function Xa(e){let t=li(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 fi(t.bytes,n)).exports.compute,i=e.captures.map(_r);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 pi(e){let t=await Xa(e);return t.success?(globalThis[e.id]=t.fn,!0):(console.warn(`WASM compilation failed for ${e.id}:`,t.error),!1)}async function Qa(e){let t=0,n=0,r=[];for(let s of e)await pi(s)?t++:(n++,r.push(`Failed to compile ${s.id}`));return{compiled:t,failed:n,errors:r}}function mi(e){let t=ui(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(`
|
|
307
310
|
`).map(p=>` * ${p}`);return`/**
|
|
308
311
|
* WASM: ${u.id} (export: ${u.exportName})
|
|
309
312
|
${f.join(`
|
|
@@ -338,55 +341,55 @@ for(const{id,n,c,m}of __wasmExports){
|
|
|
338
341
|
const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;ab.set(mv.slice(off,off+ab.length));off+=ab.length}}
|
|
339
342
|
return r};
|
|
340
343
|
}})();
|
|
341
|
-
`.trim(),l=r.map(({_exportName:u,...f})=>f);return{code:c,results:l}}import*as
|
|
342
|
-
`),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=jn(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=
|
|
343
|
-
`),suffix:"__tjs.popStack();"})}function
|
|
344
|
-
${Gn}`}),!Yr&&!Xr){let
|
|
345
|
-
${
|
|
346
|
-
`}),
|
|
347
|
-
${
|
|
348
|
-
`}))}}if(
|
|
344
|
+
`.trim(),l=r.map(({_exportName:u,...f})=>f);return{code:c,results:l}}import*as di from"acorn";function kr(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}}ec(i,s)}}return s(e),tc(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)})`:$r(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)})`:$r(e,t)}}return $r(e,t)}function $r(e,t){let n=e.start,r=e.end;if(typeof n!="number"||typeof r!="number")return"";let s=yi(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 ec(e,t){for(let n of yi(e))t(n)}function yi(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 tc(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 jr(e){let t;try{t=di.parse(`function __wrap__(){${e}}`,{ecmaVersion:2022,sourceType:"module",locations:!1})}catch{return e}let n=`function __wrap__(){${e}}`,r=kr(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 nc(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 rc(e,t,n,r,s){let i=[],o=wt(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=Re(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=Re(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=Re(m,n),y=nc(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=Re(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=gi(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("=")?bi(r):r,d=gi(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 sc(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=jn(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(`
|
|
345
|
+
`),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=jn(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=fc(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(`
|
|
346
|
+
`),suffix:"__tjs.popStack();"})}function bi(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 ic(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 En(s)}function oc(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 ac(e){let t=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return t?t[1].trim():void 0}function cc(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 It(e,t={}){let{filename:n="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=t,o=[];e=Qn(e);let c=ac(e)||n,{code:l,tests:u,mocks:f,testRunner:p}=$t(e),{ast:m,originalSource:d,requiredParams:y,unsafeFunctions:b}=xe(l,{filename:n,colonShorthand:!0,dialect:t.dialect,moduleLoader:t.moduleLoader}),$=lc(m),S=Yt(l,{dialect:t.dialect,moduleLoader:t.moduleLoader,filename:n});for(let I of u)I.body=gt(I.body),S.tjsModes.tjsEquals&&(I.body=ht(I.body)),S.tjsModes.tjsStandard&&(I.body=jr(I.body));for(let I of f)I.body=gt(I.body),S.tjsModes.tjsEquals&&(I.body=ht(I.body)),S.tjsModes.tjsStandard&&(I.body=jr(I.body));let x={},T=[],E=[];for(let I of $){let J=I.id?.name||"anonymous",q=ic(l,J),be;if(q&&q.includes("="))try{let ne=q.matchAll(/(\w+)\s*=\s*/g),le=bi(q),ke=new Function(`return ${le}`)(),ue={};for(let Hn of ne){let dt=Hn[1];dt in ke&&(ue[dt]=ke[dt])}Object.keys(ue).length>0&&(be=ue)}catch{}let{types:$e,warnings:lo}=rc(I,d,y,q,l);o.push(...lo),x[J]=$e;for(let ne of I.params)if(ne.type==="AssignmentPattern"&&ne.left.type==="Identifier"&&ne.right.type==="Identifier"){let le=ne.left.name,ke=ne.right.name,ue=x[ke];if(ue&&$e.params[le]){let Hn=Object.entries(ue.params).map(([yo,go])=>({name:yo,type:go.type})),dt=ue.returns??{kind:"any"};$e.params[le].type={kind:"function",params:Hn,returns:dt}}}for(let ne of I.params)if(ne.type==="AssignmentPattern"){let le=ne.left?.name||ne.left?.value,ke=le?$e.params[le]:null;if(ke?.required&&ke.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 Yr=S.moduleSafety==="none"||b.has(J),uo=S.safeFunctions.has(J),fo=oc(l,J),po=cc(e,J),et={file:c,line:po??I.loc?.start.line??0,column:I.loc?.start.column??0},mo={unsafe:Yr,safe:uo,returnSafety:fo},Xr=S.polymorphicNames.has(J),Gn;if(Xr){let ne=[];for(let ke of $){let ue=ke.id?.name||"";ue.startsWith(J+"$")&&ne.push(ue)}let le={polymorphic:!0,variants:ne};et&&(le.source=`${et.file}:${et.line}`),Gn=`${J}.__tjs = ${JSON.stringify(le,null,2)}`}else Gn=uc(J,$e,mo,{debug:s,source:et,returnDefaults:be});if(T.push({position:I.end,text:`
|
|
347
|
+
${Gn}`}),!Yr&&!Xr){let ne=`${et.file}:${et.line}`,le=sc(J,$e,ne);le&&I.body&&I.body.start!==void 0&&(T.push({position:I.body.start+1,text:`
|
|
348
|
+
${le.preamble}
|
|
349
|
+
`}),le.suffix&&T.push({position:I.body.end-1,text:`
|
|
350
|
+
${le.suffix}
|
|
351
|
+
`}))}}if(S.tjsModes.tjsStandard){let I=kr(m,S.source);for(let J of I)E.push({start:J.start,end:J.end}),T.push({position:J.start,text:J.newText})}E.sort((I,J)=>J.start-I.start);let w=S.source;for(let{start:I,end:J}of E)w=w.slice(0,I)+w.slice(J);for(let I of T){let J=0;for(let q of E)q.start<I.position&&(J+=q.end-q.start);I.position-=J}T.sort((I,J)=>J.position-I.position);for(let{position:I,text:J}of T)w=w.slice(0,I)+J+w.slice(I);let j=w.includes("__tjs.typeError("),A=w.includes("__tjs.pushStack("),k=w.includes("Is("),v=w.includes("IsNot("),C=w.includes("Eq("),P=w.includes("NotEq("),M=w.includes("TypeOf("),D=/\bType\(/.test(w),B=/\bGeneric\(/.test(w),F=/\bFunctionPredicate\(/.test(w),Y=/\bEnum\(/.test(w),ce=/\bUnion\(/.test(w),Qe=w.includes("__tjs.bang("),Jt=w.includes("__tjs.toBool("),zn=w.includes("__tjs.checkFnShape("),Hr=S.tjsModes.tjsSafeEval;if(j||A||k||v||C||P||M||D||B||F||Y||ce||Qe||Jt||zn||Hr){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}}"),Jt&&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(`;
|
|
349
352
|
`)+`;
|
|
350
|
-
`:"",
|
|
351
|
-
`+
|
|
352
|
-
`+
|
|
353
|
+
`:"",q=[];j&&q.push("typeError","isMonadicError"),A&&q.push("pushStack","popStack","getStack"),C&&q.push("Eq"),P&&q.push("NotEq"),M&&q.push("TypeOf"),k&&q.push("Is","tjsEquals"),v&&q.push("IsNot"),D&&q.push("Type"),B&&q.push("Generic"),F&&q.push("FunctionPredicate"),Y&&q.push("Enum"),ce&&q.push("Union"),Jt&&q.push("toBool"),zn&&(q.push("checkFnShape"),j||q.push("typeError","isMonadicError")),Qe&&(q.push("bang"),j||q.push("typeError","isMonadicError"));let be=q.length>0?`{${q.join(",")}}`:"undefined";w=J+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${be};
|
|
354
|
+
`+w}Hr&&(w=`import { Eval, SafeFunction } from 'tjs-lang';
|
|
355
|
+
`+w);let mt;if(r){let I=ri(e);mt=si(u,f,I,w,i,S.extensions);let J=mt.filter(q=>!q.passed&&!q.inconclusive);if(J.length>0&&r===!0){let q=J.map(be=>{if(be.isSignatureTest)return` Function signature example is inconsistent:
|
|
353
356
|
${be.error}`;let $e=be.line?` (line ${be.line})`:"";return` Test '${be.description}'${$e} failed:
|
|
354
357
|
${be.error}`});throw new Error(`Transpile-time test failures:
|
|
355
|
-
${
|
|
356
|
-
`)}`)}}if(r==="only")return{code:"",types:
|
|
357
|
-
`+x),Zr=I.results}return{code:x,types:T,metadata:T,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:Zr}}function tc(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 Rt(e){let t={kind:e.kind};return e.nullable&&(t.nullable=!0),e.items&&(t.items=Rt(e.items)),e.shape&&(t.shape=Object.fromEntries(Object.entries(e.shape).map(([n,r])=>[n,Rt(r)]))),e.members&&(t.members=e.members.map(Rt)),t}function nc(e,t,n={},r={}){let s={};for(let[o,a]of Object.entries(t.params))s[o]={type:Rt(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:Rt(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 jn(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"?jn("__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=>jn(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 gi=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function rc(e,t,n){let r=t.params??[],s=t.returns??{kind:"any"},i=r.map(l=>l.type?.kind),o=i.every(l=>l&&gi.has(l))&&gi.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 sc(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 ic(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 oc(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=xi(y);for(let w of b){let E=w.match(/^(\w+)\s*:\s*(.+)$/);E&&f.push({name:E[1],example:E[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 ac(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 w=p+y[0].length-1,E=1,T=w+1;for(;T<c.length&&E>0;)c[T]==="("?E++:c[T]===")"&&E--,T++;let S=c.slice(w+1,T-1).trim(),_=c.slice(T).match(/^\s*->\s*(.+?)\s*\{/),x=_?_[1].trim():null;f.push({name:b,params:S,returnType:x}),p=T;continue}}}p++}}t.set(s,{name:s,constructorParams:u,methods:f})}return t}function xi(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 bi(e){return e.trim()?xi(e).map(t=>{let n=t.match(/^(\w+)\s*:\s*(.+)$/);if(n){let s=n[1],i=De(n[2].trim());return`${s}: ${i}`}let r=t.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=De(r[2].trim());return`${s}?: ${i}`}return t.startsWith("{")?"options: any":`${t}: any`}).join(", "):""}function cc(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 lc(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 uc(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 fc(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 pc(e,t,n={}){let r=[],s=ic(t),i=cc(t),o=ac(t),a=lc(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(sc(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?bi(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 w of m.methods){let E=w.params?bi(w.params):"";r.push(` ${w.name}(${E}): 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=De(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 w=m.declaration.trim(),E=w.match(/^\/\/\s*TS:\s*(.+)$/s);if(E)r.push(`export type ${p}${b} = ${E[1].trim()};`);else{let T=w.split(`
|
|
358
|
-
`).map(
|
|
358
|
+
${q.join(`
|
|
359
|
+
`)}`)}}if(r==="only")return{code:"",types:x,metadata:x,testResults:mt,testCount:mt?.length};let Zr;if(S.wasmBlocks.length>0){let I=mi(S.wasmBlocks);I.code&&(w=I.code+`
|
|
360
|
+
`+w),Zr=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:Zr}}function lc(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 Pt(e){let t={kind:e.kind};return e.nullable&&(t.nullable=!0),e.items&&(t.items=Pt(e.items)),e.shape&&(t.shape=Object.fromEntries(Object.entries(e.shape).map(([n,r])=>[n,Pt(r)]))),e.members&&(t.members=e.members.map(Pt)),t}function uc(e,t,n={},r={}){let s={};for(let[o,a]of Object.entries(t.params))s[o]={type:Pt(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:Pt(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 jn(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"?jn("__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=>jn(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 hi=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function fc(e,t,n){let r=t.params??[],s=t.returns??{kind:"any"},i=r.map(l=>l.type?.kind),o=i.every(l=>l&&hi.has(l))&&hi.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 pc(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 mc(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 dc(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=Ti(y);for(let $ of b){let S=$.match(/^(\w+)\s*:\s*(.+)$/);S&&f.push({name:S[1],example:S[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 yc(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,S=1,x=$+1;for(;x<c.length&&S>0;)c[x]==="("?S++:c[x]===")"&&S--,x++;let T=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:T,returnType:w}),p=x;continue}}}p++}}t.set(s,{name:s,constructorParams:u,methods:f})}return t}function Ti(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 xi(e){return e.trim()?Ti(e).map(t=>{let n=t.match(/^(\w+)\s*:\s*(.+)$/);if(n){let s=n[1],i=De(n[2].trim());return`${s}: ${i}`}let r=t.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=De(r[2].trim());return`${s}?: ${i}`}return t.startsWith("{")?"options: any":`${t}: any`}).join(", "):""}function gc(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 hc(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 bc(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 xc(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 Tc(e,t,n={}){let r=[],s=mc(t),i=gc(t),o=yc(t),a=hc(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(pc(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?xi(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 S=$.params?xi($.params):"";r.push(` ${$.name}(${S}): 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=De(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(),S=$.match(/^\/\/\s*TS:\s*(.+)$/s);if(S)r.push(`export type ${p}${b} = ${S[1].trim()};`);else{let x=$.split(`
|
|
361
|
+
`).map(T=>T.trim()).filter(T=>T.length>0).map(T=>` ${T}`).join(`
|
|
359
362
|
`);r.push(`export interface ${p}${b} {
|
|
360
|
-
${
|
|
361
|
-
}`)}}else r.push(`export declare function ${p}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(p)}let u=
|
|
363
|
+
${x}
|
|
364
|
+
}`)}}else r.push(`export declare function ${p}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(p)}let u=dc(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(T=>T.split("=")[0].trim())??[]),$=m.typeParams?`<${m.typeParams.join(", ")}>`:"",S=m.params.map((T,E)=>{let w=E===m.params.length-1;if(T.example.startsWith("[")&&T.example.endsWith("]")&&w){let A=T.example.slice(1,-1).trim(),k=!A||A==="null"?"any":b.has(A)?A:De(A);return`...${T.name}: ${k}[]`}if(T.example.startsWith("[")&&T.example.endsWith("]")){let A=T.example.slice(1,-1).trim(),k=!A||A==="null"?"any":b.has(A)?A:De(A);return`${T.name}: ${k}[]`}let j=T.example==="null"?"any":b.has(T.example)?T.example:De(T.example);return`${T.name}: ${j}`}).join(", "),x=m.returns!==void 0?m.returns==="null"?"any":b.has(m.returns)?m.returns:De(m.returns):"void";r.push(`export type ${p}${$} = (${S}) => ${x};`),l.add(p)}let f=bc(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=xc(p.value);r.push(`export declare const ${p.name}: ${y};`),l.add(p.name)}if(n.moduleName){let p=r.map(m=>` ${m}`).join(`
|
|
362
365
|
`);return`declare module '${n.moduleName}' {
|
|
363
366
|
${p}
|
|
364
367
|
}
|
|
365
368
|
`}return r.join(`
|
|
366
369
|
`)+`
|
|
367
|
-
`}function De(e){let t=e.trim();if(mc(t)){let n=dc(t).map(r=>De(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 mc(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 dc(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 yc=20,Ti=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 Ti.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 Q(e,t){if(!e)return{kind:"any"};let n=t?.depth??0;if(n>yc)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:Q(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]=Q(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?{...Q(s[0],t),nullable:!0}:{kind:"union",members:r.types.map(o=>Q(o,t))}}case $.SyntaxKind.IntersectionType:{let r=e,s={};for(let i of r.types){let o=Q(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(Q(i.type,t)):s.push(Q(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:Q(r.typeArguments[0],t)};if(s==="Promise"&&r.typeArguments?.length||(s==="Generator"||s==="AsyncGenerator"||s==="IterableIterator"||s==="AsyncIterableIterator")&&r.typeArguments?.length)return Q(r.typeArguments[0],t);if(r.typeArguments?.length){let i=Q(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]":Q(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=Q(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=Q(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]=Q(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 Q(i.constraint,t);if(i.default)return Q(i.default,t)}return Ti.has(s)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function gc(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 hc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return bc(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} {
|
|
370
|
+
`}function De(e){let t=e.trim();if(wc(t)){let n=Sc(t).map(r=>De(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 wc(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 Sc(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 Ec=20,Si=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 Si.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>Ec)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 Si.has(s)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function _c(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 $c(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return kc(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} {
|
|
368
371
|
${c.join(`
|
|
369
372
|
`)}
|
|
370
|
-
}`}function
|
|
373
|
+
}`}function kc(e,t,n,r){let s=e.name.getText(t),i=[];for(let u of e.typeParameters||[]){let f=u.name.getText(t);if(u.default){let p=W(u.default,void 0,n);i.push(`${f} = ${p}`)}else i.push(f)}let o=r?.find(u=>u.kind==="predicate"),a=r?.find(u=>u.kind==="declaration"),c;if(o?.text)c=o.text;else{let u=(e.typeParameters||[]).map(m=>m.name.getText(t)),f=["typeof x === 'object'","x !== null"];for(let m of e.members)if(_.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=d.startsWith("[")&&d.endsWith("]"),b=y?d.slice(1,-1):null;if(y?f.push(`${b} in x`):f.push(`'${d}' in x`),m.type&&_.isTypeReferenceNode(m.type)){let $=m.type.typeName.getText(t);u.includes($)&&(y?f.push(`${$}(x[${b}])`):f.push(`${$}(x.${d})`))}}c=`predicate(${["x",...u].join(", ")}) { return ${f.join(" && ")} }`}let l=[`description: '${s}'`,c];if(a?.text)l.push(`declaration ${a.text}`);else{let u=[];for(let f of e.members)if(_.isPropertySignature(f)&&f.name){let p=f.name.getText(t),m=f.questionToken?"?":"",d=f.type?f.type.getText(t):"any";u.push(`${p}${m}: ${d}`)}else if(_.isMethodSignature(f)&&f.name){let p=f.getText(t).trim();u.push(p.replace(/;$/,""))}u.length>0&&l.push(`declaration {
|
|
371
374
|
${u.join(`
|
|
372
375
|
`)}
|
|
373
376
|
}`)}return`Generic ${s}<${i.join(", ")}> {
|
|
374
377
|
${l.join(`
|
|
375
378
|
`)}
|
|
376
|
-
}`}function
|
|
379
|
+
}`}function jc(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 vc(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}' {
|
|
377
380
|
${s.join(`
|
|
378
381
|
`)}
|
|
379
|
-
}`}function
|
|
382
|
+
}`}function Mc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return e.type.kind===_.SyntaxKind.FunctionType?Ac(e,t,n):Cc(e,t,n,r);let i=jc(e.type,t);if(i)return`Union ${s} '${s}' ${i.join(" | ")}`;if(e.type.kind===_.SyntaxKind.FunctionType){let a=e.type,c=[];for(let f of a.parameters){let p=f.name?.getText(t)||"_";if(p==="this")continue;let m=W(f.type,void 0,n);m==="any"&&(m="null"),c.push(`${p}: ${m}`)}let l=W(a.type,void 0,n);l==="any"&&(l="null");let u=[];return c.length>0&&u.push(`params: { ${c.join(", ")} }`),l!=="undefined"&&u.push(`returns: ${l}`),`FunctionPredicate ${s} {
|
|
380
383
|
${u.join(`
|
|
381
384
|
`)}
|
|
382
|
-
}`}let o=
|
|
385
|
+
}`}let o=W(e.type,void 0,n);if(o==="any"||o==="undefined"){let a=e.type.getText(t).trim();return`Type ${s} {
|
|
383
386
|
// TS: ${a}
|
|
384
387
|
}`}return o==="''"||o==="0"||o==="true"||o==="null"?`Type ${s} ${o}`:`Type ${s} {
|
|
385
388
|
example: ${o}
|
|
386
|
-
}`}function
|
|
389
|
+
}`}function Ac(e,t,n){let r=e.name.getText(t),s=e.type,i=new Set,o=[];for(let f of e.typeParameters){let p=f.name.getText(t);if(i.add(p),f.default){let m=W(f.default,void 0,n);o.push(`${p} = ${m}`)}else o.push(p)}let a=[];for(let f of s.parameters){let p=f.name?.getText(t)||"_";if(p==="this")continue;let m=f.type?.getText(t)||"any";if(i.has(m))a.push(`${p}: ${m}`);else{let d=W(f.type,void 0,n);d==="any"&&(d="null"),a.push(`${p}: ${d}`)}}let c=s.type?.getText(t)||"void",l;c!=="void"&&(i.has(c)?l=c:(l=W(s.type,void 0,n),l==="any"&&(l="null"),l==="undefined"&&(l=void 0)));let u=[];return a.length>0&&u.push(`params: { ${a.join(", ")} }`),l!==void 0&&u.push(`returns: ${l}`),`FunctionPredicate ${r}<${o.join(", ")}> {
|
|
387
390
|
${u.join(`
|
|
388
391
|
`)}
|
|
389
|
-
}`}function
|
|
392
|
+
}`}function Cc(e,t,n,r){let s=e.name.getText(t),i=[];for(let f of e.typeParameters||[]){let p=f.name.getText(t);if(f.default){let m=W(f.default,void 0,n);i.push(`${p} = ${m}`)}else i.push(p)}let o=(e.typeParameters||[]).map(f=>f.name.getText(t)),a=r?.find(f=>f.kind==="predicate"),c=r?.find(f=>f.kind==="declaration"),l;a?.text?l=a.text:l=`predicate(${["x",...o].join(", ")}) { return true }`;let u=[`description: '${s}'`,l];if(c?.text)u.push(`declaration ${c.text}`);else{let f=e.type;if(f&&_.isTypeLiteralNode(f)){let p=[];for(let m of f.members)if(_.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=m.questionToken?"?":"",b=m.type?m.type.getText(t):"any";p.push(`${d}${y}: ${b}`)}else _.isMethodSignature(m)&&m.name&&p.push(m.getText(t).trim().replace(/;$/,""));p.length>0&&u.push(`declaration {
|
|
390
393
|
${p.join(`
|
|
391
394
|
`)}
|
|
392
395
|
}`)}else if(f){let p=f.getText(t).trim();u.push(`declaration {
|
|
@@ -394,13 +397,13 @@ ${s.join(`
|
|
|
394
397
|
}`)}}return`Generic ${s}<${i.join(", ")}> {
|
|
395
398
|
${u.join(`
|
|
396
399
|
`)}
|
|
397
|
-
}`}function
|
|
398
|
-
`:"",p=n||(
|
|
399
|
-
`:"";return`${f}${
|
|
400
|
-
`,
|
|
400
|
+
}`}function wi(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} */
|
|
401
|
+
`:"",p=n||(_.isFunctionDeclaration(e)&&e.name?e.name.getText(t):""),m=e.type?W(e.type,void 0,r,a):"",d=m&&m!=="undefined"&&m!=="any"&&!m.startsWith("new ")?`:! ${m}`:"";if(e.type&&(m==="any"||m==="undefined")){let j=e.type.getText(t);j!=="any"&&j!=="unknown"&&j!=="void"&&c.push(`return: ${j}`)}let y;if(e.body){let j=_.isBlock(e.body)?e.body.getText(t):`{ return ${e.body.getText(t)} }`;y=_.transpileModule(j,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else y="{ }";let b=e.modifiers?.some(j=>j.kind===_.SyntaxKind.ExportKeyword),$=e.modifiers?.some(j=>j.kind===_.SyntaxKind.AsyncKeyword),S=!!e.asteriskToken,x=b?"export ":"",T=$?"async ":"",E=S?"function* ":"function ",w=c.length>0?`/* TODO: TS types degraded \u2014 ${c.join(", ")} */
|
|
402
|
+
`:"";return`${f}${w}${x}${T}${E}${p}(${l.join(", ")})${d} ${y}`}function Rc(e,t,n,r){let s=t.name?.getText(n)||"",i=`_${s}_impl`,o=[],a=at(t.parameters,n,r),c="{ }";if(t.body){let m=t.body.getText(n);c=_.transpileModule(m,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}let l=t.modifiers?.some(m=>m.kind===_.SyntaxKind.AsyncKeyword),u=!!t.asteriskToken,f=l?"async ":"",p=u?"function* ":"function ";o.push(`${f}${p}${i}(${a.join(", ")}) ${c}`);for(let m of e){let d=at(m.parameters,n,r),y=m.parameters.map(E=>E.name.getText(n)),b=m.type?W(m.type,void 0,r):"",$=b&&b!=="undefined"&&b!=="any"?`:! ${b}`:"",{line:S}=n.getLineAndCharacterOfPosition(m.getStart(n)),x=`/* line ${S+1} */
|
|
403
|
+
`,T=u?"yield* ":"return ";o.push(`${x}${f}${p}${s}(${d.join(", ")})${$} { ${T}${i}(${y.join(", ")}) }`)}return o}function Nc(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(S=>S.kind===_.SyntaxKind.PrivateKeyword)&&!b.startsWith("#")&&l.set(b,`#${b}`)}}let u=y=>{let b=y;for(let[$,S]of l)b=b.replace(new RegExp(`(\\b\\w+)\\.${$}\\b`,"g"),`$1.${S}`);return b},f=[];for(let y of e.members){if(_.isConstructorDeclaration(y)){let b=at(y.parameters,t,n),$="{ }";if(y.body){let S=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});$=u(S.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),S=y.modifiers?.some(C=>C.kind===_.SyntaxKind.AsyncKeyword),x=at(y.parameters,t,n,void 0,i),T=y.type?W(y.type,void 0,n,i):"",E=T&&T!=="undefined"&&T!=="any"?`:! ${T}`:"",w="{ }";if(y.body){let C=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});w=u(C.outputText.trim())}let j=!!y.asteriskToken,A=$?"static ":"",k=S?"async ":"",v=j?"*":"";f.push(` ${A}${k}${v}${b}(${x.join(", ")})${E} ${w}`)}if(_.isGetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),S=y.modifiers?.some(w=>w.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=y.type?W(y.type,void 0,n,i):"",T=x&&x!=="undefined"&&x!=="any"&&!x.startsWith("new ")?`: ${x}`:"",E="{ }";if(y.body){let w=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});E=u(w.outputText.trim())}f.push(` ${S}get ${b}()${T} ${E}`)}if(_.isSetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),S=y.modifiers?.some(E=>E.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=at(y.parameters,t,n),T="{ }";if(y.body){let E=_.transpileModule(y.body.getText(t),{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}});T=u(E.outputText.trim())}f.push(` ${S}set ${b}(${x.join(", ")}) ${T}`)}if(_.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t),S=y.modifiers?.some(T=>T.kind===_.SyntaxKind.StaticKeyword)?"static ":"",x=l.get(b)||b;if(y.initializer){let T=y.initializer.getText(t),E=T.trimStart().startsWith("{")?`(${T})`:T,j=_.transpileModule(E,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();E!==T&&(j=j.replace(/^\(/,"").replace(/\);?\s*$/,"")),f.push(` ${S}${x} = ${j}`)}else f.push(` ${S}${x}`)}}let m=e.modifiers?.some(y=>y.kind===_.SyntaxKind.ExportKeyword)?"export ":"",d=c?` extends ${c}`:"";return`${m}class ${o}${d} {
|
|
401
404
|
${f.join(`
|
|
402
405
|
`)}
|
|
403
|
-
}`}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=
|
|
406
|
+
}`}function at(e,t,n,r,s){let i=[];for(let o of e){let a=o.name.getText(t);if(a==="this")continue;let c=!!o.dotDotDotToken,l=!!o.questionToken||!!o.initializer,u=W(o.type,void 0,n,s);if(c)u==="any"||u==="undefined"?i.push(`...${a}: [null]`):i.push(`...${a}: ${u}`);else if(o.initializer){let f=o.initializer.getText(t);i.push(`${a} = ${f}`)}else if(u==="any"||u==="undefined"){if(i.push(a),r&&o.type){let f=o.type.getText(t);f!=="any"&&f!=="unknown"&&r.push(`${a}: ${f}`)}}else l?i.push(`${a}: ${u} | undefined`):i.push(`${a}: ${u}`)}return i}function vn(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=_c(e,n);return c&&(a.typeParams=c),a}function Pc(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,S;if(y.initializer){let x=y.initializer.getText(t);try{S=JSON.parse(x)}catch{S=x}}m[b]={type:ee(y.type,s),required:!$,default:S}}let d={name:f,params:m,returns:u.type?ee(u.type,s):void 0};p?a[f]=d:o[f]=d}}let l={name:i,methods:o,staticMethods:a,constructor:c};if(e.typeParameters&&e.typeParameters.length>0){let u={};for(let f of e.typeParameters){let p=f.name.getText(t),m={};f.constraint&&(m.constraint=W(f.constraint,void 0,n,r)),f.default&&(m.default=W(f.default,void 0,n,r)),u[p]=m}l.typeParams=u}return l}var Ic=new Set(["TjsStrict","TjsEquals","TjsClass","TjsDate","TjsNoeval","TjsNoVar","TjsStandard","TjsSafeEval"]);function Dc(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)Ic.has(i)&&!t.includes(i)&&t.push(i)}return t}function Oc(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 Bc(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 Lc(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 Fc(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 Uc(e,t={}){let{emitTJS:n=!1,filename:r="input.ts"}=t,s=[],i=Lc(e),o=n?Fc(e):[],a=n?Oc(e):[],c=Dc(e),l=c.includes("TjsClass")||c.includes("TjsStrict"),u=_.createSourceFile(r,e,_.ScriptTarget.Latest,!0),f=n?Bc(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))}},S=new Map,x=new Map;function T(k){if(_.isTypeAliasDeclaration(k)&&S.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,T)}T(u);let E={typeAliases:S,interfaces:x,sourceFile:u,warnings:s,resolvedCache:new Map},w=new Map;for(let k of u.statements)if(_.isFunctionDeclaration(k)&&k.name){let v=k.name.getText(u);w.has(v)||w.set(v,{signatures:[],implementation:null});let C=w.get(v);k.body?C.implementation=k:C.signatures.push(k)}for(let[k,v]of w)(v.signatures.length===0||!v.implementation)&&w.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=w.get(C);if(P){if(k.body)if(n)p.push(...Rc(P.signatures,k,u,s));else{let M=[];for(let B of P.signatures)M.push(vn(B,u,s,E));let D=vn(k,u,s,E);D.overloads=M,d[C]=D}}else n?p.push(wi(k,u,void 0,s,!0,E)):d[C]=vn(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=wi(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=vn(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=$c(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=Mc(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=vc(k,u,s);M&&p.push(M)}}if(_.isClassDeclaration(k)&&k.name){let C=k.name.getText(u);if(v=!0,n){let P=Nc(k,u,s,void 0,l);p.push(P)}else y[C]=Pc(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(`
|
|
404
407
|
`)+`
|
|
405
408
|
|
|
406
409
|
`:""}/* tjs <- ${k} */
|
|
@@ -411,28 +414,28 @@ ${f.join(`
|
|
|
411
414
|
|
|
412
415
|
`):"";return{code:C+p.join(`
|
|
413
416
|
|
|
414
|
-
`)+P,warnings:s.length>0?s:void 0}}let A
|
|
417
|
+
`)+P,warnings:s.length>0?s:void 0}}let A=_.transpileModule(e,{compilerOptions:{target:_.ScriptTarget.ESNext,module:_.ModuleKind.ESNext,removeComments:!1}}).outputText;for(let[k,v]of Object.entries(d)){let C={params:Object.fromEntries(Object.entries(v.params).map(([M,D])=>[M,{type:D.type.kind,required:D.required,default:D.default}])),returns:v.returns?{type:v.returns.kind}:void 0};v.typeParams&&(C.typeParams=v.typeParams);let P=JSON.stringify(C,null,2);A+=`
|
|
415
418
|
${k}.__tjs = ${P};
|
|
416
419
|
`}for(let[k,v]of Object.entries(y)){let C={constructor:v.constructor?{params:Object.fromEntries(Object.entries(v.constructor.params??{}).map(([M,D])=>[M,{type:D.type.kind,required:D.required,default:D.default}]))}:void 0,methods:Object.fromEntries(Object.entries(v.methods??{}).map(([M,D])=>[M,{params:Object.fromEntries(Object.entries(D.params??{}).map(([B,F])=>[B,{type:F.type.kind,required:F.required}])),returns:D.returns?{type:D.returns.kind}:void 0}])),staticMethods:Object.fromEntries(Object.entries(v.staticMethods??{}).map(([M,D])=>[M,{params:Object.fromEntries(Object.entries(D.params??{}).map(([B,F])=>[B,{type:F.type.kind,required:F.required}])),returns:D.returns?{type:D.returns.kind}:void 0}]))};v.typeParams&&(C.typeParams=v.typeParams);let P=JSON.stringify(C,null,2);A+=`
|
|
417
420
|
${k}.__tjs = ${P};
|
|
418
421
|
`,A+=`
|
|
419
|
-
${
|
|
420
|
-
`}return{code:A,types:d,classes:Object.keys(y).length>0?y:void 0,warnings:s.length>0?s:void 0}}import{s as wi}from"tosijs-schema";function Ei(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function Mn(e){return wi.infer(e)}function vr(e){return Mn(e)}vr.type=Ei;vr.infer=Mn;var Pc=new Proxy(vr,{get(e,t){return t==="type"?Ei:t==="infer"?Mn:wi[t]},apply(e,t,n){return Mn(n[0])}});async function An(e){let t=`${ue}:${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 Ic(e){let t=`${ue}:${e}`,n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}var Dc="tjs-metadata-cache",Oc=1,re="modules",Cn=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(Dc,Oc);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 An(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!==ue){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 An(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:ue,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 An(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!==ue&&(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}}},It=null;async function Nn(){return It||(It=new Cn,await It.open()),It}function Bc(e){It=e}function Ge(e,t,n,r,s){n||(n=R),(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 _i(e,t,n,r,s){var i=[];n||(n=R),(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 Mr(e,t,n){n(e,t)}function He(e,t,n){}var R={};R.Program=R.BlockStatement=R.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")}};R.Statement=Mr;R.EmptyStatement=He;R.ExpressionStatement=R.ParenthesizedExpression=R.ChainExpression=function(e,t,n){return n(e.expression,t,"Expression")};R.IfStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Statement"),e.alternate&&n(e.alternate,t,"Statement")};R.LabeledStatement=function(e,t,n){return n(e.body,t,"Statement")};R.BreakStatement=R.ContinueStatement=He;R.WithStatement=function(e,t,n){n(e.object,t,"Expression"),n(e.body,t,"Statement")};R.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)}};R.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")}};R.ReturnStatement=R.YieldExpression=R.AwaitExpression=function(e,t,n){e.argument&&n(e.argument,t,"Expression")};R.ThrowStatement=R.SpreadElement=function(e,t,n){return n(e.argument,t,"Expression")};R.TryStatement=function(e,t,n){n(e.block,t,"Statement"),e.handler&&n(e.handler,t),e.finalizer&&n(e.finalizer,t,"Statement")};R.CatchClause=function(e,t,n){e.param&&n(e.param,t,"Pattern"),n(e.body,t,"Statement")};R.WhileStatement=R.DoWhileStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.body,t,"Statement")};R.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")};R.ForInStatement=R.ForOfStatement=function(e,t,n){n(e.left,t,"ForInit"),n(e.right,t,"Expression"),n(e.body,t,"Statement")};R.ForInit=function(e,t,n){e.type==="VariableDeclaration"?n(e,t):n(e,t,"Expression")};R.DebuggerStatement=He;R.FunctionDeclaration=function(e,t,n){return n(e,t,"Function")};R.VariableDeclaration=function(e,t,n){for(var r=0,s=e.declarations;r<s.length;r+=1){var i=s[r];n(i,t)}};R.VariableDeclarator=function(e,t,n){n(e.id,t,"Pattern"),e.init&&n(e.init,t,"Expression")};R.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")};R.Pattern=function(e,t,n){e.type==="Identifier"?n(e,t,"VariablePattern"):e.type==="MemberExpression"?n(e,t,"MemberPattern"):n(e,t)};R.VariablePattern=He;R.MemberPattern=Mr;R.RestElement=function(e,t,n){return n(e.argument,t,"Pattern")};R.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")}};R.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")}};R.Expression=Mr;R.ThisExpression=R.Super=R.MetaProperty=He;R.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")}};R.ObjectExpression=function(e,t,n){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];n(i,t)}};R.FunctionExpression=R.ArrowFunctionExpression=R.FunctionDeclaration;R.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")}};R.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")}};R.TemplateElement=He;R.UnaryExpression=R.UpdateExpression=function(e,t,n){n(e.argument,t,"Expression")};R.BinaryExpression=R.LogicalExpression=function(e,t,n){n(e.left,t,"Expression"),n(e.right,t,"Expression")};R.AssignmentExpression=R.AssignmentPattern=function(e,t,n){n(e.left,t,"Pattern"),n(e.right,t,"Expression")};R.ConditionalExpression=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Expression"),n(e.alternate,t,"Expression")};R.NewExpression=R.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")}};R.MemberExpression=function(e,t,n){n(e.object,t,"Expression"),e.computed&&n(e.property,t,"Expression")};R.ExportNamedDeclaration=R.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")};R.ExportAllDeclaration=function(e,t,n){e.exported&&n(e.exported,t),n(e.source,t,"Expression")};R.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")};R.ImportExpression=function(e,t,n){n(e.source,t,"Expression")};R.ImportSpecifier=R.ImportDefaultSpecifier=R.ImportNamespaceSpecifier=R.Identifier=R.PrivateIdentifier=R.Literal=He;R.TaggedTemplateExpression=function(e,t,n){n(e.tag,t,"Expression"),n(e.quasi,t,"Expression")};R.ClassDeclaration=R.ClassExpression=function(e,t,n){return n(e,t,"Class")};R.Class=function(e,t,n){e.id&&n(e.id,t,"Pattern"),e.superClass&&n(e.superClass,t,"Expression"),n(e.body,t)};R.ClassBody=function(e,t,n){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];n(i,t)}};R.MethodDefinition=R.PropertyDefinition=R.Property=function(e,t,n){e.computed&&n(e.key,t,"Expression"),e.value&&n(e.value,t,"Expression")};var Fc={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function Uc(e,t={}){let n={...Fc,...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=[$i()];if(_i(s,{FunctionDeclaration(u,f,p){let m=$i();l.push(m);for(let d of u.params)qc(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})}}),Ge(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&&Ge(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;Ge(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&&!Ar(y))&&u.add(m)}}}),Ge(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?Ar(p.init)&&r.push({severity:c,message:`'let ${m}' is initialized to ${ki(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"}))}}}),Ge(s,{AssignmentExpression(f){if(f.operator!=="="||f.left.type!=="Identifier")return;let p=f.left.name;u.has(p)&&Ar(f.right)&&r.push({severity:c,message:`Cannot assign ${ki(f.right)} to typed let '${p}'.`,line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"safe-assign-no-nullish"})}})}return n.noExplicitNew&&Ge(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 $i(){return{declarations:new Map}}function Ar(e){return e?e.type==="Identifier"&&e.name==="undefined"||e.type==="Literal"&&e.value===null||e.type==="UnaryExpression"&&e.operator==="void":!1}function ki(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 qc(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 Wc(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]!==`
|
|
421
|
-
`;)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
|
|
422
|
+
${ei(k)}
|
|
423
|
+
`}return{code:A,types:d,classes:Object.keys(y).length>0?y:void 0,warnings:s.length>0?s:void 0}}import{s as Ei}from"tosijs-schema";function _i(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function Mn(e){return Ei.infer(e)}function vr(e){return Mn(e)}vr.type=_i;vr.infer=Mn;var qc=new Proxy(vr,{get(e,t){return t==="type"?_i:t==="infer"?Mn:Ei[t]},apply(e,t,n){return Mn(n[0])}});async function An(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 Wc(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 Jc="tjs-metadata-cache",Vc=1,re="modules",Cn=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(Jc,Vc);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 An(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 An(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 An(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}}},Dt=null;async function Rn(){return Dt||(Dt=new Cn,await Dt.open()),Dt}function Kc(e){Dt=e}function Ge(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 $i(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 Mr(e,t,n){n(e,t)}function He(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=Mr;N.EmptyStatement=He;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=He;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=He;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=He;N.MemberPattern=Mr;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=Mr;N.ThisExpression=N.Super=N.MetaProperty=He;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=He;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=He;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 Gc={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function Hc(e,t={}){let n={...Gc,...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=[ki()];if($i(s,{FunctionDeclaration(u,f,p){let m=ki();l.push(m);for(let d of u.params)Zc(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})}}),Ge(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&&Ge(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;Ge(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&&!Ar(y))&&u.add(m)}}}),Ge(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?Ar(p.init)&&r.push({severity:c,message:`'let ${m}' is initialized to ${ji(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"}))}}}),Ge(s,{AssignmentExpression(f){if(f.operator!=="="||f.left.type!=="Identifier")return;let p=f.left.name;u.has(p)&&Ar(f.right)&&r.push({severity:c,message:`Cannot assign ${ji(f.right)} to typed let '${p}'.`,line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"safe-assign-no-nullish"})}})}return n.noExplicitNew&&Ge(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 ki(){return{declarations:new Map}}function Ar(e){return e?e.type==="Identifier"&&e.name==="undefined"||e.type==="Literal"&&e.value===null||e.type==="UnaryExpression"&&e.operator==="void":!1}function ji(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 Zc(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 Yc(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]!==`
|
|
424
|
+
`;)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 Mi(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 vi(e){let t=e.split(`
|
|
422
425
|
`),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(`
|
|
423
|
-
`)}function
|
|
426
|
+
`)}function Xc(e){return e.split(`
|
|
424
427
|
`).map((n,r)=>r===0?n:n.replace(/^[ \t]*\*[ \t]?/,"")).join(`
|
|
425
|
-
`)}function
|
|
428
|
+
`)}function Ai(e){let t=[],n=Mi(e),r=Yc(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=vi(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=vi(Xc(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=Nn(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 S=y;y++;let x=0,T=null,E=!1;for(;y<e.length;){let w=e[y],j=y>0?e[y-1]:"";if(T)w===T&&j!=="\\"&&(T=null);else if(w==='"'||w==="'"||w==="`")T=w,E=!0;else if(w==="{"){if(x===0&&E)break;x++,E=!0}else w==="("||w==="["?(x++,E=!0):w==="}"||w===")"||w==="]"?x--:/\s/.test(w)||(E=!0);y++}b=e.slice(S,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=el(e,m-1);if(d===-1)continue;let y=e.slice(m,d),b=tl(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
|
|
426
429
|
${f.signature}
|
|
427
430
|
\`\`\``:`\`\`\`tjs
|
|
428
|
-
${
|
|
431
|
+
${Qc(f)}
|
|
429
432
|
\`\`\``).join(`
|
|
430
433
|
|
|
431
|
-
`);return{items:t,markdown:u}}function
|
|
434
|
+
`);return{items:t,markdown:u}}function Qc(e){let t=e.extendsName?`class ${e.name} extends ${e.extendsName} {`:`class ${e.name} {`;if(e.members.length===0)return`${t}
|
|
432
435
|
}`;let n=e.members.map(r=>` ${r}`).join(`
|
|
433
436
|
`);return`${t}
|
|
434
437
|
${n}
|
|
435
|
-
}`}function
|
|
438
|
+
}`}function el(e,t){let n=0,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 tl(e){let t=[],n=Mi(e),r=/(?:^|\n)\s*((?:(?:static|async|get|set)\s+)*)(constructor|#?\w+)\s*\(/g,s;for(;(s=r.exec(e))!==null;){if(n[s.index]!==0)continue;let i=s[1].trim(),o=s[2],a=s.index+s[0].length-1,c=Nn(e,a+1);if(c===-1)continue;let l=e.slice(a,c+1),u=c+1,f="";for(;u<e.length&&/\s/.test(e[u]);)u++;if(e[u]===":"){let m=u;for(;u<e.length&&e[u]!=="{";)u++;f=e.slice(m,u).trimEnd()}let p=i?`${i} `:"";t.push(`${p}${o}${l}${f}`)}return t}function nl(e,t){let n=Ai(e),r="";for(let i of n.items)if(i.type==="doc")r+=i.content+`
|
|
436
439
|
|
|
437
440
|
`;else if(i.type==="function"){let o=t?.[i.name];if(r+=`## ${i.name}
|
|
438
441
|
|
|
@@ -441,7 +444,7 @@ ${i.signature}
|
|
|
441
444
|
\`\`\`
|
|
442
445
|
|
|
443
446
|
`,o?.params&&Object.keys(o.params).length>0){r+=`**Parameters:**
|
|
444
|
-
`;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?
|
|
447
|
+
`;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}
|
|
445
448
|
`}r+=`
|
|
446
449
|
`}o?.returns&&(r+=`**Returns:** ${o.returns.kind||"void"}
|
|
447
450
|
|
|
@@ -450,10 +453,10 @@ ${i.signature}
|
|
|
450
453
|
`;let o=i.extendsName?`class ${i.name} extends ${i.extendsName} {`:`class ${i.name} {`,a=i.members.length===0?"":`
|
|
451
454
|
`+i.members.map(c=>` ${c}`).join(`
|
|
452
455
|
`)+`
|
|
453
|
-
`;r+="```tjs\n"+o+a+"}\n```\n\n"}let{tests:s}
|
|
456
|
+
`;r+="```tjs\n"+o+a+"}\n```\n\n"}let{tests:s}=$t(e);for(let i of s)i.description&&(/^test \d+$/.test(i.description)||(r+=`### ${i.description} (test cases)
|
|
454
457
|
|
|
455
|
-
`,r+="```tjs\n",r+=
|
|
456
|
-
`,r+="```\n\n"));return r.trim()||"*No documentation available*"}function Hc(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=Rn(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=Rn(e,u);if(f>=u){let p=e.slice(o,a),m=l[1],d=e.slice(u,f);n+=Yc(p,m,d),t=f+1;continue}}}}n+=s,t++}return n}function Rn(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 Zc(e){if(typeof e=="function")return null;try{let t=JSON.stringify(e);return t===void 0?null:t}catch{return null}}function Yc(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 Xc,readFileSync as Qc}from"node:fs";import{dirname as Cr,isAbsolute as el,resolve as Dt,sep as tl}from"node:path";var Nr=[".tjs",".ts",".js"],nl={readFile(e){try{return Qc(e,"utf8")}catch{return null}},exists(e){try{return Xc(e)}catch{return!1}}},Rr=class{cache=new Map;fs;baseDir;bareSpecifierRoots;cacheLimit;constructor(t={}){this.fs=t.fs??nl,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(Dt(n?Cr(n):this.baseDir,t)):el(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=rl(o.ast),c=sl(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(Nr.some(n=>t.endsWith(n)))return this.fs.exists(t)?t:null;for(let n of Nr){let r=t+n;if(this.fs.exists(r))return r}for(let n of Nr){let r=Dt(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(Dt(s,t));if(i)return i}let r=n?Cr(n):this.baseDir;for(r=Dt(r);;){let s=this.tryExtensions(Dt(r,"node_modules",t));if(s)return s;let i=Cr(r);if(i===r)break;r=i}return null}};function rl(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 sl(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 il(e){let t=e instanceof Map?e:new Map(Object.entries(e)),n=s=>s.split("/").join(tl),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 Pr,filter as Di}from"tosijs-schema";var Pn=Symbol.for("tjs.equals");function Dn(e,t){if(e!==null&&typeof e=="object"&&typeof e[Pn]=="function")return e[Pn](t);if(t!==null&&typeof t=="object"&&typeof t[Pn]=="function")return t[Pn](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===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(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>Dn(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=>Dn(e[s],t[s]))}var pe=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 ol(e){return e instanceof pe||e&&e.$error===!0}var lt=new Map,al=3600*1e3,cl=100*1024,Ir="proc_";function Dr(e){return typeof e=="string"&&e.startsWith(Ir)}function Or(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 ll(){return typeof crypto<"u"&&crypto.randomUUID?Ir+crypto.randomUUID():Ir+Math.random().toString(36).slice(2)+Date.now().toString(36)}var Oi=new Set(["__proto__","constructor","prototype"]);function Ai(e){if(Oi.has(e))throw new Error(`Security Error: Access to '${e}' is forbidden`)}var ul=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function fl(e){try{let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")return!0;let n=t.hostname.toLowerCase();return!!(ul.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 pl(e){return!!(/\([^)]*[+*][^)]*\)[+*]/.test(e)||/\(([^|)]+)\|\1\)[+*]/.test(e)||/\(\.\*\)\+/.test(e)||/\(\.\+\)\+/.test(e)||/\(\[.*\]\+\)\+/.test(e))}function Oe(e){return{...e,state:Object.create(e.state)}}function ml(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 N(e,t){if(e&&typeof e=="object"&&e.$kind==="arg")return t.args[e.path];if(e&&typeof e=="object"&&e.$expr)return X(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(Oi.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]=N(e[r],t);return n}return Array.isArray(e)?e.map(n=>N(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 Ce={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=Di(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?Pr(e,t):Pr(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 Ce.Set([...t,...r])},intersection(n){let r=n?.toArray?.()??n??[];return Ce.Set(t.filter(s=>r.includes(s)))},diff(n){let r=n?.toArray?.()??n??[];return Ce.Set(t.filter(s=>!r.includes(s)))},forEach(n){t.forEach(n)},map(n){return Ce.Set(t.map(n))},filter(n){return Ce.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})()},In={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."},dl=.01,Ci=1e-4,Ni=.001,yl=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 X(e,t){if(e==null||typeof e!="object"||!("$expr"in e))return e;if(t.fuel&&(t.fuel.current-=dl,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 Ce)return Ce[e.name];if(e.name in In)throw new Error(In[e.name]);return}case"member":{let n=X(e.object,t);if(e.optional&&n==null)return;let r=typeof e.property=="object"&&e.property!==null?X(e.property,t):e.property;return Ai(String(r)),n?.[r]}case"binary":{let n=X(e.left,t),r=X(e.right,t);switch(e.op){case"+":{let s=n+r;if(typeof s=="string"&&t.fuel&&(t.fuel.current-=s.length*Ci,t.fuel.current<=0)){t.error=new pe("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 Dn(n,r);case"!=":return!Dn(n,r);case"===":return n===r;case"!==":return n!==r;default:throw new Error(`Unknown binary operator: ${e.op}`)}}case"unary":{let n=X(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=X(e.left,t);return e.op==="&&"?n&&X(e.right,t):e.op==="??"?n??X(e.right,t):n||X(e.right,t)}case"conditional":{let n=X(e.test,t);return X(n?e.consequent:e.alternate,t)}case"array":return e.elements.map(n=>X(n,t));case"object":{let n={};for(let r of e.properties)n[r.key]=X(r.value,t);return n}case"call":{if(e.callee==="Error"){let r=e.arguments.map(i=>X(i,t)),s=typeof r[0]=="string"?r[0]:"Error";t.error=new pe(s,"Error");return}if(e.callee in Ce){let r=Ce[e.callee];if(typeof r=="function"){let s=e.arguments.map(i=>X(i,t));return r(...s)}}throw t.resolver(e.callee)?new Error(`Atom calls in expressions not yet supported: ${e.callee}`):e.callee in In?new Error(In[e.callee]):new Error(`Unknown function: ${e.callee}`)}case"methodCall":{let n=X(e.object,t);if(e.optional&&n==null)return;let r=e.method;if(Ai(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=>X(a,t)),o=s.apply(n,i);if(t.fuel&&yl.has(r)){let a=0;if(typeof o=="string"?a=o.length*Ci:Array.isArray(o)?a=o.length*Ni:typeof o=="object"&&o!==null&&(a=Object.keys(o).length*Ni),t.fuel.current-=a,t.fuel.current<=0){t.error=new pe("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}=typeof s=="string"?{docs:s}:s;return{op:e,inputSchema:t,outputSchema:n,exec:async(l,u)=>{let{op:f,result:p,...m}=l;if(u.error)return;let d=u.trace?{...u.state}:null,y=u.fuel.current,b,w;try{let E=u.costOverrides?.[e],T=E!==void 0?E:a,S=typeof T=="function"?T(m,u):T;if((u.fuel.current-=S)<=0){u.error=new pe("Out of Fuel",e);return}let _,x=async()=>r(l,u);if(b=o>0?await Promise.race([x(),new Promise((j,A)=>{_=setTimeout(()=>A(new Error(`Atom '${e}' timed out`)),o)})]).finally(()=>clearTimeout(_)):await x(),l.result){if(u.consts.has(l.result))throw new Error(`Cannot reassign const variable '${l.result}'`);if(b!==void 0&&n&&!Pr(b,n)){u.error=new pe(`Output validation failed for '${e}'`,e);return}u.state[l.result]=b,l.resultConst&&u.consts.add(l.result)}}catch(E){w=E.message||String(E),u.error=new pe(w,e,E)}finally{if(u.trace&&d){let E=ml(d,u.state);u.trace.push({op:e,input:m,stateDiff:E,result:b,error:w,fuelBefore:y,fuelAfter:u.fuel.current,timestamp:new Date().toISOString()})}}},docs:i,timeoutMs:o,cost:a,create:l=>({op:e,...l})}}var ge=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}),gl=O("if",h.object({condition:h.any,then:h.array(h.any),else:h.array(h.any).optional}),void 0,async(e,t)=>{X(e.condition,t)?await ge.exec({op:"seq",steps:e.then},t):e.else&&await ge.exec({op:"seq",steps:e.else},t)},{docs:"If/Else",timeoutMs:0,cost:.1}),hl=O("while",h.object({condition:h.any,body:h.array(h.any)}),void 0,async(e,t)=>{for(;X(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 ge.exec({op:"seq",steps:e.body},t),t.output!==void 0||t.error)return}},{docs:"While Loop",timeoutMs:0,cost:.1}),bl=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=N(e.value,t);if(r!=null&&!ol(r)&&(typeof r!="object"||Array.isArray(r))){let s=new pe(`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=Di(n,e.schema);r instanceof Error||(n=r)}}return t.output=n,n},{docs:"Return",cost:.1}),xl=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 ge.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 ge.exec({op:"seq",steps:e.catch},t)}},{docs:"Try/Catch",timeoutMs:0,cost:.1}),Sl=O("Error",h.object({args:h.array(h.any).optional}),void 0,async(e,t)=>{let n=e.args?.[0]??"Error";t.error=new pe(String(n),"Error")},{docs:"Trigger error flow",cost:.1}),Tl=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]=N(t,n)},{docs:"Set Variable",cost:.1}),wl=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]=N(t,n),n.consts.add(e)},{docs:"Set Const Variable (immutable)",cost:.1}),El=O("varGet",h.object({key:h.string}),h.any,async({key:e},t)=>N(e,t),{docs:"Get Variable",cost:.1}),_l=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]=N({$kind:"arg",path:n},t);else for(let[n,r]of Object.entries(e))t.state[n]=N({$kind:"arg",path:r},t)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:.2}),$l=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]=N(e[n],t))},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:.1}),kl=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]=N(r,t);else for(let[r,s]of Object.entries(e))n[r]=N(s,t);return n},{docs:"Export variables from the current scope, with optional renaming.",cost:.2}),jl=O("scope",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{let n=Oe(t);await ge.exec({op:"seq",steps:e},n),n.output!==void 0&&(t.output=n.output)},{docs:"Create new scope",timeoutMs:0,cost:.1}),vl=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=N(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=Oe(r);a.state[t]=o,await ge.exec({op:"seq",steps:n},a),s.push(a.state.result??null)}return s},{docs:"Map Array",timeoutMs:0,cost:1}),Ml=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=N(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=Oe(r);a.state[t]=o,X(n,a)&&s.push(o)}return s},{docs:"Filter Array",timeoutMs:0,cost:1}),Al=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=N(e,i),a=N(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=Oe(i);u.state[t]=l,u.state[n]=c,await ge.exec({op:"seq",steps:s},u),c=u.state.result??c}return c},{docs:"Reduce Array",timeoutMs:0,cost:1}),Cl=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=N(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=Oe(r);if(o.state[t]=i,X(n,o))return i}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),Nl=O("push",h.object({list:h.array(h.any),item:h.any}),h.array(h.any),async({list:e,item:t},n)=>{let r=N(e,n),s=N(t,n);return Array.isArray(r)&&r.push(s),r},{docs:"Push to Array",cost:1}),Rl=O("len",h.object({list:h.any}),h.number,async({list:e},t)=>{let n=N(e,t);return Array.isArray(n)||typeof n=="string"?n.length:0},{docs:"Length",cost:1}),Pl=O("split",h.object({str:h.string,sep:h.string}),h.array(h.string),async({str:e,sep:t},n)=>N(e,n).split(N(t,n)),{docs:"Split String",cost:1}),Il=O("join",h.object({list:h.array(h.string),sep:h.string}),h.string,async({list:e,sep:t},n)=>N(e,n).join(N(t,n)),{docs:"Join String",cost:1}),Dl=O("template",h.object({tmpl:h.string,vars:h.record(h.any)}),h.string,async({tmpl:e,vars:t},n)=>N(e,n).replace(/\{\{(\w+)\}\}/g,(s,i)=>String(N(t[i],n)??"")),{docs:"String Template",cost:1}),Ol=O("regexMatch",h.object({pattern:h.string,value:h.any}),h.boolean,async({pattern:e,value:t},n)=>{if(pl(e))throw new Error(`Suspicious regex pattern rejected (potential ReDoS): ${e}`);let r=N(t,n);return new RegExp(e).test(r)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),Bl=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=N(e,n),s=N(t,n),i={};return r&&Array.isArray(s)&&s.forEach(o=>i[o]=r[o]),i},{docs:"Pick Keys",cost:1}),Ll=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=N(e,n),s=new Set(N(t,n)),i={};return r&&Object.keys(r).forEach(o=>{s.has(o)||(i[o]=r[o])}),i},{docs:"Omit Keys",cost:1}),Fl=O("merge",h.object({a:h.record(h.any),b:h.record(h.any)}),h.record(h.any),async({a:e,b:t},n)=>({...N(e,n),...N(t,n)}),{docs:"Merge Objects",cost:1}),Ul=O("keys",h.object({obj:h.record(h.any)}),h.array(h.string),async({obj:e},t)=>Object.keys(N(e,t)??{}),{docs:"Object Keys",cost:1}),Ri=10,Pi="X-Agent-Depth";function ql(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 Wl=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=N(e.url,t),r=N(e.method,t),s=N(e.headers,t)||{},i=N(e.body,t),o=N(e.responseType,t),a=t.context?.requestDepth??0;if(a>=Ri)throw new Error(`Agent request depth exceeded (max ${Ri}). This prevents recursive agent loops.`);if(t.capabilities.fetch)return t.capabilities.fetch(n,{method:r,headers:{...s,[Pi]:String(a+1)},body:i,signal:t.signal,responseType:o});let c=t.context?.allowedFetchDomains;if(c){if(!ql(n,c))throw new Error(`Fetch blocked: domain not in allowlist. Allowed: ${c.join(", ")}`)}else{if(fl(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,[Pi]: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}),Jl=O("storeGet",h.object({key:h.string}),h.any,async({key:e},t)=>{let n=N(e,t);return t.capabilities.store?.get(n)},{docs:"Store Get",cost:5}),Vl=O("storeSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{let r=N(e,n),s=N(t,n);return n.capabilities.store?.set(r,s)},{docs:"Store Set",cost:5}),Kl=O("storeQuery",h.object({query:h.any}),h.array(h.any),async({query:e},t)=>t.capabilities.store?.query?.(N(e,t))??[],{docs:"Store Query",cost:5}),zl=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?.(N(e,r),N(t,r),N(n,r))??[],{docs:"Vector Search",cost:(e,t)=>5+(N(e.k,t)??5)}),Gl=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(N(e,n),N(t,n))},{docs:"LLM Predict",timeoutMs:12e4,cost:100}),Hl=O("agentRun",h.object({agentId:h.any,input:h.any}),h.any,async({agentId:e,input:t},n)=>{let r=N(e,n),s=N(t,n),i=s;if(s&&typeof s=="object"&&!Array.isArray(s)){i={};for(let a in s)i[a]=N(s[a],n)}if(Dr(r)){let a=Or(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}),Zl=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=N(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}),Ii=10,Yl=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>=Ii)throw new Error(`runCode recursion limit exceeded (max ${Ii}). 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=N(e,n),i=t?N(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=Oe(n);if(a.args=i,a.output=void 0,a.runCodeDepth=r+1,await ge.exec(o,a),a.error){n.error=a.error;return}return a.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),Xl=O("jsonParse",h.object({str:h.string}),h.any,async({str:e},t)=>JSON.parse(N(e,t)),{docs:"Parse JSON",cost:1}),Ql=O("jsonStringify",h.object({value:h.any}),h.string,async({value:e},t)=>JSON.stringify(N(e,t)),{docs:"Stringify JSON",cost:1}),eu=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(N(e,t))},{docs:"Parse XML",cost:1}),tu=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=N(e,n)??await Br.exec({value:t,algorithm:"SHA-256"},n);if(n.memo.has(r))return n.memo.get(r);let s=Oe(n);await ge.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}),nu=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:${N(e,r)??await Br.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=Oe(r);await ge.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}),ru=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=N(n,s)??"float",o=N(r,s)??10,a=N(e,s)??0,c=N(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}),su=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}),Br=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(N(e,n)),s=N(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}),iu=O("consoleLog",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=N(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}),ou=O("consoleWarn",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=N(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}),au=O("consoleError",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=N(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.error=new pe(r,"console.error")},{docs:"Emit error and stop",cost:.1}),cu=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=N(e,r),i=t?N(t,r):al,o=n?N(n,r):cl;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=ll(),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}),lu=O("releaseProcedure",h.object({token:h.string}),h.boolean,async({token:e},t)=>{let n=N(e,t);return lt.delete(n)},{docs:"Release a stored procedure by token",cost:.1}),uu=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}),On={seq:ge,if:gl,while:hl,return:bl,try:xl,Error:Sl,varSet:Tl,constSet:wl,varGet:El,varsImport:_l,varsLet:$l,varsExport:kl,scope:jl,map:vl,filter:Ml,reduce:Al,find:Cl,push:Nl,len:Rl,split:Pl,join:Il,template:Dl,regexMatch:Ol,pick:Bl,omit:Ll,merge:Fl,keys:Ul,httpFetch:Wl,storeGet:Jl,storeSet:Vl,storeQuery:Kl,storeVectorSearch:zl,llmPredict:Gl,agentRun:Hl,transpileCode:Zl,runCode:Yl,jsonParse:Xl,jsonStringify:Ql,xmlParse:eu,memoize:tu,cache:nu,random:ru,uuid:su,hash:Br,consoleLog:iu,consoleWarn:ou,consoleError:au,storeProcedure:cu,releaseProcedure:lu,clearExpiredProcedures:uu};var fu=new Set(["true","false","null","undefined","and","or","not"]);function pu(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=>!fu.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 Bn(e,t){pu(e,t);let n=mu(e),r=qi(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}
|
|
457
|
-
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return r.node}function mu(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 qi(e,t,n){return du(e,t,n)}function du(e,t,n){let{node:r,pos:s}=Bi(e,t,n);for(;e[s]==="||";){s++;let{node:i,pos:o}=Bi(e,s,n);r={$expr:"logical",op:"||",left:r,right:i},s=o}return{node:r,pos:s}}function Bi(e,t,n){let{node:r,pos:s}=Li(e,t,n);for(;e[s]==="&&";){s++;let{node:i,pos:o}=Li(e,s,n);r={$expr:"logical",op:"&&",left:r,right:i},s=o}return{node:r,pos:s}}function Li(e,t,n){let{node:r,pos:s}=Fi(e,t,n),i=["==","!=",">","<",">=","<="];for(;i.includes(e[s]);){let o=e[s++],{node:a,pos:c}=Fi(e,s,n);r={$expr:"binary",op:o,left:r,right:a},s=c}return{node:r,pos:s}}function Fi(e,t,n){let{node:r,pos:s}=Ui(e,t,n);for(;e[s]==="+"||e[s]==="-";){let i=e[s++],{node:o,pos:a}=Ui(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function Ui(e,t,n){let{node:r,pos:s}=Lr(e,t,n);for(;e[s]==="*"||e[s]==="/"||e[s]==="%";){let i=e[s++],{node:o,pos:a}=Lr(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function Lr(e,t,n){if(e[t]==="!"||e[t]==="-"){let r=e[t++],{node:s,pos:i}=Lr(e,t,n);return{node:{$expr:"unary",op:r,argument:s},pos:i}}return yu(e,t,n)}function yu(e,t,n){let r=e[t];if(r==="("){let{node:s,pos:i}=qi(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=Bn(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=Bn(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=Bn(r,s),o=this.atoms.filter;return this.add(o.create({items:t,as:n,condition:i}))}find(t,n,r,s={}){let i=Bn(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}))}},gu={take(e){return new Ye(On)},custom(e){return new Ye(e)},args(e){return{$kind:"arg",path:e}},val(e){return e}},am=gu;import{validate as hu}from"tosijs-schema";function Ot(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=xe(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),o=Yt(n,t.filename),{ast:a,signature:c,warnings:l}=Et(o,s,r,t,i);return{ast:a,signature:c,warnings:l}}var bu=10,Ln=class{atoms;constructor(t={}){this.atoms={...On,...t}}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(Dr(t))s=Or(t);else try{s=Ot(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??i*bu,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,w)=>{y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.set(b,w)}}}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,context:r.context,warnings:c};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&&!hu(n,p)){let d=new pe("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 (fuel: ${i}). Consider increasing fuel or optimizing your agent.`))}),l.signal.aborted&&y(new Error(`Execution timeout after ${o}ms (fuel: ${i}). Consider increasing fuel or optimizing your agent.`))})])}catch(d){if(d.message?.includes("timeout")||d.message?.includes("aborted")||l.signal.aborted)f.error=new pe(`Execution timeout after ${o}ms (fuel: ${i}). Consider increasing fuel or optimizing your agent.`,"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 xu=null,Wi=()=>xu??=new Ln;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 Su(e){let{code:t,context:n={},fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=Wi(),c=/\breturn\b/.test(t)?`function __eval() { ${t} }`:`function __eval() { return (${t}) }`;try{let{ast:l}=Ot(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 Tu(e){let{body:t,params:n=[],fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=Wi(),c=`function __safeFn(${n.join(", ")}) { ${t} }`,{ast:l}=Ot(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 Fn(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=xe(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),o=Yt(n,t.filename),{ast:a,signature:c,warnings:l}=Et(o,s,r,t,i);return{ast:a,signature:c,warnings:l}}function km(e,...t){if(typeof e=="string")return Fn(e).ast;let n=e.reduce((r,s,i)=>r+s+(t[i]!==void 0?String(t[i]):""),"");return Fn(n).ast}function vm(e,t,...n){if(typeof e=="string")return Pt(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 Pt(s)}async function Mm(e,t={},n){let r=n??await Nn(),s=await r.getTranspile(e);if(s)return{ast:s.ast,signature:s.signature,warnings:s.warnings};let i=Fn(e,t);return r.setTranspile(e,{ast:i.ast,signature:i.signature,warnings:i.warnings}),i}async function Am(e,t={},n){let r=n??await Nn(),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=Pt(e,t);return r.setTJS(e,{code:i.code,types:i.types,testRunner:i.testRunner,testCount:i.testCount,warnings:i.warnings}),i}function Cm(e,t,n){let{ast:r,signature:s}=Fn(e),i=async o=>(await t.run(r,o,n)).result;return i.signature=s,i.ast=r,i}function Nm(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]=ve(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 Ji=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=N(e,t);return n.embed(r)},{docs:"Generate embeddings using vector battery",cost:20}),Vi=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=N(e,n),i=N(t,n);return r.createCollection(s,void 0,i)},{docs:"Create a vector store collection",cost:5}),Ki=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=N(e,n),i=N(t,n);return r.vectorAdd(s,i)},{docs:"Add a document to a vector store collection",cost:5}),zi=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=N(e,s),a=N(t,s),c=N(n,s)??5,l=N(r,s);return i.vectorSearch(o,a,c,l)},{docs:"Search vector store",cost:(e,t)=>5+(N(e.k,t)??5)}),Gi=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=N(e,s)??"You are a helpful agent.",a=N(t,s),c=N(n,s),l=N(r,s);return i.predict(o,a,c,l)},{docs:"Generate completion using LLM battery",cost:100}),Hi=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=N(e,s)??"You analyze images accurately and concisely.",a=N(t,s),c=N(n,s)??[],l=N(r,s);return i.predict(o,{text:a,images:c},void 0,l)},{docs:"Analyze images using a vision model",timeoutMs:12e4,cost:150});var nd={storeCreateCollection:Vi,storeSearch:zi,storeVectorAdd:Ki,storeVectorize:Ji,llmPredictBattery:Gi,llmVision:Hi};var Zi=new Map,Un=new Map;function wu(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 Fr(){return{async get(e){return Zi.get(e)},async set(e,t){Zi.set(e,t)},async createCollection(e,t,n){Un.has(e)&&console.warn(`Collection '${e}' already exists. Overwriting.`),Un.set(e,[])},async vectorAdd(e,t){let n=Un.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=Un.get(e);if(!r)throw new Error(`Collection '${e}' not found. Create it first.`);let s=r.map(i=>({doc:i,score:wu(t,i.embedding)}));return s.sort((i,o)=>o.score-i.score),s.slice(0,n).map(i=>i.doc)}}}function Eu(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 _u="http://localhost:1234/v1";function Yi(e,t=_u){return{async predict(n,r,s,i){try{let o=i?e.getStructuredLLM():e.getLLM(),a=[{role:"system",content:n},Eu(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 qn=".models.cache.json";var Bt=typeof window<"u"&&typeof window.localStorage<"u";async function $u(e){try{if(Bt){let t=window.localStorage.getItem(qn);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(),qn);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 ku(e,t){let n={timestamp:Date.now(),baseUrl:e,models:t};try{if(Bt)window.localStorage.setItem(qn,JSON.stringify(n));else{let r=await import("node:fs/promises"),i=(await import("node:path")).join(process.cwd(),qn);await r.writeFile(i,JSON.stringify(n,null,2))}}catch(r){console.error("\u274C Error writing model cache:",r)}}var Lt=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 ju(e,t){try{let n={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},r=await Lt(`${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?vu(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 vu(e,t){try{return(await Lt(`${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 Mu(e,t){try{return(await Lt(`${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 Au(e,t){try{let n=await Lt(`${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 Cu="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function Nu(e,t){try{return(await Lt(`${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:Cu}}]}],max_tokens:10})})).ok}catch{return!1}}async function Xi(e){let t=await $u(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;Bt||(i=await import("node:readline"));for(let o of s){!Bt&&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 Mu(e,o.id),m=await Au(e,o.id);if(m&&(f=m),p){a="LLM";let d=await ju(e,o.id);c=d.ok,l=await Nu(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!Bt&&i&&(i.cursorTo(process.stdout,0),i.clearLine(process.stdout,0)),console.log(`
|
|
458
|
-
`),console.table(r),await ku(e,r),console.log("\u{1F4DD} Audit results saved to cache."),r}var Ru="http://localhost:1234/v1",Wn=class{constructor(t=Ru){this.baseUrl=t}baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;async audit(){this.models=await Xi(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 Pu=typeof window<"u",Iu=Pu&&window.location.protocol==="https:",Ft=null,Ur=null,Qi=!1;async function Du(){if(Qi)return{localModels:Ft,llm:Ur};if(Qi=!0,Iu)return console.log("\u{1F4E1} HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{Ft=new Wn,await Ft.audit(),Ur=Yi(Ft)}catch(e){console.warn("\u26A0\uFE0F Could not connect to local LLM:",e)}return{localModels:Ft,llm:Ur}}async function Ou(){let{localModels:e,llm:t}=await Du();return{vector:t?{embed:t.embed}:void 0,store:Fr(),llmBattery:t,models:e}}async function pd(){return Ou()}var md={store:Fr(),llmBattery:null,vector:void 0,models:null};function Bu(e){if(typeof e!="string")return!1;let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")}function Lu(){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 eo(e){let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);return t.toISOString()}function Fu(e){try{return eo(e)}catch{return null}}function Ut(e,t){let n=new Date(e);return n.setTime(n.getTime()+t),n.toISOString()}function Uu(e,t){return Ut(e,t*1e3)}function qu(e,t){return Ut(e,t*60*1e3)}function Wu(e,t){return Ut(e,t*60*60*1e3)}function to(e,t){return Ut(e,t*24*60*60*1e3)}function Ju(e,t){return to(e,t*7)}function Vu(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 Ku(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 Be(e,t){return new Date(e).getTime()-new Date(t).getTime()}function zu(e,t){return Math.floor(Be(e,t)/1e3)}function Gu(e,t){return Math.floor(Be(e,t)/(60*1e3))}function Hu(e,t){return Math.floor(Be(e,t)/(3600*1e3))}function Zu(e,t){return Math.floor(Be(e,t)/(1440*60*1e3))}function ft(e){return new Date(e).getUTCFullYear()}function Jn(e){return new Date(e).getUTCMonth()+1}function qr(e){return new Date(e).getUTCDate()}function Yu(e){return new Date(e).getUTCHours()}function Xu(e){return new Date(e).getUTCMinutes()}function Qu(e){return new Date(e).getUTCSeconds()}function ef(e){return new Date(e).getUTCMilliseconds()}function tf(e){let t=new Date(e).getUTCDay();return t===0?7:t}function Vn(e,t,n){let r=new Date(e),s={timeZone:t,...n};return new Intl.DateTimeFormat(void 0,s).format(r)}function nf(e,t){return Vn(e,t,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function rf(e,t){return Vn(e,t,{year:"numeric",month:"short",day:"numeric"})}function sf(e,t){return Vn(e,t,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function of(e){return e.slice(0,10)}function no(e,t){return Be(e,t)<0}function ro(e,t){return Be(e,t)>0}function af(e,t){return Be(e,t)===0}function cf(e,t){return no(e,t)?e:t}function lf(e,t){return ro(e,t)?e:t}function uf(e){return ut(ft(e),Jn(e),qr(e))}function ff(e){return ut(ft(e),Jn(e),qr(e),23,59,59,999)}function pf(e){return ut(ft(e),Jn(e),1)}function mf(e){let t=new Date(e);return t.setUTCMonth(t.getUTCMonth()+1,0),t.setUTCHours(23,59,59,999),t.toISOString()}function df(e){return ut(ft(e),1,1)}function yf(e){return ut(ft(e),12,31,23,59,59,999)}var pt={isValid:Bu,now:Lu,from:ut,parse:eo,tryParse:Fu,addMilliseconds:Ut,addSeconds:Uu,addMinutes:qu,addHours:Wu,addDays:to,addWeeks:Ju,addMonths:Vu,addYears:Ku,diff:Be,diffSeconds:zu,diffMinutes:Gu,diffHours:Hu,diffDays:Zu,year:ft,month:Jn,day:qr,hour:Yu,minute:Xu,second:Qu,millisecond:ef,dayOfWeek:tf,toLocal:Vn,format:nf,formatDate:rf,formatTime:sf,toDate:of,isBefore:no,isAfter:ro,isEqual:af,min:cf,max:lf,startOfDay:uf,endOfDay:ff,startOfMonth:pf,endOfMonth:mf,startOfYear:df,endOfYear:yf};function Wr(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 gf(){return pt.toDate(pt.now())}function hf(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(!Wr(o))throw new Error(`Invalid date: ${e}-${t}-${n}`);return o}function so(e){if(/^\d{4}-\d{2}-\d{2}$/.test(e)){if(!Wr(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 bf(e){try{return so(e)}catch{return null}}function Kn(e,t){let n=oo(e);return pt.toDate(pt.addDays(n,t))}function xf(e,t){return Kn(e,t*7)}function Sf(e,t){let n=me(e),r=Le(e),s=Jr(e),i=n*12+(r-1)+t,o=Math.floor(i/12),a=i%12+1,c=qt(o,a),l=Math.min(s,c);return he(o,a,l)}function Tf(e,t){let n=me(e),r=Le(e),s=Jr(e),i=n+t,o=qt(i,r),a=Math.min(s,o);return he(i,r,a)}function io(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 wf(e,t){let n=me(e),r=Le(e),s=me(t),i=Le(t);return(n-s)*12+(r-i)}function Ef(e,t){return me(e)-me(t)}function me(e){return parseInt(e.slice(0,4),10)}function Le(e){return parseInt(e.slice(5,7),10)}function Jr(e){return parseInt(e.slice(8,10),10)}function Vr(e){let t=new Date(e+"T00:00:00Z").getUTCDay();return t===0?7:t}function _f(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 $f(e){let t=he(me(e),1,1);return io(e,t)+1}function Kr(e){return Math.ceil(Le(e)/3)}function zr(e){return e%4===0&&e%100!==0||e%400===0}function qt(e,t){let n=[31,28,31,30,31,30,31,31,30,31,30,31];return t===2&&zr(e)?29:n[t-1]}function kf(e){return zr(e)?366:365}function oo(e){return e+"T00:00:00.000Z"}function jf(e){return Math.floor(new Date(e+"T00:00:00Z").getTime()/1e3)}function vf(e){let t=new Date(e*1e3);return he(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate())}function Gr(e,t){let n=new Date(e+"T00:00:00Z"),r={timeZone:"UTC",...t};return new Intl.DateTimeFormat(void 0,r).format(n)}function Mf(e){return Gr(e,{year:"numeric",month:"long",day:"numeric"})}function Af(e){return Gr(e,{year:"numeric",month:"short",day:"numeric"})}function Cf(e,t){return e<t}function Nf(e,t){return e>t}function Rf(e,t){return e===t}function Pf(e,t){return e<t?e:t}function If(e,t){return e>t?e:t}function Df(e,t,n){return e>=t&&e<=n}function Of(e){return he(me(e),Le(e),1)}function Bf(e){let t=me(e),n=Le(e);return he(t,n,qt(t,n))}function Lf(e){let n=(Kr(e)-1)*3+1;return he(me(e),n,1)}function Ff(e){let n=Kr(e)*3;return he(me(e),n,qt(me(e),n))}function Uf(e){return he(me(e),1,1)}function qf(e){return he(me(e),12,31)}function Wf(e){let t=Vr(e);return Kn(e,-(t-1))}function Jf(e){let t=Vr(e);return Kn(e,7-t)}var Vf={isValid:Wr,today:gf,todayIn:hf,from:he,parse:so,tryParse:bf,addDays:Kn,addWeeks:xf,addMonths:Sf,addYears:Tf,diff:io,diffMonths:wf,diffYears:Ef,year:me,month:Le,day:Jr,dayOfWeek:Vr,weekOfYear:_f,dayOfYear:$f,quarter:Kr,isLeapYear:zr,daysInMonth:qt,daysInYear:kf,toTimestamp:oo,toUnix:jf,fromUnix:vf,format:Gr,formatLong:Mf,formatShort:Af,isBefore:Cf,isAfter:Nf,isEqual:Rf,min:Pf,max:If,isBetween:Df,startOfMonth:Of,endOfMonth:Bf,startOfQuarter:Lf,endOfQuarter:Ff,startOfYear:Uf,endOfYear:qf,startOfWeek:Wf,endOfWeek:Jf};export{am as A99,gu as Agent,pe as AgentError,Ln as AgentVM,cl as DEFAULT_MAX_AST_SIZE,al as DEFAULT_PROCEDURE_TTL,hn as Enum,Su as Eval,$t as FunctionPredicate,tt as Generic,Vf as LegalDate,ar as LegalDateType,Wn as LocalModels,Cn as MetadataCache,Rr as ModuleLoader,fn as Nullable,pn as Optional,Ir as PROCEDURE_TOKEN_PREFIX,Tu as SafeFunction,Pc as Schema,ne as SyntaxError,dn as TArray,rn as TBoolean,cn as TEmail,sn as TInteger,ue as TJS_VERSION,an as TNonEmptyString,nn as TNumber,yn as TPair,on as TPositiveInt,gn as TRecord,tn as TString,ln as TUrl,un as TUuid,pt as Timestamp,or as TimestampType,H as TranspileError,ee as Type,Qr as TypeError,Ye as TypedBuilder,mn as Union,Hl as agentRun,km as ajs,Ds as assertFunction,md as batteries,nd as batteryAtoms,Ce as builtins,nu as cache,Ve as checkType,uu as clearExpiredProcedures,ci as compileToWasm,Va as compileWasmBlocks,au as consoleError,iu as consoleLog,ou as consoleWarn,wl as constSet,On as coreAtoms,Cm as createAgent,ye as createChildContext,Oe as createChildScope,O as defineAtom,ga as emitRuntimeWrapper,Ee as error,Sl as errorAtom,X as evaluateExpr,Ue as exampleToJSONSchema,Os as expectFunction,Te as extractLiteralValue,St as extractTDoc,_t as extractTests,Wl as fetch,Ml as filter,Cl as find,Rc as fromTS,Qt as functionMetaToJSONSchema,pc as generateDTS,Mi as generateDocs,Gc as generateDocsMarkdown,Ou as getBatteries,Nn as getGlobalCache,Yi as getLLMCapability,Y as getLocation,pd as getStandardCapabilities,Fr as getStoreCapabilityDefault,Nm as getToolDefinitions,Br as hash,An as hashSource,Ic as hashSourceSync,gl as iff,il as inMemoryFileSystem,ie as inferTypeFromValue,hr as installRuntime,ui as instantiateWasm,ol as isAgentError,Me as isError,Dr as isProcedureToken,Re as isRuntimeType,ir as isValidLegalDate,sr as isValidTimestamp,rr as isValidUrl,Il as join,Xl as jsonParse,Ql as jsonStringify,Ul as keys,Rl as len,Uc as lint,Gl as llmPredict,go as lookupVariable,vl as map,tu as memoize,Fl as merge,Ll as omit,xe as parse,Ne as parseParameter,Cs as parseReturnType,Bl as pick,Zt as preprocess,lt as procedureStore,Nl as push,ru as random,Al as reduce,Ol as regexMatch,fi as registerWasmBlock,lu as releaseProcedure,Or as resolveProcedureToken,N as resolveValue,bl as ret,Yl as runCode,qe as runtime,jl as scope,ge as seq,Bc as setGlobalCache,Pl as split,Jl as storeGet,cu as storeProcedure,Kl as storeQuery,Vl as storeSet,_n as stripModuleSyntax,ti as stripTjsPreamble,Dl as template,Xo as testUtils,vm as tjs,Am as tjsWithCache,Et as transformFunction,Fn as transpile,Zl as transpileCode,Pt as transpileToJS,Mm as transpileWithCache,xl as tryCatch,ve as typeDescriptorToJSONSchema,_e as typeDescriptorToTS,st as typeOf,er as typeToString,su as uuid,yr as validateArgs,El as varGet,Tl as varSet,kl as varsExport,_l as varsImport,$l as varsLet,zl as vectorSearch,hl as whileLoop,gr as wrap,eu as xmlParse};
|
|
458
|
+
`,r+="```tjs\n",r+=rl(i.body).trim()+`
|
|
459
|
+
`,r+="```\n\n"));return r.trim()||"*No documentation available*"}function rl(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=Nn(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=Nn(e,u);if(f>=u){let p=e.slice(o,a),m=l[1],d=e.slice(u,f);n+=il(p,m,d),t=f+1;continue}}}}n+=s,t++}return n}function Nn(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 il(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 ol,readFileSync as al}from"node:fs";import{dirname as Cr,isAbsolute as cl,resolve as Ot,sep as ll}from"node:path";var Rr=[".tjs",".ts",".js"],ul={readFile(e){try{return al(e,"utf8")}catch{return null}},exists(e){try{return ol(e)}catch{return!1}}},Nr=class{cache=new Map;fs;baseDir;bareSpecifierRoots;cacheLimit;constructor(t={}){this.fs=t.fs??ul,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(Ot(n?Cr(n):this.baseDir,t)):cl(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=fl(o.ast),c=pl(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(Rr.some(n=>t.endsWith(n)))return this.fs.exists(t)?t:null;for(let n of Rr){let r=t+n;if(this.fs.exists(r))return r}for(let n of Rr){let r=Ot(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(Ot(s,t));if(i)return i}let r=n?Cr(n):this.baseDir;for(r=Ot(r);;){let s=this.tryExtensions(Ot(r,"node_modules",t));if(s)return s;let i=Cr(r);if(i===r)break;r=i}return null}};function fl(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 pl(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 ml(e){let t=e instanceof Map?e:new Map(Object.entries(e)),n=s=>s.split("/").join(ll),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 Pr,filter as Bi}from"tosijs-schema";var Pn=Symbol.for("tjs.equals");function Dn(e,t){if(e!==null&&typeof e=="object"&&typeof e[Pn]=="function")return e[Pn](t);if(t!==null&&typeof t=="object"&&typeof t[Pn]=="function")return t[Pn](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===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(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>Dn(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=>Dn(e[s],t[s]))}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 dl(e){return e instanceof oe||e&&e.$error===!0}var lt=new Map,yl=3600*1e3,gl=100*1024,Ir="proc_";function Dr(e){return typeof e=="string"&&e.startsWith(Ir)}function Or(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 hl(){return typeof crypto<"u"&&crypto.randomUUID?Ir+crypto.randomUUID():Ir+Math.random().toString(36).slice(2)+Date.now().toString(36)}var Li=new Set(["__proto__","constructor","prototype"]);function Ci(e){if(Li.has(e))throw new Error(`Security Error: Access to '${e}' is forbidden`)}var bl=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function xl(e){try{let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")return!0;let n=t.hostname.toLowerCase();return!!(bl.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 Tl(e){return!!(/\([^)]*[+*][^)]*\)[+*]/.test(e)||/\(([^|)]+)\|\1\)[+*]/.test(e)||/\(\.\*\)\+/.test(e)||/\(\.\+\)\+/.test(e)||/\(\[.*\]\+\)\+/.test(e))}function Oe(e){return{...e,state:Object.create(e.state)}}function wl(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(Li.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 Ce={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=Bi(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?Pr(e,t):Pr(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 Ce.Set([...t,...r])},intersection(n){let r=n?.toArray?.()??n??[];return Ce.Set(t.filter(s=>r.includes(s)))},diff(n){let r=n?.toArray?.()??n??[];return Ce.Set(t.filter(s=>!r.includes(s)))},forEach(n){t.forEach(n)},map(n){return Ce.Set(t.map(n))},filter(n){return Ce.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})()},In={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."},Sl=.01,Ri=1e-4,Ni=.001,El=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-=Sl,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 Ce)return Ce[e.name];if(e.name in In)throw new Error(In[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 Ci(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*Ri,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 Dn(n,r);case"!=":return!Dn(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 Ce){let r=Ce[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 In?new Error(In[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(Ci(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&&El.has(r)){let a=0;if(typeof o=="string"?a=o.length*Ri:Array.isArray(o)?a=o.length*Ni:typeof o=="object"&&o!==null&&(a=Object.keys(o).length*Ni),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}=typeof s=="string"?{docs:s}:s;return{op:e,inputSchema:t,outputSchema:n,exec:async(l,u)=>{let{op:f,result:p,...m}=l;if(u.error)return;let d=u.trace?{...u.state}:null,y=u.fuel.current,b,$;try{let S=u.costOverrides?.[e],x=S!==void 0?S:a,T=typeof x=="function"?x(m,u):x;if((u.fuel.current-=T)<=0){u.error=new oe("Out of Fuel",e);return}let E=u.timeoutOverrides?.[e],w=E!==void 0?E:o,j=typeof w=="function"?w(m,u):w,A,k=async()=>r(l,u);if(b=j>0?await Promise.race([k(),new Promise((v,C)=>{A=setTimeout(()=>C(new Error(`Atom '${e}' timed out`)),j)})]).finally(()=>clearTimeout(A)):await k(),l.result){if(u.consts.has(l.result))throw new Error(`Cannot reassign const variable '${l.result}'`);if(b!==void 0&&n&&!Pr(b,n)){u.error=new oe(`Output validation failed for '${e}'`,e);return}u.state[l.result]=b,l.resultConst&&u.consts.add(l.result)}}catch(S){$=S.message||String(S),u.error=new oe($,e,S)}finally{if(u.trace&&d){let S=wl(d,u.state);u.trace.push({op:e,input:m,stateDiff:S,result:b,error:$,fuelBefore:y,fuelAfter:u.fuel.current,timestamp:new Date().toISOString()})}}},docs:i,timeoutMs:o,cost:a,create:l=>({op:e,...l})}}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}),_l=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}),$l=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}),kl=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&&!dl(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=Bi(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}),Ml=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}),Al=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}),Cl=O("varGet",h.object({key:h.string}),h.any,async({key:e},t)=>R(e,t),{docs:"Get Variable",cost:.1}),Rl=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}),Nl=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}),Pl=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}),Il=O("scope",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{let n=Oe(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}),Pi=256,Dl=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>Pi)return n.error=new oe(`Maximum helper call depth (${Pi}) 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}),Ol=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=Oe(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}),Bl=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=Oe(r);a.state[t]=o,Q(n,a)&&s.push(o)}return s},{docs:"Filter Array",timeoutMs:0,cost:1}),Ll=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=Oe(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}),Fl=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=Oe(r);if(o.state[t]=i,Q(n,o))return i}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),Ul=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}),ql=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}),Wl=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}),Jl=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}),Vl=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}),Kl=O("regexMatch",h.object({pattern:h.string,value:h.any}),h.boolean,async({pattern:e,value:t},n)=>{if(Tl(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}),zl=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}),Gl=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}),Hl=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}),Zl=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}),Ii=10,Di="X-Agent-Depth";function Yl(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 Xl=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>=Ii)throw new Error(`Agent request depth exceeded (max ${Ii}). This prevents recursive agent loops.`);if(t.capabilities.fetch)return t.capabilities.fetch(n,{method:r,headers:{...s,[Di]:String(a+1)},body:i,signal:t.signal,responseType:o});let c=t.context?.allowedFetchDomains;if(c){if(!Yl(n,c))throw new Error(`Fetch blocked: domain not in allowlist. Allowed: ${c.join(", ")}`)}else{if(xl(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,[Di]: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}),Ql=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}),eu=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}),tu=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}),nu=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)}),ru=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(Dr(r)){let a=Or(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}),iu=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}),Oi=10,ou=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>=Oi)throw new Error(`runCode recursion limit exceeded (max ${Oi}). 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=Oe(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}),au=O("jsonParse",h.object({str:h.string}),h.any,async({str:e},t)=>JSON.parse(R(e,t)),{docs:"Parse JSON",cost:1}),cu=O("jsonStringify",h.object({value:h.any}),h.string,async({value:e},t)=>JSON.stringify(R(e,t)),{docs:"Stringify JSON",cost:1}),lu=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}),uu=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 Br.exec({value:t,algorithm:"SHA-256"},n);if(n.memo.has(r))return n.memo.get(r);let s=Oe(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}),fu=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 Br.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=Oe(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}),pu=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}),mu=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}),Br=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}),du=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}),yu=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}),gu=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}),hu=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):yl,o=n?R(n,r):gl;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=hl(),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}),bu=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}),xu=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}),On={seq:ye,if:_l,while:$l,return:kl,try:jl,Error:vl,varSet:Ml,constSet:Al,varGet:Cl,varsImport:Rl,varsLet:Nl,varsExport:Pl,scope:Il,callLocal:Dl,map:Ol,filter:Bl,reduce:Ll,find:Fl,push:Ul,len:ql,split:Wl,join:Jl,template:Vl,regexMatch:Kl,pick:zl,omit:Gl,merge:Hl,keys:Zl,httpFetch:Xl,storeGet:Ql,storeSet:eu,storeQuery:tu,storeVectorSearch:nu,llmPredict:ru,agentRun:su,transpileCode:iu,runCode:ou,jsonParse:au,jsonStringify:cu,xmlParse:lu,memoize:uu,cache:fu,random:pu,uuid:mu,hash:Br,consoleLog:du,consoleWarn:yu,consoleError:gu,storeProcedure:hu,releaseProcedure:bu,clearExpiredProcedures:xu};var Tu=new Set(["true","false","null","undefined","and","or","not"]);function wu(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=>!Tu.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 Bn(e,t){wu(e,t);let n=Su(e),r=Ji(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}
|
|
460
|
+
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return r.node}function Su(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 Ji(e,t,n){return Eu(e,t,n)}function Eu(e,t,n){let{node:r,pos:s}=Fi(e,t,n);for(;e[s]==="||";){s++;let{node:i,pos:o}=Fi(e,s,n);r={$expr:"logical",op:"||",left:r,right:i},s=o}return{node:r,pos:s}}function Fi(e,t,n){let{node:r,pos:s}=Ui(e,t,n);for(;e[s]==="&&";){s++;let{node:i,pos:o}=Ui(e,s,n);r={$expr:"logical",op:"&&",left:r,right:i},s=o}return{node:r,pos:s}}function Ui(e,t,n){let{node:r,pos:s}=qi(e,t,n),i=["==","!=",">","<",">=","<="];for(;i.includes(e[s]);){let o=e[s++],{node:a,pos:c}=qi(e,s,n);r={$expr:"binary",op:o,left:r,right:a},s=c}return{node:r,pos:s}}function qi(e,t,n){let{node:r,pos:s}=Wi(e,t,n);for(;e[s]==="+"||e[s]==="-";){let i=e[s++],{node:o,pos:a}=Wi(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function Wi(e,t,n){let{node:r,pos:s}=Lr(e,t,n);for(;e[s]==="*"||e[s]==="/"||e[s]==="%";){let i=e[s++],{node:o,pos:a}=Lr(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function Lr(e,t,n){if(e[t]==="!"||e[t]==="-"){let r=e[t++],{node:s,pos:i}=Lr(e,t,n);return{node:{$expr:"unary",op:r,argument:s},pos:i}}return _u(e,t,n)}function _u(e,t,n){let r=e[t];if(r==="("){let{node:s,pos:i}=Ji(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=Bn(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=Bn(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=Bn(r,s),o=this.atoms.filter;return this.add(o.create({items:t,as:n,condition:i}))}find(t,n,r,s={}){let i=Bn(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}))}},$u={take(e){return new Ye(On)},custom(e){return new Ye(e)},args(e){return{$kind:"arg",path:e}},val(e){return e}},hm=$u;import{validate as ku}from"tosijs-schema";function Bt(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=xe(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=Tt(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 ju=6e4,Ln=class{atoms;_defaultRunTimeout;constructor(t={}){this.atoms={...On,...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(ju,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(Dr(t))s=Or(t);else try{s=Bt(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&&!ku(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 vu=null,Vi=()=>vu??=new Ln;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 Mu(e){let{code:t,context:n={},fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=Vi(),c=/\breturn\b/.test(t)?`function __eval() { ${t} }`:`function __eval() { return (${t}) }`;try{let{ast:l}=Bt(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 Au(e){let{body:t,params:n=[],fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=Vi(),c=`function __safeFn(${n.join(", ")}) { ${t} }`,{ast:l}=Bt(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 Fn(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=xe(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=Tt(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 Dm(e,...t){if(typeof e=="string")return Fn(e).ast;let n=e.reduce((r,s,i)=>r+s+(t[i]!==void 0?String(t[i]):""),"");return Fn(n).ast}function Bm(e,t,...n){if(typeof e=="string")return It(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 It(s)}async function Lm(e,t={},n){let r=n??await Rn(),s=await r.getTranspile(e);if(s)return{ast:s.ast,signature:s.signature,warnings:s.warnings};let i=Fn(e,t);return r.setTranspile(e,{ast:i.ast,signature:i.signature,warnings:i.warnings}),i}async function Fm(e,t={},n){let r=n??await Rn(),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=It(e,t);return r.setTJS(e,{code:i.code,types:i.types,testRunner:i.testRunner,testCount:i.testCount,warnings:i.warnings}),i}function Um(e,t,n){let{ast:r,signature:s}=Fn(e),i=async o=>(await t.run(r,o,n)).result;return i.signature=s,i.ast=r,i}function qm(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]=ve(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 Ki=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}),zi=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}),Gi=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}),Hi=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)}),Zi=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}),Yi=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});var md={storeCreateCollection:zi,storeSearch:Hi,storeVectorAdd:Gi,storeVectorize:Ki,llmPredictBattery:Zi,llmVision:Yi};var Xi=new Map,Un=new Map;function Cu(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 Fr(){return{async get(e){return Xi.get(e)},async set(e,t){Xi.set(e,t)},async createCollection(e,t,n){Un.has(e)&&console.warn(`Collection '${e}' already exists. Overwriting.`),Un.set(e,[])},async vectorAdd(e,t){let n=Un.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=Un.get(e);if(!r)throw new Error(`Collection '${e}' not found. Create it first.`);let s=r.map(i=>({doc:i,score:Cu(t,i.embedding)}));return s.sort((i,o)=>o.score-i.score),s.slice(0,n).map(i=>i.doc)}}}function Ru(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 Nu="http://localhost:1234/v1";function Qi(e,t=Nu){return{async predict(n,r,s,i){try{let o=i?e.getStructuredLLM():e.getLLM(),a=[{role:"system",content:n},Ru(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 qn=".models.cache.json";var Lt=typeof window<"u"&&typeof window.localStorage<"u";async function Pu(e){try{if(Lt){let t=window.localStorage.getItem(qn);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(),qn);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 Iu(e,t){let n={timestamp:Date.now(),baseUrl:e,models:t};try{if(Lt)window.localStorage.setItem(qn,JSON.stringify(n));else{let r=await import("node:fs/promises"),i=(await import("node:path")).join(process.cwd(),qn);await r.writeFile(i,JSON.stringify(n,null,2))}}catch(r){console.error("\u274C Error writing model cache:",r)}}var Ft=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 Du(e,t){try{let n={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},r=await Ft(`${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?Ou(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 Ou(e,t){try{return(await Ft(`${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 Bu(e,t){try{return(await Ft(`${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 Lu(e,t){try{let n=await Ft(`${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 Fu="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAMUlEQVR4nGO4o6FBU8QwasFoEI2motF8MFpUjJamo/XBaJU52qoYbReNNh01hkg+AACGobA9N+tfoAAAAABJRU5ErkJggg==";async function Uu(e,t){try{return(await Ft(`${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:Fu}}]}],max_tokens:10})})).ok}catch{return!1}}async function eo(e){let t=await Pu(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;Lt||(i=await import("node:readline"));for(let o of s){!Lt&&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 Bu(e,o.id),m=await Lu(e,o.id);if(m&&(f=m),p){a="LLM";let d=await Du(e,o.id);c=d.ok,l=await Uu(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!Lt&&i&&(i.cursorTo(process.stdout,0),i.clearLine(process.stdout,0)),console.log(`
|
|
461
|
+
`),console.table(r),await Iu(e,r),console.log("\u{1F4DD} Audit results saved to cache."),r}var qu="http://localhost:1234/v1",Wn=class{constructor(t=qu){this.baseUrl=t}baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;async audit(){this.models=await eo(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 Wu=typeof window<"u",Ju=Wu&&window.location.protocol==="https:",Ut=null,Ur=null,to=!1;async function Vu(){if(to)return{localModels:Ut,llm:Ur};if(to=!0,Ju)return console.log("\u{1F4E1} HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{Ut=new Wn,await Ut.audit(),Ur=Qi(Ut)}catch(e){console.warn("\u26A0\uFE0F Could not connect to local LLM:",e)}return{localModels:Ut,llm:Ur}}async function Ku(){let{localModels:e,llm:t}=await Vu();return{vector:t?{embed:t.embed}:void 0,store:Fr(),llmBattery:t,models:e}}async function Ed(){return Ku()}var _d={store:Fr(),llmBattery:null,vector:void 0,models:null};function zu(e){if(typeof e!="string")return!1;let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")}function Gu(){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 no(e){let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);return t.toISOString()}function Hu(e){try{return no(e)}catch{return null}}function qt(e,t){let n=new Date(e);return n.setTime(n.getTime()+t),n.toISOString()}function Zu(e,t){return qt(e,t*1e3)}function Yu(e,t){return qt(e,t*60*1e3)}function Xu(e,t){return qt(e,t*60*60*1e3)}function ro(e,t){return qt(e,t*24*60*60*1e3)}function Qu(e,t){return ro(e,t*7)}function ef(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 tf(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 Be(e,t){return new Date(e).getTime()-new Date(t).getTime()}function nf(e,t){return Math.floor(Be(e,t)/1e3)}function rf(e,t){return Math.floor(Be(e,t)/(60*1e3))}function sf(e,t){return Math.floor(Be(e,t)/(3600*1e3))}function of(e,t){return Math.floor(Be(e,t)/(1440*60*1e3))}function ft(e){return new Date(e).getUTCFullYear()}function Jn(e){return new Date(e).getUTCMonth()+1}function qr(e){return new Date(e).getUTCDate()}function af(e){return new Date(e).getUTCHours()}function cf(e){return new Date(e).getUTCMinutes()}function lf(e){return new Date(e).getUTCSeconds()}function uf(e){return new Date(e).getUTCMilliseconds()}function ff(e){let t=new Date(e).getUTCDay();return t===0?7:t}function Vn(e,t,n){let r=new Date(e),s={timeZone:t,...n};return new Intl.DateTimeFormat(void 0,s).format(r)}function pf(e,t){return Vn(e,t,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function mf(e,t){return Vn(e,t,{year:"numeric",month:"short",day:"numeric"})}function df(e,t){return Vn(e,t,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function yf(e){return e.slice(0,10)}function so(e,t){return Be(e,t)<0}function io(e,t){return Be(e,t)>0}function gf(e,t){return Be(e,t)===0}function hf(e,t){return so(e,t)?e:t}function bf(e,t){return io(e,t)?e:t}function xf(e){return ut(ft(e),Jn(e),qr(e))}function Tf(e){return ut(ft(e),Jn(e),qr(e),23,59,59,999)}function wf(e){return ut(ft(e),Jn(e),1)}function Sf(e){let t=new Date(e);return t.setUTCMonth(t.getUTCMonth()+1,0),t.setUTCHours(23,59,59,999),t.toISOString()}function Ef(e){return ut(ft(e),1,1)}function _f(e){return ut(ft(e),12,31,23,59,59,999)}var pt={isValid:zu,now:Gu,from:ut,parse:no,tryParse:Hu,addMilliseconds:qt,addSeconds:Zu,addMinutes:Yu,addHours:Xu,addDays:ro,addWeeks:Qu,addMonths:ef,addYears:tf,diff:Be,diffSeconds:nf,diffMinutes:rf,diffHours:sf,diffDays:of,year:ft,month:Jn,day:qr,hour:af,minute:cf,second:lf,millisecond:uf,dayOfWeek:ff,toLocal:Vn,format:pf,formatDate:mf,formatTime:df,toDate:yf,isBefore:so,isAfter:io,isEqual:gf,min:hf,max:bf,startOfDay:xf,endOfDay:Tf,startOfMonth:wf,endOfMonth:Sf,startOfYear:Ef,endOfYear:_f};function Wr(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 $f(){return pt.toDate(pt.now())}function kf(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(!Wr(o))throw new Error(`Invalid date: ${e}-${t}-${n}`);return o}function oo(e){if(/^\d{4}-\d{2}-\d{2}$/.test(e)){if(!Wr(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 jf(e){try{return oo(e)}catch{return null}}function Kn(e,t){let n=co(e);return pt.toDate(pt.addDays(n,t))}function vf(e,t){return Kn(e,t*7)}function Mf(e,t){let n=me(e),r=Le(e),s=Jr(e),i=n*12+(r-1)+t,o=Math.floor(i/12),a=i%12+1,c=Wt(o,a),l=Math.min(s,c);return he(o,a,l)}function Af(e,t){let n=me(e),r=Le(e),s=Jr(e),i=n+t,o=Wt(i,r),a=Math.min(s,o);return he(i,r,a)}function ao(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 Cf(e,t){let n=me(e),r=Le(e),s=me(t),i=Le(t);return(n-s)*12+(r-i)}function Rf(e,t){return me(e)-me(t)}function me(e){return parseInt(e.slice(0,4),10)}function Le(e){return parseInt(e.slice(5,7),10)}function Jr(e){return parseInt(e.slice(8,10),10)}function Vr(e){let t=new Date(e+"T00:00:00Z").getUTCDay();return t===0?7:t}function Nf(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 Pf(e){let t=he(me(e),1,1);return ao(e,t)+1}function Kr(e){return Math.ceil(Le(e)/3)}function zr(e){return e%4===0&&e%100!==0||e%400===0}function Wt(e,t){let n=[31,28,31,30,31,30,31,31,30,31,30,31];return t===2&&zr(e)?29:n[t-1]}function If(e){return zr(e)?366:365}function co(e){return e+"T00:00:00.000Z"}function Df(e){return Math.floor(new Date(e+"T00:00:00Z").getTime()/1e3)}function Of(e){let t=new Date(e*1e3);return he(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate())}function Gr(e,t){let n=new Date(e+"T00:00:00Z"),r={timeZone:"UTC",...t};return new Intl.DateTimeFormat(void 0,r).format(n)}function Bf(e){return Gr(e,{year:"numeric",month:"long",day:"numeric"})}function Lf(e){return Gr(e,{year:"numeric",month:"short",day:"numeric"})}function Ff(e,t){return e<t}function Uf(e,t){return e>t}function qf(e,t){return e===t}function Wf(e,t){return e<t?e:t}function Jf(e,t){return e>t?e:t}function Vf(e,t,n){return e>=t&&e<=n}function Kf(e){return he(me(e),Le(e),1)}function zf(e){let t=me(e),n=Le(e);return he(t,n,Wt(t,n))}function Gf(e){let n=(Kr(e)-1)*3+1;return he(me(e),n,1)}function Hf(e){let n=Kr(e)*3;return he(me(e),n,Wt(me(e),n))}function Zf(e){return he(me(e),1,1)}function Yf(e){return he(me(e),12,31)}function Xf(e){let t=Vr(e);return Kn(e,-(t-1))}function Qf(e){let t=Vr(e);return Kn(e,7-t)}var ep={isValid:Wr,today:$f,todayIn:kf,from:he,parse:oo,tryParse:jf,addDays:Kn,addWeeks:vf,addMonths:Mf,addYears:Af,diff:ao,diffMonths:Cf,diffYears:Rf,year:me,month:Le,day:Jr,dayOfWeek:Vr,weekOfYear:Nf,dayOfYear:Pf,quarter:Kr,isLeapYear:zr,daysInMonth:Wt,daysInYear:If,toTimestamp:co,toUnix:Df,fromUnix:Of,format:Gr,formatLong:Bf,formatShort:Lf,isBefore:Ff,isAfter:Uf,isEqual:qf,min:Wf,max:Jf,isBetween:Vf,startOfMonth:Kf,endOfMonth:zf,startOfQuarter:Gf,endOfQuarter:Hf,startOfYear:Zf,endOfYear:Yf,startOfWeek:Xf,endOfWeek:Qf};export{hm as A99,$u as Agent,oe as AgentError,Ln as AgentVM,gl as DEFAULT_MAX_AST_SIZE,yl as DEFAULT_PROCEDURE_TTL,hn as Enum,Mu as Eval,kt as FunctionPredicate,tt as Generic,ep as LegalDate,ar as LegalDateType,Wn as LocalModels,Pi as MAX_CALL_DEPTH,Cn as MetadataCache,Nr as ModuleLoader,fn as Nullable,pn as Optional,Ir as PROCEDURE_TOKEN_PREFIX,Au as SafeFunction,qc as Schema,H as SyntaxError,dn as TArray,rn as TBoolean,cn as TEmail,sn as TInteger,fe as TJS_VERSION,an as TNonEmptyString,nn as TNumber,yn as TPair,on as TPositiveInt,gn as TRecord,tn as TString,ln as TUrl,un as TUuid,pt as Timestamp,or as TimestampType,K as TranspileError,te as Type,Qr as TypeError,Ye as TypedBuilder,mn as Union,su as agentRun,Dm as ajs,Os as assertFunction,_d as batteries,md as batteryAtoms,Ce as builtins,fu as cache,Dl as callLocal,Ve as checkType,xu as clearExpiredProcedures,li as compileToWasm,Qa as compileWasmBlocks,gu as consoleError,du as consoleLog,yu as consoleWarn,Al as constSet,On as coreAtoms,Um as createAgent,ge as createChildContext,Oe as createChildScope,O as defineAtom,na as dialectForFilename,_a as emitRuntimeWrapper,Ee as error,vl as errorAtom,Q as evaluateExpr,Ue as exampleToJSONSchema,Bs as expectFunction,Tt as extractFunctions,Se as extractLiteralValue,wt as extractTDoc,$t as extractTests,Xl as fetch,Bl as filter,Fl as find,Uc as fromTS,Qt as functionMetaToJSONSchema,Tc as generateDTS,Ai as generateDocs,nl as generateDocsMarkdown,Ku as getBatteries,Rn as getGlobalCache,Qi as getLLMCapability,Z as getLocation,Ed as getStandardCapabilities,Fr as getStoreCapabilityDefault,qm as getToolDefinitions,Br as hash,An as hashSource,Wc as hashSourceSync,_l as iff,ml as inMemoryFileSystem,ae as inferTypeFromValue,hr as installRuntime,fi as instantiateWasm,dl as isAgentError,Me as isError,Dr as isProcedureToken,Ne as isRuntimeType,ir as isValidLegalDate,sr as isValidTimestamp,rr as isValidUrl,Jl as join,au as jsonParse,cu as jsonStringify,Zl as keys,ql as len,Hc as lint,ru as llmPredict,bo as lookupVariable,Ol as map,uu as memoize,Hl as merge,Gl as omit,xe as parse,Re as parseParameter,Cs as parseReturnType,zl as pick,Yt as preprocess,lt as procedureStore,Ul as push,pu as random,Ll as reduce,Kl as regexMatch,pi as registerWasmBlock,bu as releaseProcedure,Or as resolveProcedureToken,R as resolveValue,kl as ret,ou as runCode,qe as runtime,Il as scope,ye as seq,Kc as setGlobalCache,Is as sourceKindForFilename,Wl as split,Ql as storeGet,hu as storeProcedure,tu as storeQuery,eu as storeSet,_n as stripModuleSyntax,ni as stripTjsPreamble,Vl as template,oa as testUtils,Bm as tjs,Fm as tjsWithCache,_t as transformFunction,Fn as transpile,iu as transpileCode,It as transpileToJS,Lm as transpileWithCache,jl as tryCatch,ve as typeDescriptorToJSONSchema,_e as typeDescriptorToTS,st as typeOf,er as typeToString,mu as uuid,yr as validateArgs,Co as validateSingleFunction,Cl as varGet,Ml as varSet,Pl as varsExport,Rl as varsImport,Nl as varsLet,nu as vectorSearch,$l as whileLoop,gr as wrap,lu as xmlParse};
|
|
459
462
|
//# sourceMappingURL=index.js.map
|