tjs-lang 0.7.3 → 0.7.5
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/demo/docs.json +29 -29
- package/dist/index.js +175 -176
- package/dist/index.js.map +5 -44
- package/dist/scripts/build.d.ts +8 -4
- package/dist/src/lang/runtime.d.ts +8 -4
- package/dist/src/types/Type.d.ts +5 -5
- package/dist/tjs-batteries.js +3 -4
- package/dist/tjs-batteries.js.map +5 -13
- package/dist/tjs-eval.js +47 -0
- package/dist/tjs-eval.js.map +7 -0
- package/dist/tjs-from-ts.js +58 -0
- package/dist/tjs-from-ts.js.map +7 -0
- package/dist/tjs-lang.js +349 -0
- package/dist/tjs-lang.js.map +7 -0
- package/dist/tjs-vm.js +51 -52
- package/dist/tjs-vm.js.map +4 -19
- package/package.json +17 -11
- package/src/lang/emitters/js.ts +4 -4
- package/src/lang/function-predicate.test.ts +8 -6
- package/src/lang/runtime.test.ts +58 -0
- package/src/lang/runtime.ts +27 -13
- package/src/types/Type.test.ts +68 -19
- package/src/types/Type.ts +80 -54
- package/dist/tjs-full.js +0 -437
- package/dist/tjs-full.js.map +0 -46
- package/dist/tjs-transpiler.js +0 -3
- package/dist/tjs-transpiler.js.map +0 -11
package/dist/index.js
CHANGED
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
var
|
|
2
|
-
`),
|
|
3
|
-
`)}}class
|
|
4
|
-
|
|
5
|
-
`})(),
|
|
6
|
-
`){
|
|
7
|
-
`),
|
|
8
|
-
`)}function
|
|
9
|
-
|
|
10
|
-
`,
|
|
11
|
-
|
|
12
|
-
`),
|
|
13
|
-
${
|
|
14
|
-
${
|
|
15
|
-
|
|
16
|
-
${
|
|
17
|
-
${
|
|
18
|
-
`;for(let
|
|
19
|
-
`;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
${
|
|
23
|
-
${
|
|
1
|
+
var Bi=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ws=Bi((mf,ko)=>{ko.exports={name:"tjs-lang",version:"0.7.5",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",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"},"./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"],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","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^8.57.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2",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":"firebase deploy --only hosting",deploy:"npm run build:demo && npm 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 ms from"acorn";var z=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}},ie=class extends z{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
|
+
`),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 p=" ".repeat(a+4+this.column);o.push(`${p}^ ${this.message.split(" at ")[0]}`)}}return o.join(`
|
|
3
|
+
`)}},Or=class extends z{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 pe(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}}function Fi(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 Fi(e,t.parent)}function Z(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}function Bt(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",p=()=>{let f=c[c.length-1];return f?.type==="class-body"&&l===f.braceDepth+1};for(;r<e.length;){let f=e[r],m=e[r+1];switch(o){case"single-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}f==="'"&&(o="normal"),r++;continue;case"double-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}f==='"'&&(o="normal"),r++;continue;case"template-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(f==="$"&&m==="{"){n+=m,r+=2,a.push(1),o="normal";continue}f==="`"&&(o="normal"),r++;continue;case"line-comment":n+=f,f===`
|
|
4
|
+
`&&(o="normal"),r++;continue;case"block-comment":if(n+=f,f==="*"&&m==="/"){n+=m,r+=2,o="normal";continue}r++;continue;case"regex":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(f==="["){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(f==="/"){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(f==="{")a[a.length-1]++;else if(f==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),n+=f,r++,o="template-string";continue}}if(f==="'"){n+=f,r++,o="single-string";continue}if(f==='"'){n+=f,r++,o="double-string";continue}if(f==="`"){n+=f,r++,o="template-string";continue}if(f==="/"&&m==="/"){n+=f+m,r+=2,o="line-comment";continue}if(f==="/"&&m==="*"){n+=f+m,r+=2,o="block-comment";continue}if(f==="/"){let b=n.trimEnd();if(!b[b.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(b)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(b)){n+=f,r++,o="regex";continue}}break}if(f==="{"){l++,n+=f,r++;continue}if(f==="}"){l--;let b=c[c.length-1];b&&l===b.braceDepth&&c.pop(),n+=f,r++;continue}let d=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(d){let b=d[0].slice(0,-1);n+=b,r+=b.length,c.push({type:"class-body",braceDepth:l});continue}let y=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(y){let b=y[1],T=y[0].length,k=e[r+T],w=null,j=r+T;(k==="?"||k==="!")&&(w=k,j++,w==="!"?t.unsafeFunctions.add(b):t.safeFunctions.add(b)),n+=`function ${b}(`,r=j;let C=Dt(e,r,"(",")");if(!C){n+=e[r],r++;continue}let{content:$,endPos:R}=C;r=R;let A=Wn($,t,!0);n+=A+")";let P=r;for(;P<e.length&&/\s/.test(e[P]);)P++;if(e[P]===":"){let v=e.slice(P,P+2),I;for(v===":?"||v===":!"?(P+=2,I=v===":?"?"safe":"unsafe"):P+=1;P<e.length&&/\s/.test(e[P]);)P++;let O=Jn(e,P);O&&(s===void 0&&(s=O.type,I&&(i=I)),r=O.endPos)}continue}let x=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),E=(()=>{for(let b=n.length-1;b>=0;b--)if(!/\s/.test(n[b]))return n[b];return`
|
|
5
|
+
`})(),_=E!=="="&&E!==","&&E!=="("&&E!=="["&&E!==">";if(x&&p()&&!_){let b=x[1].length;n+=e.slice(r,r+b),r+=b;continue}if(x&&p()&&_){let b=x[1],T=x[0].length,k=r+T;n+=b+"(",r=k;let w=Dt(e,r,"(",")");if(!w){n+=e[r],r++;continue}let{content:j,endPos:C}=w;r=C;let $=Wn(j,t,!0);n+=$+")";let R=r;for(;R<e.length&&/\s/.test(e[R]);)R++;if(e[R]===":"){let A=e.slice(R,R+2);for(A===":?"||A===":!"?R+=2:R++;R<e.length&&/\s/.test(e[R]);)R++;let P=Jn(e,R);P&&(r=P.endPos)}continue}if(e[r]==="("){let b=Dt(e,r+1,"(",")");if(!b){n+=e[r],r++;continue}let T=b.content,k=b.endPos,w=k;for(;w<e.length&&/\s/.test(e[w]);)w++;let j;if(e[w]===":"){let C=e.slice(w,w+2);for(C===":?"||C===":!"?w+=2:w++;w<e.length&&/\s/.test(e[w]);)w++;let $=Jn(e,w);if($)for(j=$.type,w=$.endPos;w<e.length&&/\s/.test(e[w]);)w++}if(e.slice(w,w+2)==="=>"){let C=null,$=T,R=T.trimStart();R.startsWith("?")&&(R.length===1||/\s/.test(R[1]))?(C="?",$=R.slice(1)):R.startsWith("!")&&(R.length===1||/\s/.test(R[1]))&&(C="!",$=R.slice(1));let A=Wn($,t,!1);for(n+=`(${C==="?"?"/* safe */ ":C==="!"?"/* unsafe */ ":""}${A})`,r=k;r<w&&/\s/.test(e[r]);)n+=e[r],r++;j&&(r=w)}else{let C=Bt(T,t);n+=`(${C.source})`,r=k}continue}n+=e[r],r++}return{source:n,returnType:s,returnSafety:i}}function Dt(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 Fr(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=Dt(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 ft(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function Jn(e,t){let n=t,r=0,s=!1,i="",o=!1,a=c=>({type:ft(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:ft(e.slice(t,l).trim()),endPos:l};if(e[n]!=="|"&&e[n]!=="&")return{type:ft(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 p=l;for(;p>t&&/\s/.test(e[p-1]);)p--;return{type:ft(e.slice(t,p).trim()),endPos:l}}if(e[n]!=="|"&&e[n]!=="&")return{type:ft(e.slice(t,l).trim()),endPos:l};continue}n++}return o?a(n):null}function Ft(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===`
|
|
6
|
+
`){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 Wn(e,t,n){let r=Bt(e,{originalSource:e,requiredParams:t.requiredParams,unsafeFunctions:t.unsafeFunctions,safeFunctions:t.safeFunctions}).source,s=Ft(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`{ ${Lr(m,t)} }`}if(n&&u.startsWith("[")&&u.endsWith("]")){let m=u.slice(1,-1);return`[ ${Lr(m,t)} ]`}if(u.startsWith("...")){let m=Br(u);return m!==-1?u.slice(0,m).trim():l}let p=u.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(p){let[,m,d]=p;return a(m),i=!0,`${m} = ${d}`}if(!Ui(u)){let m=u.match(/^(\w+)\s*=/);return m&&a(m[1]),i=!0,l}let f=Br(u);if(f!==-1){let m=u.slice(0,f).trim(),d=u.slice(f+1).trim();return a(m),i&&n&&/^\w+$/.test(m),n&&/^\w+$/.test(m)&&t.requiredParams.add(m),`${m} = ${d}`}return l}).join(",")}function Lr(e,t){return Ft(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 p=Ot(u);return`${l} = ${p}`}let a=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(a){let[,l,u]=a;t.requiredParams.add(l);let p=Lt(u);return`${l} = ${p}`}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 Ot(e){let t=e.slice(1,-1).trim();return`{ ${Ft(t).map(s=>{let i=s.trim();if(!i)return s;let o=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(o){let[,p,f]=o;return`${p}: ${Ot(f)}`}let a=i.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(a){let[,p,f]=a;return`${p}: ${Ot(f)}`}let c=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(c){let[,p,f]=c;return`${p}: ${Lt(f)}`}let l=i.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,p,f]=l;return`${p}: ${Lt(f)}`}let u=i.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(u){let[,p,f]=u;return`${p}: ${f}`}return s}).join(", ")} }`}function Lt(e){let t=e.slice(1,-1).trim();return`[ ${Ft(t).map(s=>{let i=s.trim();return i?i.startsWith("{")&&i.endsWith("}")?Ot(i):i.startsWith("[")&&i.endsWith("]")?Lt(i):s:s}).join(", ")} ]`}function Ui(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 Br(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 qi(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 Vr(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 Kr(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),p,f=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 C=e[j];C==="{"?c++:C==="}"&&c--,j++}c===0&&(p=e.slice(w,j-1),f=j)}let y=Wi(u).map(w=>{let j=Vi(e,o,w);return j?`${w}: ${j}`:w}),x={id:`__tjs_wasm_${s}`,body:u,fallback:p,captures:y,start:o,end:f};t.push(x);let E=p??u,_=y.map(w=>w.split(":")[0].trim()),b=_.length>0?_.join(", "):"",T=_.length>0?`globalThis.${x.id}(${b})`:`globalThis.${x.id}()`,k=`(globalThis.${x.id} ? ${T} : (() => {${E}})())`;n+=k,r=f,s++}else n+=e[r],r++}return{source:n,blocks:t}}function Ji(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function Wi(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 f of n){if(!o.has(f))continue;let m=new RegExp(`(?<!\\.)\\b${f}\\b`,"g"),d=new RegExp(`\\.${f}\\b`,"g"),y=t.match(m)?.length||0,x=t.match(d)?.length||0;y<=x&&o.delete(f)}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"]),p=[];for(let f of o)!a.has(f)&&!u.has(f)&&!Ji(f)&&p.push(f);return p.sort()}function Vi(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?Ur(a[1],n):void 0}return Ur(i[1],n)}function Ur(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 zr(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 Gr(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(`
|
|
7
|
+
`),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("/*"),p=c.indexOf("*/");if(u!==-1&&(p===-1||p<u)){o=!0,i.push(c);continue}if(a>0&&t.test(c)){let f=l.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!n.test(f)&&!r.test(f)){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(`
|
|
8
|
+
`)}function Hr(e){e=e.replace(/\btypeof\s+([a-zA-Z_$][\w$.]*(?:\?\.[\w$]+)*)/g,"TypeOf($1)");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=Ki(i,a),p=zi(i,a+2),f=i.slice(u,a).trim(),m=i.slice(a+2,p).trim();if(f&&m){let d=i.slice(0,u),y=i.slice(p),E=/[a-zA-Z0-9_$]$/.test(d)?" ":"";i=`${d}${E}${l}(${f}, ${m})${y}`}}return i}function Ki(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),p=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(p)){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 zi(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 Zr(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 f=i+c[0].length,m=e[f],d=m===void 0||f>=e.length||m!=="="&&m!=="{";if(m==="="||m==="{")o=c[2],a=!0,i=f;else if(d){let y=c[0].trim(),x=c[0].slice(y.length);t+=`const ${s} = Type('${s}', ${y})${x}`,n=f;continue}}let l,u=i,p=e.slice(i).match(/^=\s*/);if(p){i+=p[0].length;let f=e.slice(i).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(f){l=f[0],i+=f[0].length,u=i;let m=e.slice(i).match(/^\s*/);m&&(i+=m[0].length)}}if(e[i]==="{"){let f=i+1,m=1,d=f;for(;d<e.length&&m>0;){let k=e[d];k==="{"?m++:k==="}"&&m--,d++}if(m!==0){t+=e[n],n++;continue}let y=e.slice(f,d-1).trim(),x=d,E=y.match(/description\s*:\s*(['"`])([^]*?)\1/);E&&!a&&(o=E[2]);let _,b=y.match(/example\s*:\s*/);if(b){let k=b.index+b[0].length,w=Fr(y,k);w&&(_=w.value.trim())}let T=y.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(T&&_){let k=T[1].trim(),w=T[2].trim(),j=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', (${k}) => { if (!globalThis.__tjs?.validate(${k}, globalThis.__tjs?.infer(${_}))) return false; ${w} }, ${_}${j})`}else if(T){let k=T[1].trim(),w=T[2].trim(),j=l?`, undefined, ${l}`:"";t+=`const ${s} = Type('${o}', (${k}) => { ${w} }${j})`}else if(_){let k=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', undefined, ${_}${k})`}else l?t+=`const ${s} = Type('${o}', ${l})`:t+=`const ${s} = Type('${o}')`;n=x;continue}else if(l){t+=`const ${s} = Type('${o}', ${l})`,n=u;continue}else if(!c){let f=e.slice(i).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(f){let m=f[0];t+=`const ${s} = Type('${s}', ${m})`,n=i+f[0].length;continue}}}t+=e[n],n++}return t}function Yr(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=qi(l,/params\s*:\s*\{/),p=l.match(/returns\s*:\s*(.+?)(?:\n|$)/),f=l.match(/returnContract\s*:\s*['"](\w+)['"]/),m=l.match(/description\s*:\s*(['"])([^]*?)\1/),d=[];u&&d.push(`params: ${u[1]}`),p&&d.push(`returns: ${p[1].trim()}`),f&&d.push(`returnContract: '${f[1]}'`);let y=m?m[2]:s;if(i){let x=i.split(",").map(_=>{let b=_.trim().split("=").map(T=>T.trim());if(b.length===2){let T=b[1]==="any"||b[1]==="undefined"?"null":b[1];return`['${b[0]}', ${T}]`}return`'${b[0]}'`}),E=i.split(",").map(_=>_.trim().split("=")[0].trim());t+=`const ${s} = FunctionPredicate('${y}', [${x.join(", ")}], (${E.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 p=l.slice(0,u).trim(),f=l.slice(u+1).trim();t+=`const ${s} = FunctionPredicate(${f}, ${p})`}else t+=`const ${s} = FunctionPredicate('${s}', ${l})`;n=c;continue}}}t+=e[n],n++}return t}function Xr(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 _=e[l];_==="{"?c++:_==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),p=l,f=i.split(",").map(_=>{let b=_.trim().split("=").map(T=>T.trim());if(b.length===2){let T=b[1]==="any"||b[1]==="undefined"?"null":b[1];return`['${b[0]}', ${T}]`}return`'${b[0]}'`}),m=u,d=m.search(/\bdeclaration\s*\{/);if(d!==-1){let _=m.indexOf("{",d),b=1,T=_+1;for(;T<m.length&&b>0;)m[T]==="{"?b++:m[T]==="}"&&b--,T++;m=m.slice(0,d)+m.slice(T)}let y=m.match(/description\s*:\s*(['"`])([^]*?)\1/),x=m.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),E=y?y[2]:s;if(x){let _=x[1].trim().split(",").map(j=>j.trim()),b=x[2].trim(),T=_[0]||"x",k=_.slice(1),w=k.map(j=>`check${j}`);k.forEach((j,C)=>{b=b.replace(new RegExp(`\\b${j}\\s*\\(`,"g"),`${w[C]}(`)}),t+=`const ${s} = Generic([${f.join(", ")}], (${T}, ${w.join(", ")}) => { ${b} }, '${E}')`}else t+=`const ${s} = Generic([${f.join(", ")}], () => true, '${E}')`;n=p;continue}t+=e[n],n++}return t}function Qr(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(),p=l,f=qr(u);t+=`const ${s} = Union('${i}', [${f.join(", ")}])`,n=p;continue}else{let a=e.indexOf(`
|
|
10
|
+
`,o);a===-1&&(a=e.length);let c=e.slice(o,a).trim();if(c){let l=qr(c);t+=`const ${s} = Union('${i}', [${l.join(", ")}])`,n=a;continue}}}t+=e[n],n++}return t}function qr(e){let t=[],n=e.split("|").map(r=>r.trim());for(let r of n)r&&t.push(r);return t}function es(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(r){let s=r[1],i=r[3],a=n+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let d=e[l];d==="{"?c++:d==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),p=l,m=Gi(u).map(([d,y])=>`${d}: ${y}`).join(", ");t+=`const ${s} = Enum('${i}', { ${m} })`,n=p;continue}t+=e[n],n++}return t}function Gi(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 ts(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 b=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=mt(e,c),u=e.slice(c+1,l-1).trim(),p=[],f=0,m=e.slice(c+1,l-1);for(;f<m.length;){let b=m.slice(f).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!b){f++;continue}let T=b[1],k=!!b[2],w=b[3],j=f+b[0].length-1,C=1,$=j+1;for(;$<m.length&&C>0;)m[$]==="("&&C++,m[$]===")"&&C--,$++;let R=m.slice(j+1,$-1),A=$;for(;A<m.length&&/\s/.test(m[A]);)A++;if(m[A]==="="&&m[A+1]===">"){let H=pt(e,c+1+f);throw new ie(`Arrow functions are not allowed in extend blocks (method '${w}' in extend ${a}). Use regular function syntax instead, as extension methods need 'this' binding.`,H)}if(m[A]!=="{"){f++;continue}let P=mt(m,A),v=m.slice(f,P).trim(),I=R.split(",").map(H=>H.trim()).filter(H=>H.length>0).map(H=>{let se=H.match(/^(\w+)\s*:\s*(.+)$/);return se?`${se[1]} = ${se[2]}`:H}).join(", "),O=k?"async ":"",F=m.slice(A+1,P-1);p.push({name:w,isAsync:k,fullText:`${w}: ${O}function(${I}) {${F}}`}),f=P}let d=!t.has(a);d&&t.set(a,new Set);let y=t.get(a);for(let _ of p)y.add(_.name);let x=p.map(_=>` ${_.fullText}`).join(`,
|
|
12
|
+
`),E;d?E=`${o}const __ext_${a} = {
|
|
13
|
+
${x}
|
|
14
|
+
${o}}
|
|
15
|
+
`:E=`${o}Object.assign(__ext_${a}, {
|
|
16
|
+
${x}
|
|
17
|
+
${o}})
|
|
18
|
+
`;for(let _ of p)E+=`${o}if (__tjs?.registerExtension) { __tjs.registerExtension('${a}', '${_.name}', __ext_${a}.${_.name}) }
|
|
19
|
+
`;n+=E,r=l}return r<=e.length&&n.length<e.length,{source:n,extensions:t}}function dt(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,p,f)=>f?`__ext_String.${p}.call(${u})`:`__ext_String.${p}.call(${u}, `);let a=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${s})\\((\\))?`,"g");r=r.replace(a,(l,u,p,f)=>f?`__ext_String.${p}.call(${u})`:`__ext_String.${p}.call(${u}, `);let c=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+s+"\\((\\))?","g");r=r.replace(c,(l,u,p)=>p?`__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,p=!1;for(;u>=0&&l>0;){let f=r[u];p?f===p&&(u===0||r[u-1]!=="\\")&&(p=!1):(f==="]"&&l++,f==="["&&l--,(f==="'"||f==='"'||f==="`")&&(p=f)),u--}if(l===0){let f=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(${f})${d.slice(1)}`:r=`${m}__ext_Array.${s}.call(${f}, ${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 pt(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 ns(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 Ut(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 Vn(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=Jr(s.trim(),t);l&&n.push(l),s="";continue}s+=c}let o=s.trim();if(o){let a=Jr(o,t);a&&n.push(a)}return n}function Jr(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 mt(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 rs(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 p=!!i[1],f=!!i[2],m=i[3],d=i.index,y=d,E=i[0].indexOf("function");E>=0&&(y=d+E),o.push({name:m,fullMatchStart:d,funcKeywordStart:y,exported:p,isAsync:f})}for(let p of o)s.has(p.name)||s.set(p.name,[]);let a=new Map;for(let p of o)a.set(p.name,(a.get(p.name)||0)+1);let c=new Set;for(let[p,f]of a)f>1&&c.add(p);if(c.size===0)return{source:e,polymorphicNames:n};for(let p of o){if(!c.has(p.name))continue;let f=e.indexOf("(",p.funcKeywordStart);if(f===-1)continue;let m=1,d=f+1;for(;d<e.length&&m>0;)e[d]==="("&&m++,e[d]===")"&&m--,d++;let y=d-1,x=e.slice(f+1,y),E=d;for(;E<e.length&&e[E]!=="{";)E++;if(E>=e.length)continue;let _=mt(e,E),b=p.fullMatchStart;for(;b>0&&e[b-1]===" ";)b--;let T=s.get(p.name),k=Vn(x,t);if(x.includes("...")){let j=pt(e,p.funcKeywordStart);throw new ie(`Rest parameters are not supported in polymorphic function '${p.name}'. Use separate function names instead.`,j)}T.push({index:T.length+1,start:b,end:_,text:e.slice(b,_),exported:p.exported,isAsync:p.isAsync,params:k})}for(let[p,f]of s){if(f.length<2)continue;let m=f.filter(d=>d.isAsync).length;if(m>0&&m<f.length){let d=pt(e,f[0].start);throw new ie(`Polymorphic function '${p}': all variants must be either sync or async, not mixed.`,d)}for(let d=0;d<f.length;d++)for(let y=d+1;y<f.length;y++){let x=f[d],E=f[y];if(x.params.length!==E.params.length)continue;let _=!0;for(let b=0;b<x.params.length;b++){let T=x.params[b].defaultValue?Ut(x.params[b].defaultValue):"any",k=E.params[b].defaultValue?Ut(E.params[b].defaultValue):"any";if(T!==k){_=!1;break}}if(_){let b=pt(e,E.start);throw new ie(`Polymorphic function '${p}': variants ${d+1} and ${y+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,b)}}}let l=[];for(let[p,f]of s)if(!(f.length<2))for(let m of f)l.push({name:p,variant:m});l.sort((p,f)=>f.variant.start-p.variant.start);let u=e;for(let{name:p,variant:f}of l){let m=f.isAsync?"async ":"",d=f.text.replace(new RegExp(`(?:export\\s+)?${m?m.replace(/\s+$/,"\\s+"):""}function\\s+${p}\\s*\\(`),`${m}function ${p}$$${f.index}(`);u=u.slice(0,f.start)+d+u.slice(f.end)}for(let[p,f]of s){if(f.length<2)continue;n.add(p);let m=f[0].isAsync,d=f.some(T=>T.exported),y=m?"async ":"",x=d?"export ":"",E=[...f].sort((T,k)=>{if(T.params.length!==k.params.length)return 0;let w=0,j=0;for(let C of T.params){let $=C.defaultValue?Ut(C.defaultValue):"any";$==="non-negative-integer"?w+=3:$==="integer"?w+=2:$!=="any"&&(w+=1)}for(let C of k.params){let $=C.defaultValue?Ut(C.defaultValue):"any";$==="non-negative-integer"?j+=3:$==="integer"?j+=2:$!=="any"&&(j+=1)}return j-w}),_=[];for(let T of E){let k=[`__args.length === ${T.params.length}`],w=[];for(let j=0;j<T.params.length;j++){let C=T.params[j];if(w.push(`__args[${j}]`),C.defaultValue){let $=ns(`__args[${j}]`,C.defaultValue);$!=="true"&&k.push($)}}_.push(` if (${k.join(" && ")}) return ${p}$${T.index}(${w.join(", ")})`)}let b=`
|
|
22
|
+
${x}${y}function ${p}(...__args) {
|
|
23
|
+
${_.join(`
|
|
24
24
|
`)}
|
|
25
|
-
return __tjs.typeError('${
|
|
25
|
+
return __tjs.typeError('${p}', 'no matching overload', __args)
|
|
26
26
|
}
|
|
27
|
-
`;
|
|
28
|
-
${
|
|
29
|
-
`.repeat(
|
|
30
|
-
|
|
31
|
-
function ${
|
|
32
|
-
const __obj = Object.create(${
|
|
33
|
-
;(function() {${
|
|
34
|
-
return __obj`,
|
|
27
|
+
`;u+=b}return{source:u,polymorphicNames:n}}function ss(e){return e.replace(/(?<=^|[;\n{])\s*([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(t,n)=>t.replace(n,`const ${n}`))}function is(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 p=c+1,f=1,m=p;for(;m<e.length&&f>0;){let d=e[m];d==="{"?f++:d==="}"&&f--,m++}if(f===0){let d=e.slice(p,m-1).trim(),y=m,x=(e.slice(0,a).match(/\n/g)||[]).length+1;if(n.push({description:l,body:d,start:a,end:y,line:x}),!t)try{new Function(d)()}catch(b){let T=l||`test at line ${x}`;r.push(`Test failed: ${T} (line ${x})
|
|
28
|
+
${b.message||b}`)}let _=(e.slice(a,y).match(/\n/g)||[]).length;s+=`
|
|
29
|
+
`.repeat(_),i=y;continue}}}s+=e[i],i++}return{source:s,tests:n,errors:r}}function os(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=mt(e,l),p=e.slice(l,u);i.push({className:a,extendsClause:c,bodyStart:l,bodyEnd:u,body:p})}let o=e;for(let a=i.length-1;a>=0;a--){let{className:c,extendsClause:l,bodyStart:u,bodyEnd:p,body:f}=i[a],m=/\bconstructor\s*\(/g,d,y=[];for(;(d=m.exec(f))!==null;)y.push(d.index);if(y.length<2)continue;n.add(c);let x=[];for(let j=0;j<y.length;j++){let C=y[j],$=f.indexOf("(",C),R=1,A=$+1;for(;A<f.length&&R>0;)f[A]==="("&&R++,f[A]===")"&&R--,A++;let P=f.slice($+1,A-1),v=A;for(;v<f.length&&f[v]!=="{";)v++;let I=mt(f,v),O=f.slice(v+1,I-1);x.push({index:j+1,paramStr:P,bodyText:O,fullStart:C,fullEnd:I})}let E=f.slice(0,x[0].fullEnd),_=x[x.length-1].fullEnd;E+=f.slice(_);let b=f;for(let j=x.length-1;j>=1;j--){let C=x[j],$=C.fullStart;for(;$>0&&b[$-1]===" ";)$--;$>0&&b[$-1]===`
|
|
30
|
+
`&&$--,b=b.slice(0,$)+b.slice(C.fullEnd)}let T="";for(let j=1;j<x.length;j++){let C=x[j],$=Vn(C.paramStr,t);if(C.paramStr.includes("...")){let A=pt(e,u+C.fullStart);throw new ie(`Rest parameters are not supported in polymorphic constructors for '${c}'.`,A)}T+=`
|
|
31
|
+
function ${c}$ctor$${C.index}(${C.paramStr}) {`,T+=`
|
|
32
|
+
const __obj = Object.create(${c}.prototype)`,T+=`
|
|
33
|
+
;(function() {${C.bodyText}}).call(__obj)`,T+=`
|
|
34
|
+
return __obj`,T+=`
|
|
35
35
|
}
|
|
36
|
-
`}let
|
|
37
|
-
function ${
|
|
38
|
-
`,
|
|
36
|
+
`}let k=[];for(let j=0;j<x.length;j++){let C=x[j],$=Vn(C.paramStr,t),R=[`a.length === ${$.length}`];for(let A=0;A<$.length;A++){let P=$[A];if(P.defaultValue){let v=ns(`a[${A}]`,P.defaultValue);v!=="true"&&R.push(v)}}if(j===0)k.push(` if (${R.join(" && ")}) return Reflect.construct(t, a)`);else{let A=$.map((P,v)=>`a[${v}]`).join(", ");k.push(` if (${R.join(" && ")}) return ${c}$ctor$${C.index}(${A})`)}}T+=`
|
|
37
|
+
function ${c}$dispatch(t, a) {
|
|
38
|
+
`,T+=k.join(`
|
|
39
39
|
`)+`
|
|
40
|
-
`,
|
|
41
|
-
`,
|
|
42
|
-
`,
|
|
43
|
-
|
|
44
|
-
`),
|
|
45
|
-
`);return X.description=_.trim(),X}}let Y=Q.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!Y)return X;let H=Y[0],G=H.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);if(G)X.description=G[1].trim();let W=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,z;while((z=W.exec(H))!==null)X.params[z[1]]=z[2].trim();return X}import{parseExpressionAt as R5}from"acorn";function z1($){switch($.type){case"Literal":{let Z=$.value;if(Z===null)return{kind:"null"};if(typeof Z==="string")return{kind:"string"};if(typeof Z==="number"){let X=$.raw;if(X&&X.includes("."))return{kind:"number"};return{kind:"integer"}}if(typeof Z==="boolean")return{kind:"boolean"};return{kind:"any"}}case"ArrayExpression":{let Z=$.elements;if(Z.length===0)return{kind:"array",items:{kind:"any"}};let X=Z.filter((H)=>H!=null).map((H)=>z1(H));if(X.length===0)return{kind:"array",items:{kind:"any"}};let Q=new Map;for(let H of X){let G=JSON.stringify(H);if(!Q.has(G))Q.set(G,H)}let K=[...Q.values()];return{kind:"array",items:K.length===1?K[0]:{kind:"union",members:K}}}case"ObjectExpression":{let Z=$.properties,X={};for(let Q of Z)if(Q.type==="Property"&&Q.key.type==="Identifier"){let K=Q.key.name;X[K]=z1(Q.value)}return{kind:"object",shape:X}}case"LogicalExpression":{let{operator:Z,left:X,right:Q}=$;if(Z==="||")return z1(X);if(Z==="&&")return z1(Q);if(Z==="??")return z1(Q);return{kind:"any"}}case"BinaryExpression":{let{operator:Z,left:X,right:Q}=$;if(Z==="|"){let K=z1(X),Y=z1(Q);if(Y.kind==="null")return{...K,nullable:!0};if(K.kind==="null")return{...Y,nullable:!0};return{kind:"union",members:[K,Y]}}return{kind:"any"}}case"Identifier":{if($.name==="undefined")return{kind:"undefined"};return{kind:"any"}}case"UnaryExpression":{let{operator:Z,argument:X}=$;if(Z==="+"&&X.type==="Literal"){if(typeof X.value==="number")return{kind:"non-negative-integer"}}if(Z==="-"&&X.type==="Literal"){if(typeof X.value==="number"){let K=X.raw;if(K&&K.includes("."))return{kind:"number"};return{kind:"integer"}}}return{kind:"any"}}default:return{kind:"any"}}}function E1($,Z){if($.type==="Identifier")return{name:$.name,type:{kind:"any"},required:!0};if($.type==="AssignmentPattern"){let{left:X,right:Q}=$;if(X.type!=="Identifier")throw new s("Only simple parameter names are supported",a($));let K=X.name,Y=Z?.has(K)??!1,H=z1(Q),G=B1(Q);return{name:K,type:H,required:Y,default:Y?null:G,example:G,loc:{start:$.start,end:$.end}}}if($.type==="ObjectPattern"){let X=$.properties,Q={},K={};for(let Y of X)if(Y.type==="Property"){let H=Y.key.type==="Identifier"?Y.key.name:String(Y.key.value);if(Y.value.type==="Identifier")Q[H]={kind:"any"},K[H]={name:H,type:{kind:"any"},required:!0};else if(Y.value.type==="AssignmentPattern"){let G=E1(Y.value,Z),W=Z?.has(H)??!1;Q[H]=G.type,K[H]={name:H,type:G.type,required:W,default:W?null:G.example,example:G.example}}}return{name:"__destructured__",type:{kind:"object",shape:Q,destructuredParams:K},required:!0}}throw new s(`Unsupported parameter pattern: ${$.type}`,a($))}function B1($){switch($.type){case"Literal":return $.value;case"ArrayExpression":return $.elements.map((Z)=>Z?B1(Z):null);case"ObjectExpression":{let Z={};for(let X of $.properties)if(X.type==="Property"&&X.key.type==="Identifier")Z[X.key.name]=B1(X.value);return Z}case"UnaryExpression":if($.operator==="-"){let Z=B1($.argument);return typeof Z==="number"?-Z:void 0}if($.operator==="+"){let Z=B1($.argument);return typeof Z==="number"?+Z:void 0}return;case"BinaryExpression":{let{operator:Z,left:X}=$;if(Z==="|")return B1(X);return}case"LogicalExpression":{let{operator:Z,left:X,right:Q}=$;if(Z==="&&"){if(X.type==="Literal"&&X.value===null)return null}if(Z==="||")return B1(X)??B1(Q);if(Z==="??")return B1(X)??B1(Q);return}default:return}}function I7($){try{let Z=R5($,0,{ecmaVersion:2022});return z1(Z)}catch{return{kind:"any"}}}function i4($){switch($.kind){case"string":return $.nullable?"string | null":"string";case"number":return $.nullable?"number | null":"number";case"integer":return $.nullable?"integer | null":"integer";case"non-negative-integer":return $.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return $.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let Z=$.items?i4($.items):"any";return $.nullable?`${Z}[] | null`:`${Z}[]`}case"object":{if(!$.shape||Object.keys($.shape).length===0)return $.nullable?"object | null":"object";let Z=Object.entries($.shape).map(([X,Q])=>`${X}: ${i4(Q)}`).join(", ");return $.nullable?`{ ${Z} } | null`:`{ ${Z} }`}case"union":return $.members?.map(i4).join(" | ")||"any";default:return"any"}}function p0($){switch($.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:$.items?p0($.items):{}};case"object":if($.shape){let Z={};for(let[X,Q]of Object.entries($.shape))Z[X]=p0(Q);return{type:"object",properties:Z,additionalProperties:!1}}return{type:"object"};case"union":if($.members)return{oneOf:$.members.map(p0)};return{};default:return{}}}function w5($){let Z={},X=[];for(let[Q,K]of Object.entries($))if(Z[Q]=p0(K.type),K.required)X.push(Q);return{type:"object",properties:Z,required:X.length>0?X:void 0,additionalProperties:!1}}function w0($,Z,X,Q={},K){let Y=A0(Z,$),H=new Map;for(let w of $.params){let F=E1(w,K);if(F.name==="__destructured__"&&F.type.kind==="object"&&F.type.destructuredParams)for(let[P,R]of Object.entries(F.type.destructuredParams))H.set(P,{...R,description:Y.params[P]});else F.description=Y.params[F.name],H.set(F.name,F)}let G;if(X)G=I7(X);let W={depth:0,locals:new Map,parameters:H,atoms:new Set(Object.keys(Q.atoms||{})),warnings:[],source:Z,filename:Q.filename||"<source>",options:Q},z=j1($.body,W),J=[],L=[],_=[];for(let[w,F]of H.entries())if(F.required)L.push(w);else if(F.default!==void 0)_.push({name:w,defaultValue:F.default});else L.push(w);if(L.length>0)J.push({op:"varsImport",keys:L});for(let{name:w,defaultValue:F}of _)J.push({op:"varsImport",keys:[w]}),J.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:w},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:w,value:F}]});J.push(...z);let U=Object.fromEntries(H),q={name:$.id?.name||"anonymous",description:Y.description,parameters:U,returns:G},D=w5(U);return{ast:{op:"seq",steps:J,inputSchema:D},signature:q,warnings:W.warnings}}function j1($,Z){let X=[];for(let Q of $.body){let K=I0(Q,Z);if(K)if(Array.isArray(K))X.push(...K);else X.push(K)}return X}function I0($,Z){switch($.type){case"VariableDeclaration":return B5($,Z);case"ExpressionStatement":return j5($,Z);case"IfStatement":return F5($,Z);case"WhileStatement":return P5($,Z);case"ForOfStatement":return V5($,Z);case"TryStatement":return C5($,Z);case"ReturnStatement":return O5($,Z);case"ThrowStatement":throw new s("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",a($),Z.source,Z.filename);case"BlockStatement":return{op:"scope",steps:j1($,U1(Z))};case"EmptyStatement":return null;default:throw new s(`Unsupported statement type: ${$.type}`,a($),Z.source,Z.filename)}}function B5($,Z){let X=[],Q=$.kind==="const",K=Q?"constSet":"varSet";for(let Y of $.declarations){if(Y.id.type!=="Identifier")throw new s("Only simple variable names are supported",a(Y),Z.source,Z.filename);let H=Y.id.name;if(Y.init){let{step:G,resultVar:W}=h1(Y.init,Z,H,Q);if(G)X.push(G);else if(W!==H)X.push({op:K,key:H,value:W});let z=z1(Y.init);Z.locals.set(H,z)}else{if(Q)throw new s("const declarations must be initialized",a(Y),Z.source,Z.filename);X.push({op:"varSet",key:H,value:null}),Z.locals.set(H,{kind:"any",nullable:!0})}}return X}function j5($,Z){let X=$.expression;if(X.type==="AssignmentExpression")return M5(X,Z);if(X.type==="CallExpression"){let{step:Q,resultVar:K}=h1(X,Z);if(Q)return Q;if(K)return{op:"varSet",key:"_",value:K};return null}return Z.warnings.push({message:"Expression statement has no effect",line:a($).line,column:a($).column}),null}function M5($,Z){if($.left.type!=="Identifier")throw new s("Only simple variable assignment is supported",a($),Z.source,Z.filename);let X=$.left.name,{step:Q,resultVar:K}=h1($.right,Z,X);if(Q)return Q;return{op:"varSet",key:X,value:K}}function F5($,Z){let X=c($.test,Z),Q=$.consequent.type==="BlockStatement"?j1($.consequent,U1(Z)):[I0($.consequent,Z)].filter(Boolean),K;if($.alternate)K=$.alternate.type==="BlockStatement"?j1($.alternate,U1(Z)):[I0($.alternate,Z)].filter(Boolean);return{op:"if",condition:X,then:Q,...K&&{else:K}}}function P5($,Z){let X=c($.test,Z),Q=$.body.type==="BlockStatement"?j1($.body,U1(Z)):[I0($.body,Z)].filter(Boolean);return{op:"while",condition:X,body:Q}}function V5($,Z){let X;if($.left.type==="VariableDeclaration"){let H=$.left.declarations[0];if(H.id.type!=="Identifier")throw new s("Only simple variable names are supported in for...of",a($.left),Z.source,Z.filename);X=H.id.name}else if($.left.type==="Identifier")X=$.left.name;else throw new s("Unsupported for...of left-hand side",a($.left),Z.source,Z.filename);let Q=X1($.right,Z),K=U1(Z);K.locals.set(X,{kind:"any"});let Y=$.body.type==="BlockStatement"?j1($.body,K):[I0($.body,K)].filter(Boolean);return{op:"map",items:Q,as:X,steps:Y}}function C5($,Z){let X=j1($.block,U1(Z)),Q,K;if($.handler){let Y=U1(Z);if($.handler.param?.type==="Identifier")K=$.handler.param.name,Y.locals.set(K,{kind:"any"});Q=j1($.handler.body,Y)}return{op:"try",try:X,...Q&&{catch:Q},...K&&{catchParam:K}}}function O5($,Z){if(!$.argument)return{op:"return",value:{}};let{step:X,resultVar:Q}=h1($.argument,Z,"__returnVal__");if(X)return[X,{op:"return",value:Q}];return{op:"return",value:X1($.argument,Z)}}var w7=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),N5=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),R0=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),E5=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 T5($){if($.callee.type==="Identifier"){let Z=$.callee.name;return N5.has(Z)||R0.has(Z)}if($.callee.type==="MemberExpression"){let Z=$.callee;if(Z.object.type==="Identifier"){let X=Z.object.name;if(w7.has(X)||R0.has(X))return!0}if(Z.property.type==="Identifier"){let X=Z.property.name;if(E5.has(X))return!0}}return!1}function S5($){if($.object.type==="Identifier"){let Z=$.object.name;return w7.has(Z)||R0.has(Z)}return!1}var R7={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 k5($){if($.callee.type==="Identifier"){let Z=$.callee.name;if(R0.has(Z))return R7[Z]||`${Z} is not available in AsyncJS.`}if($.callee.type==="MemberExpression"){let Z=$.callee;if(Z.object.type==="Identifier"){let X=Z.object.name;if(R0.has(X))return R7[X]||`${X} is not available in AsyncJS.`}}return null}function B7($){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."}[$]||" Use factory functions or object literals instead."}function h1($,Z,X,Q){let K=Q?"constSet":"varSet";if($.type==="ChainExpression")return h1($.expression,Z,X,Q);if($.type==="NewExpression"){let H=$,G="constructor";if(H.callee.type==="Identifier")G=H.callee.name;let W=B7(G);throw new s(`The 'new' keyword is not supported in AsyncJS.${W}`,a($),Z.source,Z.filename)}if($.type==="CallExpression"){let H=k5($);if(H)throw new s(H,a($),Z.source,Z.filename)}if($.type==="CallExpression"&&T5($)){let H=c($,Z);if(X)return{step:{op:K,key:X,value:H},resultVar:X};return{step:null,resultVar:H}}if($.type==="MemberExpression"&&S5($)){let H=c($,Z);if(X)return{step:{op:K,key:X,value:H},resultVar:X};return{step:null,resultVar:H}}if($.type==="CallExpression")return g5($,Z,X,Q);if($.type==="TemplateLiteral")return v5($,Z,X,Q);if($.type==="BinaryExpression"||$.type==="LogicalExpression"||$.type==="UnaryExpression"){let H=c($,Z);if(X)return{step:{op:K,key:X,value:H},resultVar:X};return{step:null,resultVar:H}}return{step:null,resultVar:X1($,Z)}}function g5($,Z,X,Q){let K,Y=!1,H;if($.callee.type==="Identifier")K=$.callee.name;else if($.callee.type==="MemberExpression"){let W=$.callee;if(W.property.type==="Identifier")K=W.property.name,Y=!0,H=X1(W.object,Z);else throw new s("Computed method names are not supported",a($),Z.source,Z.filename)}else throw new s("Only named function calls are supported",a($),Z.source,Z.filename);if(Y)return b5(K,H,$.arguments,Z,X,Q);if(K==="console"&&$.callee.type==="MemberExpression");let G=f5($,Z);return{step:{op:K,...G,...X&&{result:X},...X&&Q&&{resultConst:!0}},resultVar:X}}function b5($,Z,X,Q,K,Y){switch($){case"map":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let H=X[0],G=H.params[0],W=G?.type==="Identifier"?G.name:"item",z=U1(Q);z.locals.set(W,{kind:"any"});let J;if(H.body.type==="BlockStatement")J=j1(H.body,z);else{let{step:L,resultVar:_}=h1(H.body,z,"result");J=L?[L]:[{op:"varSet",key:"result",value:_}]}return{step:{op:"map",items:Z,as:W,steps:J,...K&&{result:K},...K&&Y&&{resultConst:!0}},resultVar:K}}break;case"filter":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let H=X[0],G=H.params[0],W=G?.type==="Identifier"?G.name:"item",z=U1(Q);z.locals.set(W,{kind:"any"});let J;if(H.body.type==="BlockStatement")throw new s("filter callback must be an expression, not a block",a(X[0]),Q.source,Q.filename);else J=c(H.body,z);return{step:{op:"filter",items:Z,as:W,condition:J,...K&&{result:K},...K&&Y&&{resultConst:!0}},resultVar:K}}break;case"find":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let H=X[0],G=H.params[0],W=G?.type==="Identifier"?G.name:"item",z=U1(Q);z.locals.set(W,{kind:"any"});let J;if(H.body.type==="BlockStatement")throw new s("find callback must be an expression, not a block",a(X[0]),Q.source,Q.filename);else J=c(H.body,z);return{step:{op:"find",items:Z,as:W,condition:J,...K&&{result:K},...K&&Y&&{resultConst:!0}},resultVar:K}}break;case"reduce":if(X.length>=2&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let H=X[0],G=H.params[0],W=H.params[1],z=G?.type==="Identifier"?G.name:"acc",J=W?.type==="Identifier"?W.name:"item",L=U1(Q);L.locals.set(z,{kind:"any"}),L.locals.set(J,{kind:"any"});let _;if(H.body.type==="BlockStatement")_=j1(H.body,L);else{let{step:q,resultVar:D}=h1(H.body,L,"result");_=q?[q]:[{op:"varSet",key:"result",value:D}]}let U=X1(X[1],Q);return{step:{op:"reduce",items:Z,as:J,accumulator:z,initial:U,steps:_,...K&&{result:K},...K&&Y&&{resultConst:!0}},resultVar:K}}break;case"slice":break;case"push":return{step:{op:"push",list:Z,item:X1(X[0],Q),...K&&{result:K},...K&&Y&&{resultConst:!0}},resultVar:K};case"join":return{step:{op:"join",list:Z,sep:X.length>0?X1(X[0],Q):"",...K&&{result:K},...K&&Y&&{resultConst:!0}},resultVar:K};case"split":return{step:{op:"split",str:Z,sep:X.length>0?X1(X[0],Q):"",...K&&{result:K},...K&&Y&&{resultConst:!0}},resultVar:K}}return Q.warnings.push({message:`Unknown method '${$}' - treating as atom call`,line:0,column:0}),{step:{op:$,receiver:Z,args:X.map((H)=>X1(H,Q)),...K&&{result:K},...K&&Y&&{resultConst:!0}},resultVar:K}}function v5($,Z,X,Q){let K="",Y={};for(let H=0;H<$.quasis.length;H++)if(K+=$.quasis[H].value.cooked||$.quasis[H].value.raw,H<$.expressions.length){let G=$.expressions[H],W=`_${H}`;Y[W]=X1(G,Z),K+=`{{${W}}}`}return{step:{op:"template",tmpl:K,vars:Y,...X&&{result:X},...X&&Q&&{resultConst:!0}},resultVar:X}}function c($,Z){switch($.type){case"Literal":return{$expr:"literal",value:$.value};case"Identifier":return{$expr:"ident",name:$.name};case"MemberExpression":{let X=$,Q=c(X.object,Z),K=X.optional===!0;if(X.computed){let H=X.property;if(H.type==="Literal")return{$expr:"member",object:Q,property:String(H.value),computed:!0,...K&&{optional:!0}};throw new s("Computed member access with variables not yet supported",a($),Z.source,Z.filename)}let Y=X.property.name;return{$expr:"member",object:Q,property:Y,...K&&{optional:!0}}}case"ChainExpression":return c($.expression,Z);case"BinaryExpression":{let X=$;return{$expr:"binary",op:X.operator,left:c(X.left,Z),right:c(X.right,Z)}}case"LogicalExpression":{let X=$;return{$expr:"logical",op:X.operator,left:c(X.left,Z),right:c(X.right,Z)}}case"UnaryExpression":{let X=$;return{$expr:"unary",op:X.operator,argument:c(X.argument,Z)}}case"ConditionalExpression":{let X=$;return{$expr:"conditional",test:c(X.test,Z),consequent:c(X.consequent,Z),alternate:c(X.alternate,Z)}}case"ArrayExpression":return{$expr:"array",elements:$.elements.filter((Q)=>Q!==null).map((Q)=>c(Q,Z))};case"ObjectExpression":{let X=$,Q=[];for(let K of X.properties)if(K.type==="Property"){let Y=K.key.type==="Identifier"?K.key.name:String(K.key.value);Q.push({key:Y,value:c(K.value,Z)})}return{$expr:"object",properties:Q}}case"CallExpression":{let X=$;if(X.callee.type==="MemberExpression"){let Q=X.callee,K=Q.property.type==="Identifier"?Q.property.name:String(Q.property.value),Y=Q.optional===!0||X.optional===!0;return{$expr:"methodCall",object:c(Q.object,Z),method:K,arguments:X.arguments.map((H)=>c(H,Z)),...Y&&{optional:!0}}}if(X.callee.type==="Identifier")return{$expr:"call",callee:X.callee.name,arguments:X.arguments.map((K)=>c(K,Z))};throw new s("Complex function calls in expressions should be lifted to statements",a($),Z.source,Z.filename)}case"NewExpression":{let X=$,Q="constructor";if(X.callee.type==="Identifier")Q=X.callee.name;let K=B7(Q);throw new s(`The 'new' keyword is not supported in AsyncJS.${K}`,a($),Z.source,Z.filename)}case"TemplateLiteral":throw new s("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",a($),Z.source,Z.filename);default:throw new s(`Unsupported expression type in condition: ${$.type}`,a($),Z.source,Z.filename)}}function X1($,Z){switch($.type){case"Literal":return $.value;case"Identifier":return $.name;case"MemberExpression":{let X=$;if(X.optional===!0)return c($,Z);let K=X1(X.object,Z);if(K&&typeof K==="object"&&K.$expr){let H=X.computed?String(X.property.value):X.property.name;return{$expr:"member",object:K,property:H,...X.computed&&{computed:!0}}}if(X.computed)return`${K}[${X1(X.property,Z)}]`;let Y=X.property.name;if(typeof K==="string")return`${K}.${Y}`;if(K&&K.$kind==="arg")return{$kind:"arg",path:`${K.path}.${Y}`};return`${K}.${Y}`}case"ChainExpression":return X1($.expression,Z);case"ArrayExpression":return $.elements.map((X)=>X?X1(X,Z):null);case"ObjectExpression":{let X={};for(let Q of $.properties)if(Q.type==="Property"){let K=Q.key.type==="Identifier"?Q.key.name:String(Q.key.value);X[K]=X1(Q.value,Z)}return X}case"TemplateLiteral":return c($,Z);case"CallExpression":return c($,Z);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return c($,Z);default:return null}}function f5($,Z){if($.arguments.length===1&&$.arguments[0].type==="ObjectExpression"){let X=$.arguments[0],Q={};for(let K of X.properties)if(K.type==="Property"){let Y=K.key.type==="Identifier"?K.key.name:String(K.key.value);Q[Y]=X1(K.value,Z)}return Q}return{args:$.arguments.map((X)=>X1(X,Z))}}import{parseExpressionAt as o7}from"acorn";function y5($,Z){let X=Z;while(X>0&&$[X-1]!==`
|
|
46
|
-
|
|
40
|
+
`,T+=` return __tjs.typeError('${c}', 'no matching constructor', a)
|
|
41
|
+
`,T+=`}
|
|
42
|
+
`,o=o.slice(0,u)+b+o.slice(p);let w=u+b.length;o=o.slice(0,w)+T+o.slice(w)}return{source:o,polyCtorClasses:n}}function as(e,t=new Set){let n=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,r="",s=0,i;for(;(i=n.exec(e))!==null;){let o=i[1],a=i[2]||"",c=i.index,l=c+i[0].length-1,u=1,p=l+1;for(;p<e.length&&u>0;){let f=e[p];f==="{"?u++:f==="}"&&u--,p++}if(u===0){let f=p,m=e.slice(l,f);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=f}}return r+=e.slice(s),r}function cs(e){let t=[{pattern:/\bnew\s+Date\b/,message:"new Date() is not allowed in TjsDate mode. Use Timestamp.now() or Timestamp.from()"},{pattern:/\bDate\.now\b/,message:"Date.now() is not allowed in TjsDate mode. Use Timestamp.now()"},{pattern:/\bDate\.parse\b/,message:"Date.parse() is not allowed in TjsDate mode. Use Timestamp.parse()"},{pattern:/\bDate\.UTC\b/,message:"Date.UTC() is not allowed in TjsDate mode. Use Timestamp.from()"}];for(let{pattern:n,message:r}of t)if(n.test(e))throw new Error(r);return e}function ls(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 us(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 fs(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 ps(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=Hi(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 p=e.slice(n+2,u);t+=`__tjs.bang(${l},'${p}')`,n=u;continue}}t+=i,n++}else r==="line-comment"?(t+=i,i===`
|
|
43
|
+
`&&(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 Hi(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=Wr(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=Wr(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 Wr(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 qt(e,t={}){let n=e,r,s=new Set,i=new Set,o=new Set,c=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e)||t.vmTarget,l=c?{tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1,tjsNoVar:!1}:{tjsEquals:!0,tjsClass:!0,tjsDate:!0,tjsNoeval:!0,tjsStandard:!0,tjsSafeEval:!1,tjsNoVar:!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 p=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsCompat|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsNoVar|TjsStandard|TjsSafeEval)\b/,f;for(;f=e.match(p);){let k=f[2];k==="TjsStrict"?(l.tjsEquals=!0,l.tjsClass=!0,l.tjsDate=!0,l.tjsNoeval=!0,l.tjsNoVar=!0,l.tjsStandard=!0):k==="TjsCompat"?(l.tjsEquals=!1,l.tjsClass=!1,l.tjsDate=!1,l.tjsNoeval=!1,l.tjsNoVar=!1,l.tjsStandard=!1,l.tjsSafeEval=!1):k==="TjsEquals"?l.tjsEquals=!0:k==="TjsClass"?l.tjsClass=!0:k==="TjsDate"?l.tjsDate=!0:k==="TjsNoeval"?l.tjsNoeval=!0:k==="TjsNoVar"?l.tjsNoVar=!0:k==="TjsStandard"?l.tjsStandard=!0:k==="TjsSafeEval"&&(l.tjsSafeEval=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${k}\\s*`),"$1")}l.tjsStandard&&(e=Gr(e)),e=ls(e),e=ps(e),e=zr(e),l.tjsEquals&&!t.vmTarget&&(e=Hr(e)),e=Zr(e),e=Xr(e),e=Yr(e),e=Qr(e),e=es(e),e=ss(e);let{source:m,returnType:d,returnSafety:y}=Bt(e,{originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o});e=m;let x=ts(e);e=x.source,e=Vr(e);let E=rs(e,s);e=E.source;let _=Kr(e);e=_.source;let b=is(e,t.dangerouslySkipTests);e=b.source;let T=os(e,s);e=T.source;for(let k of T.polyCtorClasses)i.add(`${k}$dispatch`);return l.tjsClass&&(e=as(e,T.polyCtorClasses)),l.tjsDate&&(e=cs(e)),l.tjsNoeval&&(e=fs(e)),l.tjsNoVar&&(e=us(e)),e=dt(e,x.extensions),{source:e,returnType:d,returnSafety:y,moduleSafety:r,tjsModes:l,originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o,wasmBlocks:_.blocks,tests:b.tests,testErrors:b.errors,polymorphicNames:E.polymorphicNames,extensions:x.extensions}}function we(e,t={}){let{filename:n="<source>",colonShorthand:r=!0,vmTarget:s=!1}=t,{source:i,returnType:o,returnSafety:a,moduleSafety:c,originalSource:l,requiredParams:u,unsafeFunctions:p,safeFunctions:f,wasmBlocks:m,tests:d,testErrors:y}=r?qt(e,{vmTarget:s}):{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:[]};try{return{ast:ms.parse(i,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:o,returnSafety:a,moduleSafety:c,originalSource:l,requiredParams:u,unsafeFunctions:p,safeFunctions:f,wasmBlocks:m,tests:d,testErrors:y}}catch(x){let E=x.loc||{line:1,column:0};throw new ie(x.message.replace(/\s*\(\d+:\d+\)$/,""),E,l,n)}}function Jt(e,t){for(let r of e.body){if(r.type==="ImportDeclaration")throw new ie("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 ie("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 ie("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 ie("Source must contain a function declaration",{line:1,column:0},void 0,t);if(n.length>1){let r=n[1];throw new ie("Only a single function per agent is allowed",r.loc?.start||{line:1,column:0},void 0,t)}return n[0]}function yt(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],p=r.substring(u.index+u[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(p)){let f=u[1],m=f.split(`
|
|
44
|
+
`),d=m.filter(y=>y.trim().length>0).reduce((y,x)=>{let E=x.match(/^(\s*)/)?.[1].length||0;return Math.min(y,E)},1/0);return d>0&&d<1/0&&(f=m.map(y=>y.slice(d)).join(`
|
|
45
|
+
`)),n.description=f.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 Zi}from"acorn";function le(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=>le(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]=le(r.value)}return{kind:"object",shape:n}}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="||"?le(n):t==="&&"||t==="??"?le(r):{kind:"any"}}case"BinaryExpression":{let{operator:t,left:n,right:r}=e;if(t==="|"){let s=le(n),i=le(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"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 je(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 z("Only simple parameter names are supported",Z(e));let s=n.name,i=t?.has(s)??!1,o=le(r),a=xe(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=je(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 z(`Unsupported parameter pattern: ${e.type}`,Z(e))}function xe(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(t=>t?xe(t):null);case"ObjectExpression":{let t={};for(let n of e.properties)n.type==="Property"&&n.key.type==="Identifier"&&(t[n.key.name]=xe(n.value));return t}case"UnaryExpression":if(e.operator==="-"){let t=xe(e.argument);return typeof t=="number"?-t:void 0}if(e.operator==="+"){let t=xe(e.argument);return typeof t=="number"?+t:void 0}return;case"BinaryExpression":{let{operator:t,left:n}=e;return t==="|"?xe(n):void 0}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="&&"&&n.type==="Literal"&&n.value===null?null:t==="||"||t==="??"?xe(n)??xe(r):void 0}default:return}}function ds(e){try{let t=Zi(e,0,{ecmaVersion:2022});return le(t)}catch{return{kind:"any"}}}function Kn(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?Kn(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}: ${Kn(r)}`).join(", ");return e.nullable?`{ ${t} } | null`:`{ ${t} }`}case"union":return e.members?.map(Kn).join(" | ")||"any";default:return"any"}}function Wt(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?Wt(e.items):{}};case"object":if(e.shape){let t={};for(let[n,r]of Object.entries(e.shape))t[n]=Wt(r);return{type:"object",properties:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(Wt)}:{};default:return{}}}function Yi(e){let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Wt(s.type),s.required&&n.push(r);return{type:"object",properties:t,required:n.length>0?n:void 0,additionalProperties:!1}}function bt(e,t,n,r={},s){let i=yt(t,e),o=new Map;for(let x of e.params){let E=je(x,s);if(E.name==="__destructured__"&&E.type.kind==="object"&&E.type.destructuredParams)for(let[_,b]of Object.entries(E.type.destructuredParams))o.set(_,{...b,description:i.params[_]});else E.description=i.params[E.name],o.set(E.name,E)}let a;n&&(a=ds(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=Te(e.body,c),u=[],p=[],f=[];for(let[x,E]of o.entries())E.required?p.push(x):E.default!==void 0?f.push({name:x,defaultValue:E.default}):p.push(x);p.length>0&&u.push({op:"varsImport",keys:p});for(let{name:x,defaultValue:E}of f)u.push({op:"varsImport",keys:[x]}),u.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:x},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:x,value:E}]});u.push(...l);let m=Object.fromEntries(o),d={name:e.id?.name||"anonymous",description:i.description,parameters:m,returns:a},y=Yi(m);return{ast:{op:"seq",steps:u,inputSchema:y},signature:d,warnings:c.warnings}}function Te(e,t){let n=[];for(let r of e.body){let s=gt(r,t);s&&(Array.isArray(s)?n.push(...s):n.push(s))}return n}function gt(e,t){switch(e.type){case"VariableDeclaration":return Xi(e,t);case"ExpressionStatement":return Qi(e,t);case"IfStatement":return to(e,t);case"WhileStatement":return no(e,t);case"ForOfStatement":return ro(e,t);case"TryStatement":return so(e,t);case"ReturnStatement":return io(e,t);case"ThrowStatement":throw new z("'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,pe(t))};case"EmptyStatement":return null;default:throw new z(`Unsupported statement type: ${e.type}`,Z(e),t.source,t.filename)}}function Xi(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 z("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}=De(i.init,t,o,r);a?n.push(a):c!==o&&n.push({op:s,key:o,value:c});let l=le(i.init);t.locals.set(o,l)}else{if(r)throw new z("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 Qi(e,t){let n=e.expression;if(n.type==="AssignmentExpression")return eo(n,t);if(n.type==="CallExpression"){let{step:r,resultVar:s}=De(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 eo(e,t){if(e.left.type!=="Identifier")throw new z("Only simple variable assignment is supported",Z(e),t.source,t.filename);let n=e.left.name,{step:r,resultVar:s}=De(e.right,t,n);return r||{op:"varSet",key:n,value:s}}function to(e,t){let n=G(e.test,t),r=e.consequent.type==="BlockStatement"?Te(e.consequent,pe(t)):[gt(e.consequent,t)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?Te(e.alternate,pe(t)):[gt(e.alternate,t)].filter(Boolean)),{op:"if",condition:n,then:r,...s&&{else:s}}}function no(e,t){let n=G(e.test,t),r=e.body.type==="BlockStatement"?Te(e.body,pe(t)):[gt(e.body,t)].filter(Boolean);return{op:"while",condition:n,body:r}}function ro(e,t){let n;if(e.left.type==="VariableDeclaration"){let o=e.left.declarations[0];if(o.id.type!=="Identifier")throw new z("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 z("Unsupported for...of left-hand side",Z(e.left),t.source,t.filename);let r=ne(e.right,t),s=pe(t);s.locals.set(n,{kind:"any"});let i=e.body.type==="BlockStatement"?Te(e.body,s):[gt(e.body,s)].filter(Boolean);return{op:"map",items:r,as:n,steps:i}}function so(e,t){let n=Te(e.block,pe(t)),r,s;if(e.handler){let i=pe(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 io(e,t){if(!e.argument)return{op:"return",value:{}};let{step:n,resultVar:r}=De(e.argument,t,"__returnVal__");return n?[n,{op:"return",value:r}]:{op:"return",value:ne(e.argument,t)}}var gs=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),oo=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),ht=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),ao=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 co(e){if(e.callee.type==="Identifier"){let t=e.callee.name;return oo.has(t)||ht.has(t)}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(gs.has(n)||ht.has(n))return!0}if(t.property.type==="Identifier"){let n=t.property.name;if(ao.has(n))return!0}}return!1}function lo(e){if(e.object.type==="Identifier"){let t=e.object.name;return gs.has(t)||ht.has(t)}return!1}var ys={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 uo(e){if(e.callee.type==="Identifier"){let t=e.callee.name;if(ht.has(t))return ys[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(ht.has(n))return ys[n]||`${n} is not available in AsyncJS.`}}return null}function hs(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 De(e,t,n,r){let s=r?"constSet":"varSet";if(e.type==="ChainExpression")return De(e.expression,t,n,r);if(e.type==="NewExpression"){let o=e,a="constructor";o.callee.type==="Identifier"&&(a=o.callee.name);let c=hs(a);throw new z(`The 'new' keyword is not supported in AsyncJS.${c}`,Z(e),t.source,t.filename)}if(e.type==="CallExpression"){let o=uo(e);if(o)throw new z(o,Z(e),t.source,t.filename)}if(e.type==="CallExpression"&&co(e)){let o=G(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="MemberExpression"&&lo(e)){let o=G(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="CallExpression")return fo(e,t,n,r);if(e.type==="TemplateLiteral")return mo(e,t,n,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let o=G(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}return{step:null,resultVar:ne(e,t)}}function fo(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=ne(c.object,t);else throw new z("Computed method names are not supported",Z(e),t.source,t.filename)}else throw new z("Only named function calls are supported",Z(e),t.source,t.filename);if(i)return po(s,o,e.arguments,t,n,r);s==="console"&&e.callee.type;let a=yo(e,t);return{step:{op:s,...a,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function po(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=pe(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")u=Te(o.body,l);else{let{step:p,resultVar:f}=De(o.body,l,"result");u=p?[p]:[{op:"varSet",key:"result",value:f}]}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=pe(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new z("filter callback must be an expression, not a block",Z(n[0]),r.source,r.filename);return u=G(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=pe(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new z("find callback must be an expression, not a block",Z(n[0]),r.source,r.filename);return u=G(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",p=pe(r);p.locals.set(l,{kind:"any"}),p.locals.set(u,{kind:"any"});let f;if(o.body.type==="BlockStatement")f=Te(o.body,p);else{let{step:d,resultVar:y}=De(o.body,p,"result");f=d?[d]:[{op:"varSet",key:"result",value:y}]}let m=ne(n[1],r);return{step:{op:"reduce",items:t,as:u,accumulator:l,initial:m,steps:f,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"slice":break;case"push":return{step:{op:"push",list:t,item:ne(n[0],r),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"join":return{step:{op:"join",list:t,sep:n.length>0?ne(n[0],r):"",...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"split":return{step:{op:"split",str:t,sep:n.length>0?ne(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=>ne(o,r)),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}function mo(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]=ne(a,t),s+=`{{${c}}}`}return{step:{op:"template",tmpl:s,vars:i,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function G(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=G(n.object,t),s=n.optional===!0;if(n.computed){let o=n.property;if(o.type==="Literal")return{$expr:"member",object:r,property:String(o.value),computed:!0,...s&&{optional:!0}};throw new z("Computed member access with variables not yet supported",Z(e),t.source,t.filename)}let i=n.property.name;return{$expr:"member",object:r,property:i,...s&&{optional:!0}}}case"ChainExpression":return G(e.expression,t);case"BinaryExpression":{let n=e;return{$expr:"binary",op:n.operator,left:G(n.left,t),right:G(n.right,t)}}case"LogicalExpression":{let n=e;return{$expr:"logical",op:n.operator,left:G(n.left,t),right:G(n.right,t)}}case"UnaryExpression":{let n=e;return{$expr:"unary",op:n.operator,argument:G(n.argument,t)}}case"ConditionalExpression":{let n=e;return{$expr:"conditional",test:G(n.test,t),consequent:G(n.consequent,t),alternate:G(n.alternate,t)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>G(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:G(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:G(r.object,t),method:s,arguments:n.arguments.map(o=>G(o,t)),...i&&{optional:!0}}}if(n.callee.type==="Identifier")return{$expr:"call",callee:n.callee.name,arguments:n.arguments.map(s=>G(s,t))};throw new z("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=hs(r);throw new z(`The 'new' keyword is not supported in AsyncJS.${s}`,Z(e),t.source,t.filename)}case"TemplateLiteral":throw new z("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 z(`Unsupported expression type in condition: ${e.type}`,Z(e),t.source,t.filename)}}function ne(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 G(e,t);let s=ne(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`${s}[${ne(n.property,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 ne(e.expression,t);case"ArrayExpression":return e.elements.map(n=>n?ne(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]=ne(r.value,t)}return n}case"TemplateLiteral":return G(e,t);case"CallExpression":return G(e,t);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return G(e,t);default:return null}}function yo(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]=ne(s.value,t)}return r}return{args:e.arguments.map(n=>ne(n,t))}}import{parseExpressionAt as Vs}from"acorn";function go(e,t){let n=t;for(;n>0&&e[n-1]!==`
|
|
46
|
+
`;)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 ho(e){let t=[],n=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,r;for(;(r=n.exec(e))!==null;){let s=r[2]||`embedded test ${t.length+1}`,i=(r[3]||r[4]||"").trim();t.push({description:s,body:i,line:zn(e,r.index)})}return t}function Gn(e){let t=[],n=[],r=ho(e);t.push(...r);let s=/test\s+(['"`])([^'"`]*)\1\s*\{|test\s*\(\s*(['"`])([^'"`]*)\3\s*\)\s*\{|test\s*\{/g,i=/mock\s*\{/g,o=e,a,c=[];for(;(a=s.exec(e))!==null;){let f=a.index;if(go(e,f))continue;let m=a[2]||a[4]||`test ${t.length+1}`,d=a.index+a[0].length,y=bs(e,d-1);if(y===-1)continue;let x=e.slice(d,y).trim();t.push({description:m,body:x,line:zn(e,f)}),c.push({start:f,end:y+1,desc:m})}let l=[];for(;(a=i.exec(e))!==null;){let f=a.index,m=a.index+a[0].length,d=bs(e,m-1);if(d===-1)continue;let y=e.slice(m,d).trim();n.push({body:y,line:zn(e,f)}),l.push({start:f,end:d+1})}let u=[...c,...l].sort((f,m)=>m.start-f.start);for(let f of u)o=o.slice(0,f.start)+o.slice(f.end);o=o.replace(/\n\s*\n\s*\n/g,`
|
|
47
47
|
|
|
48
|
-
`).trim();let
|
|
49
|
-
`).length}function
|
|
48
|
+
`).trim();let p=bo(t,n);return{code:o,tests:t,mocks:n,testRunner:p}}function bs(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 zn(e,t){return e.slice(0,t).split(`
|
|
49
|
+
`).length}function bo(e,t){if(e.length===0)return"// No tests defined";let n=t.map(s=>s.body).join(`
|
|
50
50
|
`);return`(async () => {
|
|
51
51
|
const __results = []
|
|
52
52
|
|
|
53
|
-
${
|
|
54
|
-
// Test ${
|
|
53
|
+
${e.map((s,i)=>`
|
|
54
|
+
// Test ${i+1}: ${s.description}
|
|
55
55
|
try {
|
|
56
|
-
${
|
|
56
|
+
${n}
|
|
57
57
|
await (async () => {
|
|
58
|
-
${
|
|
58
|
+
${s.body}
|
|
59
59
|
})()
|
|
60
|
-
__results.push({ description: ${JSON.stringify(
|
|
60
|
+
__results.push({ description: ${JSON.stringify(s.description)}, passed: true })
|
|
61
61
|
} catch (__e) {
|
|
62
|
-
__results.push({ description: ${JSON.stringify(
|
|
62
|
+
__results.push({ description: ${JSON.stringify(s.description)}, passed: false, error: __e.message })
|
|
63
63
|
}`).join(`
|
|
64
64
|
`)}
|
|
65
65
|
|
|
@@ -69,13 +69,13 @@ const __failed = __results.filter(r => !r.passed).length
|
|
|
69
69
|
|
|
70
70
|
// Return summary
|
|
71
71
|
return { passed: __passed, failed: __failed, results: __results }
|
|
72
|
-
})()`.trim()}var
|
|
72
|
+
})()`.trim()}var xs=`
|
|
73
73
|
function assert(condition, message) {
|
|
74
74
|
if (!condition) {
|
|
75
75
|
throw new Error(message || 'Assertion failed')
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
`,
|
|
78
|
+
`,Ts=`
|
|
79
79
|
function expect(actual) {
|
|
80
80
|
const deepEqual = (a, b) => {
|
|
81
81
|
if (a === b) return true
|
|
@@ -166,54 +166,54 @@ function expect(actual) {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
-
`,
|
|
170
|
-
`+F7;import{validate as C7,s as _4}from"tosijs-schema";function V1($){if($.nullable)return{anyOf:[V1({...$,nullable:!1}),{type:"null"}]};switch($.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":if($.items)return{type:"array",items:V1($.items)};return{type:"array"};case"object":if($.shape){let Z={},X=[];for(let[Q,K]of Object.entries($.shape))Z[Q]=V1(K),X.push(Q);return{type:"object",properties:Z,required:X,additionalProperties:!1}}return{type:"object"};case"union":if($.members)return{anyOf:$.members.map(V1)};return{};default:return{}}}function x1($){if($===null)return{type:"null"};if($===void 0)return{};switch(typeof $){case"string":return{type:"string"};case"number":return Number.isInteger($)?{type:"integer"}:{type:"number"};case"boolean":return{type:"boolean"};case"object":{if(Array.isArray($)){if($.length===0)return{type:"array"};return{type:"array",items:x1($[0])}}let Z={},X=[];for(let[Q,K]of Object.entries($))Z[Q]=x1(K),X.push(Q);return{type:"object",properties:Z,required:X,additionalProperties:!1}}default:return{}}}function n0($){let Z={},X=[];for(let[Y,H]of Object.entries($.params)){if(H?.type?.kind)Z[Y]=V1(H.type);else if(H?.example!==void 0)Z[Y]=x1(H.example);else Z[Y]={};if(H?.required!==!1)X.push(Y);if(H?.example!==void 0)Z[Y].examples=[H.example]}let Q={type:"object",properties:Z,required:X},K;if($.returns){if($.returns.type?.kind)K=V1($.returns.type);else if($.returns.example!==void 0)K=x1($.returns.example)}return{input:Q,output:K}}import{validate as c4,filter as d5,s as c0}from"tosijs-schema";function T1($){return $!==null&&typeof $==="object"&&"__runtimeType"in $&&$.__runtimeType===!0}function P7($){return $!==null&&typeof $==="object"&&"schema"in $&&typeof $.schema==="object"}function l5($){return $!==null&&typeof $==="object"&&"type"in $&&typeof $.type==="string"}function $1($,Z,X,Q){let K,Y,H,G=X,W=Q;if(typeof $==="string")if(K=$,typeof Z==="function"){if(Y=Z,G!==void 0)H=c0.infer(G)}else if(Z===void 0&&G!==void 0)H=c0.infer(G);else if(P7(Z))H=Z;else if(l5(Z))H=Z;else if(Z!==void 0)G=Z,W=G,H=c0.infer(G);else throw Error("Type(description) requires a predicate, schema, or example");else{if(P7($))H=$;else H=$;K=m5(H)}let z;if(H){let L=H?.schema??H;if(L&&typeof L==="object"&&Array.isArray(L.examples))z=L.examples}if(G===void 0&&z&&z.length>0)G=z[0];return{description:K,check:(L)=>{if(Y)return Y(L);if(H)return c4(L,H);return!1},schema:H,predicate:Y,example:G,examples:z,default:W,toJSONSchema(){if(H){let L=H?.schema??H;if(L&&typeof L==="object"&&"type"in L)return L}if(G!==void 0)return x1(G);return{description:K}},strip(L){if(H)return d5(L,H);return L},__runtimeType:!0}}function m5($){let Z=$?.schema??$;if(Z&&typeof Z==="object"&&"type"in Z){let X=Z;switch(X.type){case"string":if(X.format)return`string (${X.format})`;if(X.pattern)return`string matching ${X.pattern}`;if(X.minLength!==void 0&&X.maxLength!==void 0)return`string (${X.minLength}-${X.maxLength} chars)`;return"string";case"number":case"integer":if(X.minimum!==void 0&&X.maximum!==void 0)return`${X.type} (${X.minimum}-${X.maximum})`;if(X.minimum!==void 0)return`${X.type} >= ${X.minimum}`;if(X.maximum!==void 0)return`${X.type} <= ${X.maximum}`;return X.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var o0=$1("string",($)=>typeof $==="string"),s0=$1("number",($)=>typeof $==="number"),a0=$1("boolean",($)=>typeof $==="boolean"),r0=$1("integer",($)=>typeof $==="number"&&Number.isInteger($)),t0=$1("positive integer",($)=>typeof $==="number"&&Number.isInteger($)&&$>0),e0=$1("non-empty string",($)=>typeof $==="string"&&$.length>0),$4=$1("email address",($)=>typeof $==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($)),o4=($)=>{try{return new URL($),!0}catch{return!1}},Z4=$1("URL",($)=>typeof $==="string"&&o4($)),X4=$1("UUID",($)=>typeof $==="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test($)),s4=($)=>{let Z=new Date($);return!isNaN(Z.getTime())&&$.includes("T")},a4=($)=>{if(!/^\d{4}-\d{2}-\d{2}$/.test($))return!1;let Z=new Date($+"T00:00:00Z");return!isNaN(Z.getTime())},r4=$1("ISO 8601 timestamp",($)=>typeof $==="string"&&s4($)),t4=$1("date (YYYY-MM-DD)",($)=>typeof $==="string"&&a4($));function Q4($){return $1(`${$.description} or null`,(Z)=>Z===null||$.check(Z))}function K4($){return $1(`${$.description} (optional)`,(Z)=>Z===null||Z===void 0||$.check(Z))}function Y4($,Z,...X){if(typeof $==="string"&&Array.isArray(Z)){let Y=$,H=Z,G=new Set(H);return{description:Y,check:(z)=>G.has(z),toJSONSchema:()=>({enum:H}),strip:(z)=>z,__runtimeType:!0,values:H}}let Q=[];if(T1($))Q.push($);if(T1(Z))Q.push(Z);Q.push(...X);let K=Q.map((Y)=>Y.description).join(" | ");return $1(K,(Y)=>Q.some((H)=>H.check(Y)))}function H4($){return $1(`array of ${$.description}`,(Z)=>Array.isArray(Z)&&Z.every((X)=>$.check(X)))}function i5($){if(T1($))return(X)=>$.check(X);if($&&typeof $==="object"&&"schema"in $)return(X)=>c4(X,$);let Z=c0.infer($);return(X)=>c4(X,Z)}function r1($,Z,X){let Q=[],K=[];for(let H of $)if(typeof H==="string")Q.push(H),K.push(void 0);else Q.push(H[0]),K.push(H[1]);let Y=(...H)=>{let G=Q.map((z,J)=>{let L=J<H.length?H[J]:K[J];if(L===void 0)return()=>!0;return i5(L)}),W=X;return Q.forEach((z,J)=>{let L=J<H.length?H[J]:K[J],_="any";if(T1(L))_=L.description;else if(L!==void 0)_=typeof L==="string"?"string":JSON.stringify(L);W=W.replace(new RegExp(`\\b${z}\\b`,"g"),_)}),$1(W,(z)=>Z(z,...G))};return Y.params=Q,Y.description=X,Y}var G4=r1(["T","U"],($,Z,X)=>Array.isArray($)&&$.length===2&&Z($[0])&&X($[1]),"Pair<T, U>"),W4=r1(["V"],($,Z)=>typeof $==="object"&&$!==null&&!Array.isArray($)&&Object.values($).every(Z),"Record<string, V>");function z4($,Z){let X=Object.values(Z),Q=new Set(X),K=Object.keys(Z),Y={};for(let[G,W]of Object.entries(Z))Y[W]=G;return{description:$,check:(G)=>Q.has(G),toJSONSchema:()=>({enum:X}),strip:(G)=>G,__runtimeType:!0,members:Z,names:Y,values:X,keys:K}}function p5($){if($===null)return"null";if($===void 0)return"undefined";switch(typeof $){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger($)?"integer":"number";case"object":return Array.isArray($)?"array":"object";default:return null}}function B0($,Z,X){if(Array.isArray(Z)&&X){let Q=Z,K=[],Y=[];for(let G of Q)if(Array.isArray(G))K.push(G[0]),Y.push(G[1]);else K.push(G),Y.push(void 0);let H=(...G)=>{let W=K.map((J,L)=>L<G.length?G[L]:Y[L]),z=X(...W);return B0($,z)};return Object.defineProperties(H,{typeParamNames:{value:K,enumerable:!0},description:{value:$,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),H}return n5($,Z)}function n5($,Z){let X={},Q=void 0,K="assertReturns";if(typeof Z==="function"){let H=Z.__tjs;if(H){if(H.params)for(let[G,W]of Object.entries(H.params))X[G]=W?.example??null;if(H.returns)Q=H.returns?.example??null;if(H.safeReturn)K="checkedReturns";else if(H.unsafe)K="assertReturns";else K="returns"}}else X=Z.params??{},Q=Z.returns,K=Z.returnContract??"assertReturns";return{description:$,params:X,returns:Q,returnContract:K,toJSONSchema:()=>({description:$,type:"function"}),strip:(H)=>H,check:(H)=>{if(typeof H!=="function")return!1;let G=Object.keys(X).length;if(G>0){let z=H.__tjs;if(z?.params){if(Object.keys(z.params).length!==G)return!1;let L=Object.keys(X),_=Object.keys(z.params);for(let U=0;U<L.length;U++){let q=z.params[_[U]],D=X[L[U]];if(q?.type?.kind&&D!==void 0){let w=p5(D);if(w&&q.type.kind!==w&&q.type.kind!=="any")return!1}}}}return!0},__runtimeType:!0}}var o5=V7(),H1=o5.version,j0=Symbol.for("tjs.equals");function L4($){let[Z=0,X=0,Q=0]=$.split(".").map(Number);return{major:Z,minor:X,patch:Q}}function $6($,Z){let X=L4($),Q=L4(Z);if(X.major!==Q.major)return X.major<Q.major?-1:1;if(X.minor!==Q.minor)return X.minor<Q.minor?-1:1;if(X.patch!==Q.patch)return X.patch<Q.patch?-1:1;return 0}function Z6($,Z){let X=L4($),Q=L4(Z);return X.major===Q.major}class Z0 extends Error{path;expected;actual;callStack;constructor($,Z,X,Q,K){super($);if(this.name="MonadicError",this.path=Z,this.expected=X,this.actual=Q,this.callStack=K,Error.captureStackTrace)Error.captureStackTrace(this,Z0)}}function s5($,Z,X){let Q=X===null?"null":typeof X,K=p.callStacks||p.debug?Q6():void 0,Y=new Z0(`Expected ${Z} for '${$}', got ${Q}`,$,Z,Q,K);if(p.trackErrors!==!1){let H=p.maxErrors??U4;if(N7[t1]=Y,t1=(t1+1)%H,l1<H)l1++;q4++}if(p.logTypeErrors)console.error(`[TJS TypeError] ${Y.message}`);if(p.throwTypeErrors)throw Y;return Y}function e4($){return $ instanceof Error&&$.name==="MonadicError"&&"path"in $}var X6={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},p={...X6},M0=64,O7=Array(M0).fill(""),d1=0,O1=0,U4=64,N7=Array(U4).fill(null),t1=0,l1=0,q4=0,X0=0;function a5(){X0++}function r5(){if(X0>0)X0--}function t5(){return X0>0}function e5($){p={...p,...$}}function $$(){return{...p}}function E7($){if((p.callStacks||p.debug)&&$){let Z=p.maxStackSize??M0;if(O7[d1]=$,d1=(d1+1)%Z,O1<Z)O1++}}function J4(){if((p.callStacks||p.debug)&&O1>0){let $=p.maxStackSize??M0;d1=(d1-1+$)%$,O1--}}function Q6(){if(O1===0)return[];let $=p.maxStackSize??M0,Z=[],X=(d1-O1+$)%$;for(let Q=0;Q<O1;Q++)Z.push(O7[(X+Q)%$]);return Z}function T7(){if(p.trackErrors===!1||l1===0)return[];let $=p.maxErrors??U4,Z=[],X=(t1-l1+$)%$;for(let Q=0;Q<l1;Q++)Z.push(N7[(X+Q)%$]);return Z}function Z$(){let $=T7();return t1=0,l1=0,q4=0,$}function X$(){return q4}function Q$(){p={...X6},d1=0,O1=0,t1=0,l1=0,q4=0,X0=0}function e1($,Z){if($!==null&&typeof $==="object"&&typeof $[j0]==="function")return $[j0](Z);if(Z!==null&&typeof Z==="object"&&typeof Z[j0]==="function")return Z[j0]($);if($!==null&&typeof $==="object"&&typeof $.Equals==="function")return $.Equals(Z);if(Z!==null&&typeof Z==="object"&&typeof Z.Equals==="function")return Z.Equals($);if($ instanceof String||$ instanceof Number||$ instanceof Boolean)$=$.valueOf();if(Z instanceof String||Z instanceof Number||Z instanceof Boolean)Z=Z.valueOf();if($===Z)return!0;if(typeof $==="number"&&typeof Z==="number"&&isNaN($)&&isNaN(Z))return!0;if(($===null||$===void 0)&&(Z===null||Z===void 0))return!0;if($===null||$===void 0||Z===null||Z===void 0)return!1;if(typeof $!==typeof Z)return!1;if(typeof $!=="object")return!1;if($ instanceof Set&&Z instanceof Set){if($.size!==Z.size)return!1;for(let K of $)if(!Z.has(K))return!1;return!0}if($ instanceof Map&&Z instanceof Map){if($.size!==Z.size)return!1;for(let[K,Y]of $){if(!Z.has(K))return!1;if(!e1(Y,Z.get(K)))return!1}return!0}if($ instanceof Date&&Z instanceof Date)return $.getTime()===Z.getTime();if($ instanceof RegExp&&Z instanceof RegExp)return $.toString()===Z.toString();if(Array.isArray($)&&Array.isArray(Z)){if($.length!==Z.length)return!1;return $.every((K,Y)=>e1(K,Z[Y]))}if(Array.isArray($)!==Array.isArray(Z))return!1;let X=Object.keys($),Q=Object.keys(Z);if(X.length!==Q.length)return!1;return X.every((K)=>e1($[K],Z[K]))}function S7($,Z){return!e1($,Z)}function k7($){if($===null)return"null";return typeof $}function K6($,Z){if($ instanceof String||$ instanceof Number||$ instanceof Boolean)$=$.valueOf();if(Z instanceof String||Z instanceof Number||Z instanceof Boolean)Z=Z.valueOf();if($===Z)return!0;if(typeof $==="number"&&typeof Z==="number"&&isNaN($)&&isNaN(Z))return!0;if(($===null||$===void 0)&&(Z===null||Z===void 0))return!0;return!1}function g7($,Z){return!K6($,Z)}function C1($){return $!==null&&typeof $==="object"&&$.$error===!0}function M1($,Z){let X={$error:!0,message:$,...Z};if((p.callStacks||p.debug)&&O1>0){let Q=Q6(),K=Z?.path?[...Q,Z.path]:Q;X.stack=K}return X}function Y6($,Z){if($.length===0)return M1("Unknown error");if($.length===1)return $[0];let X=$.map((K)=>{if(K.path){let Y=K.path.split(".");return Y[Y.length-1]}return"unknown"}).join(", "),Q=`Multiple parameter errors in ${Z||"function"}: ${X}`;return M1(Q,{path:Z,errors:$})}function $0($){if($===null)return"null";if($===void 0)return"undefined";if(Array.isArray($))return"array";let Z=typeof $;if(Z!=="object")return Z;let X=$.constructor?.name;if(X&&X!=="Object")return X;return"object"}function b7($,Z){if($===null||$===void 0)return!1;if(typeof $!=="object"&&typeof $!=="function")return!1;let X=$;while(X!==null){if(X.constructor?.name===Z)return!0;X=Object.getPrototypeOf(X)}return!1}function m1($,Z,X){if(C1($))return $;if(typeof Z==="object"&&Z!==null&&"check"in Z){if(Z.check($))return null;return M1(`Expected ${Z.description} but got ${$0($)}`,{path:X,expected:Z.description,actual:$0($)})}let Q=$0($);if(Z==="any")return null;if(Z===Q)return null;if(Z==="number"&&Q==="number")return null;if(Z==="integer"&&Q==="number"&&Number.isInteger($))return null;if(Z==="non-negative-integer"&&Q==="number"&&Number.isInteger($)&&$>=0)return null;if(Z==="object"&&Q==="object")return null;return M1(`Expected ${Z} but got ${Q}`,{path:X,expected:Z,actual:Q})}function H6($,Z,X){for(let[Q,K]of Object.entries(Z.params)){let Y=$[Q];if(C1(Y))return Y;if(K.required&&Y===void 0){let G=typeof K.type==="string"?K.type:K.type.description;return M1(`Missing required parameter '${Q}'`,{path:X?`${X}.${Q}`:Q,expected:G,actual:"undefined",loc:K.loc})}if(Y===void 0)continue;let H=m1(Y,K.type,X?`${X}.${Q}`:Q);if(H){if(K.loc)H.loc=K.loc;return H}}return null}function G6($,Z){if($.__tjs=Z,$.__tjs.schema=()=>n0(Z),!(!Z.polymorphic&&(Z.safe||Z.safeReturn||p.safety!=="none"&&!Z.unsafe||Z.returns&&p.safety==="all"&&!Z.unsafeReturn)))return $;let Q=!!Z.returns,K=!!Z.unsafe,Y=!!Z.safe,H=!!Z.unsafeReturn,G=!!Z.safeReturn,W=Z.returns?.defaults,z=Object.entries(Z.params),J=z.length,L=$.name||Z.name||"anonymous",_=function(...U){if(X0>0)return $.apply(this,U);let q=Y||!K&&p.safety!=="none",D=Q&&(G||!H&&p.safety==="all");if(!q&&!D)return $.apply(this,U);if(U.length>0&&C1(U[0]))return U[0];if(q){let F=U.length===1&&typeof U[0]==="object"&&U[0]!==null&&!Array.isArray(U[0]),P=[];if(!F)for(let R=0;R<J;R++){let[j,C]=z[R],M=U[R];if(C1(M)){P.push(M);continue}if(C.required&&M===void 0){P.push(M1(`Missing required parameter '${j}'`,{path:`${L}.${j}`,expected:typeof C.type==="string"?C.type:C.type?.description||"value",actual:"undefined",loc:C.loc}));continue}if(M!==void 0){let O=m1(M,C.type,`${L}.${j}`);if(O){if(C.loc)O.loc=C.loc;P.push(O)}}}else{let R=U[0];for(let j=0;j<J;j++){let[C,M]=z[j],O=R[C];if(C1(O)){P.push(O);continue}if(M.required&&O===void 0){P.push(M1(`Missing required parameter '${C}'`,{path:`${L}.${C}`,expected:typeof M.type==="string"?M.type:M.type?.description||"value",actual:"undefined",loc:M.loc}));continue}if(O!==void 0){let S=m1(O,M.type,`${L}.${C}`);if(S){if(M.loc)S.loc=M.loc;P.push(S)}}}}if(P.length>0)return Y6(P,L)}let w=p.callStacks||p.debug;if(w)E7(L);try{let F=$.apply(this,U);if(D&&Z.returns&&!C1(F)){let P=W&&typeof F==="object"&&F!==null?Object.assign({},W,F):F,R=m1(P,Z.returns.type,`${L}()`);if(R){if(w)J4();return R}}if(w)J4();return F}catch(F){if(w)J4();return M1(F.message||String(F),{path:L,cause:F})}};return Object.defineProperty(_,"name",{value:$.name}),_.__tjs=Z,_.__tjs.schema=()=>n0(Z),_}function v7($){let Z=new Proxy($,{construct(X,Q,K){return Reflect.construct(X,Q,K)},apply(X,Q,K){return Reflect.construct(X,K)}});Object.defineProperty(Z,"name",{value:$.name});for(let X of Object.getOwnPropertyNames($))if(X!=="length"&&X!=="name"&&X!=="prototype")Object.defineProperty(Z,X,Object.getOwnPropertyDescriptor($,X));return Z}function f7(){let $={...p},Z=$.maxStackSize??M0,X=Array(Z).fill(""),Q=0,K=0,Y=$.maxErrors??U4,H=Array(Y).fill(null),G=0,W=0,z=0,J=0;function L(N){$={...$,...N}}function _(){return{...$}}function U(N){if(($.callStacks||$.debug)&&N){if(X[Q]=N,Q=(Q+1)%Z,K<Z)K++}}function q(){if(($.callStacks||$.debug)&&K>0)Q=(Q-1+Z)%Z,K--}function D(){if(K===0)return[];let N=[],v=(Q-K+Z)%Z;for(let y=0;y<K;y++)N.push(X[(v+y)%Z]);return N}function w(){$={...X6},Q=0,K=0,G=0,W=0,z=0,J=0}function F(){J++}function P(){if(J>0)J--}function R(){return J>0}let j=new Map;function C(N,v,y){if(!j.has(N))j.set(N,new Map);j.get(N).set(v,y)}function M(N,v){let y=typeof N,u;if(N===null||N===void 0)return;if(y==="string")u="String";else if(y==="number")u="Number";else if(y==="boolean")u="Boolean";else if(Array.isArray(N))u="Array";else if(y==="object")u=N.constructor?.name||"Object";else return;let o=u;while(o){let s1=j.get(o);if(s1?.has(v))return s1.get(v);if(y==="object"&&!Array.isArray(N)){if(o=Object.getPrototypeOf(o===u?N:Object.getPrototypeOf(N))?.constructor?.name,o==="Object"||o===u)break}else break}let Y1=j.get("Object");if(Y1?.has(v))return Y1.get(v);return}function O(N,v,y){let u=y===null?"null":typeof y,o=$.callStacks||$.debug?D():void 0,Y1=new Z0(`Expected ${v} for '${N}', got ${u}`,N,v,u,o);if($.trackErrors!==!1){if(H[G]=Y1,G=(G+1)%Y,W<Y)W++;z++}if($.logTypeErrors)console.error(`[TJS TypeError] ${Y1.message}`);if($.throwTypeErrors)throw Y1;return Y1}function S(){if($.trackErrors===!1||W===0)return[];let N=[],v=(G-W+Y)%Y;for(let y=0;y<W;y++)N.push(H[(v+y)%Y]);return N}function V(){let N=S();return G=0,W=0,z=0,N}function k(){return z}function E(N,v){let y={$error:!0,message:N,...v};if(($.callStacks||$.debug)&&K>0){let u=v?.path?[...D(),v.path]:D();y.stack=u}return y}function b(N,v){if(N===null||N===void 0)return O(`bang.${v}`,"non-null",N);if(e4(N))return N;return N[v]}return{version:H1,MonadicError:Z0,typeError:O,isMonadicError:e4,bang:b,isError:C1,error:E,composeErrors:Y6,typeOf:$0,isNativeType:b7,checkType:m1,validateArgs:H6,wrap:G6,wrapClass:v7,compareVersions:$6,versionsCompatible:Z6,createRuntime:f7,configure:L,getConfig:_,pushStack:U,popStack:q,getStack:D,errors:S,clearErrors:V,getErrorCount:k,resetRuntime:w,enterUnsafe:F,exitUnsafe:P,isUnsafeMode:R,validate:C7,infer:_4.infer.bind(_4),Type:$1,isRuntimeType:T1,Union:Y4,Generic:r1,Enum:z4,FunctionPredicate:B0,Nullable:Q4,Optional:K4,TArray:H4,TString:o0,TNumber:s0,TBoolean:a0,TInteger:r0,TPositiveInt:t0,TNonEmptyString:e0,TEmail:$4,TUrl:Z4,TUuid:X4,TPair:G4,TRecord:W4,Is:e1,IsNot:S7,Eq:K6,NotEq:g7,TypeOf:k7,tjsEquals:j0,registerExtension:C,resolveExtension:M}}var u1={version:H1,MonadicError:Z0,typeError:s5,isMonadicError:e4,isError:C1,error:M1,composeErrors:Y6,typeOf:$0,isNativeType:b7,checkType:m1,validateArgs:H6,wrap:G6,wrapClass:v7,compareVersions:$6,versionsCompatible:Z6,configure:e5,getConfig:$$,pushStack:E7,popStack:J4,getStack:Q6,errors:T7,clearErrors:Z$,getErrorCount:X$,resetRuntime:Q$,enterUnsafe:a5,exitUnsafe:r5,isUnsafeMode:t5,createRuntime:f7,validate:C7,infer:_4.infer.bind(_4),Type:$1,isRuntimeType:T1,Union:Y4,Generic:r1,Enum:z4,FunctionPredicate:B0,Nullable:Q4,Optional:K4,TArray:H4,TString:o0,TNumber:s0,TBoolean:a0,TInteger:r0,TPositiveInt:t0,TNonEmptyString:e0,TEmail:$4,TUrl:Z4,TUuid:X4,Timestamp:r4,LegalDate:t4,TPair:G4,TRecord:W4,Is:e1,IsNot:S7,Eq:K6,NotEq:g7,TypeOf:k7};function W6(){let $=globalThis;if($.__tjs){let Z=$.__tjs.version;if(typeof Z!=="string")return $.__tjs=u1,u1;let X=$6(H1,Z);if(X===0)return $.__tjs;if(Z6(H1,Z))if(X>0)console.info(`TJS runtime: upgrading ${Z} → ${H1}`),$.__tjs=u1;else console.info(`TJS runtime: keeping ${Z} (newer than ${H1})`);else if(console.warn(`TJS runtime version conflict: ${Z} vs ${H1} (major version mismatch)`),X>0)console.warn(`Upgrading to ${H1} - check for breaking changes`),$.__tjs=u1;return $.__tjs}return $.__tjs=u1,u1}function K$($){return`
|
|
169
|
+
`,xo=xs+`
|
|
170
|
+
`+Ts;import{validate as Es,s as fn}from"tosijs-schema";function Ee(e){if(e.nullable)return{anyOf:[Ee({...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:Ee(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[r,s]of Object.entries(e.shape))t[r]=Ee(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(Ee)}:{};default:return{}}}function Oe(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:Oe(e[0])};let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Oe(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}default:return{}}}function Vt(e){let t={},n=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=Ee(o.type):o?.example!==void 0?t[i]=Oe(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=Ee(e.returns.type):e.returns.example!==void 0&&(s=Oe(e.returns.example))),{input:r,output:s}}import{validate as Hn,filter as To,s as Kt}from"tosijs-schema";function ve(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function Ss(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function So(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=Kt.infer(a));else if(t===void 0&&a!==void 0)o=Kt.infer(a);else if(Ss(t))o=t;else if(So(t))o=t;else if(t!==void 0)a=t,c=a,o=Kt.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else Ss(e),o=e,s=wo(o);let l;if(o){let p=o?.schema??o;p&&typeof p=="object"&&Array.isArray(p.examples)&&(l=p.examples)}return a===void 0&&l&&l.length>0&&(a=l[0]),{description:s,check:p=>i?i(p):o?Hn(p,o):!1,schema:o,predicate:i,example:a,examples:l,default:c,toJSONSchema(){if(o){let p=o?.schema??o;if(p&&typeof p=="object"&&"type"in p)return p}return a!==void 0?Oe(a):{description:s}},strip(p){return o?To(p,o):p},__runtimeType:!0}}function wo(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 zt=ee("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),Gt=ee("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),Ht=ee("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),Zt=ee("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),Yt=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`),Xt=ee("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),Qt=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`),Zn=e=>{try{return new URL(e),!0}catch{return!1}},en=ee("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:Zn(e)?!0:`"${e}" is not a valid URL`),tn=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`),Yn=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},Xn=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},Qn=ee("ISO 8601 timestamp",e=>typeof e=="string"&&Yn(e)),er=ee("date (YYYY-MM-DD)",e=>typeof e=="string"&&Xn(e));function nn(e){return ee(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function rn(e){return ee(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function sn(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=[];ve(e)&&r.push(e),ve(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 on(e){return ee(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function Eo(e){if(ve(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>Hn(n,e);let t=Kt.infer(e);return n=>Hn(n,t)}function Ze(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 p=u<o.length?o[u]:s[u];return p===void 0?()=>!0:Eo(p)}),c=n;return r.forEach((l,u)=>{let p=u<o.length?o[u]:s[u],f="any";ve(p)?f=p.description:p!==void 0&&(f=typeof p=="string"?"string":JSON.stringify(p)),c=c.replace(new RegExp(`\\b${l}\\b`,"g"),f)}),ee(c,l=>t(l,...a))};return i.params=r,i.description=n,i}var an=Ze(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),cn=Ze(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function ln(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 _o(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 xt(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,p)=>p<a.length?a[p]:i[p]),l=n(...c);return xt(e,l)});return Object.defineProperties(o,{typeParamNames:{value:s,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),o}return $o(e,t)}function $o(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 p=Object.keys(n),f=Object.keys(l.params);for(let m=0;m<p.length;m++){let d=l.params[f[m]],y=n[p[m]];if(d?.type?.kind&&y!==void 0){let x=_o(y);if(x&&d.type.kind!==x&&d.type.kind!=="any")return`param '${p[m]}' expected ${x}, got ${d.type.kind}`}}}}return!0},__runtimeType:!0}}var jo=ws(),oe=jo.version,Tt=Symbol.for("tjs.equals");function pn(e){let[t=0,n=0,r=0]=e.split(".").map(Number);return{major:t,minor:n,patch:r}}function nr(e,t){let n=pn(e),r=pn(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 rr(e,t){let n=pn(e),r=pn(t);return n.major===r.major}var et=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 vo(e,t,n,r){let s=n===null?"null":typeof n,i=V.callStacks||V.debug?ir():void 0,o=r?`Expected ${t} for '${e}': ${r}`:`Expected ${t} for '${e}', got ${s}`,a=new et(o,e,t,s,i,r);if(V.trackErrors!==!1){let c=V.maxErrors??mn;$s[Ye]=a,Ye=(Ye+1)%c,Fe<c&&Fe++,dn++}if(V.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),V.throwTypeErrors)throw a;return a}function tr(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var sr={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},V={...sr},St=64,_s=new Array(St).fill(""),Be=0,$e=0,mn=64,$s=new Array(mn).fill(null),Ye=0,Fe=0,dn=0,tt=0;function Ao(){tt++}function Mo(){tt>0&&tt--}function Co(){return tt>0}function Ro(e){V={...V,...e}}function No(){return{...V}}function ks(e){if((V.callStacks||V.debug)&&e){let t=V.maxStackSize??St;_s[Be]=e,Be=(Be+1)%t,$e<t&&$e++}}function un(){if((V.callStacks||V.debug)&&$e>0){let e=V.maxStackSize??St;Be=(Be-1+e)%e,$e--}}function ir(){if($e===0)return[];let e=V.maxStackSize??St,t=[],n=(Be-$e+e)%e;for(let r=0;r<$e;r++)t.push(_s[(n+r)%e]);return t}function js(){if(V.trackErrors===!1||Fe===0)return[];let e=V.maxErrors??mn,t=[],n=(Ye-Fe+e)%e;for(let r=0;r<Fe;r++)t.push($s[(n+r)%e]);return t}function Po(){let e=js();return Ye=0,Fe=0,dn=0,e}function Io(){return dn}function Do(){V={...sr},Be=0,$e=0,Ye=0,Fe=0,dn=0,tt=0}function Xe(e,t){if(e!==null&&typeof e=="object"&&typeof e[Tt]=="function")return e[Tt](t);if(t!==null&&typeof t=="object"&&typeof t[Tt]=="function")return t[Tt](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)||!Xe(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)=>Xe(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=>Xe(e[s],t[s]))}function vs(e,t){return!Xe(e,t)}function As(e){return e===null?"null":typeof e}function or(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 Ms(e,t){return!or(e,t)}function _e(e){return e!==null&&typeof e=="object"&&e.$error===!0}function Se(e,t){let n={$error:!0,message:e,...t};if((V.callStacks||V.debug)&&$e>0){let r=ir(),s=t?.path?[...r,t.path]:r;n.stack=s}return n}function ar(e,t){if(e.length===0)return Se("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 Se(r,{path:t,errors:e})}function Qe(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 Cs(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 Ue(e,t,n){if(_e(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 ${Qe(e)}`;return Se(o,{path:n,expected:t.description,actual:Qe(e),reason:i})}let r=Qe(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:Se(`Expected ${t} but got ${r}`,{path:n,expected:t,actual:r})}function cr(e,t,n){for(let[r,s]of Object.entries(t.params)){let i=e[r];if(_e(i))return i;if(s.required&&i===void 0){let a=typeof s.type=="string"?s.type:s.type.description;return Se(`Missing required parameter '${r}'`,{path:n?`${n}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(i===void 0)continue;let o=Ue(i,s.type,n?`${n}.${r}`:r);if(o)return s.loc&&(o.loc=s.loc),o}return null}function lr(e,t){if(e.__tjs=t,e.__tjs.schema=()=>Vt(t),!(!t.polymorphic&&(t.safe||t.safeReturn||V.safety!=="none"&&!t.unsafe||t.returns&&V.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,p=e.name||t.name||"anonymous",f=function(...m){if(tt>0)return e.apply(this,m);let d=i||!s&&V.safety!=="none",y=r&&(a||!o&&V.safety==="all");if(!d&&!y)return e.apply(this,m);if(m.length>0&&_e(m[0]))return m[0];if(d){let E=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),_=[];if(E){let b=m[0];for(let T=0;T<u;T++){let[k,w]=l[T],j=b[k];if(_e(j)){_.push(j);continue}if(w.required&&j===void 0){_.push(Se(`Missing required parameter '${k}'`,{path:`${p}.${k}`,expected:typeof w.type=="string"?w.type:w.type?.description||"value",actual:"undefined",loc:w.loc}));continue}if(j!==void 0){let C=Ue(j,w.type,`${p}.${k}`);C&&(w.loc&&(C.loc=w.loc),_.push(C))}}}else for(let b=0;b<u;b++){let[T,k]=l[b],w=m[b];if(_e(w)){_.push(w);continue}if(k.required&&w===void 0){_.push(Se(`Missing required parameter '${T}'`,{path:`${p}.${T}`,expected:typeof k.type=="string"?k.type:k.type?.description||"value",actual:"undefined",loc:k.loc}));continue}if(w!==void 0){let j=Ue(w,k.type,`${p}.${T}`);j&&(k.loc&&(j.loc=k.loc),_.push(j))}}if(_.length>0)return ar(_,p)}let x=V.callStacks||V.debug;x&&ks(p);try{let E=e.apply(this,m);if(y&&t.returns&&!_e(E)){let _=c&&typeof E=="object"&&E!==null?Object.assign({},c,E):E,b=Ue(_,t.returns.type,`${p}()`);if(b)return x&&un(),b}return x&&un(),E}catch(E){return x&&un(),Se(E.message||String(E),{path:p,cause:E})}};return Object.defineProperty(f,"name",{value:e.name}),f.__tjs=t,f.__tjs.schema=()=>Vt(t),f}function Rs(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 Ns(){let e={...V},t=e.maxStackSize??St,n=new Array(t).fill(""),r=0,s=0,i=e.maxErrors??mn,o=new Array(i).fill(null),a=0,c=0,l=0,u=0;function p(v){e={...e,...v}}function f(){return{...e}}function m(v){(e.callStacks||e.debug)&&v&&(n[r]=v,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 v=[],I=(r-s+t)%t;for(let O=0;O<s;O++)v.push(n[(I+O)%t]);return v}function x(){e={...sr},r=0,s=0,a=0,c=0,l=0,u=0}function E(){u++}function _(){u>0&&u--}function b(){return u>0}let T=new Map;function k(v,I,O){T.has(v)||T.set(v,new Map),T.get(v).set(I,O)}function w(v,I){let O=typeof v,F;if(v==null)return;if(O==="string")F="String";else if(O==="number")F="Number";else if(O==="boolean")F="Boolean";else if(Array.isArray(v))F="Array";else if(O==="object")F=v.constructor?.name||"Object";else return;let H=F;for(;H;){let Ge=T.get(H);if(Ge?.has(I))return Ge.get(I);if(O==="object"&&!Array.isArray(v)){if(H=Object.getPrototypeOf(H===F?v:Object.getPrototypeOf(v))?.constructor?.name,H==="Object"||H===F)break}else break}let se=T.get("Object");if(se?.has(I))return se.get(I)}function j(v,I,O){let F=O===null?"null":typeof O,H=e.callStacks||e.debug?y():void 0,se=new et(`Expected ${I} for '${v}', got ${F}`,v,I,F,H);if(e.trackErrors!==!1&&(o[a]=se,a=(a+1)%i,c<i&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${se.message}`),e.throwTypeErrors)throw se;return se}function C(){if(e.trackErrors===!1||c===0)return[];let v=[],I=(a-c+i)%i;for(let O=0;O<c;O++)v.push(o[(I+O)%i]);return v}function $(){let v=C();return a=0,c=0,l=0,v}function R(){return l}function A(v,I){let O={$error:!0,message:v,...I};if((e.callStacks||e.debug)&&s>0){let F=I?.path?[...y(),I.path]:y();O.stack=F}return O}function P(v,I){return v==null?j(`bang.${I}`,"non-null",v):tr(v)?v:v[I]}return{version:oe,MonadicError:et,typeError:j,isMonadicError:tr,bang:P,isError:_e,error:A,composeErrors:ar,typeOf:Qe,isNativeType:Cs,checkType:Ue,validateArgs:cr,wrap:lr,wrapClass:Rs,compareVersions:nr,versionsCompatible:rr,createRuntime:Ns,configure:p,getConfig:f,pushStack:m,popStack:d,getStack:y,errors:C,clearErrors:$,getErrorCount:R,resetRuntime:x,enterUnsafe:E,exitUnsafe:_,isUnsafeMode:b,validate:Es,infer:fn.infer.bind(fn),Type:ee,isRuntimeType:ve,Union:sn,Generic:Ze,Enum:ln,FunctionPredicate:xt,Nullable:nn,Optional:rn,TArray:on,TString:zt,TNumber:Gt,TBoolean:Ht,TInteger:Zt,TPositiveInt:Yt,TNonEmptyString:Xt,TEmail:Qt,TUrl:en,TUuid:tn,TPair:an,TRecord:cn,Is:Xe,IsNot:vs,Eq:or,NotEq:Ms,TypeOf:As,tjsEquals:Tt,registerExtension:k,resolveExtension:w}}var Le={version:oe,MonadicError:et,typeError:vo,isMonadicError:tr,isError:_e,error:Se,composeErrors:ar,typeOf:Qe,isNativeType:Cs,checkType:Ue,validateArgs:cr,wrap:lr,wrapClass:Rs,compareVersions:nr,versionsCompatible:rr,configure:Ro,getConfig:No,pushStack:ks,popStack:un,getStack:ir,errors:js,clearErrors:Po,getErrorCount:Io,resetRuntime:Do,enterUnsafe:Ao,exitUnsafe:Mo,isUnsafeMode:Co,createRuntime:Ns,validate:Es,infer:fn.infer.bind(fn),Type:ee,isRuntimeType:ve,Union:sn,Generic:Ze,Enum:ln,FunctionPredicate:xt,Nullable:nn,Optional:rn,TArray:on,TString:zt,TNumber:Gt,TBoolean:Ht,TInteger:Zt,TPositiveInt:Yt,TNonEmptyString:Xt,TEmail:Qt,TUrl:en,TUuid:tn,Timestamp:Qn,LegalDate:er,TPair:an,TRecord:cn,Is:Xe,IsNot:vs,Eq:or,NotEq:Ms,TypeOf:As};function ur(){let e=globalThis;if(e.__tjs){let t=e.__tjs.version;if(typeof t!="string")return e.__tjs=Le,Le;let n=nr(oe,t);return n===0||(rr(oe,t)?n>0?(console.info(`TJS runtime: upgrading ${t} \u2192 ${oe}`),e.__tjs=Le):console.info(`TJS runtime: keeping ${t} (newer than ${oe})`):(console.warn(`TJS runtime version conflict: ${t} vs ${oe} (major version mismatch)`),n>0&&(console.warn(`Upgrading to ${oe} - check for breaking changes`),e.__tjs=Le))),e.__tjs}return e.__tjs=Le,Le}function Oo(e){return`
|
|
171
171
|
// TJS runtime wrapper (skips unsafe functions)
|
|
172
|
-
if (typeof ${
|
|
173
|
-
${
|
|
172
|
+
if (typeof ${e}.__tjs === 'object' && !${e}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
|
|
173
|
+
${e} = globalThis.__tjs.wrap(${e}, ${e}.__tjs)
|
|
174
174
|
}
|
|
175
|
-
`.trim()}function
|
|
175
|
+
`.trim()}function Ps(e){return`
|
|
176
176
|
// TJS: callable without new
|
|
177
|
-
${
|
|
178
|
-
`.trim()}function
|
|
179
|
-
`),
|
|
180
|
-
${
|
|
181
|
-
${
|
|
182
|
-
${
|
|
177
|
+
${e} = new Proxy(${e}, { apply(t, _, a) { return Reflect.construct(t, a) } });
|
|
178
|
+
`.trim()}function Lo(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 pr(e,t){if(e===t||typeof e=="number"&&typeof t=="number"&&Number.isNaN(e)&&Number.isNaN(t)||Lo(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)=>pr(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=>pr(e[s],t[s]))}function mr(e,t,n=""){if(t===null)return e===null?{matches:!0}:{matches:!1,error:`Expected null at '${n}', got ${qe(e)}`};if(t===void 0)return e===void 0?{matches:!0}:{matches:!1,error:`Expected undefined at '${n}', got ${qe(e)}`};if(typeof t=="number")return typeof e=="number"?{matches:!0}:{matches:!1,error:`Expected number at '${n}', got ${qe(e)}`};if(typeof t=="string")return typeof e=="string"?{matches:!0}:{matches:!1,error:`Expected string at '${n}', got ${qe(e)}`};if(typeof t=="boolean")return typeof e=="boolean"?{matches:!0}:{matches:!1,error:`Expected boolean at '${n}', got ${qe(e)}`};if(Array.isArray(t)){if(!Array.isArray(e))return{matches:!1,error:`Expected array at '${n}', got ${qe(e)}`};if(t.length===0)return{matches:!0};let r=t[0];for(let s=0;s<e.length;s++){let i=mr(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 ${qe(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=mr(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 qe(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function wt(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=>wt(n,t)).join(", ")}]`:`[${e.slice(0,3).map(n=>wt(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)}: ${wt(u,t)}`).join(", ")}}`;let s=" ".repeat(t+1),i=" ".repeat(t),o=n.slice(0,8).map(([c,l])=>`${s}${r(c)}: ${wt(l,t+1)}`).join(`,
|
|
179
|
+
`),a=n.length>8?`,
|
|
180
|
+
${s}...`:"";return`{
|
|
181
|
+
${o}${a}
|
|
182
|
+
${i}}`}return String(e)}function Bo(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,n=>{let r=n.split(`
|
|
183
183
|
`).length-1;return`
|
|
184
|
-
`.repeat(
|
|
185
|
-
`)}function
|
|
186
|
-
`).length;if(
|
|
187
|
-
`).length
|
|
188
|
-
`),
|
|
189
|
-
// Test ${
|
|
184
|
+
`.repeat(r)});return t=t.replace(/\/\/[^\n]*/g,""),t}function gn(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 Ds(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 Fo(e){if(Object.keys(e).length===0)return"";let t=[];for(let[n,r]of Object.entries(e)){let s=gn(r);t.push(`// Resolved import: ${n}`),t.push(s)}return t.join(`
|
|
185
|
+
`)}function Is(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 p="",f=0;for(;u<n.length;){let m=n[u];if(m==="{"||m==="["||m==="(")f++;else if(m==="}"||m==="]"||m===")"){if(f===0)break;f--}else if(m===","&&f===0)break;p+=m,u++}try{t[l[1]]=new Function(`return ${p.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 Os(e){let t=[],n=Bo(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],p=n.slice(0,s.index).split(`
|
|
186
|
+
`).length;if(u===":!")continue;let f=n.slice(s.index+s[0].length),m=yn(f);if(!m)continue;let d=fr(l);if(!(l.trim()&&d.length===0))try{let y=Is(m);if(!y)continue;let x=d.map(E=>new Function(`return ${E}`)());t.push({funcName:c,args:x,expected:y.pattern,defaults:Object.keys(y.defaults).length>0?y.defaults:void 0,line:p,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 b=c;b<n.length;b++)if(n[b]==="{")l++;else if(n[b]==="}"&&(l--,l===0)){u=b;break}let p=n.slice(c,u),m=/constructor\s*\(([^)]*)\)/.exec(p);if(!m)continue;let d=m[1],y=fr(d);if(d.trim()&&y.length===0)continue;let x;try{x=y.map(b=>new Function(`return ${b}`)())}catch{continue}let E=/(async\s+)?(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,_;for(;(_=E.exec(p))!==null;){let b=_[2];if(b==="constructor")continue;let T=!!_[1],k=_[3];if(_[4]===":!")continue;let j=c+_.index,C=n.slice(0,j).split(`
|
|
187
|
+
`).length,$=p.slice(_.index+_[0].length),R=yn($);if(!R)continue;let A=fr(k);if(!(k.trim()&&A.length===0))try{let P=Is(R);if(!P)continue;let v=A.map(I=>new Function(`return ${I}`)());t.push({funcName:b,args:v,expected:P.pattern,defaults:Object.keys(P.defaults).length>0?P.defaults:void 0,line:C,isAsync:T,className:a,constructorArgs:x})}catch{}}}return t}function Ls(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(b=>{let T=b.match(/from\s+['"]([^'"]+)['"]/);return T&&!(T[1]in s)}),l=gn(r),u=Fo(s),p=t.map(b=>b.body).join(`
|
|
188
|
+
`),f=e.map((b,T)=>{let k=i.size>0?dt(b.body,i):b.body;return`
|
|
189
|
+
// Test ${T}: ${b.description}
|
|
190
190
|
try {
|
|
191
|
-
${
|
|
192
|
-
__testResults.push({ idx: ${
|
|
191
|
+
${k}
|
|
192
|
+
__testResults.push({ idx: ${T}, passed: true });
|
|
193
193
|
} catch (e) {
|
|
194
|
-
__testResults.push({ idx: ${
|
|
194
|
+
__testResults.push({ idx: ${T}, passed: false, error: e.message || String(e) });
|
|
195
195
|
}
|
|
196
196
|
`}).join(`
|
|
197
|
-
`),
|
|
198
|
-
// Signature test ${
|
|
197
|
+
`),m=n.filter(b=>!b.isAsync),d=n.filter(b=>b.isAsync),y=m.map((b,T)=>{let k=b.className?`${b.className}.${b.funcName}`:b.funcName,w=b.className?`new ${b.className}(${(b.constructorArgs||[]).map(j=>JSON.stringify(j)).join(", ")}).${b.funcName}(${b.args.map(j=>JSON.stringify(j)).join(", ")})`:`${b.funcName}(${b.args.map(j=>JSON.stringify(j)).join(", ")})`;return`
|
|
198
|
+
// Signature test ${T}: ${k}
|
|
199
199
|
try {
|
|
200
|
-
let __actual = ${
|
|
201
|
-
const __expected = ${JSON.stringify(
|
|
202
|
-
const __defaults = ${JSON.stringify(
|
|
200
|
+
let __actual = ${w};
|
|
201
|
+
const __expected = ${JSON.stringify(b.expected)};${b.defaults?`
|
|
202
|
+
const __defaults = ${JSON.stringify(b.defaults)};
|
|
203
203
|
if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
|
|
204
204
|
if (__deepEqual(__actual, __expected)) {
|
|
205
|
-
__sigTestResults.push({ idx: ${
|
|
205
|
+
__sigTestResults.push({ idx: ${T}, passed: true });
|
|
206
206
|
} else {
|
|
207
|
-
__sigTestResults.push({ idx: ${
|
|
207
|
+
__sigTestResults.push({ idx: ${T}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${k}\\', got ' + __format(__actual) });
|
|
208
208
|
}
|
|
209
209
|
} catch (e) {
|
|
210
|
-
__sigTestResults.push({ idx: ${
|
|
210
|
+
__sigTestResults.push({ idx: ${T}, passed: false, error: e.message || String(e) });
|
|
211
211
|
}
|
|
212
212
|
`}).join(`
|
|
213
|
-
`);
|
|
214
|
-
|
|
213
|
+
`);ur();let _=`
|
|
214
|
+
|
|
215
215
|
const __saved_tjs = globalThis.__tjs;
|
|
216
|
-
|
|
216
|
+
|
|
217
217
|
const __testResults = [];
|
|
218
218
|
const __sigTestResults = [];
|
|
219
219
|
try {
|
|
@@ -278,35 +278,35 @@ ${Y}}`}return String($)}function H$($){let Z=$.replace(/\/\*[\s\S]*?\*\//g,(X)=>
|
|
|
278
278
|
}
|
|
279
279
|
|
|
280
280
|
// Inject resolved imports first (they may be dependencies)
|
|
281
|
-
${
|
|
281
|
+
${u}
|
|
282
282
|
|
|
283
283
|
// Execute the module code ONCE
|
|
284
|
-
${
|
|
285
|
-
${
|
|
284
|
+
${l}
|
|
285
|
+
${p}
|
|
286
286
|
|
|
287
287
|
// Run explicit test blocks
|
|
288
|
-
${
|
|
288
|
+
${f}
|
|
289
289
|
|
|
290
290
|
// Run signature tests
|
|
291
|
-
${
|
|
291
|
+
${y}
|
|
292
292
|
|
|
293
293
|
} finally {
|
|
294
|
-
|
|
294
|
+
globalThis.__tjs = __saved_tjs;
|
|
295
295
|
}
|
|
296
296
|
return { testResults: __testResults, sigTestResults: __sigTestResults };
|
|
297
|
-
`;try{let
|
|
298
|
-
`)}var R4={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:A.i32_load8_s,storeOp:A.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:A.i32_load8_u,storeOp:A.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:A.i32_load8_u,storeOp:A.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:A.i32_load16_s,storeOp:A.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:A.i32_load16_u,storeOp:A.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:A.i32_load,storeOp:A.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:A.i32_load,storeOp:A.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:A.f32_load,storeOp:A.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:A.f64_load,storeOp:A.f64_store}};function U$($){let Z={params:$,locals:new Map,nextLocalIndex:$.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1};return $.forEach((X,Q)=>{Z.locals.set(X.name,{index:Q,type:X.type})}),Z}function I4($,Z,X){if($.locals.has(Z))return $.errors.push(`Duplicate local declaration: ${Z}`),$.locals.get(Z).index;let Q=$.nextLocalIndex++;return $.locals.set(Z,{index:Q,type:X}),$.localTypes.push(X),Q}function p1($,Z){return $.locals.get(Z)}function Q0($,Z){switch($.type){case"ExpressionStatement":{let X=$.expression;return[...i(X,Z),A.drop]}case"ReturnStatement":{let X=$;if(Z.hasReturn=!0,!X.argument)return[A.return];let Q=i(X.argument,Z),K=r(X.argument,Z);if(K==="i32")Q.push(A.f64_convert_i32_s);else if(K==="f32")Q.push(A.f64_promote_f32);return Q.push(A.return),Q}case"VariableDeclaration":{let X=$,Q=[];for(let K of X.declarations){if(K.id.type!=="Identifier"){Z.errors.push("Destructuring not supported in WASM blocks");continue}let Y=K.id.name,H="f64";if(K.init)H=r(K.init,Z);let G=I4(Z,Y,H);if(K.init)Q.push(...i(K.init,Z)),Q.push(A.local_set,...l(G))}return Q}case"ForStatement":return q$($,Z);case"IfStatement":return D$($,Z);case"BlockStatement":{let X=$,Q=[];for(let K of X.body)Q.push(...Q0(K,Z));return Q}default:return Z.errors.push(`Unsupported statement type: ${$.type}`),[]}}function q$($,Z){let X=[];if($.init)if($.init.type==="VariableDeclaration")X.push(...Q0($.init,Z));else X.push(...i($.init,Z));if(X.push(A.block,w1.void),X.push(A.loop,w1.void),$.test)X.push(...i($.test,Z)),X.push(A.i32_eqz),X.push(A.br_if,1);if(Z.loopDepth++,$.body)X.push(...Q0($.body,Z));if(Z.loopDepth--,$.update)X.push(...i($.update,Z)),X.push(A.drop);return X.push(A.br,0),X.push(A.end),X.push(A.end),X}function D$($,Z){let X=[];if(X.push(...i($.test,Z)),X.push(A.if,w1.void),X.push(...Q0($.consequent,Z)),$.alternate)X.push(A.else),X.push(...Q0($.alternate,Z));return X.push(A.end),X}function r($,Z){switch($.type){case"Literal":{let X=$;if(typeof X.value==="number"){if(X.raw&&(X.raw.includes(".")||X.raw.includes("e")))return"f64";if(Number.isInteger(X.value)&&X.value>=-2147483648&&X.value<=2147483647)return"i32";return"f64"}return"f64"}case"Identifier":return p1(Z,$.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let X=$;if(["<",">","<=",">=","==","!=","===","!=="].includes(X.operator))return"i32";if(["|","&","^","<<",">>",">>>"].includes(X.operator))return"i32";let Q=r(X.left,Z),K=r(X.right,Z);if(Q==="v128"||K==="v128")return"v128";if(Q==="f64"||K==="f64")return"f64";if(Q==="f32"||K==="f32")return"f32";return"i32"}case"UnaryExpression":{let X=$;if(X.operator==="!")return"i32";return r(X.argument,Z)}case"MemberExpression":{let X=$;if(X.object.type==="Identifier"){if(p1(Z,X.object.name)){let K=Z.params.find((Y)=>Y.name===X.object.name);if(K?.arrayType){let Y=R4[K.arrayType];if(Y)return Y.elementType}}}return"f64"}case"CallExpression":{let X=$;if(X.callee.type==="MemberExpression"){let Q=X.callee;if(Q.object.type==="Identifier"&&Q.object.name==="Math")return"f64"}if(X.callee.type==="Identifier"){let Q=X.callee.name;if(Q==="f32x4_extract_lane")return"f32";if(Q.startsWith("f32x4_")||Q==="v128_load")return"v128"}return"f64"}default:return"f64"}}function i($,Z){switch($.type){case"Literal":{let X=$;if(typeof X.value==="number"){let Q=r($,Z);if(Q==="i32")return[A.i32_const,...O0(X.value|0)];else if(Q==="f32")return[A.f32_const,...q6(X.value)];else return[A.f64_const,...q1(X.value)]}return Z.errors.push(`Unsupported literal type: ${typeof X.value}`),[A.f64_const,...q1(0)]}case"Identifier":{let X=$.name,Q=p1(Z,X);if(Q)return[A.local_get,...l(Q.index)];return Z.errors.push(`Unknown identifier: ${X}`),[A.f64_const,...q1(0)]}case"BinaryExpression":return A$($,Z);case"UnaryExpression":return I$($,Z);case"AssignmentExpression":return R$($,Z);case"UpdateExpression":return w$($,Z);case"MemberExpression":return B$($,Z);case"CallExpression":return M$($,Z);case"SequenceExpression":{let X=$,Q=[];for(let K=0;K<X.expressions.length;K++)if(Q.push(...i(X.expressions[K],Z)),K<X.expressions.length-1)Q.push(A.drop);return Q}default:return Z.errors.push(`Unsupported expression type: ${$.type}`),[A.f64_const,...q1(0)]}}function A$($,Z){let X=i($.left,Z),Q=i($.right,Z),K=r($,Z),Y=r($.left,Z),H=r($.right,Z),G=["<",">","<=",">=","==","===","!=","!=="].includes($.operator),W;if(Y==="f64"||H==="f64")W="f64";else if(Y==="f32"||H==="f32")W="f32";else W="i32";if(!G&&K==="f64")W="f64";let z=X,J=Q;if(W==="f64"){if(Y==="i32")z=[...X,A.f64_convert_i32_s];else if(Y==="f32")z=[...X,A.f64_promote_f32];if(H==="i32")J=[...Q,A.f64_convert_i32_s];else if(H==="f32")J=[...Q,A.f64_promote_f32]}else if(W==="f32"){if(Y==="i32")z=[...X,A.f32_convert_i32_s];if(H==="i32")J=[...Q,A.f32_convert_i32_s]}let _={"+":{i32:A.i32_add,f32:A.f32_add,f64:A.f64_add},"-":{i32:A.i32_sub,f32:A.f32_sub,f64:A.f64_sub},"*":{i32:A.i32_mul,f32:A.f32_mul,f64:A.f64_mul},"/":{i32:A.i32_div_s,f32:A.f32_div,f64:A.f64_div},"%":{i32:A.i32_rem_s},"<":{i32:A.i32_lt_s,f32:A.f32_lt,f64:A.f64_lt},">":{i32:A.i32_gt_s,f32:A.f32_gt,f64:A.f64_gt},"<=":{i32:A.i32_le_s,f32:A.f32_le,f64:A.f64_le},">=":{i32:A.i32_ge_s,f32:A.f32_ge,f64:A.f64_ge},"==":{i32:A.i32_eq,f32:A.f32_eq,f64:A.f64_eq},"===":{i32:A.i32_eq,f32:A.f32_eq,f64:A.f64_eq},"!=":{i32:A.i32_ne,f32:A.f32_ne,f64:A.f64_ne},"!==":{i32:A.i32_ne,f32:A.f32_ne,f64:A.f64_ne},"|":{i32:A.i32_or},"&":{i32:A.i32_and},"^":{i32:A.i32_xor},"<<":{i32:A.i32_shl},">>":{i32:A.i32_shr_s},">>>":{i32:A.i32_shr_u}}[$.operator];if(!_)return Z.errors.push(`Unsupported operator: ${$.operator}`),[A.f64_const,...q1(0)];let U=_[W]??_.f64??_.i32;if(U===void 0)return Z.errors.push(`Operator ${$.operator} not supported for type ${W}`),[A.f64_const,...q1(0)];return[...z,...J,U]}function I$($,Z){let X=i($.argument,Z),Q=r($.argument,Z);switch($.operator){case"-":if(Q==="i32")return[A.i32_const,0,...X,A.i32_sub];else if(Q==="f32")return[...X,A.f32_neg];else return[...X,A.f64_neg];case"!":return[...X,A.i32_eqz];case"~":return[...X,A.i32_const,...O0(-1),A.i32_xor];default:return Z.errors.push(`Unsupported unary operator: ${$.operator}`),X}}function R$($,Z){if($.left.type==="MemberExpression")return j$($.left,$.right,$.operator,Z);if($.left.type!=="Identifier")return Z.errors.push("Assignment target must be identifier or array element"),[];let X=$.left.name,Q=p1(Z,X);if(!Q)return Z.errors.push(`Unknown variable: ${X}`),[];let K=[];if($.operator==="="){K.push(...i($.right,Z));let Y=r($.right,Z);if(Q.type==="f64"&&Y==="i32")K.push(A.f64_convert_i32_s);else if(Q.type==="f64"&&Y==="f32")K.push(A.f64_promote_f32);else if(Q.type==="i32"&&Y==="f64")K.push(A.i32_trunc_f64_s);else if(Q.type==="i32"&&Y==="f32")K.push(A.i32_trunc_f32_s);else if(Q.type==="f32"&&Y==="i32")K.push(A.f32_convert_i32_s);else if(Q.type==="f32"&&Y==="f64")K.push(A.f32_demote_f64)}else{let Y=r($.right,Z),H=Q.type;if(Y==="f64"||Q.type==="f64")H="f64";else if(Y==="f32"||Q.type==="f32")H="f32";if(K.push(A.local_get,...l(Q.index)),H==="f64"&&Q.type==="i32")K.push(A.f64_convert_i32_s);else if(H==="f64"&&Q.type==="f32")K.push(A.f64_promote_f32);else if(H==="f32"&&Q.type==="i32")K.push(A.f32_convert_i32_s);if(K.push(...i($.right,Z)),H==="f64"&&Y==="i32")K.push(A.f64_convert_i32_s);else if(H==="f64"&&Y==="f32")K.push(A.f64_promote_f32);else if(H==="f32"&&Y==="i32")K.push(A.f32_convert_i32_s);let G=$.operator.slice(0,-1),z={"+":{i32:A.i32_add,f32:A.f32_add,f64:A.f64_add},"-":{i32:A.i32_sub,f32:A.f32_sub,f64:A.f64_sub},"*":{i32:A.i32_mul,f32:A.f32_mul,f64:A.f64_mul},"/":{i32:A.i32_div_s,f32:A.f32_div,f64:A.f64_div}}[G]?.[H];if(!z)return Z.errors.push(`Unsupported compound assignment: ${$.operator}`),[];if(K.push(z),Q.type==="i32"&&H==="f64")K.push(A.i32_trunc_f64_s);else if(Q.type==="i32"&&H==="f32")K.push(A.i32_trunc_f32_s);else if(Q.type==="f32"&&H==="f64")K.push(A.f32_demote_f64)}return K.push(A.local_tee,...l(Q.index)),K}function w$($,Z){if($.argument.type!=="Identifier")return Z.errors.push("Update expression argument must be identifier"),[];let X=$.argument.name,Q=p1(Z,X);if(!Q)return Z.errors.push(`Unknown variable: ${X}`),[];let K=[],Y=Q.type==="i32";if($.prefix){if(K.push(A.local_get,...l(Q.index)),Y)K.push(A.i32_const,1),K.push($.operator==="++"?A.i32_add:A.i32_sub);else K.push(A.f64_const,...q1(1)),K.push($.operator==="++"?A.f64_add:A.f64_sub);K.push(A.local_tee,...l(Q.index))}else{if(K.push(A.local_get,...l(Q.index)),K.push(A.local_get,...l(Q.index)),Y)K.push(A.i32_const,1),K.push($.operator==="++"?A.i32_add:A.i32_sub);else K.push(A.f64_const,...q1(1)),K.push($.operator==="++"?A.f64_add:A.f64_sub);K.push(A.local_set,...l(Q.index))}return K}function B$($,Z){if($.object.type!=="Identifier")return Z.errors.push("Array access requires identifier"),[];let X=$.object.name,Q=Z.params.find((z)=>z.name===X);if(!Q?.isArray||!Q.arrayType)return Z.errors.push(`${X} is not a typed array parameter`),[];let K=R4[Q.arrayType];if(!K)return Z.errors.push(`Unknown array type: ${Q.arrayType}`),[];Z.needsMemory=!0;let Y=[],H=p1(Z,X);if(!H)return Z.errors.push(`Unknown array: ${X}`),[];if(Y.push(A.local_get,...l(H.index)),!$.computed||!$.property)return Z.errors.push("Array access requires computed index"),[];let G=i($.property,Z),W=r($.property,Z);if(Y.push(...G),W==="f64")Y.push(A.i32_trunc_f64_s);if(K.bytesPerElement>1)Y.push(A.i32_const,...O0(K.bytesPerElement)),Y.push(A.i32_mul);return Y.push(A.i32_add),Y.push(K.loadOp,0,0),Y}function j$($,Z,X,Q){if($.object.type!=="Identifier")return Q.errors.push("Array store requires identifier"),[];let K=$.object.name,Y=Q.params.find((q)=>q.name===K);if(!Y?.isArray||!Y.arrayType)return Q.errors.push(`${K} is not a typed array parameter`),[];let H=R4[Y.arrayType];if(!H)return Q.errors.push(`Unknown array type: ${Y.arrayType}`),[];Q.needsMemory=!0;let G=[],W=p1(Q,K);if(!W)return[];if(!$.computed||!$.property)return Q.errors.push("Array store requires computed index"),[];let z=i($.property,Q),J=r($.property,Q),L=()=>{let q=[];if(q.push(A.local_get,...l(W.index)),q.push(...z),J==="f64")q.push(A.i32_trunc_f64_s);if(H.bytesPerElement>1)q.push(A.i32_const,...O0(H.bytesPerElement)),q.push(A.i32_mul);return q.push(A.i32_add),q};if(X==="=")G.push(...i(Z,Q));else{let q=I4(Q,`__addr_${Q.nextLocalIndex}`,"i32");G.push(...L()),G.push(A.local_tee,...l(q)),G.push(H.loadOp,0,0),G.push(...i(Z,Q));let D=r(Z,Q);if(H.elementType==="f32"&&D==="f64")G.push(A.f32_demote_f64);else if(H.elementType==="f64"&&D==="f32")G.push(A.f64_promote_f32);else if(H.elementType==="f32"&&D==="i32")G.push(A.f32_convert_i32_s);else if(H.elementType==="f64"&&D==="i32")G.push(A.f64_convert_i32_s);else if(H.elementType==="i32"&&D==="f64")G.push(A.i32_trunc_f64_s);else if(H.elementType==="i32"&&D==="f32")G.push(A.i32_trunc_f32_s);let w=X.slice(0,-1),F={"+":H.elementType==="i32"?A.i32_add:H.elementType==="f32"?A.f32_add:A.f64_add,"-":H.elementType==="i32"?A.i32_sub:H.elementType==="f32"?A.f32_sub:A.f64_sub,"*":H.elementType==="i32"?A.i32_mul:H.elementType==="f32"?A.f32_mul:A.f64_mul};G.push(F[w]??A.f64_add);let P=I4(Q,`__val_${Q.nextLocalIndex}`,H.elementType);return G.push(A.local_set,...l(P)),G.push(A.local_get,...l(q)),G.push(A.local_get,...l(P)),G.push(H.storeOp,0,0),G.push(A.local_get,...l(P)),G}let _=r(Z,Q);if(H.elementType==="f32"&&_==="f64")G.push(A.f32_demote_f64);else if(H.elementType==="f64"&&_==="f32")G.push(A.f64_promote_f32);else if(H.elementType==="i32"&&_==="f64")G.push(A.i32_trunc_f64_s);let U=I4(Q,`__tmp_${Q.nextLocalIndex}`,H.elementType);if(G.push(A.local_set,...l(U)),G.push(A.local_get,...l(W.index)),G.push(...z),J==="f64")G.push(A.i32_trunc_f64_s);if(H.bytesPerElement>1)G.push(A.i32_const,...O0(H.bytesPerElement)),G.push(A.i32_mul);return G.push(A.i32_add),G.push(A.local_get,...l(U)),G.push(H.storeOp,0,0),G.push(A.local_get,...l(U)),G}function M$($,Z){if($.callee.type==="MemberExpression"){let X=$.callee;if(X.object.type==="Identifier"&&X.object.name==="Math"&&X.property.type==="Identifier"){let Q=X.property.name;return P$(Q,$.arguments,Z)}}if($.callee.type==="Identifier"){let X=$.callee.name;if(X.startsWith("f32x4_")||X.startsWith("v128_"))return F$(X,$.arguments,Z)}return Z.errors.push(`Unsupported function call: ${$.callee.type}`),[A.f64_const,...q1(0)]}function F$($,Z,X){X.needsMemory=!0;let Q=[];switch($){case"v128_load":case"f32x4_load":{if(Q.push(...i(Z[0],X)),r(Z[0],X)==="f64")Q.push(A.i32_trunc_f64_s);Q.push(...i(Z[1],X));let Y=r(Z[1],X);if(Y==="f64")Q.push(A.i32_trunc_f64_s);else if(Y==="f32")Q.push(A.i32_trunc_f32_s);return Q.push(A.i32_add),Q.push(...l7(Q1.v128_load,2,0)),Q}case"v128_store":case"f32x4_store":{if(Q.push(...i(Z[0],X)),r(Z[0],X)==="f64")Q.push(A.i32_trunc_f64_s);Q.push(...i(Z[1],X));let Y=r(Z[1],X);if(Y==="f64")Q.push(A.i32_trunc_f64_s);else if(Y==="f32")Q.push(A.i32_trunc_f32_s);return Q.push(A.i32_add),Q.push(...i(Z[2],X)),Q.push(...l7(Q1.v128_store,2,0)),Q.push(A.i32_const,0),Q}case"f32x4_splat":{Q.push(...i(Z[0],X));let K=r(Z[0],X);if(K==="i32")Q.push(A.f32_convert_i32_s);else if(K==="f64")Q.push(A.f32_demote_f64);return Q.push(...L6(Q1.f32x4_splat)),Q}case"f32x4_extract_lane":{Q.push(...i(Z[0],X));let K=Z[1].value;if(!Number.isInteger(K)||K<0||K>3)return X.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${K}`),[A.f32_const,...q6(0)];return Q.push(C0,...l(Q1.f32x4_extract_lane),K),Q}case"f32x4_replace_lane":{Q.push(...i(Z[0],X));let K=Z[1].value;if(!Number.isInteger(K)||K<0||K>3)return X.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${K}`),[A.f32_const,...q6(0)];Q.push(...i(Z[2],X));let Y=r(Z[2],X);if(Y==="i32")Q.push(A.f32_convert_i32_s);else if(Y==="f64")Q.push(A.f32_demote_f64);return Q.push(C0,...l(Q1.f32x4_replace_lane),K),Q}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{Q.push(...i(Z[0],X)),Q.push(...i(Z[1],X));let K={f32x4_add:Q1.f32x4_add,f32x4_sub:Q1.f32x4_sub,f32x4_mul:Q1.f32x4_mul,f32x4_div:Q1.f32x4_div};return Q.push(...L6(K[$])),Q}case"f32x4_neg":case"f32x4_sqrt":{Q.push(...i(Z[0],X));let K={f32x4_neg:Q1.f32x4_neg,f32x4_sqrt:Q1.f32x4_sqrt};return Q.push(...L6(K[$])),Q}default:return X.errors.push(`Unknown SIMD intrinsic: ${$}`),[A.f64_const,...q1(0)]}}function P$($,Z,X){let Q=[];for(let G of Z){Q.push(...i(G,X));let W=r(G,X);if(W==="i32")Q.push(A.f64_convert_i32_s);else if(W==="f32")Q.push(A.f64_promote_f32)}let Y={abs:A.f64_abs,ceil:A.f64_ceil,floor:A.f64_floor,trunc:A.f64_trunc,sqrt:A.f64_sqrt,min:A.f64_min,max:A.f64_max}[$];if(Y!==void 0)return Q.push(Y),Q;if(["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes($))return X.needsMathImports.add($),X.errors.push(`Math.${$} requires JS import (not yet implemented)`),[A.f64_const,...q1(0)];return X.errors.push(`Unknown Math method: ${$}`),[A.f64_const,...q1(0)]}function i7($){let Z=$.split(":").map((Y)=>Y.trim()),X=Z[0];if(Z.length===1)return{name:X,type:"f64"};let Q=Z[1];if(R4[Q])return{name:X,type:"i32",isArray:!0,arrayType:Q};return{name:X,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[Q]??"f64"}}function V$($,Z,X,Q,K){let Y=[0,97,115,109,1,0,0,0],H=$.map((P)=>w1[P.type]),G=K?[1,w1.f64]:[0],W=V0(P0.type,[1,96,...l($.length),...H,...G]),z=[],J=[];if(Q)J=V0(P0.import,[1,...U6("env"),...U6("memory"),2,0,1]);let L=V0(P0.function,[1,0]),_=V0(P0.export,[1,...U6("compute"),0,0]),U=[];if(X.length>0){let P=X[0],R=1;for(let j=1;j<X.length;j++)if(X[j]===P)R++;else U.push([...l(R),w1[P]]),P=X[j],R=1;U.push([...l(R),w1[P]])}let D=[...[...l(U.length),...U.flat()],...Z,A.end],w=V0(P0.code,[1,...l(D.length),...D]),F=[...Y,...W];if(J.length>0)F.push(...J);return F.push(...L,..._,...w),F}function w4($){try{let Z=$.captures.map(i7),X;try{let z=`function __wasm__(${Z.map((J)=>J.name).join(", ")}) { ${$.body} }`;X=m7.parse(z,{ecmaVersion:2022})}catch(z){return{bytes:new Uint8Array,warnings:[],success:!1,error:`Parse error: ${z.message}`}}let K=X.body[0].body.body,Y=U$(Z),H=[];for(let z of K)H.push(...Q0(z,Y));if(Y.errors.length>0)return{bytes:new Uint8Array,warnings:Y.warnings,success:!1,error:Y.errors.join("; ")};let G=V$(Z,H,Y.localTypes,Y.needsMemory,Y.hasReturn),W=L$(H,Z,Y.localTypes);return{bytes:new Uint8Array(G),warnings:Y.warnings,success:!0,needsMemory:Y.needsMemory,wat:W}}catch(Z){return{bytes:new Uint8Array,warnings:[],success:!1,error:Z.message}}}async function p7($,Z){let X={};if(Z)X.env={memory:Z};let Q=await WebAssembly.compile($);return WebAssembly.instantiate(Q,X)}async function C$($){let Z=w4($);if(!Z.success)return{fn:()=>0,success:!1,error:Z.error};try{let X;if(Z.needsMemory)X=new WebAssembly.Memory({initial:256});let K=(await p7(Z.bytes,X)).exports.compute,Y=$.captures.map(i7);if(!Y.some((W)=>W.isArray))return{fn:K,memory:X,success:!0};return{fn:(...W)=>{if(!X)throw Error("Memory not initialized");let z=new Uint8Array(X.buffer),J=0,L=[];for(let U=0;U<Y.length;U++){let q=Y[U],D=W[U];if(q.isArray&&D instanceof Object&&"buffer"in D){let w=D,F=new Uint8Array(w.buffer,w.byteOffset,w.byteLength);z.set(F,J),L.push(J),J+=F.length,J=J+15&-16}else L.push(D)}let _=K(...L);J=0;for(let U=0;U<Y.length;U++){let q=Y[U],D=W[U];if(q.isArray&&D instanceof Object&&"buffer"in D){let w=D,F=new Uint8Array(w.buffer,w.byteOffset,w.byteLength);F.set(z.slice(J,J+F.length)),J+=F.length,J=J+15&-16}}return _},memory:X,success:!0}}catch(X){return{fn:()=>0,success:!1,error:X.message}}}async function n7($){let Z=await C$($);if(!Z.success)return console.warn(`WASM compilation failed for ${$.id}:`,Z.error),!1;return globalThis[$.id]=Z.fn,!0}async function O$($){let Z=0,X=0,Q=[];for(let K of $)if(await n7(K))Z++;else X++,Q.push(`Failed to compile ${K.id}`);return{compiled:Z,failed:X,errors:Q}}function c7($){let Z=[],X=[];for(let G of $){let W=w4(G);if(W.success){let z=btoa(String.fromCharCode(...W.bytes));X.push({id:G.id,base64:z,captures:G.captures,needsMemory:W.needsMemory??!1,wat:W.wat??""}),Z.push({id:G.id,success:!0,byteLength:W.bytes.length})}else Z.push({id:G.id,success:!1,error:W.error})}if(X.length===0)return{code:"",results:Z};let Q=X.map((G)=>{let W=G.wat.split(`
|
|
299
|
-
`).map(
|
|
300
|
-
* WASM: ${
|
|
301
|
-
${
|
|
297
|
+
`;try{let b=new Function("__deepEqual","__format","__typeMatches",_),{testResults:T,sigTestResults:k}=b(pr,wt,mr);for(let w of T){let j=e[w.idx],C=c&&!w.passed&&w.error&&/is not defined$/.test(w.error);o.push({description:j.description,passed:C?!0:w.passed,error:C?void 0:w.error,line:j.line})}for(let w of k){let j=m[w.idx],C=c&&!w.passed&&w.error&&/is not defined$/.test(w.error),$=j.className?`${j.className}.${j.funcName}`:j.funcName;o.push({description:`${$} signature example`,passed:C?!0:w.passed,error:C?void 0:w.error,isSignatureTest:!0,line:j.line})}}catch(b){let T=c&&b instanceof ReferenceError;for(let k of e)o.push({description:k.description,passed:T,error:T?void 0:`Module execution failed: ${b.message}`,line:k.line});for(let k of m){let w=k.className?`${k.className}.${k.funcName}`:k.funcName;o.push({description:`${w} signature example`,passed:T,error:T?void 0:`Module execution failed: ${b.message}`,isSignatureTest:!0,line:k.line})}}for(let b of d){let T=b.className?`${b.className}.${b.funcName}`:b.funcName;o.push({description:`${T} signature example`,passed:!0,isSignatureTest:!0,line:b.line})}return o}function yn(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 fr(e){if(!e.trim())return[];let t=[],n=Uo(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 Uo(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 Fs from"acorn";var be={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},Et={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},qo=Object.fromEntries(Object.entries(g).map(([e,t])=>[t,e.replace(/_/g,".")])),$t=253,re={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},Jo=Object.fromEntries(Object.entries(re).map(([e,t])=>[t,e.replace(/_/g,".")]));function dr(e){return[$t,...q(e)]}function Bs(e,t,n){return[$t,...q(e),...q(t),...q(n)]}function q(e){let t=[];do{let n=e&127;e>>>=7,e!==0&&(n|=128),t.push(n)}while(e!==0);return t}function kt(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 gr(e){let t=new ArrayBuffer(4);return new Float32Array(t)[0]=e,[...new Uint8Array(t)]}function me(e){let t=new ArrayBuffer(8);return new Float64Array(t)[0]=e,[...new Uint8Array(t)]}function yr(e){let t=new TextEncoder().encode(e);return[...q(t.length),...t]}function _t(e,t){return[e,...q(t.length),...t]}function Ae(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 Wo(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 Vo(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=qo[l]||`unknown(0x${l.toString(16)})`;if(c++,l===g.local_get||l===g.local_set||l===g.local_tee){let[p,f]=Ae(e,c);c+=f;let m=p<t.length?`$${t[p].name}`:`$L${p}`;r.push(`${i()}${u} ${m}`)}else if(l===g.br||l===g.br_if){let[p,f]=Ae(e,c);c+=f,r.push(`${i()}${u} ${p}`)}else if(l===g.i32_const){let[p,f]=Ae(e,c);c+=f,r.push(`${i()}i32.const ${p}`)}else if(l===g.f32_const){let p=new ArrayBuffer(4),f=new Uint8Array(p);for(let d=0;d<4;d++)f[d]=e[c+d];let m=new Float32Array(p)[0];c+=4,r.push(`${i()}f32.const ${m}`)}else if(l===g.f64_const){let p=Wo(e,c);c+=8,r.push(`${i()}f64.const ${p}`)}else if(l===g.block||l===g.loop){let p=e[c];c++,r.push(`${i()}${u}${p===be.void?"":` (result ${p===be.f64?"f64":"i32"})`}`),s++}else if(l===g.if){let p=e[c];c++,r.push(`${i()}if${p===be.void?"":` (result ${p===be.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[p,f]=Ae(e,c);c+=f;let[m,d]=Ae(e,c);c+=d,r.push(`${i()}${u}${m?` offset=${m}`:""}`)}else if(l===$t){let[p,f]=Ae(e,c);c+=f;let m=Jo[p]||`simd.unknown(0x${p.toString(16)})`;if(p===re.v128_load||p===re.v128_store){let[d,y]=Ae(e,c);c+=y;let[x,E]=Ae(e,c);c+=E,r.push(`${i()}${m}${x?` offset=${x}`:""}`)}else if(p===re.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(p===re.f32x4_extract_lane||p===re.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(`
|
|
298
|
+
`)}var bn={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 Ko(e){let t={params:e,locals:new Map,nextLocalIndex:e.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1};return e.forEach((n,r)=>{t.locals.set(n.name,{index:r,type:n.type})}),t}function hn(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 Je(e,t){return e.locals.get(t)}function nt(e,t){switch(e.type){case"ExpressionStatement":{let n=e.expression;return[...W(n,t),g.drop]}case"ReturnStatement":{let n=e;if(t.hasReturn=!0,!n.argument)return[g.return];let r=W(n.argument,t),s=Y(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=Y(s.init,t));let a=hn(t,i,o);s.init&&(r.push(...W(s.init,t)),r.push(g.local_set,...q(a)))}return r}case"ForStatement":return zo(e,t);case"IfStatement":return Go(e,t);case"BlockStatement":{let n=e,r=[];for(let s of n.body)r.push(...nt(s,t));return r}default:return t.errors.push(`Unsupported statement type: ${e.type}`),[]}}function zo(e,t){let n=[];return e.init&&(e.init.type==="VariableDeclaration"?n.push(...nt(e.init,t)):n.push(...W(e.init,t))),n.push(g.block,be.void),n.push(g.loop,be.void),e.test&&(n.push(...W(e.test,t)),n.push(g.i32_eqz),n.push(g.br_if,1)),t.loopDepth++,e.body&&n.push(...nt(e.body,t)),t.loopDepth--,e.update&&(n.push(...W(e.update,t)),n.push(g.drop)),n.push(g.br,0),n.push(g.end),n.push(g.end),n}function Go(e,t){let n=[];return n.push(...W(e.test,t)),n.push(g.if,be.void),n.push(...nt(e.consequent,t)),e.alternate&&(n.push(g.else),n.push(...nt(e.alternate,t))),n.push(g.end),n}function Y(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 Je(t,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let n=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(n.operator)||["|","&","^","<<",">>",">>>"].includes(n.operator))return"i32";let r=Y(n.left,t),s=Y(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":Y(n.argument,t)}case"MemberExpression":{let n=e;if(n.object.type==="Identifier"&&Je(t,n.object.name)){let s=t.params.find(i=>i.name===n.object.name);if(s?.arrayType){let i=bn[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"}return"f64"}default:return"f64"}}function W(e,t){switch(e.type){case"Literal":{let n=e;if(typeof n.value=="number"){let r=Y(e,t);return r==="i32"?[g.i32_const,...kt(n.value|0)]:r==="f32"?[g.f32_const,...gr(n.value)]:[g.f64_const,...me(n.value)]}return t.errors.push(`Unsupported literal type: ${typeof n.value}`),[g.f64_const,...me(0)]}case"Identifier":{let n=e.name,r=Je(t,n);return r?[g.local_get,...q(r.index)]:(t.errors.push(`Unknown identifier: ${n}`),[g.f64_const,...me(0)])}case"BinaryExpression":return Ho(e,t);case"UnaryExpression":return Zo(e,t);case"AssignmentExpression":return Yo(e,t);case"UpdateExpression":return Xo(e,t);case"MemberExpression":return Qo(e,t);case"CallExpression":return ta(e,t);case"SequenceExpression":{let n=e,r=[];for(let s=0;s<n.expressions.length;s++)r.push(...W(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,...me(0)]}}function Ho(e,t){let n=W(e.left,t),r=W(e.right,t),s=Y(e,t),i=Y(e.left,t),o=Y(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 f={"+":{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(!f)return t.errors.push(`Unsupported operator: ${e.operator}`),[g.f64_const,...me(0)];let m=f[c]??f.f64??f.i32;return m===void 0?(t.errors.push(`Operator ${e.operator} not supported for type ${c}`),[g.f64_const,...me(0)]):[...l,...u,m]}function Zo(e,t){let n=W(e.argument,t),r=Y(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,...kt(-1),g.i32_xor];default:return t.errors.push(`Unsupported unary operator: ${e.operator}`),n}}function Yo(e,t){if(e.left.type==="MemberExpression")return ea(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=Je(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[];if(e.operator==="="){s.push(...W(e.right,t));let i=Y(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=Y(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,...q(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(...W(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,...q(r.index)),s}function Xo(e,t){if(e.argument.type!=="Identifier")return t.errors.push("Update expression argument must be identifier"),[];let n=e.argument.name,r=Je(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,...q(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...me(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_tee,...q(r.index))):(s.push(g.local_get,...q(r.index)),s.push(g.local_get,...q(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...me(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_set,...q(r.index))),s}function Qo(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=bn[r.arrayType];if(!s)return t.errors.push(`Unknown array type: ${r.arrayType}`),[];t.needsMemory=!0;let i=[],o=Je(t,n);if(!o)return t.errors.push(`Unknown array: ${n}`),[];if(i.push(g.local_get,...q(o.index)),!e.computed||!e.property)return t.errors.push("Array access requires computed index"),[];let a=W(e.property,t),c=Y(e.property,t);return i.push(...a),c==="f64"&&i.push(g.i32_trunc_f64_s),s.bytesPerElement>1&&(i.push(g.i32_const,...kt(s.bytesPerElement)),i.push(g.i32_mul)),i.push(g.i32_add),i.push(s.loadOp,0,0),i}function ea(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=bn[i.arrayType];if(!o)return r.errors.push(`Unknown array type: ${i.arrayType}`),[];r.needsMemory=!0;let a=[],c=Je(r,s);if(!c)return[];if(!e.computed||!e.property)return r.errors.push("Array store requires computed index"),[];let l=W(e.property,r),u=Y(e.property,r),p=()=>{let d=[];return d.push(g.local_get,...q(c.index)),d.push(...l),u==="f64"&&d.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(d.push(g.i32_const,...kt(o.bytesPerElement)),d.push(g.i32_mul)),d.push(g.i32_add),d};if(n==="=")a.push(...W(t,r));else{let d=hn(r,`__addr_${r.nextLocalIndex}`,"i32");a.push(...p()),a.push(g.local_tee,...q(d)),a.push(o.loadOp,0,0),a.push(...W(t,r));let y=Y(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 x=n.slice(0,-1),E={"+":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(E[x]??g.f64_add);let _=hn(r,`__val_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...q(_)),a.push(g.local_get,...q(d)),a.push(g.local_get,...q(_)),a.push(o.storeOp,0,0),a.push(g.local_get,...q(_)),a}let f=Y(t,r);o.elementType==="f32"&&f==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&f==="f32"?a.push(g.f64_promote_f32):o.elementType==="i32"&&f==="f64"&&a.push(g.i32_trunc_f64_s);let m=hn(r,`__tmp_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...q(m)),a.push(g.local_get,...q(c.index)),a.push(...l),u==="f64"&&a.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(a.push(g.i32_const,...kt(o.bytesPerElement)),a.push(g.i32_mul)),a.push(g.i32_add),a.push(g.local_get,...q(m)),a.push(o.storeOp,0,0),a.push(g.local_get,...q(m)),a}function ta(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 ra(r,e.arguments,t)}}if(e.callee.type==="Identifier"){let n=e.callee.name;if(n.startsWith("f32x4_")||n.startsWith("v128_"))return na(n,e.arguments,t)}return t.errors.push(`Unsupported function call: ${e.callee.type}`),[g.f64_const,...me(0)]}function na(e,t,n){n.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...W(t[0],n)),Y(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...W(t[1],n));let i=Y(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(...Bs(re.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...W(t[0],n)),Y(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...W(t[1],n));let i=Y(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(...W(t[2],n)),r.push(...Bs(re.v128_store,2,0)),r.push(g.i32_const,0),r}case"f32x4_splat":{r.push(...W(t[0],n));let s=Y(t[0],n);return s==="i32"?r.push(g.f32_convert_i32_s):s==="f64"&&r.push(g.f32_demote_f64),r.push(...dr(re.f32x4_splat)),r}case"f32x4_extract_lane":{r.push(...W(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,...gr(0)]):(r.push($t,...q(re.f32x4_extract_lane),s),r)}case"f32x4_replace_lane":{r.push(...W(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,...gr(0)];r.push(...W(t[2],n));let i=Y(t[2],n);return i==="i32"?r.push(g.f32_convert_i32_s):i==="f64"&&r.push(g.f32_demote_f64),r.push($t,...q(re.f32x4_replace_lane),s),r}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{r.push(...W(t[0],n)),r.push(...W(t[1],n));let s={f32x4_add:re.f32x4_add,f32x4_sub:re.f32x4_sub,f32x4_mul:re.f32x4_mul,f32x4_div:re.f32x4_div};return r.push(...dr(s[e])),r}case"f32x4_neg":case"f32x4_sqrt":{r.push(...W(t[0],n));let s={f32x4_neg:re.f32x4_neg,f32x4_sqrt:re.f32x4_sqrt};return r.push(...dr(s[e])),r}default:return n.errors.push(`Unknown SIMD intrinsic: ${e}`),[g.f64_const,...me(0)]}}function ra(e,t,n){let r=[];for(let a of t){r.push(...W(a,n));let c=Y(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,...me(0)]):(n.errors.push(`Unknown Math method: ${e}`),[g.f64_const,...me(0)])}function Us(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 bn[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 sa(e,t,n,r,s){let i=[0,97,115,109,1,0,0,0],o=e.map(_=>be[_.type]),a=s?[1,be.f64]:[0],c=_t(Et.type,[1,96,...q(e.length),...o,...a]),l=[],u=[];r&&(u=_t(Et.import,[1,...yr("env"),...yr("memory"),2,0,1]));let p=_t(Et.function,[1,0]),f=_t(Et.export,[1,...yr("compute"),0,0]),m=[];if(n.length>0){let _=n[0],b=1;for(let T=1;T<n.length;T++)n[T]===_?b++:(m.push([...q(b),be[_]]),_=n[T],b=1);m.push([...q(b),be[_]])}let y=[...[...q(m.length),...m.flat()],...t,g.end],x=_t(Et.code,[1,...q(y.length),...y]),E=[...i,...c];return u.length>0&&E.push(...u),E.push(...p,...f,...x),E}function xn(e){try{let t=e.captures.map(Us),n;try{let l=`function __wasm__(${t.map(u=>u.name).join(", ")}) { ${e.body} }`;n=Fs.parse(l,{ecmaVersion:2022})}catch(l){return{bytes:new Uint8Array,warnings:[],success:!1,error:`Parse error: ${l.message}`}}let s=n.body[0].body.body,i=Ko(t),o=[];for(let l of s)o.push(...nt(l,i));if(i.errors.length>0)return{bytes:new Uint8Array,warnings:i.warnings,success:!1,error:i.errors.join("; ")};let a=sa(t,o,i.localTypes,i.needsMemory,i.hasReturn),c=Vo(o,t,i.localTypes);return{bytes:new Uint8Array(a),warnings:i.warnings,success:!0,needsMemory:i.needsMemory,wat:c}}catch(t){return{bytes:new Uint8Array,warnings:[],success:!1,error:t.message}}}async function qs(e,t){let n={};t&&(n.env={memory:t});let r=await WebAssembly.compile(e);return WebAssembly.instantiate(r,n)}async function ia(e){let t=xn(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 qs(t.bytes,n)).exports.compute,i=e.captures.map(Us);return i.some(c=>c.isArray)?{fn:(...c)=>{if(!n)throw new Error("Memory not initialized");let l=new Uint8Array(n.buffer),u=0,p=[];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 x=y,E=new Uint8Array(x.buffer,x.byteOffset,x.byteLength);l.set(E,u),p.push(u),u+=E.length,u=u+15&-16}else p.push(y)}let f=s(...p);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 x=y,E=new Uint8Array(x.buffer,x.byteOffset,x.byteLength);E.set(l.slice(u,u+E.length)),u+=E.length,u=u+15&-16}}return f},memory:n,success:!0}:{fn:s,memory:n,success:!0}}catch(n){return{fn:()=>0,success:!1,error:n.message}}}async function Js(e){let t=await ia(e);return t.success?(globalThis[e.id]=t.fn,!0):(console.warn(`WASM compilation failed for ${e.id}:`,t.error),!1)}async function oa(e){let t=0,n=0,r=[];for(let s of e)await Js(s)?t++:(n++,r.push(`Failed to compile ${s.id}`));return{compiled:t,failed:n,errors:r}}function Ws(e){let t=[],n=[];for(let a of e){let c=xn(a);if(c.success){let l=btoa(String.fromCharCode(...c.bytes));n.push({id:a.id,base64:l,captures:a.captures,needsMemory:c.needsMemory??!1,wat:c.wat??""}),t.push({id:a.id,success:!0,byteLength:c.bytes.length})}else t.push({id:a.id,success:!1,error:c.error})}if(n.length===0)return{code:"",results:t};let r=n.map(a=>{let c=a.wat.split(`
|
|
299
|
+
`).map(l=>` * ${l}`);return`/**
|
|
300
|
+
* WASM: ${a.id}
|
|
301
|
+
${c.join(`
|
|
302
302
|
`)}
|
|
303
303
|
*/`}).join(`
|
|
304
|
-
`),
|
|
304
|
+
`),s=n.map(a=>`{id:${JSON.stringify(a.id)},b64:${JSON.stringify(a.base64)},c:${JSON.stringify(a.captures)},m:${a.needsMemory}}`).join(","),i=n.some(a=>a.needsMemory);return{code:`${r}
|
|
305
305
|
;(async()=>{
|
|
306
|
-
const __wasmBlocks=[${
|
|
306
|
+
const __wasmBlocks=[${s}];
|
|
307
307
|
const __b64ToBytes=s=>{const b=atob(s),a=new Uint8Array(b.length);for(let i=0;i<b.length;i++)a[i]=b.charCodeAt(i);return a};
|
|
308
308
|
const __parseType=c=>{const m=c.match(/^(\\w+)\\s*:\\s*(\\w+)$/);if(!m)return{n:c,t:'f64',a:false};const[,n,ts]=m;const at={Float32Array:'f32',Float64Array:'f64',Int32Array:'i32',Uint8Array:'i32'};if(at[ts])return{n,t:'i32',a:true,at:ts};return{n,t:'f64',a:false}};
|
|
309
|
-
${
|
|
309
|
+
${i?`const __wasmMem=new WebAssembly.Memory({initial:1024});
|
|
310
310
|
let __woff=0;
|
|
311
311
|
globalThis.wasmBuffer=function(Ctor,len){const bytes=len*Ctor.BYTES_PER_ELEMENT;const align=Math.max(Ctor.BYTES_PER_ELEMENT,16);__woff=(__woff+align-1)&~(align-1);const arr=new Ctor(__wasmMem.buffer,__woff,len);__woff+=bytes;return arr};`:""}
|
|
312
312
|
for(const{id,b64,c,m}of __wasmBlocks){
|
|
@@ -332,106 +332,105 @@ for(const{id,b64,c,m}of __wasmBlocks){
|
|
|
332
332
|
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}}
|
|
333
333
|
return r};
|
|
334
334
|
}})();
|
|
335
|
-
`.trim(),results:
|
|
336
|
-
`),suffix:"__tjs.popStack();"}}let
|
|
337
|
-
`),suffix:"__tjs.popStack();"}}function
|
|
338
|
-
${
|
|
339
|
-
${
|
|
340
|
-
`}),
|
|
341
|
-
${
|
|
342
|
-
`})}}
|
|
335
|
+
`.trim(),results:t}}function aa(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 ca(e,t,n,r,s){let i=[],o=yt(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=je(d,n);if(y.type.kind==="object"&&y.type.destructuredParams){l={},u=new Set;for(let[x,E]of Object.entries(y.type.destructuredParams))a[x]={...E,description:o.params[x]},l[x]=E.type,E.required&&u.add(x)}}else for(let m of e.params)if(m.type==="Identifier"){let d=je(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=je(m,n),y=aa(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=je(m,n);if(d.type.kind==="object"&&d.type.destructuredParams)for(let[y,x]of Object.entries(d.type.destructuredParams))a[y]={...x,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 x=Vs(y[1].trim(),0,{ecmaVersion:2022}),E=le(x);a[d]={name:d,type:E,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 p;if(r)try{let m=r.includes("=")?Ks(r):r,d=Vs(m,0,{ecmaVersion:2022});p=le(d)}catch{p={kind:"any"},i.push(`Could not parse return type: ${r}`)}return{types:{name:e.id?.name||"anonymous",params:a,returns:p,description:o.description,isDestructuredParam:c,destructuredShape:l,destructuredRequired:u},warnings:i}}function la(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,p]of Object.entries(a)){let f=c.has(u),m=`${s}${e}.${u}`,d=hr(u,p);if(d){let y=p.kind;f?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(`
|
|
336
|
+
`),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}`,u=hr(a,c.type);if(u){let p=c.type.kind==="union"?c.type.members.map(f=>f.kind).join(" | "):c.type.kind;c.required?r.push(`if (${u}) return __tjs.typeError('${l}', '${p}', ${a});`):r.push(`if (${a} !== undefined && ${u}) return __tjs.typeError('${l}', '${p}', ${a});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
|
|
337
|
+
`),suffix:"__tjs.popStack();"})}function Ks(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 ua(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 yn(s)}function fa(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 pa(e){let t=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return t?t[1].trim():void 0}function ma(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 vt(e,t={}){let{filename:n="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=t,o=[],c=pa(e)||n,{code:l,tests:u,mocks:p,testRunner:f}=Gn(e),{ast:m,originalSource:d,requiredParams:y,unsafeFunctions:x}=we(l,{filename:n,colonShorthand:!0}),E=da(m),_=qt(l),b={},T=[],k=[];for(let L of E){let K=L.id?.name||"anonymous",J=ua(l,K),ge;if(J&&J.includes("="))try{let ue=J.matchAll(/(\w+)\s*=\s*/g),fe=Ks(J),Ie=new Function(`return ${fe}`)(),he={};for(let Li of ue){let qn=Li[1];qn in Ie&&(he[qn]=Ie[qn])}Object.keys(he).length>0&&(ge=he)}catch{}let{types:Pe,warnings:Ni}=ca(L,d,y,J,l);o.push(...Ni),b[K]=Pe;for(let ue of L.params)if(ue.type==="AssignmentPattern"){let fe=ue.left?.name||ue.left?.value,Ie=fe?Pe.params[fe]:null;if(Ie?.required&&Ie.default===null)k.push({start:ue.left.end,end:ue.right.end});else{let he=ue.right;he.type==="BinaryExpression"&&he.operator==="|"&&k.push({start:he.left.end,end:he.end})}}let Ir=_.moduleSafety==="none"||x.has(K),Pi=_.safeFunctions.has(K),Ii=fa(l,K),Di=ma(e,K),He={file:c,line:Di??L.loc?.start.line??0,column:L.loc?.start.column??0},Oi={unsafe:Ir,safe:Pi,returnSafety:Ii},Dr=_.polymorphicNames.has(K),Un;if(Dr){let ue=[];for(let Ie of E){let he=Ie.id?.name||"";he.startsWith(K+"$")&&ue.push(he)}let fe={polymorphic:!0,variants:ue};He&&(fe.source=`${He.file}:${He.line}`),Un=`${K}.__tjs = ${JSON.stringify(fe,null,2)}`}else Un=ya(K,Pe,Oi,{debug:s,source:He,returnDefaults:ge});if(T.push({position:L.end,text:`
|
|
338
|
+
${Un}`}),!Ir&&!Dr){let ue=`${He.file}:${He.line}`,fe=la(K,Pe,ue);fe&&L.body&&L.body.start!==void 0&&(T.push({position:L.body.start+1,text:`
|
|
339
|
+
${fe.preamble}
|
|
340
|
+
`}),fe.suffix&&T.push({position:L.body.end-1,text:`
|
|
341
|
+
${fe.suffix}
|
|
342
|
+
`}))}}k.sort((L,K)=>K.start-L.start);let w=_.source;for(let{start:L,end:K}of k)w=w.slice(0,L)+w.slice(K);for(let L of T){let K=0;for(let J of k)J.start<L.position&&(K+=J.end-J.start);L.position-=K}T.sort((L,K)=>K.position-L.position);for(let{position:L,text:K}of T)w=w.slice(0,L)+K+w.slice(L);let j=w.includes("__tjs.typeError("),C=w.includes("__tjs.pushStack("),$=w.includes("Is("),R=w.includes("IsNot("),A=w.includes("Eq("),P=w.includes("NotEq("),v=w.includes("TypeOf("),I=/\bType\(/.test(w),O=/\bGeneric\(/.test(w),F=/\bFunctionPredicate\(/.test(w),H=/\bEnum\(/.test(w),se=/\bUnion\(/.test(w),Ge=w.includes("__tjs.bang("),Bn=_.tjsModes.tjsSafeEval;if(j||C||$||R||A||P||v||I||O||F||H||se||Ge||Bn){let L=[];j&&L.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}"),C&&L.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),A&&L.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&&L.push("function NotEq(a,b){return!Eq(a,b)}"),v&&L.push("function TypeOf(v){return v===null?'null':typeof v}"),$&&L.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]))}"),R&&L.push("function IsNot(a,b){return!Is(a,b)}"),I&&L.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}"),O&&L.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&&L.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}}"),H&&L.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}}"),se&&L.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),Ge&&(j||L.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}"),L.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 K=L.length>0?L.join(`;
|
|
343
343
|
`)+`;
|
|
344
|
-
`:"",
|
|
345
|
-
`+
|
|
346
|
-
`+
|
|
347
|
-
${
|
|
348
|
-
${
|
|
349
|
-
${
|
|
350
|
-
`)}`)}}if(
|
|
351
|
-
`+
|
|
352
|
-
`).map(
|
|
353
|
-
`);
|
|
354
|
-
${
|
|
355
|
-
}`)}}else
|
|
356
|
-
`);return`declare module '${
|
|
357
|
-
${
|
|
344
|
+
`:"",J=[];j&&J.push("typeError","isMonadicError"),C&&J.push("pushStack","popStack","getStack"),A&&J.push("Eq"),P&&J.push("NotEq"),v&&J.push("TypeOf"),$&&J.push("Is","tjsEquals"),R&&J.push("IsNot"),I&&J.push("Type"),O&&J.push("Generic"),F&&J.push("FunctionPredicate"),H&&J.push("Enum"),se&&J.push("Union"),Ge&&(J.push("bang"),j||J.push("typeError","isMonadicError"));let ge=J.length>0?`{${J.join(",")}}`:"undefined";w=K+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${ge};
|
|
345
|
+
`+w}Bn&&(w=`import { Eval, SafeFunction } from 'tjs-lang';
|
|
346
|
+
`+w);let ut;if(r){let L=Os(e);ut=Ls(u,p,L,w,i,_.extensions);let K=ut.filter(J=>!J.passed);if(K.length>0&&r===!0){let J=K.map(ge=>{if(ge.isSignatureTest)return` Function signature example is inconsistent:
|
|
347
|
+
${ge.error}`;let Pe=ge.line?` (line ${ge.line})`:"";return` Test '${ge.description}'${Pe} failed:
|
|
348
|
+
${ge.error}`});throw new Error(`Transpile-time test failures:
|
|
349
|
+
${J.join(`
|
|
350
|
+
`)}`)}}if(r==="only")return{code:"",types:b,metadata:b,testResults:ut,testCount:ut?.length};let Fn;if(_.wasmBlocks.length>0){Fn=[];let L=Ws(_.wasmBlocks);L.code&&(w=L.code+`
|
|
351
|
+
`+w),Fn=L.results}return{code:w,types:b,metadata:b,warnings:o.length>0?o:void 0,testRunner:u.length>0?f:void 0,testCount:u.length>0?u.length:void 0,testResults:ut,wasmCompiled:Fn}}function da(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 jt(e){let t={kind:e.kind};return e.nullable&&(t.nullable=!0),e.items&&(t.items=jt(e.items)),e.shape&&(t.shape=Object.fromEntries(Object.entries(e.shape).map(([n,r])=>[n,jt(r)]))),e.members&&(t.members=e.members.map(jt)),t}function ya(e,t,n={},r={}){let s={};for(let[o,a]of Object.entries(t.params))s[o]={type:jt(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:jt(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 hr(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":n=`!Array.isArray(${e})`;break;case"object":n=`(typeof ${e} !== 'object' || ${e} === null || Array.isArray(${e}))`;break;case"union":{let r=t.members.map(s=>hr(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}function rt(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=rt(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}: ${rt(s)}`).join("; ")} }`:t="Record<string, any>";break;case"union":if(e.members&&e.members.length>0)return e.members.map(rt).join(" | ");t="any";break;default:t="any"}return e.nullable?`${t} | null`:t}function ga(e,t,n,r){let s=Object.entries(t.params).map(([a,c])=>{let l=!c.required,u=rt(c.type);return l?`${a}?: ${u}`:`${a}: ${u}`}).join(", "),i=t.returns?rt(t.returns):"any";return`${n?r?"export default function":"export declare function":"declare function"} ${e}(${s}): ${i};`}function ha(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(p=>p.trim().split(/\s+as\s+/));for(let p of u){let f=p.length>1?p[1]:p[0];f&&/^\w+$/.test(f)&&t.set(f,{exported:!0,isDefault:!1})}}return t}function ba(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 p=[],f=l.match(/params\s*:\s*\{([^}]*)\}/);if(f){let y=f[1],x=Gs(y);for(let E of x){let _=E.match(/^(\w+)\s*:\s*(.+)$/);_&&p.push({name:_[1],example:_[2].trim()})}}let m,d=l.match(/returns\s*:\s*(.+?)(?:\n|$)/);d&&(m=d[1].trim()),t.set(s,{params:p,returns:m,typeParams:u})}return t}function xa(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 f=c.indexOf("(",l);if(f!==-1){let m=1,d=f+1;for(;d<c.length&&m>0;)c[d]==="("?m++:c[d]===")"&&m--,d++;u=c.slice(f+1,d-1).trim()}}let p=[];{let f=0,m=0;for(;f<c.length;){let d=c[f];if(d==="{"){m++,f++;continue}if(d==="}"){m--,f++;continue}if(m===0){let y=c.slice(f).match(/^(\w+)\s*\(/);if(y){let x=y[1];if(x==="constructor"||x==="get"||x==="set"){f+=x.length;continue}else{let E=f+y[0].length-1,_=1,b=E+1;for(;b<c.length&&_>0;)c[b]==="("?_++:c[b]===")"&&_--,b++;let T=c.slice(E+1,b-1).trim(),k=c.slice(b).match(/^\s*->\s*(.+?)\s*\{/),w=k?k[1].trim():null;p.push({name:x,params:T,returnType:w}),f=b;continue}}}f++}}t.set(s,{name:s,constructorParams:u,methods:p})}return t}function Gs(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 zs(e){return e.trim()?Gs(e).map(t=>{let n=t.match(/^(\w+)\s*:\s*(.+)$/);if(n){let s=n[1],i=Me(n[2].trim());return`${s}: ${i}`}let r=t.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=Me(r[2].trim());return`${s}?: ${i}`}return t.startsWith("{")?"options: any":`${t}: any`}).join(", "):""}function Ta(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 Sa(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(f=>f.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,p=l.match(/\bdeclaration\s*\{/);if(p&&p.index!==void 0){let f=p.index+p[0].length-1,m=1,d=f+1;for(;d<l.length&&m>0;)l[d]==="{"?m++:l[d]==="}"&&m--,d++;u=l.slice(f+1,d-1).trim()}t.set(s,{typeParams:i,declaration:u})}return t}function wa(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 Ea(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 _a(e,t,n={}){let r=[],s=ha(t),i=Ta(t),o=xa(t),a=Sa(t),c=s.size>0,l=new Set;for(let[f,m]of Object.entries(e.types)){if(f.includes("$"))continue;let d=s.get(f),y=c?!!d?.exported:!0,x=d?.isDefault??!1;y&&(m.description&&r.push(`/** ${m.description} */`),r.push(ga(f,m,!0,x)),l.add(f))}for(let[f,m]of o){if(l.has(f))continue;let d=s.get(f);if(!(c?!!d?.exported:!0))continue;let x=m.constructorParams?zs(m.constructorParams):"";if(r.push(`export declare function ${f}(${x}): any;`),x||m.methods.length>0){r.push(`export declare class ${f} {`),m.constructorParams&&r.push(` constructor(${x});`);for(let E of m.methods){let _=E.params?zs(E.params):"";r.push(` ${E.name}(${_}): any;`)}r.push("}")}l.add(f)}for(let[f,m]of i){if(l.has(f))continue;let d=s.get(f);if(!c||d?.exported){if(m.startsWith("__ts__:")){let x=m.slice(7);r.push(`export type ${f} = ${x};`)}else if(m==="")r.push(`export type ${f} = any;`);else{let x=Me(m);r.push(`export declare const ${f}: { check(value: any): boolean; default: ${x}; (value: any): boolean; };`)}l.add(f)}}for(let[f,m]of a){if(l.has(f))continue;let d=s.get(f);if(!(c?!!d?.exported:!0))continue;let x=m.typeParams.length>0?`<${m.typeParams.join(", ")}>`:"";if(m.declaration){let E=m.declaration.trim(),_=E.match(/^\/\/\s*TS:\s*(.+)$/s);if(_)r.push(`export type ${f}${x} = ${_[1].trim()};`);else{let b=E.split(`
|
|
352
|
+
`).map(T=>T.trim()).filter(T=>T.length>0).map(T=>` ${T}`).join(`
|
|
353
|
+
`);r.push(`export interface ${f}${x} {
|
|
354
|
+
${b}
|
|
355
|
+
}`)}}else r.push(`export declare function ${f}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(f)}let u=ba(t);for(let[f,m]of u){if(l.has(f))continue;let d=s.get(f);if(!(c?!!d?.exported:!0))continue;let x=new Set(m.typeParams?.map(T=>T.split("=")[0].trim())??[]),E=m.typeParams?`<${m.typeParams.join(", ")}>`:"",_=m.params.map((T,k)=>{let w=k===m.params.length-1;if(T.example.startsWith("[")&&T.example.endsWith("]")&&w){let C=T.example.slice(1,-1).trim(),$=!C||C==="null"?"any":x.has(C)?C:Me(C);return`...${T.name}: ${$}[]`}if(T.example.startsWith("[")&&T.example.endsWith("]")){let C=T.example.slice(1,-1).trim(),$=!C||C==="null"?"any":x.has(C)?C:Me(C);return`${T.name}: ${$}[]`}let j=T.example==="null"?"any":x.has(T.example)?T.example:Me(T.example);return`${T.name}: ${j}`}).join(", "),b=m.returns!==void 0?m.returns==="null"?"any":x.has(m.returns)?m.returns:Me(m.returns):"void";r.push(`export type ${f}${E} = (${_}) => ${b};`),l.add(f)}let p=wa(t);for(let f of p){if(l.has(f.name))continue;let m=s.get(f.name);if(!(c?!!m?.exported:!0))continue;let y=Ea(f.value);r.push(`export declare const ${f.name}: ${y};`),l.add(f.name)}if(n.moduleName){let f=r.map(m=>` ${m}`).join(`
|
|
356
|
+
`);return`declare module '${n.moduleName}' {
|
|
357
|
+
${f}
|
|
358
358
|
}
|
|
359
|
-
`}return
|
|
359
|
+
`}return r.join(`
|
|
360
360
|
`)+`
|
|
361
|
-
`}function k1($){let Z=$.trim();if(n$(Z)){let X=c$(Z).map((Q)=>k1(Q.trim()));return[...new Set(X)].join(" | ")}if(/^['"]/.test(Z))return"string";if(Z==="true"||Z==="false")return"boolean";if(Z==="null")return"null";if(Z==="undefined")return"undefined";if(/^[+-]?\d+\.\d+$/.test(Z))return"number";if(/^[+-]?\d+$/.test(Z))return"number";if(Z.startsWith("["))return"any[]";if(Z.startsWith("{"))return"Record<string, any>";return"any"}function n$($){let Z=0,X=null;for(let Q of $){if(X){if(Q===X)X=null;continue}if(Q==="'"||Q==='"'||Q==="`"){X=Q;continue}if(Q==="{"||Q==="["||Q==="(")Z++;else if(Q==="}"||Q==="]"||Q===")")Z--;else if(Q==="|"&&Z===0)return!0}return!1}function c$($){let Z=[],X=0,Q=null,K="";for(let Y of $){if(Q){if(K+=Y,Y===Q)Q=null;continue}if(Y==="'"||Y==='"'||Y==="`"){Q=Y,K+=Y;continue}if(Y==="{"||Y==="["||Y==="(")X++;else if(Y==="}"||Y==="]"||Y===")")X--;if(Y==="|"&&X===0)Z.push(K),K="";else K+=Y}if(K)Z.push(K);return Z}import B from"typescript";var o$=20,e7=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 d($,Z,X,Q){if(!$)return"undefined";switch($.kind){case B.SyntaxKind.StringKeyword:return"''";case B.SyntaxKind.NumberKeyword:return"0.0";case B.SyntaxKind.BooleanKeyword:return"false";case B.SyntaxKind.NullKeyword:return"null";case B.SyntaxKind.UndefinedKeyword:return"undefined";case B.SyntaxKind.VoidKeyword:return"undefined";case B.SyntaxKind.AnyKeyword:return"any";case B.SyntaxKind.UnknownKeyword:return"any";case B.SyntaxKind.NeverKeyword:return"null";case B.SyntaxKind.SymbolKeyword:return"Symbol('example')";case B.SyntaxKind.BigIntKeyword:return"0n";case B.SyntaxKind.ObjectKeyword:return"{}";case B.SyntaxKind.ArrayType:{let Y=d($.elementType,Z);if(Y==="any")Y="null";return`[${Y}]`}case B.SyntaxKind.TypeReference:{let K=$,Y=K.typeName.getText();if(Y==="Array"&&K.typeArguments?.length)return`[${d(K.typeArguments[0],Z,X,Q)}]`;if(Y==="Promise"){if(K.typeArguments?.length)return d(K.typeArguments[0],Z,X,Q);return"undefined"}if(Y==="Generator"||Y==="AsyncGenerator"||Y==="IterableIterator"||Y==="AsyncIterableIterator"){if(K.typeArguments?.length)return d(K.typeArguments[0],Z,X,Q);return"undefined"}if(Y==="Record")return"{}";let H={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(Y in H)return H[Y];if(Q?.typeAliases?.has(Y)){let G=Q.visited??new Set;if(G.has(Y))return X?.push(`Circular type reference '${Y}' - using 'any'`),"any";G.add(Y);let W=Q.typeAliases.get(Y);return d(W,Z,X,{...Q,visited:G})}if(Q?.interfaces?.has(Y)){let G=Q.visited??new Set;if(G.has(Y))return X?.push(`Circular type reference '${Y}' - using 'any'`),"any";G.add(Y);let W=Q.interfaces.get(Y),z=[];for(let J of W.members)if(B.isPropertySignature(J)&&J.name){let L=J.name.getText(Q.sourceFile),_=d(J.type,Z,X,{...Q,visited:G});z.push(`${L}: ${_}`)}return`{ ${z.join(", ")} }`}if(Q?.typeParams?.has(Y)){let G=Q.typeParams.get(Y);if(G.constraint)return d(G.constraint,Z,X,Q);if(G.default)return d(G.default,Z,X,Q)}if(e7.has(Y))return"{}";if(/^[A-Z]$/.test(Y)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(Y))return X?.push(`Generic type parameter '${Y}' converted to 'any' - consider specializing`),"any";return X?.push(`Unknown type '${Y}' converted to 'any' - may need manual review`),"any"}case B.SyntaxKind.TypeLiteral:{let K=$,Y=[];for(let H of K.members)if(B.isPropertySignature(H)&&H.name){let G=H.name.getText(),W=d(H.type,Z);if(W==="any")W="null";Y.push(`${G}: ${W}`)}return`{ ${Y.join(", ")} }`}case B.SyntaxKind.UnionType:{let K=$,Y=(L)=>L.kind===B.SyntaxKind.NullKeyword||B.isLiteralTypeNode(L)&&L.literal.kind===B.SyntaxKind.NullKeyword,H=(L)=>L.kind===B.SyntaxKind.UndefinedKeyword||B.isLiteralTypeNode(L)&&L.literal.kind===B.SyntaxKind.UndefinedKeyword,G=K.types.filter((L)=>!Y(L)&&!H(L)),W=K.types.some(Y),z=K.types.some(H);if(G.length===0){if(W)return"null";return"undefined"}if(G.length===1&&(W||z)){let L=d(G[0],Z,X,Q);if(L==="any")return"any";if(W)return`${L} | null`;if(z)return`${L} | undefined`}let J=K.types.map((L)=>d(L,Z,X,Q)).filter((L,_,U)=>U.indexOf(L)===_);if(J.some((L)=>L==="any"))return"any";if(J.length===1)return J[0];if(J.length>0){if(J.some((_)=>/[()]/.test(_)||_.startsWith("new ")))return"any";return J.join(" | ")}return"undefined"}case B.SyntaxKind.LiteralType:{let K=$;if(B.isStringLiteral(K.literal))return`'${K.literal.text}'`;if(B.isNumericLiteral(K.literal))return K.literal.text;if(K.literal.kind===B.SyntaxKind.TrueKeyword)return"true";if(K.literal.kind===B.SyntaxKind.FalseKeyword)return"false";if(K.literal.kind===B.SyntaxKind.NullKeyword)return"null";return"undefined"}case B.SyntaxKind.ParenthesizedType:return d($.type,Z);case B.SyntaxKind.FunctionType:{let K=$,Y=[];for(let W of K.parameters){let z=W.name?.getText()||"_";if(z==="this")continue;let J=d(W.type,Z,X,Q);if(J==="any")J="null";Y.push(`${z}: ${J}`)}let H=d(K.type,Z,X,Q);if(H==="any")H="null";let G=[];if(Y.length>0)G.push(`params: { ${Y.join(", ")} }`);if(H!=="undefined")G.push(`returns: ${H}`);return`FunctionPredicate('function', { ${G.join(", ")} })`}case B.SyntaxKind.TupleType:return`[${$.elements.map((H)=>{let G=B.isNamedTupleMember(H)?d(H.type,Z):d(H,Z);return G==="any"?"null":G}).join(", ")}]`;default:return"undefined"}}function t($,Z){if(!$)return{kind:"any"};let X=Z?.depth??0;if(X>o$)return{kind:"any"};switch(Z=Z?{...Z,depth:X+1}:void 0,$.kind){case B.SyntaxKind.StringKeyword:return{kind:"string"};case B.SyntaxKind.NumberKeyword:return{kind:"number"};case B.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case B.SyntaxKind.NullKeyword:return{kind:"null"};case B.SyntaxKind.UndefinedKeyword:case B.SyntaxKind.VoidKeyword:return{kind:"undefined"};case B.SyntaxKind.ArrayType:return{kind:"array",items:t($.elementType,Z)};case B.SyntaxKind.TypeLiteral:{let Q=$,K={};for(let Y of Q.members)if(B.isPropertySignature(Y)&&Y.name){let H=Y.name.getText();K[H]=t(Y.type,Z)}return{kind:"object",shape:K}}case B.SyntaxKind.UnionType:{let Q=$,K=Q.types.filter((H)=>H.kind!==B.SyntaxKind.NullKeyword&&H.kind!==B.SyntaxKind.UndefinedKeyword),Y=Q.types.some((H)=>H.kind===B.SyntaxKind.NullKeyword);if(K.length===1&&Y)return{...t(K[0],Z),nullable:!0};return{kind:"union",members:Q.types.map((H)=>t(H,Z))}}case B.SyntaxKind.IntersectionType:{let Q=$,K={};for(let Y of Q.types){let H=t(Y,Z);if(H.kind==="object"&&H.shape)Object.assign(K,H.shape)}if(Object.keys(K).length>0)return{kind:"object",shape:K};return{kind:"any"}}case B.SyntaxKind.TupleType:{let Q=$,K=[];for(let Y of Q.elements)if(B.isNamedTupleMember(Y))K.push(t(Y.type,Z));else K.push(t(Y,Z));return{kind:"tuple",elements:K}}case B.SyntaxKind.TypeReference:{let Q=$,K=Q.typeName.getText();if(K==="Array"&&Q.typeArguments?.length)return{kind:"array",items:t(Q.typeArguments[0],Z)};if(K==="Promise"&&Q.typeArguments?.length)return t(Q.typeArguments[0],Z);if((K==="Generator"||K==="AsyncGenerator"||K==="IterableIterator"||K==="AsyncIterableIterator")&&Q.typeArguments?.length)return t(Q.typeArguments[0],Z);if(Q.typeArguments?.length){let Y=t(Q.typeArguments[0],Z);if(K==="Partial")return Y;if(K==="Required")return Y;if(K==="Readonly")return Y;if(K==="Record"&&Q.typeArguments.length>=2)return{kind:"object",shape:{"[key]":t(Q.typeArguments[1],Z)}};if(K==="Pick"||K==="Omit")return Y;if(K==="NonNullable"){if(Y.nullable)return{...Y,nullable:!1};return Y}if(["ReturnType","Parameters","ConstructorParameters"].includes(K))return{kind:"any"}}if(Z?.typeAliases?.has(K)){if(Z.resolvedCache?.has(K))return Z.resolvedCache.get(K);let Y=Z.visited??new Set;if(Y.has(K))return{kind:"any"};Y.add(K);let H=Z.typeAliases.get(K),G=t(H,{...Z,visited:Y});return Z.resolvedCache?.set(K,G),G}if(Z?.interfaces?.has(K)){if(Z.resolvedCache?.has(K))return Z.resolvedCache.get(K);let Y=Z.visited??new Set;if(Y.has(K))return{kind:"any"};Y.add(K);let H=Z.interfaces.get(K),G={};if(H.heritageClauses){for(let z of H.heritageClauses)if(z.token===B.SyntaxKind.ExtendsKeyword)for(let J of z.types){let L=J.expression.getText(Z.sourceFile);if(Z.interfaces?.has(L)&&!Y.has(L)){let _={kind:B.SyntaxKind.TypeReference,typeName:{getText:()=>L}},U=t(_,{...Z,visited:Y});if(U.kind==="object"&&U.shape)Object.assign(G,U.shape)}}}for(let z of H.members)if(B.isPropertySignature(z)&&z.name){let J=z.name.getText(Z.sourceFile);G[J]=t(z.type,{...Z,visited:Y})}let W={kind:"object",shape:G};return Z.resolvedCache?.set(K,W),W}if(Z?.typeParams?.has(K)){let Y=Z.typeParams.get(K);if(Y.constraint)return t(Y.constraint,Z);if(Y.default)return t(Y.default,Z)}if(e7.has(K))return{kind:"object"};return{kind:"any"}}default:return{kind:"any"}}}function s$($,Z){if(!$.typeParameters||$.typeParameters.length===0)return;let X={};for(let Q of $.typeParameters){let K=Q.name.getText(),Y={};if(Q.constraint){let H=d(Q.constraint,void 0,Z);if(H.startsWith("{"))try{Y.constraint=H}catch{Y.constraint=H}else Y.constraint=H}if(Q.default){let H=d(Q.default,void 0,Z);Y.default=H}X[K]=Y}return Object.keys(X).length>0?X:void 0}function a$($,Z,X,Q){let K=$.name.getText(Z);if($.typeParameters&&$.typeParameters.length>0)return r$($,Z,X,Q);let Y=Q?.find((z)=>z.kind==="example"),H=Q?.find((z)=>z.kind==="predicate"),G;if(Y?.text)G=Y.text;else{let z=[];for(let J of $.members)if(B.isPropertySignature(J)&&J.name){let L=J.name.getText(Z),_=d(J.type,void 0,X);if(_==="any")_="null";z.push(`${L}: ${_}`)}if(z.length===0&&!H)return`Type ${K} {}`;G=z.length>0?`{ ${z.join(", ")} }`:"{}"}let W=[`example: ${G}`];if(H?.text)W.push(H.text);return`Type ${K} {
|
|
362
|
-
${
|
|
361
|
+
`}function Me(e){let t=e.trim();if($a(t)){let n=ka(t).map(r=>Me(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 $a(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 ka(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 S from"typescript";var ja=20,Zs=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 U(e,t,n,r){if(!e)return"undefined";switch(e.kind){case S.SyntaxKind.StringKeyword:return"''";case S.SyntaxKind.NumberKeyword:return"0.0";case S.SyntaxKind.BooleanKeyword:return"false";case S.SyntaxKind.NullKeyword:return"null";case S.SyntaxKind.UndefinedKeyword:return"undefined";case S.SyntaxKind.VoidKeyword:return"undefined";case S.SyntaxKind.AnyKeyword:return"any";case S.SyntaxKind.UnknownKeyword:return"any";case S.SyntaxKind.NeverKeyword:return"null";case S.SyntaxKind.SymbolKeyword:return"Symbol('example')";case S.SyntaxKind.BigIntKeyword:return"0n";case S.SyntaxKind.ObjectKeyword:return"{}";case S.SyntaxKind.ArrayType:{let i=U(e.elementType,t);return i==="any"&&(i="null"),`[${i}]`}case S.SyntaxKind.TypeReference:{let s=e,i=s.typeName.getText();if(i==="Array"&&s.typeArguments?.length)return`[${U(s.typeArguments[0],t,n,r)}]`;if(i==="Promise"||i==="Generator"||i==="AsyncGenerator"||i==="IterableIterator"||i==="AsyncIterableIterator")return s.typeArguments?.length?U(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 U(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(S.isPropertySignature(u)&&u.name){let p=u.name.getText(r.sourceFile),f=U(u.type,t,n,{...r,visited:a});l.push(`${p}: ${f}`)}return`{ ${l.join(", ")} }`}if(r?.typeParams?.has(i)){let a=r.typeParams.get(i);if(a.constraint)return U(a.constraint,t,n,r);if(a.default)return U(a.default,t,n,r)}return Zs.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 S.SyntaxKind.TypeLiteral:{let s=e,i=[];for(let o of s.members)if(S.isPropertySignature(o)&&o.name){let a=o.name.getText(),c=U(o.type,t);c==="any"&&(c="null"),i.push(`${a}: ${c}`)}return`{ ${i.join(", ")} }`}case S.SyntaxKind.UnionType:{let s=e,i=p=>p.kind===S.SyntaxKind.NullKeyword||S.isLiteralTypeNode(p)&&p.literal.kind===S.SyntaxKind.NullKeyword,o=p=>p.kind===S.SyntaxKind.UndefinedKeyword||S.isLiteralTypeNode(p)&&p.literal.kind===S.SyntaxKind.UndefinedKeyword,a=s.types.filter(p=>!i(p)&&!o(p)),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 p=U(a[0],t,n,r);if(p==="any")return"any";if(c)return`${p} | null`;if(l)return`${p} | undefined`}let u=s.types.map(p=>U(p,t,n,r)).filter((p,f,m)=>m.indexOf(p)===f);return u.some(p=>p==="any")?"any":u.length===1?u[0]:u.length>0?u.some(f=>/[()]/.test(f)||f.startsWith("new "))?"any":u.join(" | "):"undefined"}case S.SyntaxKind.LiteralType:{let s=e;return S.isStringLiteral(s.literal)?`'${s.literal.text}'`:S.isNumericLiteral(s.literal)?s.literal.text:s.literal.kind===S.SyntaxKind.TrueKeyword?"true":s.literal.kind===S.SyntaxKind.FalseKeyword?"false":s.literal.kind===S.SyntaxKind.NullKeyword?"null":"undefined"}case S.SyntaxKind.ParenthesizedType:return U(e.type,t);case S.SyntaxKind.FunctionType:{let s=e,i=[];for(let c of s.parameters){let l=c.name?.getText()||"_";if(l==="this")continue;let u=U(c.type,t,n,r);u==="any"&&(u="null"),i.push(`${l}: ${u}`)}let o=U(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 S.SyntaxKind.TupleType:return`[${e.elements.map(o=>{let a=S.isNamedTupleMember(o)?U(o.type,t):U(o,t);return a==="any"?"null":a}).join(", ")}]`;default:return"undefined"}}function X(e,t){if(!e)return{kind:"any"};let n=t?.depth??0;if(n>ja)return{kind:"any"};switch(t=t?{...t,depth:n+1}:void 0,e.kind){case S.SyntaxKind.StringKeyword:return{kind:"string"};case S.SyntaxKind.NumberKeyword:return{kind:"number"};case S.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case S.SyntaxKind.NullKeyword:return{kind:"null"};case S.SyntaxKind.UndefinedKeyword:case S.SyntaxKind.VoidKeyword:return{kind:"undefined"};case S.SyntaxKind.ArrayType:return{kind:"array",items:X(e.elementType,t)};case S.SyntaxKind.TypeLiteral:{let r=e,s={};for(let i of r.members)if(S.isPropertySignature(i)&&i.name){let o=i.name.getText();s[o]=X(i.type,t)}return{kind:"object",shape:s}}case S.SyntaxKind.UnionType:{let r=e,s=r.types.filter(o=>o.kind!==S.SyntaxKind.NullKeyword&&o.kind!==S.SyntaxKind.UndefinedKeyword),i=r.types.some(o=>o.kind===S.SyntaxKind.NullKeyword);return s.length===1&&i?{...X(s[0],t),nullable:!0}:{kind:"union",members:r.types.map(o=>X(o,t))}}case S.SyntaxKind.IntersectionType:{let r=e,s={};for(let i of r.types){let o=X(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 S.SyntaxKind.TupleType:{let r=e,s=[];for(let i of r.elements)S.isNamedTupleMember(i)?s.push(X(i.type,t)):s.push(X(i,t));return{kind:"tuple",elements:s}}case S.SyntaxKind.TypeReference:{let r=e,s=r.typeName.getText();if(s==="Array"&&r.typeArguments?.length)return{kind:"array",items:X(r.typeArguments[0],t)};if(s==="Promise"&&r.typeArguments?.length||(s==="Generator"||s==="AsyncGenerator"||s==="IterableIterator"||s==="AsyncIterableIterator")&&r.typeArguments?.length)return X(r.typeArguments[0],t);if(r.typeArguments?.length){let i=X(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]":X(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=X(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===S.SyntaxKind.ExtendsKeyword)for(let u of l.types){let p=u.expression.getText(t.sourceFile);if(t.interfaces?.has(p)&&!i.has(p)){let f={kind:S.SyntaxKind.TypeReference,typeName:{getText:()=>p}},m=X(f,{...t,visited:i});m.kind==="object"&&m.shape&&Object.assign(a,m.shape)}}}for(let l of o.members)if(S.isPropertySignature(l)&&l.name){let u=l.name.getText(t.sourceFile);a[u]=X(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 X(i.constraint,t);if(i.default)return X(i.default,t)}return Zs.has(s)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function va(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=U(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=U(r.default,void 0,t);i.default=o}n[s]=i}return Object.keys(n).length>0?n:void 0}function Aa(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return Ma(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(S.isPropertySignature(u)&&u.name){let p=u.name.getText(t),f=U(u.type,void 0,n);f==="any"&&(f="null"),l.push(`${p}: ${f}`)}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} {
|
|
362
|
+
${c.join(`
|
|
363
363
|
`)}
|
|
364
|
-
}`}function
|
|
365
|
-
${
|
|
364
|
+
}`}function Ma(e,t,n,r){let s=e.name.getText(t),i=[];for(let u of e.typeParameters||[]){let p=u.name.getText(t);if(u.default){let f=U(u.default,void 0,n);i.push(`${p} = ${f}`)}else i.push(p)}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)),p=["typeof x === 'object'","x !== null"];for(let m of e.members)if(S.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=d.startsWith("[")&&d.endsWith("]"),x=y?d.slice(1,-1):null;if(y?p.push(`${x} in x`):p.push(`'${d}' in x`),m.type&&S.isTypeReferenceNode(m.type)){let E=m.type.typeName.getText(t);u.includes(E)&&(y?p.push(`${E}(x[${x}])`):p.push(`${E}(x.${d})`))}}c=`predicate(${["x",...u].join(", ")}) { return ${p.join(" && ")} }`}let l=[`description: '${s}'`,c];if(a?.text)l.push(`declaration ${a.text}`);else{let u=[];for(let p of e.members)if(S.isPropertySignature(p)&&p.name){let f=p.name.getText(t),m=p.questionToken?"?":"",d=p.type?p.type.getText(t):"any";u.push(`${f}${m}: ${d}`)}else if(S.isMethodSignature(p)&&p.name){let f=p.getText(t).trim();u.push(f.replace(/;$/,""))}u.length>0&&l.push(`declaration {
|
|
365
|
+
${u.join(`
|
|
366
366
|
`)}
|
|
367
|
-
}`)}return`Generic ${
|
|
368
|
-
${
|
|
367
|
+
}`)}return`Generic ${s}<${i.join(", ")}> {
|
|
368
|
+
${l.join(`
|
|
369
369
|
`)}
|
|
370
|
-
}`}function t
|
|
371
|
-
${
|
|
370
|
+
}`}function Ca(e,t){if(!S.isUnionTypeNode(e))return null;let n=[];for(let r of e.types)if(S.isLiteralTypeNode(r))if(S.isStringLiteral(r.literal))n.push(`'${r.literal.text}'`);else if(S.isNumericLiteral(r.literal))n.push(r.literal.text);else if(r.literal.kind===S.SyntaxKind.TrueKeyword)n.push("true");else if(r.literal.kind===S.SyntaxKind.FalseKeyword)n.push("false");else if(r.literal.kind===S.SyntaxKind.NullKeyword)n.push("null");else return null;else if(r.kind===S.SyntaxKind.NullKeyword)n.push("null");else if(r.kind===S.SyntaxKind.UndefinedKeyword)n.push("undefined");else return null;return n.length>0?n:null}function Ra(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(S.isStringLiteral(o.initializer))s.push(` ${a} = '${o.initializer.text}'`);else if(S.isNumericLiteral(o.initializer)){let c=parseInt(o.initializer.text,10);s.push(` ${a} = ${c}`),i=c+1}else if(S.isPrefixUnaryExpression(o.initializer)&&o.initializer.operator===S.SyntaxKind.MinusToken){let c=o.initializer.operand;if(S.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}' {
|
|
371
|
+
${s.join(`
|
|
372
372
|
`)}
|
|
373
|
-
}`}function
|
|
374
|
-
${
|
|
373
|
+
}`}function Na(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return e.type.kind===S.SyntaxKind.FunctionType?Pa(e,t,n):Ia(e,t,n,r);let i=Ca(e.type,t);if(i)return`Union ${s} '${s}' ${i.join(" | ")}`;if(e.type.kind===S.SyntaxKind.FunctionType){let a=e.type,c=[];for(let p of a.parameters){let f=p.name?.getText(t)||"_";if(f==="this")continue;let m=U(p.type,void 0,n);m==="any"&&(m="null"),c.push(`${f}: ${m}`)}let l=U(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} {
|
|
374
|
+
${u.join(`
|
|
375
375
|
`)}
|
|
376
|
-
}`}let
|
|
377
|
-
// TS: ${
|
|
378
|
-
}`}
|
|
379
|
-
example: ${
|
|
380
|
-
}`}function
|
|
381
|
-
${
|
|
376
|
+
}`}let o=U(e.type,void 0,n);if(o==="any"||o==="undefined"){let a=e.type.getText(t).trim();return`Type ${s} {
|
|
377
|
+
// TS: ${a}
|
|
378
|
+
}`}return o==="''"||o==="0"||o==="true"||o==="null"?`Type ${s} ${o}`:`Type ${s} {
|
|
379
|
+
example: ${o}
|
|
380
|
+
}`}function Pa(e,t,n){let r=e.name.getText(t),s=e.type,i=new Set,o=[];for(let p of e.typeParameters){let f=p.name.getText(t);if(i.add(f),p.default){let m=U(p.default,void 0,n);o.push(`${f} = ${m}`)}else o.push(f)}let a=[];for(let p of s.parameters){let f=p.name?.getText(t)||"_";if(f==="this")continue;let m=p.type?.getText(t)||"any";if(i.has(m))a.push(`${f}: ${m}`);else{let d=U(p.type,void 0,n);d==="any"&&(d="null"),a.push(`${f}: ${d}`)}}let c=s.type?.getText(t)||"void",l;c!=="void"&&(i.has(c)?l=c:(l=U(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(", ")}> {
|
|
381
|
+
${u.join(`
|
|
382
382
|
`)}
|
|
383
|
-
}`}function
|
|
384
|
-
${
|
|
383
|
+
}`}function Ia(e,t,n,r){let s=e.name.getText(t),i=[];for(let p of e.typeParameters||[]){let f=p.name.getText(t);if(p.default){let m=U(p.default,void 0,n);i.push(`${f} = ${m}`)}else i.push(f)}let o=(e.typeParameters||[]).map(p=>p.name.getText(t)),a=r?.find(p=>p.kind==="predicate"),c=r?.find(p=>p.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 p=e.type;if(p&&S.isTypeLiteralNode(p)){let f=[];for(let m of p.members)if(S.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=m.questionToken?"?":"",x=m.type?m.type.getText(t):"any";f.push(`${d}${y}: ${x}`)}else S.isMethodSignature(m)&&m.name&&f.push(m.getText(t).trim().replace(/;$/,""));f.length>0&&u.push(`declaration {
|
|
384
|
+
${f.join(`
|
|
385
385
|
`)}
|
|
386
|
-
}`)}else if(
|
|
387
|
-
// TS: ${
|
|
388
|
-
}`)}}return`Generic ${
|
|
389
|
-
${
|
|
386
|
+
}`)}else if(p){let f=p.getText(t).trim();u.push(`declaration {
|
|
387
|
+
// TS: ${f}
|
|
388
|
+
}`)}}return`Generic ${s}<${i.join(", ")}> {
|
|
389
|
+
${u.join(`
|
|
390
390
|
`)}
|
|
391
|
-
}`}function
|
|
392
|
-
`:"",
|
|
393
|
-
`:"";return`${
|
|
394
|
-
`,
|
|
395
|
-
${
|
|
391
|
+
}`}function Hs(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=st(e.parameters,t,r,c,a),{line:u}=t.getLineAndCharacterOfPosition(e.getStart(t)),p=s?`/* line ${u+1} */
|
|
392
|
+
`:"",f=n||(S.isFunctionDeclaration(e)&&e.name?e.name.getText(t):""),m=e.type?U(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=S.isBlock(e.body)?e.body.getText(t):`{ return ${e.body.getText(t)} }`;y=S.transpileModule(j,{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else y="{ }";let x=e.modifiers?.some(j=>j.kind===S.SyntaxKind.ExportKeyword),E=e.modifiers?.some(j=>j.kind===S.SyntaxKind.AsyncKeyword),_=!!e.asteriskToken,b=x?"export ":"",T=E?"async ":"",k=_?"function* ":"function ",w=c.length>0?`/* TODO: TS types degraded \u2014 ${c.join(", ")} */
|
|
393
|
+
`:"";return`${p}${w}${b}${T}${k}${f}(${l.join(", ")})${d} ${y}`}function Da(e,t,n,r){let s=t.name?.getText(n)||"",i=`_${s}_impl`,o=[],a=st(t.parameters,n,r),c="{ }";if(t.body){let m=t.body.getText(n);c=S.transpileModule(m,{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}let l=t.modifiers?.some(m=>m.kind===S.SyntaxKind.AsyncKeyword),u=!!t.asteriskToken,p=l?"async ":"",f=u?"function* ":"function ";o.push(`${p}${f}${i}(${a.join(", ")}) ${c}`);for(let m of e){let d=st(m.parameters,n,r),y=m.parameters.map(k=>k.name.getText(n)),x=m.type?U(m.type,void 0,r):"",E=x&&x!=="undefined"&&x!=="any"?`:! ${x}`:"",{line:_}=n.getLineAndCharacterOfPosition(m.getStart(n)),b=`/* line ${_+1} */
|
|
394
|
+
`,T=u?"yield* ":"return ";o.push(`${b}${p}${f}${s}(${d.join(", ")})${E} { ${T}${i}(${y.join(", ")}) }`)}return o}function Oa(e,t,n,r,s=!1){let i=r;if(e.typeParameters&&e.typeParameters.length>0){let y=new Map;for(let x of e.typeParameters)y.set(x.name.getText(t),{constraint:x.constraint,default:x.default});i={...r,typeParams:y}}let o=e.name?.getText(t)||"Anonymous",c=e.heritageClauses?.find(y=>y.token===S.SyntaxKind.ExtendsKeyword)?.types[0]?.expression?.getText(t),l=new Map;if(s){for(let y of e.members)if(S.isPropertyDeclaration(y)&&y.name){let x=y.name.getText(t);y.modifiers?.some(_=>_.kind===S.SyntaxKind.PrivateKeyword)&&!x.startsWith("#")&&l.set(x,`#${x}`)}}let u=y=>{let x=y;for(let[E,_]of l)x=x.replace(new RegExp(`(\\b\\w+)\\.${E}\\b`,"g"),`$1.${_}`);return x},p=[];for(let y of e.members){if(S.isConstructorDeclaration(y)){let x=st(y.parameters,t,n),E="{ }";if(y.body){let _=S.transpileModule(y.body.getText(t),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});E=u(_.outputText.trim())}p.push(` constructor(${x.join(", ")}) ${E}`)}if(S.isMethodDeclaration(y)&&y.name){let x=y.name.getText(t),E=y.modifiers?.some(A=>A.kind===S.SyntaxKind.StaticKeyword),_=y.modifiers?.some(A=>A.kind===S.SyntaxKind.AsyncKeyword),b=st(y.parameters,t,n,void 0,i),T=y.type?U(y.type,void 0,n,i):"",k=T&&T!=="undefined"&&T!=="any"?`:! ${T}`:"",w="{ }";if(y.body){let A=S.transpileModule(y.body.getText(t),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});w=u(A.outputText.trim())}let j=!!y.asteriskToken,C=E?"static ":"",$=_?"async ":"",R=j?"*":"";p.push(` ${C}${$}${R}${x}(${b.join(", ")})${k} ${w}`)}if(S.isGetAccessorDeclaration(y)&&y.name){let x=y.name.getText(t),_=y.modifiers?.some(w=>w.kind===S.SyntaxKind.StaticKeyword)?"static ":"",b=y.type?U(y.type,void 0,n,i):"",T=b&&b!=="undefined"&&b!=="any"&&!b.startsWith("new ")?`: ${b}`:"",k="{ }";if(y.body){let w=S.transpileModule(y.body.getText(t),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});k=u(w.outputText.trim())}p.push(` ${_}get ${x}()${T} ${k}`)}if(S.isSetAccessorDeclaration(y)&&y.name){let x=y.name.getText(t),_=y.modifiers?.some(k=>k.kind===S.SyntaxKind.StaticKeyword)?"static ":"",b=st(y.parameters,t,n),T="{ }";if(y.body){let k=S.transpileModule(y.body.getText(t),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});T=u(k.outputText.trim())}p.push(` ${_}set ${x}(${b.join(", ")}) ${T}`)}if(S.isPropertyDeclaration(y)&&y.name){let x=y.name.getText(t),_=y.modifiers?.some(T=>T.kind===S.SyntaxKind.StaticKeyword)?"static ":"",b=l.get(x)||x;if(y.initializer){let T=y.initializer.getText(t),k=T.trimStart().startsWith("{")?`(${T})`:T,j=S.transpileModule(k,{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();k!==T&&(j=j.replace(/^\(/,"").replace(/\);?\s*$/,"")),p.push(` ${_}${b} = ${j}`)}else p.push(` ${_}${b}`)}}let m=e.modifiers?.some(y=>y.kind===S.SyntaxKind.ExportKeyword)?"export ":"",d=c?` extends ${c}`:"";return`${m}class ${o}${d} {
|
|
395
|
+
${p.join(`
|
|
396
396
|
`)}
|
|
397
|
-
}`}function
|
|
397
|
+
}`}function st(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=U(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 p=o.initializer.getText(t);i.push(`${a} = ${p}`)}else if(u==="any"||u==="undefined"){if(i.push(a),r&&o.type){let p=o.type.getText(t);p!=="any"&&p!=="unknown"&&r.push(`${a}: ${p}`)}}else l?i.push(`${a}: ${u} | undefined`):i.push(`${a}: ${u}`)}return i}function Tn(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=S.isFunctionDeclaration(e)&&e.name?e.name.getText(t):"anonymous",o={};for(let l of e.parameters){let u=l.name.getText(t),p=!!l.questionToken||!!l.initializer,f;if(l.initializer){let m=l.initializer.getText(t);try{f=JSON.parse(m)}catch{f=m}}o[u]={type:X(l.type,s),required:!p,default:f}}let a={name:i,params:o,returns:e.type?X(e.type,s):void 0},c=va(e,n);return c&&(a.typeParams=c),a}function La(e,t,n,r){let s=r;if(e.typeParameters&&e.typeParameters.length>0){let u=new Map;for(let p of e.typeParameters)u.set(p.name.getText(t),{constraint:p.constraint,default:p.default});s={...r,typeParams:u}}let i=e.name?.getText(t)||"anonymous",o={},a={},c;for(let u of e.members){if(S.isConstructorDeclaration(u)){let p={};for(let f of u.parameters){let m=f.name.getText(t),d=!!f.questionToken||!!f.initializer,y;if(f.initializer){let x=f.initializer.getText(t);try{y=JSON.parse(x)}catch{y=x}}p[m]={type:X(f.type,s),required:!d,default:y}}c={params:p}}if(S.isMethodDeclaration(u)&&u.name){let p=u.name.getText(t),f=u.modifiers?.some(y=>y.kind===S.SyntaxKind.StaticKeyword),m={};for(let y of u.parameters){let x=y.name.getText(t),E=!!y.questionToken||!!y.initializer,_;if(y.initializer){let b=y.initializer.getText(t);try{_=JSON.parse(b)}catch{_=b}}m[x]={type:X(y.type,s),required:!E,default:_}}let d={name:p,params:m,returns:u.type?X(u.type,s):void 0};f?a[p]=d:o[p]=d}}let l={name:i,methods:o,staticMethods:a,constructor:c};if(e.typeParameters&&e.typeParameters.length>0){let u={};for(let p of e.typeParameters){let f=p.name.getText(t),m={};p.constraint&&(m.constraint=U(p.constraint,void 0,n,r)),p.default&&(m.default=U(p.default,void 0,n,r)),u[f]=m}l.typeParams=u}return l}var Ba=new Set(["TjsStrict","TjsEquals","TjsClass","TjsDate","TjsNoeval","TjsNoVar","TjsStandard","TjsSafeEval"]);function Fa(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)Ba.has(i)&&!t.includes(i)&&t.push(i)}return t}function Ua(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 qa(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((S.isInterfaceDeclaration(i)||S.isTypeAliasDeclaration(i)||S.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 Ja(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 Wa(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 Va(e,t={}){let{emitTJS:n=!1,filename:r="input.ts"}=t,s=[],i=Ja(e),o=n?Wa(e):[],a=n?Ua(e):[],c=Fa(e),l=c.includes("TjsClass")||c.includes("TjsStrict"),u=S.createSourceFile(r,e,S.ScriptTarget.Latest,!0),p=n?qa(a,u):new Map,f=[],m=new Set,d={},y={},x=new Set,E=$=>{for(let R=0;R<o.length;R++){let A=o[R];!x.has(R)&&A.index<$&&(f.push(A.content),x.add(R))}},_=new Map,b=new Map;function T($){if(S.isTypeAliasDeclaration($)&&_.set($.name.getText(u),$.type),S.isInterfaceDeclaration($)){let R=$.name.getText(u),A=b.get(R);if(A){let P=S.factory.updateInterfaceDeclaration(A,A.modifiers,A.name,A.typeParameters,A.heritageClauses,[...A.members,...$.members]);b.set(R,P)}else b.set(R,$)}S.forEachChild($,T)}T(u);let k={typeAliases:_,interfaces:b,sourceFile:u,warnings:s,resolvedCache:new Map},w=new Map;for(let $ of u.statements)if(S.isFunctionDeclaration($)&&$.name){let R=$.name.getText(u);w.has(R)||w.set(R,{signatures:[],implementation:null});let A=w.get(R);$.body?A.implementation=$:A.signatures.push($)}for(let[$,R]of w)(R.signatures.length===0||!R.implementation)&&w.delete($);for(let $ of u.statements){let R=!1;if(n&&E($.getStart(u)),S.isFunctionDeclaration($)&&$.name){let A=$.name.getText(u);R=!0;let P=w.get(A);if(P){if($.body)if(n)f.push(...Da(P.signatures,$,u,s));else{let v=[];for(let O of P.signatures)v.push(Tn(O,u,s,k));let I=Tn($,u,s,k);I.overloads=v,d[A]=I}}else n?f.push(Hs($,u,void 0,s,!0,k)):d[A]=Tn($,u,s,k)}if(S.isVariableStatement($)){let A=!1,P=$.modifiers?.some(v=>v.kind===S.SyntaxKind.ExportKeyword);for(let v of $.declarationList.declarations)if(S.isIdentifier(v.name)&&v.initializer&&(S.isArrowFunction(v.initializer)||S.isFunctionExpression(v.initializer))){A=!0;let I=v.name.getText(u),O=v.initializer;if(n){let F=Hs(O,u,I,s,!0,k);if(P&&!F.includes("export ")){let H=F.search(/^(async\s+)?function[\s*]/m);H>0?F=F.slice(0,H)+"export "+F.slice(H):F="export "+F}f.push(F)}else{let F=Tn(O,u,s,k);F.name=I,d[I]=F}}if(!A&&n){let v=S.transpileModule($.getText(u),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});f.push(v.outputText.trim())}R=!0}if(S.isInterfaceDeclaration($)&&(R=!0,n)){let A=$.name.getText(u),P=p.get(A);if(!m.has(A)&&(m.add(A),!P?.some(v=>v.kind==="skip"))){let v=b.get(A)||$,I=Aa(v,u,s,P);if(I){let O=$.modifiers?.some(F=>F.kind===S.SyntaxKind.ExportKeyword);f.push(O?I.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):I)}}}if(S.isTypeAliasDeclaration($)&&(R=!0,n)){let A=$.name.getText(u),P=p.get(A);if(!m.has(A)&&(m.add(A),!P?.some(v=>v.kind==="skip"))){let v=Na($,u,s,P);if(v){let I=$.modifiers?.some(O=>O.kind===S.SyntaxKind.ExportKeyword);f.push(I?v.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):v)}}}if(S.isEnumDeclaration($)&&(R=!0,n)){let A=$.name.getText(u),P=p.get(A);if(!m.has(A)&&(m.add(A),!P?.some(v=>v.kind==="skip"))){let v=Ra($,u,s);v&&f.push(v)}}if(S.isClassDeclaration($)&&$.name){let A=$.name.getText(u);if(R=!0,n){let P=Oa($,u,s,void 0,l);f.push(P)}else y[A]=La($,u,s,k)}if(S.isImportDeclaration($)&&(R=!0,n&&!($.importClause?.isTypeOnly||$.importClause?.namedBindings&&S.isNamedImports($.importClause.namedBindings)&&$.importClause.namedBindings.elements.every(P=>P.isTypeOnly))))if($.importClause?.namedBindings&&S.isNamedImports($.importClause.namedBindings)){let P=$.importClause.namedBindings.elements.filter(v=>!v.isTypeOnly).map(v=>{let I=v.name.getText(u),O=v.propertyName?.getText(u);return O?`${O} as ${I}`:I});if(P.length>0){let v=$.moduleSpecifier.text;f.push(`import { ${P.join(", ")} } from '${v}'`)}}else{let v=$.getText(u).replace(/\btype\s+/g,"").replace(/\s*:\s*\w+/g,"");f.push(v)}if((S.isExportDeclaration($)||S.isExportAssignment($))&&(R=!0,n)){let P=S.transpileModule($.getText(u),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&f.push(P)}if(!R&&n){let P=S.transpileModule($.getText(u),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&f.push(P)}}if(n){E(1/0);let $=r||"unknown",A=`${c.length>0?c.join(`
|
|
398
398
|
`)+`
|
|
399
399
|
|
|
400
|
-
`:""}/* tjs <- ${
|
|
400
|
+
`:""}/* tjs <- ${$} */
|
|
401
401
|
|
|
402
|
-
`,
|
|
402
|
+
`,P=i.length>0?`
|
|
403
403
|
|
|
404
|
-
`+
|
|
404
|
+
`+i.join(`
|
|
405
405
|
|
|
406
|
-
`):"";return{code:
|
|
406
|
+
`):"";return{code:A+f.join(`
|
|
407
407
|
|
|
408
|
-
`)+
|
|
409
|
-
${
|
|
410
|
-
`}for(let[
|
|
411
|
-
${
|
|
412
|
-
`,
|
|
413
|
-
${
|
|
414
|
-
`}return{code:S,types:q,classes:Object.keys(D).length>0?D:void 0,warnings:K.length>0?K:void 0}}import{s as $8}from"tosijs-schema";function Z8($){if($===null)return"null";if($===void 0)return"undefined";if(Array.isArray($))return"array";return typeof $}function j4($){return $8.infer($)}function A6($){return j4($)}A6.type=Z8;A6.infer=j4;var UZ=new Proxy(A6,{get($,Z){if(Z==="type")return Z8;if(Z==="infer")return j4;return $8[Z]},apply($,Z,X){return j4(X[0])}});async function M4($){let Z=`${H1}:${$}`;if(typeof crypto<"u"&&crypto.subtle){let K=new TextEncoder().encode(Z),Y=await crypto.subtle.digest("SHA-256",K);return Array.from(new Uint8Array(Y)).map((G)=>G.toString(16).padStart(2,"0")).join("")}let X=5381;for(let Q=0;Q<Z.length;Q++)X=(X<<5)+X+Z.charCodeAt(Q)>>>0;return X.toString(16)}function qZ($){let Z=`${H1}:${$}`,X=5381;for(let Q=0;Q<Z.length;Q++)X=(X<<5)+X+Z.charCodeAt(Q)>>>0;return X.toString(16)}var DZ="tjs-metadata-cache",AZ=1,Z1="modules";class I6{db=null;stats={hits:0,misses:0};pendingOpen=null;async open(){if(this.db)return;if(this.pendingOpen)return this.pendingOpen;this.pendingOpen=this._open(),await this.pendingOpen,this.pendingOpen=null}async _open(){return new Promise(($,Z)=>{if(typeof indexedDB>"u"){$();return}let X=indexedDB.open(DZ,AZ);X.onerror=()=>{console.warn("MetadataCache: Failed to open IndexedDB",X.error),$()},X.onsuccess=()=>{this.db=X.result,$()},X.onupgradeneeded=(Q)=>{let K=Q.target.result;if(!K.objectStoreNames.contains(Z1)){let Y=K.createObjectStore(Z1,{keyPath:"hash"});Y.createIndex("timestamp","timestamp"),Y.createIndex("version","version")}}})}async get($){if(!this.db){this.stats.misses++;return}let Z=await M4($);return new Promise((X)=>{let Y=this.db.transaction(Z1,"readonly").objectStore(Z1).get(Z);Y.onerror=()=>{this.stats.misses++,X(void 0)},Y.onsuccess=()=>{let H=Y.result;if(H&&H.version!==H1){this.stats.misses++,X(void 0);return}if(H)this.stats.hits++;else this.stats.misses++;X(H)}})}async getTranspile($){return(await this.get($))?.transpile}async getTJS($){return(await this.get($))?.tjs}async setTranspile($,Z){await this._set($,{transpile:Z})}async setTJS($,Z){await this._set($,{tjs:Z})}async _set($,Z){if(!this.db)return;let X=await M4($);return new Promise((Q,K)=>{let H=this.db.transaction(Z1,"readwrite").objectStore(Z1),G=H.get(X);G.onsuccess=()=>{let W=G.result,z={hash:X,version:H1,timestamp:Date.now(),transpile:Z.transpile??W?.transpile,tjs:Z.tjs??W?.tjs},J=H.put(z);J.onerror=()=>K(J.error),J.onsuccess=()=>Q()},G.onerror=()=>K(G.error)})}async delete($){if(!this.db)return;let Z=await M4($);return new Promise((X,Q)=>{let H=this.db.transaction(Z1,"readwrite").objectStore(Z1).delete(Z);H.onerror=()=>Q(H.error),H.onsuccess=()=>X()})}async clear(){if(!this.db)return;return new Promise(($,Z)=>{let K=this.db.transaction(Z1,"readwrite").objectStore(Z1).clear();K.onerror=()=>Z(K.error),K.onsuccess=()=>{this.stats={hits:0,misses:0},$()}})}async prune($){if(!this.db)return 0;let Z=Date.now()-$;return new Promise((X,Q)=>{let H=this.db.transaction(Z1,"readwrite").objectStore(Z1).index("timestamp"),G=IDBKeyRange.upperBound(Z),W=0,z=H.openCursor(G);z.onsuccess=(J)=>{let L=J.target.result;if(L)L.delete(),W++,L.continue();else X(W)},z.onerror=()=>Q(z.error)})}async pruneOldVersions(){if(!this.db)return 0;return new Promise(($,Z)=>{let Q=this.db.transaction(Z1,"readwrite").objectStore(Z1),K=0,Y=Q.openCursor();Y.onsuccess=(H)=>{let G=H.target.result;if(G){if(G.value.version!==H1)G.delete(),K++;G.continue()}else $(K)},Y.onerror=()=>Z(Y.error)})}async getStats(){let $=await this.count(),Z=await this.estimateSize(),X=this.stats.hits+this.stats.misses,Q=X>0?this.stats.hits/X:0;return{entries:$,bytes:Z,hits:this.stats.hits,misses:this.stats.misses,hitRate:Q}}async count(){if(!this.db)return 0;return new Promise(($,Z)=>{let K=this.db.transaction(Z1,"readonly").objectStore(Z1).count();K.onerror=()=>Z(K.error),K.onsuccess=()=>$(K.result)})}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(($,Z)=>{let Q=this.db.transaction(Z1,"readonly").objectStore(Z1),K=0,Y=Q.openCursor();Y.onsuccess=(H)=>{let G=H.target.result;if(G)K+=JSON.stringify(G.value).length*2,G.continue();else $(K)},Y.onerror=()=>Z(Y.error)})}close(){if(this.db)this.db.close(),this.db=null}isAvailable(){return this.db!==null}resetStats(){this.stats={hits:0,misses:0}}}var T0=null;async function F4(){if(!T0)T0=new I6,await T0.open();return T0}function IZ($){T0=$}function P4($,Z,X,Q,K){if(!X)X=g;(function Y(H,G,W){var z=W||H.type;if(X[z](H,G,Y),Z[z])Z[z](H,G)})($,Q,K)}function X8($,Z,X,Q,K){var Y=[];if(!X)X=g;(function H(G,W,z){var J=z||G.type,L=G!==Y[Y.length-1];if(L)Y.push(G);if(X[J](G,W,H),Z[J])Z[J](G,W||Y,Y);if(L)Y.pop()})($,Q,K)}function R6($,Z,X){X($,Z)}function n1($,Z,X){}var g={};g.Program=g.BlockStatement=g.StaticBlock=function($,Z,X){for(var Q=0,K=$.body;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z,"Statement")}};g.Statement=R6;g.EmptyStatement=n1;g.ExpressionStatement=g.ParenthesizedExpression=g.ChainExpression=function($,Z,X){return X($.expression,Z,"Expression")};g.IfStatement=function($,Z,X){if(X($.test,Z,"Expression"),X($.consequent,Z,"Statement"),$.alternate)X($.alternate,Z,"Statement")};g.LabeledStatement=function($,Z,X){return X($.body,Z,"Statement")};g.BreakStatement=g.ContinueStatement=n1;g.WithStatement=function($,Z,X){X($.object,Z,"Expression"),X($.body,Z,"Statement")};g.SwitchStatement=function($,Z,X){X($.discriminant,Z,"Expression");for(var Q=0,K=$.cases;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z)}};g.SwitchCase=function($,Z,X){if($.test)X($.test,Z,"Expression");for(var Q=0,K=$.consequent;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z,"Statement")}};g.ReturnStatement=g.YieldExpression=g.AwaitExpression=function($,Z,X){if($.argument)X($.argument,Z,"Expression")};g.ThrowStatement=g.SpreadElement=function($,Z,X){return X($.argument,Z,"Expression")};g.TryStatement=function($,Z,X){if(X($.block,Z,"Statement"),$.handler)X($.handler,Z);if($.finalizer)X($.finalizer,Z,"Statement")};g.CatchClause=function($,Z,X){if($.param)X($.param,Z,"Pattern");X($.body,Z,"Statement")};g.WhileStatement=g.DoWhileStatement=function($,Z,X){X($.test,Z,"Expression"),X($.body,Z,"Statement")};g.ForStatement=function($,Z,X){if($.init)X($.init,Z,"ForInit");if($.test)X($.test,Z,"Expression");if($.update)X($.update,Z,"Expression");X($.body,Z,"Statement")};g.ForInStatement=g.ForOfStatement=function($,Z,X){X($.left,Z,"ForInit"),X($.right,Z,"Expression"),X($.body,Z,"Statement")};g.ForInit=function($,Z,X){if($.type==="VariableDeclaration")X($,Z);else X($,Z,"Expression")};g.DebuggerStatement=n1;g.FunctionDeclaration=function($,Z,X){return X($,Z,"Function")};g.VariableDeclaration=function($,Z,X){for(var Q=0,K=$.declarations;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z)}};g.VariableDeclarator=function($,Z,X){if(X($.id,Z,"Pattern"),$.init)X($.init,Z,"Expression")};g.Function=function($,Z,X){if($.id)X($.id,Z,"Pattern");for(var Q=0,K=$.params;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z,"Pattern")}X($.body,Z,$.expression?"Expression":"Statement")};g.Pattern=function($,Z,X){if($.type==="Identifier")X($,Z,"VariablePattern");else if($.type==="MemberExpression")X($,Z,"MemberPattern");else X($,Z)};g.VariablePattern=n1;g.MemberPattern=R6;g.RestElement=function($,Z,X){return X($.argument,Z,"Pattern")};g.ArrayPattern=function($,Z,X){for(var Q=0,K=$.elements;Q<K.length;Q+=1){var Y=K[Q];if(Y)X(Y,Z,"Pattern")}};g.ObjectPattern=function($,Z,X){for(var Q=0,K=$.properties;Q<K.length;Q+=1){var Y=K[Q];if(Y.type==="Property"){if(Y.computed)X(Y.key,Z,"Expression");X(Y.value,Z,"Pattern")}else if(Y.type==="RestElement")X(Y.argument,Z,"Pattern")}};g.Expression=R6;g.ThisExpression=g.Super=g.MetaProperty=n1;g.ArrayExpression=function($,Z,X){for(var Q=0,K=$.elements;Q<K.length;Q+=1){var Y=K[Q];if(Y)X(Y,Z,"Expression")}};g.ObjectExpression=function($,Z,X){for(var Q=0,K=$.properties;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z)}};g.FunctionExpression=g.ArrowFunctionExpression=g.FunctionDeclaration;g.SequenceExpression=function($,Z,X){for(var Q=0,K=$.expressions;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z,"Expression")}};g.TemplateLiteral=function($,Z,X){for(var Q=0,K=$.quasis;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z)}for(var H=0,G=$.expressions;H<G.length;H+=1){var W=G[H];X(W,Z,"Expression")}};g.TemplateElement=n1;g.UnaryExpression=g.UpdateExpression=function($,Z,X){X($.argument,Z,"Expression")};g.BinaryExpression=g.LogicalExpression=function($,Z,X){X($.left,Z,"Expression"),X($.right,Z,"Expression")};g.AssignmentExpression=g.AssignmentPattern=function($,Z,X){X($.left,Z,"Pattern"),X($.right,Z,"Expression")};g.ConditionalExpression=function($,Z,X){X($.test,Z,"Expression"),X($.consequent,Z,"Expression"),X($.alternate,Z,"Expression")};g.NewExpression=g.CallExpression=function($,Z,X){if(X($.callee,Z,"Expression"),$.arguments)for(var Q=0,K=$.arguments;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z,"Expression")}};g.MemberExpression=function($,Z,X){if(X($.object,Z,"Expression"),$.computed)X($.property,Z,"Expression")};g.ExportNamedDeclaration=g.ExportDefaultDeclaration=function($,Z,X){if($.declaration)X($.declaration,Z,$.type==="ExportNamedDeclaration"||$.declaration.id?"Statement":"Expression");if($.source)X($.source,Z,"Expression")};g.ExportAllDeclaration=function($,Z,X){if($.exported)X($.exported,Z);X($.source,Z,"Expression")};g.ImportDeclaration=function($,Z,X){for(var Q=0,K=$.specifiers;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z)}X($.source,Z,"Expression")};g.ImportExpression=function($,Z,X){X($.source,Z,"Expression")};g.ImportSpecifier=g.ImportDefaultSpecifier=g.ImportNamespaceSpecifier=g.Identifier=g.PrivateIdentifier=g.Literal=n1;g.TaggedTemplateExpression=function($,Z,X){X($.tag,Z,"Expression"),X($.quasi,Z,"Expression")};g.ClassDeclaration=g.ClassExpression=function($,Z,X){return X($,Z,"Class")};g.Class=function($,Z,X){if($.id)X($.id,Z,"Pattern");if($.superClass)X($.superClass,Z,"Expression");X($.body,Z)};g.ClassBody=function($,Z,X){for(var Q=0,K=$.body;Q<K.length;Q+=1){var Y=K[Q];X(Y,Z)}};g.MethodDefinition=g.PropertyDefinition=g.Property=function($,Z,X){if($.computed)X($.key,Z,"Expression");if($.value)X($.value,Z,"Expression")};var wZ={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function BZ($,Z={}){let X={...wZ,...Z},Q=[],K;try{K=P1($,{filename:X.filename,colonShorthand:!0}).ast}catch(H){return{diagnostics:[{severity:"error",message:H.message,line:H.loc?.line,column:H.loc?.column,rule:"parse-error"}],valid:!1}}let Y=[Q8()];if(X8(K,{FunctionDeclaration(H,G,W){let z=Q8();Y.push(z);for(let J of H.params)jZ(z,J,"parameter");if(H.id)(Y[Y.length-2]||Y[0]).declarations.set(H.id.name,{node:H.id,kind:"function",used:!1})},VariableDeclaration(H){let G=Y[Y.length-1];for(let W of H.declarations)if(W.id.type==="Identifier")G.declarations.set(W.id.name,{node:W.id,kind:H.kind,used:!1})}}),P4(K,{Identifier(H){for(let G=Y.length-1;G>=0;G--){let W=Y[G].declarations.get(H.name);if(W){W.used=!0;break}}}}),X.unusedVariables)for(let H of Y)for(let[G,W]of H.declarations){if(G.startsWith("_"))continue;if(!W.used&&W.kind!=="function")Q.push({severity:"warning",message:`'${G}' is declared but never used`,line:W.node.loc?.start?.line,column:W.node.loc?.start?.column,rule:"no-unused-vars"})}if(X.unreachableCode)P4(K,{BlockStatement(H){let G=!1;for(let W of H.body){if(G){Q.push({severity:"warning",message:"Unreachable code after return statement",line:W.loc?.start?.line,column:W.loc?.start?.column,rule:"no-unreachable"});break}if(W.type==="ReturnStatement")G=!0}}});if(X.noExplicitNew)P4(K,{NewExpression(H){let G="class";if(H.callee.type==="Identifier")G=H.callee.name;else if(H.callee.type==="MemberExpression"){if(H.callee.property.type==="Identifier")G=H.callee.property.name}Q.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${G}(...) instead of new ${G}(...)`,line:H.loc?.start?.line,column:H.loc?.start?.column,rule:"no-explicit-new"})}});return{diagnostics:Q,valid:Q.filter((H)=>H.severity==="error").length===0}}function Q8(){return{declarations:new Map}}function jZ($,Z,X){if(Z.type==="Identifier")$.declarations.set(Z.name,{node:Z,kind:X,used:!1});else if(Z.type==="AssignmentPattern"&&Z.left.type==="Identifier")$.declarations.set(Z.left.name,{node:Z.left,kind:X,used:!1})}function MZ($){let Z=[],X=0,Q=null;for(let K=0;K<$.length;K++){let Y=$[K],H=K>0?$[K-1]:"";if(!Q&&(Y==='"'||Y==="'"||Y==="`"))Q=Y;else if(Q&&Y===Q&&H!=="\\")Q=null;if(!Q){if(Y==="{")X++;if(Y==="}")X--}Z[K]=X}return Z}function K8($){let Z=[],X=MZ($),Q=/\/\*#([\s\S]*?)\*\//g,K=/function\s+(\w+)\s*\(([^)]*)\)\s*(?:(:[?!]?)\s*('[^']*'|"[^"]*"|[^\s{]+))?\s*\{/g,Y=[],H;while((H=Q.exec($))!==null){if(X[H.index]!==0)continue;let W=H[1],z=W.split(`
|
|
415
|
-
`),
|
|
416
|
-
`)
|
|
417
|
-
${
|
|
418
|
-
\`\`\``
|
|
408
|
+
`)+P,warnings:s.length>0?s:void 0}}let C=S.transpileModule(e,{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText;for(let[$,R]of Object.entries(d)){let A={params:Object.fromEntries(Object.entries(R.params).map(([v,I])=>[v,{type:I.type.kind,required:I.required,default:I.default}])),returns:R.returns?{type:R.returns.kind}:void 0};R.typeParams&&(A.typeParams=R.typeParams);let P=JSON.stringify(A,null,2);C+=`
|
|
409
|
+
${$}.__tjs = ${P};
|
|
410
|
+
`}for(let[$,R]of Object.entries(y)){let A={constructor:R.constructor?{params:Object.fromEntries(Object.entries(R.constructor.params??{}).map(([v,I])=>[v,{type:I.type.kind,required:I.required,default:I.default}]))}:void 0,methods:Object.fromEntries(Object.entries(R.methods??{}).map(([v,I])=>[v,{params:Object.fromEntries(Object.entries(I.params??{}).map(([O,F])=>[O,{type:F.type.kind,required:F.required}])),returns:I.returns?{type:I.returns.kind}:void 0}])),staticMethods:Object.fromEntries(Object.entries(R.staticMethods??{}).map(([v,I])=>[v,{params:Object.fromEntries(Object.entries(I.params??{}).map(([O,F])=>[O,{type:F.type.kind,required:F.required}])),returns:I.returns?{type:I.returns.kind}:void 0}]))};R.typeParams&&(A.typeParams=R.typeParams);let P=JSON.stringify(A,null,2);C+=`
|
|
411
|
+
${$}.__tjs = ${P};
|
|
412
|
+
`,C+=`
|
|
413
|
+
${Ps($)}
|
|
414
|
+
`}return{code:C,types:d,classes:Object.keys(y).length>0?y:void 0,warnings:s.length>0?s:void 0}}import{s as Ys}from"tosijs-schema";function Xs(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function Sn(e){return Ys.infer(e)}function br(e){return Sn(e)}br.type=Xs;br.infer=Sn;var Ka=new Proxy(br,{get(e,t){return t==="type"?Xs:t==="infer"?Sn:Ys[t]},apply(e,t,n){return Sn(n[0])}});async function wn(e){let t=`${oe}:${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 za(e){let t=`${oe}:${e}`,n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}var Ga="tjs-metadata-cache",Ha=1,te="modules",En=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(Ga,Ha);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(te)){let o=i.createObjectStore(te,{keyPath:"hash"});o.createIndex("timestamp","timestamp"),o.createIndex("version","version")}}})}async get(t){if(!this.db){this.stats.misses++;return}let n=await wn(t);return new Promise(r=>{let o=this.db.transaction(te,"readonly").objectStore(te).get(n);o.onerror=()=>{this.stats.misses++,r(void 0)},o.onsuccess=()=>{let a=o.result;if(a&&a.version!==oe){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 wn(t);return new Promise((s,i)=>{let a=this.db.transaction(te,"readwrite").objectStore(te),c=a.get(r);c.onsuccess=()=>{let l=c.result,u={hash:r,version:oe,timestamp:Date.now(),transpile:n.transpile??l?.transpile,tjs:n.tjs??l?.tjs},p=a.put(u);p.onerror=()=>i(p.error),p.onsuccess=()=>s()},c.onerror=()=>i(c.error)})}async delete(t){if(!this.db)return;let n=await wn(t);return new Promise((r,s)=>{let a=this.db.transaction(te,"readwrite").objectStore(te).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(te,"readwrite").objectStore(te).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(te,"readwrite").objectStore(te).index("timestamp"),c=IDBKeyRange.upperBound(n),l=0,u=a.openCursor(c);u.onsuccess=p=>{let f=p.target.result;f?(f.delete(),l++,f.continue()):r(l)},u.onerror=()=>s(u.error)})}async pruneOldVersions(){return this.db?new Promise((t,n)=>{let s=this.db.transaction(te,"readwrite").objectStore(te),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(c.value.version!==oe&&(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(te,"readonly").objectStore(te).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(te,"readonly").objectStore(te),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}}},At=null;async function _n(){return At||(At=new En,await At.open()),At}function Za(e){At=e}function $n(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 Qs(e,t,n,r,s){var i=[];n||(n=N),(function o(a,c,l){var u=l||a.type,p=a!==i[i.length-1];p&&i.push(a),n[u](a,c,o),t[u]&&t[u](a,c||i,i),p&&i.pop()})(e,r,s)}function xr(e,t,n){n(e,t)}function We(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=xr;N.EmptyStatement=We;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=We;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=We;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=We;N.MemberPattern=xr;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=xr;N.ThisExpression=N.Super=N.MetaProperty=We;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=We;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=We;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 Xa={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function Qa(e,t={}){let n={...Xa,...t},r=[],s;try{s=we(e,{filename:n.filename,colonShorthand:!0}).ast}catch(o){return{diagnostics:[{severity:"error",message:o.message,line:o.loc?.line,column:o.loc?.column,rule:"parse-error"}],valid:!1}}let i=[ei()];if(Qs(s,{FunctionDeclaration(o,a,c){let l=ei();i.push(l);for(let u of o.params)ec(l,u,"parameter");o.id&&(i[i.length-2]||i[0]).declarations.set(o.id.name,{node:o.id,kind:"function",used:!1})},VariableDeclaration(o){let a=i[i.length-1];for(let c of o.declarations)c.id.type==="Identifier"&&a.declarations.set(c.id.name,{node:c.id,kind:o.kind,used:!1})}}),$n(s,{Identifier(o){for(let a=i.length-1;a>=0;a--){let c=i[a].declarations.get(o.name);if(c){c.used=!0;break}}}}),n.unusedVariables)for(let o of i)for(let[a,c]of o.declarations)a.startsWith("_")||!c.used&&c.kind!=="function"&&r.push({severity:"warning",message:`'${a}' is declared but never used`,line:c.node.loc?.start?.line,column:c.node.loc?.start?.column,rule:"no-unused-vars"});return n.unreachableCode&&$n(s,{BlockStatement(o){let a=!1;for(let c of o.body){if(a){r.push({severity:"warning",message:"Unreachable code after return statement",line:c.loc?.start?.line,column:c.loc?.start?.column,rule:"no-unreachable"});break}c.type==="ReturnStatement"&&(a=!0)}}}),n.noExplicitNew&&$n(s,{NewExpression(o){let a="class";o.callee.type==="Identifier"?a=o.callee.name:o.callee.type==="MemberExpression"&&o.callee.property.type==="Identifier"&&(a=o.callee.property.name),r.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${a}(...) instead of new ${a}(...)`,line:o.loc?.start?.line,column:o.loc?.start?.column,rule:"no-explicit-new"})}}),{diagnostics:r,valid:r.filter(o=>o.severity==="error").length===0}}function ei(){return{declarations:new Map}}function ec(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 tc(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 ti(e){let t=[],n=tc(e),r=/\/\*#([\s\S]*?)\*\//g,s=/function\s+(\w+)\s*\(([^)]*)\)\s*(?:(:[?!]?)\s*('[^']*'|"[^"]*"|[^\s{]+))?\s*\{/g,i=[],o;for(;(o=r.exec(e))!==null;){if(n[o.index]!==0)continue;let c=o[1],l=c.split(`
|
|
415
|
+
`),u=l.filter(p=>p.trim().length>0).reduce((p,f)=>{let m=f.match(/^(\s*)/)?.[1].length||0;return Math.min(p,m)},1/0);u>0&&u<1/0&&(c=l.map(p=>p.slice(u)).join(`
|
|
416
|
+
`)),i.push({type:"doc",index:o.index,data:c.trim()})}for(;(o=s.exec(e))!==null;){let c=o[1],l=o[2],u=o[3]||"",p=o[4]||"",f=`function ${c}(${l})`;u&&p&&(f+=`${u} ${p}`),i.push({type:"function",index:o.index,data:{name:c,signature:f}})}i.sort((c,l)=>c.index-l.index);for(let c of i)c.type==="doc"?t.push({type:"doc",content:c.data}):t.push({type:"function",name:c.data.name,signature:c.data.signature});let a=t.map(c=>c.type==="doc"?c.content:`\`\`\`tjs
|
|
417
|
+
${c.signature}
|
|
418
|
+
\`\`\``).join(`
|
|
419
419
|
|
|
420
|
-
`);return{items:
|
|
420
|
+
`);return{items:t,markdown:a}}function nc(e,t){let n=ti(e),r="";for(let s of n.items)if(s.type==="doc")r+=s.content+`
|
|
421
421
|
|
|
422
|
-
`;else if(
|
|
422
|
+
`;else if(s.type==="function"){let i=t?.[s.name];if(r+=`## ${s.name}
|
|
423
423
|
|
|
424
|
-
`,
|
|
425
|
-
${
|
|
424
|
+
`,r+=`\`\`\`tjs
|
|
425
|
+
${s.signature}
|
|
426
426
|
\`\`\`
|
|
427
427
|
|
|
428
|
-
`,
|
|
429
|
-
`;for(let[
|
|
430
|
-
`}
|
|
431
|
-
`}
|
|
428
|
+
`,i?.params&&Object.keys(i.params).length>0){r+=`**Parameters:**
|
|
429
|
+
`;for(let[o,a]of Object.entries(i.params)){let c=a.required?"":" *(optional)*",l=a.type?.kind||"any",u=a.example!==void 0?` (e.g. \`${JSON.stringify(a.example)}\`)`:"";r+=`- \`${o}\`: ${l}${c}${u}
|
|
430
|
+
`}r+=`
|
|
431
|
+
`}i?.returns&&(r+=`**Returns:** ${i.returns.kind||"void"}
|
|
432
432
|
|
|
433
|
-
`}return Q.trim()||"*No documentation available*"}import{s as I,validate as w6,filter as _8}from"tosijs-schema";var V4=Symbol.for("tjs.equals");function O4($,Z){if($!==null&&typeof $==="object"&&typeof $[V4]==="function")return $[V4](Z);if(Z!==null&&typeof Z==="object"&&typeof Z[V4]==="function")return Z[V4]($);if($!==null&&typeof $==="object"&&typeof $.Equals==="function")return $.Equals(Z);if(Z!==null&&typeof Z==="object"&&typeof Z.Equals==="function")return Z.Equals($);if($===Z)return!0;if(($===null||$===void 0)&&(Z===null||Z===void 0))return!0;if($===null||$===void 0||Z===null||Z===void 0)return!1;if(typeof $!==typeof Z)return!1;if(typeof $!=="object")return!1;if(Array.isArray($)&&Array.isArray(Z)){if($.length!==Z.length)return!1;return $.every((K,Y)=>O4(K,Z[Y]))}if(Array.isArray($)!==Array.isArray(Z))return!1;let X=Object.keys($),Q=Object.keys(Z);if(X.length!==Q.length)return!1;return X.every((K)=>O4($[K],Z[K]))}class J1{$error=!0;message;op;cause;constructor($,Z,X){this.message=$,this.op=Z,this.cause=X}toString(){return`AgentError[${this.op}]: ${this.message}`}toJSON(){return{$error:!0,message:this.message,op:this.op}}}function PZ($){return $ instanceof J1||$&&$.$error===!0}var G0=new Map,VZ=3600000,CZ=102400,B6="proc_";function j6($){return typeof $==="string"&&$.startsWith(B6)}function M6($){let Z=G0.get($);if(!Z)throw Error(`Procedure not found: ${$}`);if(Date.now()>Z.expiresAt)throw G0.delete($),Error(`Procedure expired: ${$}`);return Z.ast}function OZ(){if(typeof crypto<"u"&&crypto.randomUUID)return B6+crypto.randomUUID();return B6+Math.random().toString(36).slice(2)+Date.now().toString(36)}var L8=new Set(["__proto__","constructor","prototype"]);function Y8($){if(L8.has($))throw Error(`Security Error: Access to '${$}' is forbidden`)}var NZ=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function EZ($){try{let Z=new URL($);if(Z.protocol!=="http:"&&Z.protocol!=="https:")return!0;let X=Z.hostname.toLowerCase();if(NZ.has(X))return!0;if(X.endsWith(".internal")||X.endsWith(".local"))return!0;if(X==="169.254.169.254")return!0;if(/^10\./.test(X)||/^192\.168\./.test(X)||/^172\.(1[6-9]|2\d|3[01])\./.test(X))return!0;return!1}catch{return!0}}function TZ($){if(/\([^)]*[+*][^)]*\)[+*]/.test($))return!0;if(/\(([^|)]+)\|\1\)[+*]/.test($))return!0;if(/\(\.\*\)\+/.test($))return!0;if(/\(\.\+\)\+/.test($))return!0;if(/\(\[.*\]\+\)\+/.test($))return!0;return!1}function g1($){return{...$,state:Object.create($.state)}}function SZ($,Z){let X={},Q=new Set([...Object.keys($),...Object.keys(Z)]);for(let K of Q){let Y=$[K],H=Z[K];if(H!==Y)X[K]=H}return X}function T($,Z){if($&&typeof $==="object"&&$.$kind==="arg")return Z.args[$.path];if($&&typeof $==="object"&&$.$expr)return e($,Z);if(typeof $==="string"){if($.startsWith("args.")&&!("args"in Z.state))return Z.args[$.replace("args.","")];if($.includes(".")){let X=$.split(".");for(let K of X)if(L8.has(K))throw Error(`Security Error: Access to '${K}' is forbidden`);let Q=Z.state[X[0]];if(Q!==void 0){for(let K=1;K<X.length;K++)Q=Q?.[X[K]];return Q}}if($ in Z.state)return Z.state[$];return $}if($&&typeof $==="object"&&!Array.isArray($)&&$.constructor===Object){let X={};for(let Q of Object.keys($))X[Q]=T($[Q],Z);return X}if(Array.isArray($))return $.map((X)=>T(X,Z));return $}function c1($,Z,X){return new Proxy(Z,{get(Q,K){if(K in Q)return Q[K];let Y=X?.[K];if(Y)throw Error(`${$}.${K} is not available. ${Y}`);throw Error(`${$}.${K} is not supported in AsyncJS. Check docs for available ${$} methods.`)}})}function H0($){if($===null)return{type:"null"};if($===void 0)return{};if(typeof $==="object"&&$!==null&&"type"in $&&typeof $.type==="string")return $;if(typeof $==="object"&&$!==null&&"schema"in $&&typeof $.schema==="object")return $.schema;let Z=typeof $;if(Z==="string")return{type:"string"};if(Z==="number")return Number.isInteger($)?{type:"integer"}:{type:"number"};if(Z==="boolean")return{type:"boolean"};if(Array.isArray($)){if($.length===0)return{type:"array"};return{type:"array",items:H0($[0])}}if(Z==="object"){let X={},Q=[];for(let[K,Y]of Object.entries($))X[K]=H0(Y),Q.push(K);return{type:"object",properties:X,required:Q}}return{}}var N1={Math:c1("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 $=new Uint32Array(1);return crypto.getRandomValues($),$[0]/4294967296}return Math.random()}}),JSON:c1("JSON",{parse:($)=>JSON.parse($),stringify:($,Z,X)=>JSON.stringify($,Z,X)}),console:c1("console",{log:(...$)=>{return},warn:(...$)=>{return},error:(...$)=>{return},info:(...$)=>{return}},{table:"Use console.log with JSON.stringify for structured data.",dir:"Use console.log instead.",trace:"Stack traces are not available in AsyncJS."}),Array:c1("Array",{isArray:($)=>Array.isArray($),from:($,Z,X)=>Array.from($,Z,X),of:(...$)=>Array.of(...$)},{prototype:"Prototype access is not allowed."}),Object:c1("Object",{keys:($)=>Object.keys($),values:($)=>Object.values($),entries:($)=>Object.entries($),fromEntries:($)=>Object.fromEntries($),assign:($,...Z)=>Object.assign({},$,...Z),hasOwn:($,Z)=>Object.hasOwn($,Z)},{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:c1("String",{fromCharCode:(...$)=>String.fromCharCode(...$),fromCodePoint:(...$)=>String.fromCodePoint(...$)}),Number:c1("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:($,Z)=>{let X=H0(Z),Q=_8($,X);if(Q instanceof Error)throw Q;return Q},Schema:{...I,response:($,Z)=>{let X=Z?.schema!=null?Z.schema:H0(Z);return{type:"json_schema",json_schema:{name:$,strict:!0,schema:X}}},fromExample:($)=>H0($),isValid:($,Z)=>{if(Z?.schema!=null)return w6($,Z);return w6($,H0(Z))}},Set:($=[])=>{let Z=[...new globalThis.Set($)];return{add(X){if(!Z.includes(X))Z.push(X);return this},remove(X){let Q=Z.indexOf(X);if(Q!==-1)Z.splice(Q,1);return this},clear(){return Z.length=0,this},has(X){return Z.includes(X)},get size(){return Z.length},toArray(){return[...Z]},union(X){let Q=X?.toArray?.()??X??[];return N1.Set([...Z,...Q])},intersection(X){let Q=X?.toArray?.()??X??[];return N1.Set(Z.filter((K)=>Q.includes(K)))},diff(X){let Q=X?.toArray?.()??X??[];return N1.Set(Z.filter((K)=>!Q.includes(K)))},forEach(X){Z.forEach(X)},map(X){return N1.Set(Z.map(X))},filter(X){return N1.Set(Z.filter(X))},toJSON(){return[...Z]}}},Date:(()=>{let $=(X)=>({get value(){return X.toISOString()},get timestamp(){return X.getTime()},get year(){return X.getFullYear()},get month(){return X.getMonth()+1},get day(){return X.getDate()},get hours(){return X.getHours()},get minutes(){return X.getMinutes()},get seconds(){return X.getSeconds()},get dayOfWeek(){return X.getDay()},add({years:Q=0,months:K=0,days:Y=0,hours:H=0,minutes:G=0,seconds:W=0,ms:z=0}={}){let J=new globalThis.Date(X.getTime());if(Q)J.setFullYear(J.getFullYear()+Q);if(K)J.setMonth(J.getMonth()+K);if(Y)J.setDate(J.getDate()+Y);if(H)J.setHours(J.getHours()+H);if(G)J.setMinutes(J.getMinutes()+G);if(W)J.setSeconds(J.getSeconds()+W);if(z)J.setMilliseconds(J.getMilliseconds()+z);return $(J)},diff(Q,K="ms"){let Y=typeof Q==="object"&&Q.timestamp?Q.timestamp:new globalThis.Date(Q).getTime(),H=X.getTime()-Y;switch(K){case"seconds":return H/1000;case"minutes":return H/60000;case"hours":return H/3600000;case"days":return H/86400000;default:return H}},format(Q="ISO"){if(Q==="ISO")return X.toISOString();if(Q==="date")return X.toISOString().split("T")[0];if(Q==="time")return X.toISOString().split("T")[1].split(".")[0];return Q.replace("YYYY",String(X.getFullYear())).replace("MM",String(X.getMonth()+1).padStart(2,"0")).replace("DD",String(X.getDate()).padStart(2,"0")).replace("HH",String(X.getHours()).padStart(2,"0")).replace("mm",String(X.getMinutes()).padStart(2,"0")).replace("ss",String(X.getSeconds()).padStart(2,"0"))},isBefore(Q){let K=typeof Q==="object"&&Q.timestamp?Q.timestamp:new globalThis.Date(Q).getTime();return X.getTime()<K},isAfter(Q){let K=typeof Q==="object"&&Q.timestamp?Q.timestamp:new globalThis.Date(Q).getTime();return X.getTime()>K},toString(){return X.toISOString()},toJSON(){return X.toISOString()}}),Z=(X)=>{let Q=X!==void 0?new globalThis.Date(X):new globalThis.Date;if(isNaN(Q.getTime()))throw Error(`Invalid date: ${X}`);return $(Q)};return Z.now=()=>globalThis.Date.now(),Z.parse=(X)=>$(new globalThis.Date(X)),Z})()},C4={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."},kZ=0.01,H8=0.0001,G8=0.001,gZ=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 e($,Z){if($===null||$===void 0)return $;if(typeof $!=="object"||!("$expr"in $))return $;if(Z.fuel){if(Z.fuel.current-=kZ,Z.fuel.current<=0)throw Error("Out of Fuel")}switch($.$expr){case"literal":return $.value;case"ident":{if($.name in Z.state)return Z.state[$.name];if($.name in Z.args)return Z.args[$.name];if($.name in N1)return N1[$.name];if($.name in C4)throw Error(C4[$.name]);return}case"member":{let X=e($.object,Z);if($.optional&&(X===null||X===void 0))return;let Q=$.property;return Y8(Q),X?.[Q]}case"binary":{let X=e($.left,Z),Q=e($.right,Z);switch($.op){case"+":{let K=X+Q;if(typeof K==="string"&&Z.fuel){if(Z.fuel.current-=K.length*H8,Z.fuel.current<=0){Z.error=new J1("Out of Fuel","expr.concat");return}}return K}case"-":return X-Q;case"*":return X*Q;case"/":return X/Q;case"%":return X%Q;case"**":return X**Q;case">":return X>Q;case"<":return X<Q;case">=":return X>=Q;case"<=":return X<=Q;case"==":return O4(X,Q);case"!=":return!O4(X,Q);case"===":return X===Q;case"!==":return X!==Q;default:throw Error(`Unknown binary operator: ${$.op}`)}}case"unary":{let X=e($.argument,Z);switch($.op){case"!":return!X;case"-":return-X;case"+":return+X;case"typeof":return typeof X;default:throw Error(`Unknown unary operator: ${$.op}`)}}case"logical":{let X=e($.left,Z);if($.op==="&&")return X?e($.right,Z):X;else if($.op==="??")return X??e($.right,Z);else return X?X:e($.right,Z)}case"conditional":return e($.test,Z)?e($.consequent,Z):e($.alternate,Z);case"array":return $.elements.map((X)=>e(X,Z));case"object":{let X={};for(let Q of $.properties)X[Q.key]=e(Q.value,Z);return X}case"call":{if($.callee==="Error"){let Q=$.arguments.map((Y)=>e(Y,Z)),K=typeof Q[0]==="string"?Q[0]:"Error";Z.error=new J1(K,"Error");return}if($.callee in N1){let Q=N1[$.callee];if(typeof Q==="function"){let K=$.arguments.map((Y)=>e(Y,Z));return Q(...K)}}if(!Z.resolver($.callee)){if($.callee in C4)throw Error(C4[$.callee]);throw Error(`Unknown function: ${$.callee}`)}throw Error(`Atom calls in expressions not yet supported: ${$.callee}`)}case"methodCall":{let X=e($.object,Z);if($.optional&&(X===null||X===void 0))return;let Q=$.method;if(Y8(Q),X===null||X===void 0)throw Error(`Cannot call method '${Q}' on ${X}`);let K=X[Q];if(typeof K!=="function")throw Error(`'${Q}' is not a function`);let Y=$.arguments.map((G)=>e(G,Z)),H=K.apply(X,Y);if(Z.fuel&&gZ.has(Q)){let G=0;if(typeof H==="string")G=H.length*H8;else if(Array.isArray(H))G=H.length*G8;else if(typeof H==="object"&&H!==null)G=Object.keys(H).length*G8;if(Z.fuel.current-=G,Z.fuel.current<=0){Z.error=new J1("Out of Fuel",`expr.${Q}`);return}}return H}default:throw Error(`Unknown expression type: ${$.$expr}`)}}function f($,Z,X,Q,K={}){let{docs:Y="",timeoutMs:H=1000,cost:G=1}=typeof K==="string"?{docs:K}:K;return{op:$,inputSchema:Z,outputSchema:X,exec:async(z,J)=>{let{op:L,result:_,...U}=z;if(J.error)return;let q=J.trace?{...J.state}:null,D=J.fuel.current,w,F;try{let P=J.costOverrides?.[$],R=P!==void 0?P:G,j=typeof R==="function"?R(U,J):R;if((J.fuel.current-=j)<=0){J.error=new J1("Out of Fuel",$);return}let C,M=async()=>Q(z,J);if(w=H>0?await Promise.race([M(),new Promise((O,S)=>{C=setTimeout(()=>S(Error(`Atom '${$}' timed out`)),H)})]).finally(()=>clearTimeout(C)):await M(),z.result){if(J.consts.has(z.result))throw Error(`Cannot reassign const variable '${z.result}'`);if(w!==void 0&&X&&!w6(w,X)){J.error=new J1(`Output validation failed for '${$}'`,$);return}if(J.state[z.result]=w,z.resultConst)J.consts.add(z.result)}}catch(P){F=P.message||String(P),J.error=new J1(F,$,P)}finally{if(J.trace&&q){let P=SZ(q,J.state);J.trace.push({op:$,input:U,stateDiff:P,result:w,error:F,fuelBefore:D,fuelAfter:J.fuel.current,timestamp:new Date().toISOString()})}}},docs:Y,timeoutMs:H,cost:G,create:(z)=>({op:$,...z})}}var D1=f("seq",I.object({steps:I.array(I.any)}),void 0,async({steps:$},Z)=>{for(let X of $){if(Z.output!==void 0)return;if(Z.error)return;let Q=Z.resolver(X.op);if(!Q)throw Error(`Unknown Atom: ${X.op}`);await Q.exec(X,Z)}},{docs:"Sequence",timeoutMs:0,cost:0.1}),bZ=f("if",I.object({condition:I.any,then:I.array(I.any),else:I.array(I.any).optional}),void 0,async($,Z)=>{if(e($.condition,Z))await D1.exec({op:"seq",steps:$.then},Z);else if($.else)await D1.exec({op:"seq",steps:$.else},Z)},{docs:"If/Else",timeoutMs:0,cost:0.1}),vZ=f("while",I.object({condition:I.any,body:I.array(I.any)}),void 0,async($,Z)=>{while(e($.condition,Z)){if(Z.signal?.aborted)throw Error("Execution aborted");if((Z.fuel.current-=0.1)<=0)throw Error("Out of Fuel");if(await D1.exec({op:"seq",steps:$.body},Z),Z.output!==void 0)return}},{docs:"While Loop",timeoutMs:0,cost:0.1}),fZ=f("return",void 0,I.any,async($,Z)=>{if(Z.error)return Z.output=Z.error,Z.error;if("value"in $){let Q=T($.value,Z);if(Q!==void 0&&Q!==null&&!PZ(Q)&&(typeof Q!=="object"||Array.isArray(Q))){let K=new J1(`Agent must return an object, got ${Array.isArray(Q)?"array":typeof Q}`,"return");return Z.error=K,Z.output=K,K}return Z.output=Q,Q}let X={};if($.schema?.properties){for(let Q of Object.keys($.schema.properties))X[Q]=Z.state[Q];if($.filter!==!1){let Q=_8(X,$.schema);if(!(Q instanceof Error))X=Q}}return Z.output=X,X},{docs:"Return",cost:0.1}),yZ=f("try",I.object({try:I.array(I.any),catch:I.array(I.any).optional,catchParam:I.string.optional}),void 0,async($,Z)=>{if(await D1.exec({op:"seq",steps:$.try},Z),Z.error&&$.catch){let X=$.catchParam||"error";Z.state[X]=Z.error.message,Z.state.errorOp=Z.error.op,Z.error=void 0,await D1.exec({op:"seq",steps:$.catch},Z)}},{docs:"Try/Catch",timeoutMs:0,cost:0.1}),hZ=f("Error",I.object({args:I.array(I.any).optional}),void 0,async($,Z)=>{let X=$.args?.[0]??"Error";Z.error=new J1(String(X),"Error")},{docs:"Trigger error flow",cost:0.1}),xZ=f("varSet",I.object({key:I.string,value:I.any}),void 0,async({key:$,value:Z},X)=>{if(X.consts.has($))throw Error(`Cannot reassign const variable '${$}'`);X.state[$]=T(Z,X)},{docs:"Set Variable",cost:0.1}),uZ=f("constSet",I.object({key:I.string,value:I.any}),void 0,async({key:$,value:Z},X)=>{if(X.consts.has($))throw Error(`Cannot reassign const variable '${$}'`);if($ in X.state)throw Error(`Cannot redeclare variable '${$}' as const`);X.state[$]=T(Z,X),X.consts.add($)},{docs:"Set Const Variable (immutable)",cost:0.1}),dZ=f("varGet",I.object({key:I.string}),I.any,async({key:$},Z)=>{return T($,Z)},{docs:"Get Variable",cost:0.1}),lZ=f("varsImport",I.object({keys:I.union([I.array(I.string),I.record(I.string)])}),void 0,async({keys:$},Z)=>{if(Array.isArray($))for(let X of $)Z.state[X]=T({$kind:"arg",path:X},Z);else for(let[X,Q]of Object.entries($))Z.state[X]=T({$kind:"arg",path:Q},Z)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:0.2}),mZ=f("varsLet",I.record(I.any),void 0,async($,Z)=>{for(let X of Object.keys($)){if(X==="op"||X==="result")continue;Z.state[X]=T($[X],Z)}},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:0.1}),iZ=f("varsExport",I.object({keys:I.union([I.array(I.string),I.record(I.string)])}),I.record(I.any),async({keys:$},Z)=>{let X={};if(Array.isArray($))for(let Q of $)X[Q]=T(Q,Z);else for(let[Q,K]of Object.entries($))X[Q]=T(K,Z);return X},{docs:"Export variables from the current scope, with optional renaming.",cost:0.2}),pZ=f("scope",I.object({steps:I.array(I.any)}),void 0,async({steps:$},Z)=>{let X=g1(Z);if(await D1.exec({op:"seq",steps:$},X),X.output!==void 0)Z.output=X.output},{docs:"Create new scope",timeoutMs:0,cost:0.1}),nZ=f("map",I.object({items:I.array(I.any),as:I.string,steps:I.array(I.any)}),I.array(I.any),async({items:$,as:Z,steps:X},Q)=>{let K=[],Y=T($,Q);if(!Array.isArray(Y))throw Error("map: items is not an array");for(let H of Y){if(Q.signal?.aborted)throw Error("Execution aborted");let G=g1(Q);G.state[Z]=H,await D1.exec({op:"seq",steps:X},G),K.push(G.state.result??null)}return K},{docs:"Map Array",timeoutMs:0,cost:1}),cZ=f("filter",I.object({items:I.array(I.any),as:I.string,condition:I.any}),I.array(I.any),async({items:$,as:Z,condition:X},Q)=>{let K=[],Y=T($,Q);if(!Array.isArray(Y))throw Error("filter: items is not an array");for(let H of Y){if(Q.signal?.aborted)throw Error("Execution aborted");let G=g1(Q);if(G.state[Z]=H,e(X,G))K.push(H)}return K},{docs:"Filter Array",timeoutMs:0,cost:1}),oZ=f("reduce",I.object({items:I.array(I.any),as:I.string,accumulator:I.string,initial:I.any,steps:I.array(I.any)}),I.any,async({items:$,as:Z,accumulator:X,initial:Q,steps:K},Y)=>{let H=T($,Y),G=T(Q,Y);if(!Array.isArray(H))throw Error("reduce: items is not an array");let W=G;for(let z of H){if(Y.signal?.aborted)throw Error("Execution aborted");let J=g1(Y);J.state[Z]=z,J.state[X]=W,await D1.exec({op:"seq",steps:K},J),W=J.state.result??W}return W},{docs:"Reduce Array",timeoutMs:0,cost:1}),sZ=f("find",I.object({items:I.array(I.any),as:I.string,condition:I.any}),I.any,async({items:$,as:Z,condition:X},Q)=>{let K=T($,Q);if(!Array.isArray(K))throw Error("find: items is not an array");for(let Y of K){if(Q.signal?.aborted)throw Error("Execution aborted");let H=g1(Q);if(H.state[Z]=Y,e(X,H))return Y}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),aZ=f("push",I.object({list:I.array(I.any),item:I.any}),I.array(I.any),async({list:$,item:Z},X)=>{let Q=T($,X),K=T(Z,X);if(Array.isArray(Q))Q.push(K);return Q},{docs:"Push to Array",cost:1}),rZ=f("len",I.object({list:I.any}),I.number,async({list:$},Z)=>{let X=T($,Z);return Array.isArray(X)||typeof X==="string"?X.length:0},{docs:"Length",cost:1}),tZ=f("split",I.object({str:I.string,sep:I.string}),I.array(I.string),async({str:$,sep:Z},X)=>T($,X).split(T(Z,X)),{docs:"Split String",cost:1}),eZ=f("join",I.object({list:I.array(I.string),sep:I.string}),I.string,async({list:$,sep:Z},X)=>T($,X).join(T(Z,X)),{docs:"Join String",cost:1}),$X=f("template",I.object({tmpl:I.string,vars:I.record(I.any)}),I.string,async({tmpl:$,vars:Z},X)=>{return T($,X).replace(/\{\{(\w+)\}\}/g,(K,Y)=>String(T(Z[Y],X)??""))},{docs:"String Template",cost:1}),ZX=f("regexMatch",I.object({pattern:I.string,value:I.any}),I.boolean,async({pattern:$,value:Z},X)=>{if(TZ($))throw Error(`Suspicious regex pattern rejected (potential ReDoS): ${$}`);let Q=T(Z,X);return new RegExp($).test(Q)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),XX=f("pick",I.object({obj:I.record(I.any),keys:I.array(I.string)}),I.record(I.any),async({obj:$,keys:Z},X)=>{let Q=T($,X),K=T(Z,X),Y={};if(Q&&Array.isArray(K))K.forEach((H)=>Y[H]=Q[H]);return Y},{docs:"Pick Keys",cost:1}),QX=f("omit",I.object({obj:I.record(I.any),keys:I.array(I.string)}),I.record(I.any),async({obj:$,keys:Z},X)=>{let Q=T($,X),K=new Set(T(Z,X)),Y={};if(Q)Object.keys(Q).forEach((H)=>{if(!K.has(H))Y[H]=Q[H]});return Y},{docs:"Omit Keys",cost:1}),KX=f("merge",I.object({a:I.record(I.any),b:I.record(I.any)}),I.record(I.any),async({a:$,b:Z},X)=>({...T($,X),...T(Z,X)}),{docs:"Merge Objects",cost:1}),YX=f("keys",I.object({obj:I.record(I.any)}),I.array(I.string),async({obj:$},Z)=>Object.keys(T($,Z)??{}),{docs:"Object Keys",cost:1}),W8=10,z8="X-Agent-Depth";function HX($,Z){try{let Q=new URL($).hostname.toLowerCase();for(let K of Z){let Y=K.toLowerCase();if(Y.startsWith("*.")){let H=Y.slice(1);if(Q.endsWith(H)||Q===Y.slice(2))return!0}else if(Q===Y)return!0}return!1}catch{return!1}}var GX=f("httpFetch",I.object({url:I.string,method:I.string.optional,headers:I.record(I.string).optional,body:I.any.optional,responseType:I.string.optional}),I.any,async($,Z)=>{let X=T($.url,Z),Q=T($.method,Z),K=T($.headers,Z)||{},Y=T($.body,Z),H=T($.responseType,Z),G=Z.context?.requestDepth??0;if(G>=W8)throw Error(`Agent request depth exceeded (max ${W8}). This prevents recursive agent loops.`);if(Z.capabilities.fetch)return Z.capabilities.fetch(X,{method:Q,headers:{...K,[z8]:String(G+1)},body:Y,signal:Z.signal,responseType:H});let W=Z.context?.allowedFetchDomains;if(W){if(!HX(X,W))throw Error(`Fetch blocked: domain not in allowlist. Allowed: ${W.join(", ")}`)}else{if(EZ(X))throw Error("Blocked URL: private/internal addresses not allowed in default fetch");try{let J=new URL(X).hostname.toLowerCase();if(J!=="localhost"&&J!=="127.0.0.1"&&J!=="[::1]")throw Error("Fetch blocked: no allowedFetchDomains configured. Set ctx.context.allowedFetchDomains or provide a custom fetch capability.")}catch(z){if(z.message.includes("allowedFetchDomains"))throw z;throw Error(`Invalid URL: ${X}`)}}if(typeof globalThis.fetch==="function"){let z=await globalThis.fetch(X,{method:Q,headers:{...K,[z8]:String(G+1)},body:Y?JSON.stringify(Y):void 0,signal:Z.signal});if(H==="dataUrl"){let L=await z.arrayBuffer(),_=new Uint8Array(L),U="";for(let w=0;w<_.length;w++)U+=String.fromCharCode(_[w]);let q=btoa(U);return`data:${z.headers.get("content-type")||"application/octet-stream"};base64,${q}`}let J=z.headers.get("content-type");if(H==="json"||J&&J.includes("application/json"))return z.json();return z.text()}throw Error("Capability 'fetch' missing and no global fetch available")},{docs:"HTTP Fetch",timeoutMs:30000,cost:5}),WX=f("storeGet",I.object({key:I.string}),I.any,async({key:$},Z)=>{let X=T($,Z);return Z.capabilities.store?.get(X)},{docs:"Store Get",cost:5}),zX=f("storeSet",I.object({key:I.string,value:I.any}),void 0,async({key:$,value:Z},X)=>{let Q=T($,X),K=T(Z,X);return X.capabilities.store?.set(Q,K)},{docs:"Store Set",cost:5}),JX=f("storeQuery",I.object({query:I.any}),I.array(I.any),async({query:$},Z)=>Z.capabilities.store?.query?.(T($,Z))??[],{docs:"Store Query",cost:5}),_X=f("storeVectorSearch",I.object({collection:I.string.optional,vector:I.array(I.number),k:I.number.optional}),I.array(I.any),async({collection:$,vector:Z,k:X},Q)=>Q.capabilities.store?.vectorSearch?.(T($,Q),T(Z,Q),T(X,Q))??[],{docs:"Vector Search",cost:($,Z)=>5+(T($.k,Z)??5)}),LX=f("llmPredict",I.object({prompt:I.string,options:I.any.optional}),I.string,async({prompt:$,options:Z},X)=>{if(!X.capabilities.llm?.predict)throw Error("Capability 'llm.predict' missing");return X.capabilities.llm.predict(T($,X),T(Z,X))},{docs:"LLM Predict",timeoutMs:120000,cost:100}),UX=f("agentRun",I.object({agentId:I.any,input:I.any}),I.any,async({agentId:$,input:Z},X)=>{let Q=T($,X),K=T(Z,X),Y=K;if(K&&typeof K==="object"&&!Array.isArray(K)){Y={};for(let G in K)Y[G]=T(K[G],X)}if(j6(Q)){let G=M6(Q),W={...X,args:Y,state:{},consts:new Set,output:void 0,error:void 0},z=X.resolver("seq");if(!z)throw Error("seq atom not found");if(await z.exec(G,W),W.error)throw Error(W.error.message||"Sub-agent failed");return W.output}if(Q&&typeof Q==="object"&&"op"in Q){let G={...X,args:Y,state:{},consts:new Set,output:void 0,error:void 0},W=X.resolver("seq");if(!W)throw Error("seq atom not found");if(await W.exec(Q,G),G.error)throw Error(G.error.message||"Sub-agent failed");return G.output}if(!X.capabilities.agent?.run)throw Error("Capability 'agent.run' missing");let H=await X.capabilities.agent.run(Q,Y);if(H&&typeof H==="object"&&"fuelUsed"in H&&typeof H.fuelUsed==="number"){if(H.error)throw Error(H.error.message||"Sub-agent failed");return H.result}return H},{docs:"Run Sub-Agent (accepts procedure token, AST, or agent ID)",cost:1}),qX=f("transpileCode",I.object({code:I.string}),I.any,async({code:$},Z)=>{if(!Z.capabilities.code?.transpile)throw Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let X=T($,Z);try{return Z.capabilities.code.transpile(X)}catch(Q){throw Error(`Code transpilation failed: ${Q.message}`)}},{docs:"Transpile AsyncJS code to AST",cost:1}),J8=10,DX=f("runCode",I.object({code:I.string,args:I.record(I.any).optional}),I.any,async({code:$,args:Z},X)=>{let Q=X.runCodeDepth??0;if(Q>=J8)throw Error(`runCode recursion limit exceeded (max ${J8}). This prevents infinite loops from dynamically generated code calling runCode.`);if(!X.capabilities.code?.transpile)throw Error("Capability 'code.transpile' missing. Enable dynamic code execution by providing the code capability.");let K=T($,X),Y=Z?T(Z,X):{},H;try{H=X.capabilities.code.transpile(K)}catch(W){throw Error(`Code transpilation failed: ${W.message}`)}if(H.op!=="seq")throw Error("Transpiled code must be a seq node");let G=g1(X);if(G.args=Y,G.output=void 0,G.runCodeDepth=Q+1,await D1.exec(H,G),G.error){X.error=G.error;return}return G.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),AX=f("jsonParse",I.object({str:I.string}),I.any,async({str:$},Z)=>JSON.parse(T($,Z)),{docs:"Parse JSON",cost:1}),IX=f("jsonStringify",I.object({value:I.any}),I.string,async({value:$},Z)=>JSON.stringify(T($,Z)),{docs:"Stringify JSON",cost:1}),RX=f("xmlParse",I.object({str:I.string}),I.any,async({str:$},Z)=>{if(!Z.capabilities.xml?.parse)throw Error("Capability 'xml.parse' missing");return Z.capabilities.xml.parse(T($,Z))},{docs:"Parse XML",cost:1}),wX=f("memoize",I.object({key:I.string.optional,steps:I.array(I.any)}),I.any,async({key:$,steps:Z},X)=>{if(!X.memo)X.memo=new Map;let Q=T($,X)??await F6.exec({value:Z,algorithm:"SHA-256"},X);if(X.memo.has(Q))return X.memo.get(Q);let K=g1(X);await D1.exec({op:"seq",steps:Z},K);let Y=K.output??K.state.result;return X.memo.set(Q,Y),Y},{docs:"Memoize steps result in memory",cost:1}),BX=f("cache",I.object({key:I.string.optional,steps:I.array(I.any),ttlMs:I.number.optional}),I.any,async({key:$,steps:Z,ttlMs:X},Q)=>{if(!Q.capabilities.store)throw Error("Capability 'store' missing for caching");let Y=`cache:${T($,Q)??await F6.exec({value:Z,algorithm:"SHA-256"},Q)}`,H=await Q.capabilities.store.get(Y);if(H)if(typeof H==="object"&&H._exp){if(Date.now()<H._exp)return H.val}else return H;let G=g1(Q);await D1.exec({op:"seq",steps:Z},G);let W=G.output??G.state.result,z=Date.now()+(X??86400000);if((Q.fuel.current-=5)<=0)throw Error("Out of Fuel");return await Q.capabilities.store.set(Y,{val:W,_exp:z}),W},{docs:"Cache steps result in store with TTL",cost:5}),jX=f("random",I.object({min:I.number.optional,max:I.number.optional,format:I.string.optional,length:I.number.optional}),I.any,async({min:$,max:Z,format:X,length:Q},K)=>{let Y=T(X,K)??"float",H=T(Q,K)??10,G=T($,K)??0,W=T(Z,K)??1;if(Y==="base36"){let U="";if(typeof crypto<"u"&&crypto.getRandomValues){let q=new Uint8Array(H);crypto.getRandomValues(q);for(let D=0;D<H;D++)U+="0123456789abcdefghijklmnopqrstuvwxyz"[q[D]%36]}else for(let q=0;q<H;q++)U+="0123456789abcdefghijklmnopqrstuvwxyz".charAt(Math.floor(Math.random()*36));return U}let z;if(typeof crypto<"u"&&crypto.getRandomValues){let _=new Uint32Array(1);crypto.getRandomValues(_),z=_[0]/4294967296}else z=Math.random();let J=W-G,L=z*J+G;if(Y==="integer")return Math.floor(L);return L},{docs:"Generate Random",cost:1}),MX=f("uuid",void 0,I.string,async()=>{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();if(typeof crypto<"u"&&crypto.getRandomValues){let $=new Uint8Array(16);crypto.getRandomValues($),$[6]=$[6]&15|64,$[8]=$[8]&63|128;let Z=Array.from($,(X)=>X.toString(16).padStart(2,"0")).join("");return`${Z.slice(0,8)}-${Z.slice(8,12)}-${Z.slice(12,16)}-${Z.slice(16,20)}-${Z.slice(20)}`}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,($)=>{let Z=Math.random()*16|0;return($==="x"?Z:Z&3|8).toString(16)})},{docs:"Generate UUID",cost:1}),F6=f("hash",I.object({value:I.any,algorithm:I.string.optional}),I.string,async({value:$,algorithm:Z},X)=>{let Q=typeof $==="string"?$:JSON.stringify(T($,X)),K=T(Z,X)||"SHA-256";if(typeof crypto<"u"&&crypto.subtle){let G=new TextEncoder().encode(Q),W=await crypto.subtle.digest(K,G);return Array.from(new Uint8Array(W)).map((J)=>J.toString(16).padStart(2,"0")).join("")}let Y=0;for(let H=0;H<Q.length;H++){let G=Q.charCodeAt(H);Y=(Y<<5)-Y+G,Y|=0}return String(Y)},{docs:"Hash a value",cost:1}),FX=f("consoleLog",I.object({message:I.any}),void 0,async({message:$},Z)=>{let X=T($,Z);if(Z.trace)Z.trace.push({op:"console.log",input:{message:X},stateDiff:{},result:X,fuelBefore:Z.fuel.current,fuelAfter:Z.fuel.current,timestamp:new Date().toISOString()})},{docs:"Log to trace",cost:0.1}),PX=f("consoleWarn",I.object({message:I.any}),void 0,async({message:$},Z)=>{let X=T($,Z),Q=typeof X==="string"?X:JSON.stringify(X);if(!Z.warnings)Z.warnings=[];if(Z.warnings.push(Q),Z.trace)Z.trace.push({op:"console.warn",input:{message:X},stateDiff:{},result:X,fuelBefore:Z.fuel.current,fuelAfter:Z.fuel.current,timestamp:new Date().toISOString()})},{docs:"Add warning",cost:0.1}),VX=f("consoleError",I.object({message:I.any}),void 0,async({message:$},Z)=>{let X=T($,Z),Q=typeof X==="string"?X:JSON.stringify(X);Z.error=new J1(Q,"console.error")},{docs:"Emit error and stop",cost:0.1}),CX=f("storeProcedure",I.object({ast:I.any,ttl:I.number.optional,maxSize:I.number.optional}),I.string,async({ast:$,ttl:Z,maxSize:X},Q)=>{let K=T($,Q),Y=Z?T(Z,Q):VZ,H=X?T(X,Q):CZ;if(!K||typeof K!=="object"||!K.op)throw Error('Invalid AST: must be an object with an "op" property');let G=JSON.stringify(K);if(G.length>H)throw Error(`AST too large: ${G.length} bytes exceeds limit of ${H} bytes. Consider reducing AST size or using a shorter TTL.`);let W=OZ(),z=Date.now();return G0.set(W,{ast:K,createdAt:z,expiresAt:z+Y}),W},{docs:"Store an AST and return a token for later execution",cost:1}),OX=f("releaseProcedure",I.object({token:I.string}),I.boolean,async({token:$},Z)=>{let X=T($,Z);return G0.delete(X)},{docs:"Release a stored procedure by token",cost:0.1}),NX=f("clearExpiredProcedures",void 0,I.number,async()=>{let $=Date.now(),Z=0;for(let[X,Q]of G0)if($>Q.expiresAt)G0.delete(X),Z++;return Z},{docs:"Clear all expired procedures and return count",cost:0.5}),N4={seq:D1,if:bZ,while:vZ,return:fZ,try:yZ,Error:hZ,varSet:xZ,constSet:uZ,varGet:dZ,varsImport:lZ,varsLet:mZ,varsExport:iZ,scope:pZ,map:nZ,filter:cZ,reduce:oZ,find:sZ,push:aZ,len:rZ,split:tZ,join:eZ,template:$X,regexMatch:ZX,pick:XX,omit:QX,merge:KX,keys:YX,httpFetch:GX,storeGet:WX,storeSet:zX,storeQuery:JX,storeVectorSearch:_X,llmPredict:LX,agentRun:UX,transpileCode:qX,runCode:DX,jsonParse:AX,jsonStringify:IX,xmlParse:RX,memoize:wX,cache:BX,random:jX,uuid:MX,hash:F6,consoleLog:FX,consoleWarn:PX,consoleError:VX,storeProcedure:CX,releaseProcedure:OX,clearExpiredProcedures:NX};var EX=new Set(["true","false","null","undefined","and","or","not"]);function TX($,Z){let X=$.replace(/"[^"]*"/g,'""').replace(/'[^']*'/g,"''"),Q=[],K=/(?<![.])\b([a-zA-Z_][a-zA-Z0-9_]*)\b/g,Y;while((Y=K.exec(X))!==null)Q.push(Y[1]);let G=[...new Set(Q)].filter((W)=>!EX.has(W)&&!(W in Z)&&!new RegExp(`\\b${W}\\s*\\(`).test(X));if(G.length>0)console.warn(`[Agent99 Builder] Condition "${$}" references variables not in vars mapping: ${G.join(", ")}. Add them to vars or use AsyncJS syntax (ajs\`...\`) which handles this automatically.`)}function E4($,Z){TX($,Z);let X=SX($),Q=I8(X,0,Z);if(Q.pos<X.length){let K=X.slice(Q.pos).join(" ");throw Error(`Unsupported condition syntax near '${K}' in: ${$}
|
|
434
|
-
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return Q.node}function SX($){let Z=[],X=0;while(X<$.length){while(X<$.length&&/\s/.test($[X]))X++;if(X>=$.length)break;if($[X]==='"'||$[X]==="'"){let Q=$[X++],K="";while(X<$.length&&$[X]!==Q)if($[X]==="\\"&&X+1<$.length)X++,K+=$[X++];else K+=$[X++];X++,Z.push(JSON.stringify(K));continue}if($.slice(X,X+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){Z.push($.slice(X,X+2)),X+=2;continue}if("+-*/%><!().?:[]".includes($[X])){Z.push($[X]),X++;continue}if(/\d/.test($[X])){let Q="";while(X<$.length&&/[\d.]/.test($[X]))Q+=$[X++];Z.push(Q);continue}if(/[a-zA-Z_]/.test($[X])){let Q="";while(X<$.length&&/[a-zA-Z0-9_]/.test($[X]))Q+=$[X++];Z.push(Q);continue}X++}return Z}function I8($,Z,X){return kX($,Z,X)}function kX($,Z,X){let{node:Q,pos:K}=U8($,Z,X);while($[K]==="||"){K++;let{node:Y,pos:H}=U8($,K,X);Q={$expr:"logical",op:"||",left:Q,right:Y},K=H}return{node:Q,pos:K}}function U8($,Z,X){let{node:Q,pos:K}=q8($,Z,X);while($[K]==="&&"){K++;let{node:Y,pos:H}=q8($,K,X);Q={$expr:"logical",op:"&&",left:Q,right:Y},K=H}return{node:Q,pos:K}}function q8($,Z,X){let{node:Q,pos:K}=D8($,Z,X),Y=["==","!=",">","<",">=","<="];while(Y.includes($[K])){let H=$[K++],{node:G,pos:W}=D8($,K,X);Q={$expr:"binary",op:H,left:Q,right:G},K=W}return{node:Q,pos:K}}function D8($,Z,X){let{node:Q,pos:K}=A8($,Z,X);while($[K]==="+"||$[K]==="-"){let Y=$[K++],{node:H,pos:G}=A8($,K,X);Q={$expr:"binary",op:Y,left:Q,right:H},K=G}return{node:Q,pos:K}}function A8($,Z,X){let{node:Q,pos:K}=P6($,Z,X);while($[K]==="*"||$[K]==="/"||$[K]==="%"){let Y=$[K++],{node:H,pos:G}=P6($,K,X);Q={$expr:"binary",op:Y,left:Q,right:H},K=G}return{node:Q,pos:K}}function P6($,Z,X){if($[Z]==="!"||$[Z]==="-"){let Q=$[Z++],{node:K,pos:Y}=P6($,Z,X);return{node:{$expr:"unary",op:Q,argument:K},pos:Y}}return gX($,Z,X)}function gX($,Z,X){let Q=$[Z];if(Q==="("){let{node:K,pos:Y}=I8($,Z+1,X);return{node:K,pos:Y+1}}if(Q&&Q.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(Q)},pos:Z+1};if(Q&&/^\d/.test(Q))return{node:{$expr:"literal",value:parseFloat(Q)},pos:Z+1};if(Q==="true")return{node:{$expr:"literal",value:!0},pos:Z+1};if(Q==="false")return{node:{$expr:"literal",value:!1},pos:Z+1};if(Q==="null")return{node:{$expr:"literal",value:null},pos:Z+1};if(Q&&/^[a-zA-Z_]/.test(Q)){let K={$expr:"ident",name:Q},Y=Z+1;while($[Y]==="."){Y++;let H=$[Y++];K={$expr:"member",object:K,property:H}}return{node:K,pos:Y}}return{node:{$expr:"literal",value:null},pos:Z+1}}class K1{steps=[];atoms;proxy;constructor($){return this.atoms=$,this.proxy=new Proxy(this,{get:(Z,X,Q)=>{if(X in Z)return Z[X];if(typeof X==="string"&&X in Z.atoms)return(K)=>{let Y=Z.atoms[X];return Z.add(Y.create(K)),Q};return}}),this.proxy}add($){return this.steps.push($),this.proxy}as($){if(this.steps.length===0)throw Error("No step to capture");let Z=this.steps[this.steps.length-1];return Z.result=$,this.proxy}step($){return this.add($)}return($){let Z=this.atoms.return;if(!Z)throw Error("Atom 'return' not found");let X=$.schema??$;return this.add(Z.create({schema:X}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport($){return this.add(this.atoms.varsImport.create({keys:$}))}varsExport($){return this.add(this.atoms.varsExport.create({keys:$}))}if($,Z,X,Q){let K=new K1(this.atoms);X(K);let Y;if(Q){let W=new K1(this.atoms);Q(W),Y=W.steps}let H=E4($,Z),G=this.atoms.if;return this.add(G.create({condition:H,then:K.steps,else:Y}))}while($,Z,X){let Q=new K1(this.atoms);X(Q);let K=E4($,Z),Y=this.atoms.while;return this.add(Y.create({condition:K,body:Q.steps}))}scope($){let Z=new K1(this.atoms);$(Z);let X=this.atoms.scope;return this.add(X.create({steps:Z.steps}))}map($,Z,X){let Q=new K1(this.atoms);X(Q);let K=this.atoms.map;return this.add(K.create({items:$,as:Z,steps:Q.steps}))}filter($,Z,X,Q={}){let K=E4(X,Q),Y=this.atoms.filter;return this.add(Y.create({items:$,as:Z,condition:K}))}find($,Z,X,Q={}){let K=E4(X,Q),Y=this.atoms.find;return this.add(Y.create({items:$,as:Z,condition:K}))}reduce($,Z,X,Q,K){let Y=new K1(this.atoms);K(Y);let H=this.atoms.reduce;return this.add(H.create({items:$,as:Z,accumulator:X,initial:Q,steps:Y.steps}))}memoize($,Z){let X=new K1(this.atoms);$(X);let Q=this.atoms.memoize;return this.add(Q.create({key:Z,steps:X.steps}))}cache($,Z,X){let Q=new K1(this.atoms);$(Q);let K=this.atoms.cache;return this.add(K.create({key:Z,steps:Q.steps,ttlMs:X}))}try($){let Z=new K1(this.atoms);$.try(Z);let X;if($.catch){let K=new K1(this.atoms);$.catch(K),X=K.steps}let Q=this.atoms.try;return this.add(Q.create({try:Z.steps,catch:X}))}}var bX={take($){return new K1(N4)},custom($){return new K1($)},args($){return{$kind:"arg",path:$}},val($){return $}},DY=bX;import{validate as vX}from"tosijs-schema";function S0($,Z={}){let{ast:X,returnType:Q,originalSource:K,requiredParams:Y}=P1($,{filename:Z.filename,colonShorthand:!0,vmTarget:!0}),H=i0(X,Z.filename),{ast:G,signature:W,warnings:z}=w0(H,K,Q,Z,Y);return{ast:G,signature:W,warnings:z}}var fX=10;class V6{atoms;constructor($={}){this.atoms={...N4,...$}}get builder(){return new K1(this.atoms)}get Agent(){return new K1(this.atoms)}get A99(){return this.Agent}resolve($){return this.atoms[$]}getTools($="all"){let Z=Object.values(this.atoms);if(Array.isArray($))Z=Z.filter((X)=>$.includes(X.op));else if($==="flow"){let X=["seq","if","while","return","try","varSet","varGet","scope"];Z=Z.filter((Q)=>X.includes(Q.op))}return Z.map((X)=>({type:"function",function:{name:X.op,description:X.docs,parameters:X.inputSchema?.schema??{}}}))}async run($,Z={},X={}){let Q;if(typeof $==="string")if(j6($))Q=M6($);else try{Q=S0($).ast}catch(U){throw Error(`AJS transpilation failed: ${U.message}`)}else Q=$;let K=X.fuel??1000,Y=X.timeoutMs??K*fX,H=X.capabilities??{},G=[];if(!H.store){let U=new Map,q=!1;H.store={get:async(D)=>{if(!q)q=!0,G.push("Using default in-memory store (not suitable for production)");return U.get(D)},set:async(D,w)=>{if(!q)q=!0,G.push("Using default in-memory store (not suitable for production)");U.set(D,w)}}}let W=new AbortController,z=setTimeout(()=>W.abort(),Y);if(X.signal)X.signal.addEventListener("abort",()=>W.abort());let J={fuel:{current:K},args:Z,state:{},consts:new Set,capabilities:H,resolver:(U)=>this.resolve(U),output:void 0,signal:W.signal,costOverrides:X.costOverrides,context:X.context,warnings:G};if(X.trace)J.trace=[];if(Q.op!=="seq")throw Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let L=Q.inputSchema;if(L&&!vX(Z,L)){let U=new J1("Input validation failed: args do not match expected schema","vm.run");return{result:U,error:U,fuelUsed:0,trace:J.trace,warnings:G.length>0?G:void 0}}try{await Promise.race([this.resolve("seq")?.exec(Q,J),new Promise((U,q)=>{if(W.signal.addEventListener("abort",()=>{q(Error(`Execution timeout after ${Y}ms (fuel: ${K}). Consider increasing fuel or optimizing your agent.`))}),W.signal.aborted)q(Error(`Execution timeout after ${Y}ms (fuel: ${K}). Consider increasing fuel or optimizing your agent.`))})])}catch(U){if(U.message?.includes("timeout")||U.message?.includes("aborted")||W.signal.aborted)J.error=new J1(`Execution timeout after ${Y}ms (fuel: ${K}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw U}finally{clearTimeout(z)}if(J.error&&J.output===void 0)J.output=J.error;let _=[...G,...J.warnings??[]];return{result:J.output,error:J.error,fuelUsed:K-J.fuel.current,trace:J.trace,warnings:_.length>0?_:void 0}}}var yX=null,R8=()=>yX??=new V6;function o1($){if(!$||typeof $!=="object")return;if(Array.isArray($)){for(let Z of $)o1(Z);return}if($.op==="return"&&"value"in $)$.value={__result:$.value};if($.steps)o1($.steps);if($.then)o1($.then);if($.else)o1($.else);if($.body)o1($.body)}async function hX($){let{code:Z,context:X={},fuel:Q=1000,timeoutMs:K,capabilities:Y={}}=$,H=R8(),W=/\breturn\b/.test(Z)?`function __eval() { ${Z} }`:`function __eval() { return (${Z}) }`;try{let{ast:z}=S0(W);o1(z);let J=await H.run(z,X,{fuel:Q,timeoutMs:K,capabilities:Y}),L=J.result;return{result:L&&typeof L==="object"&&"__result"in L?L.__result:L,fuelUsed:J.fuelUsed,error:J.error?{message:J.error.message||String(J.error)}:void 0}}catch(z){return{result:void 0,fuelUsed:Q,error:{message:z.message||String(z)}}}}async function xX($){let{body:Z,params:X=[],fuel:Q=1000,timeoutMs:K,capabilities:Y={}}=$,H=R8(),W=`function __safeFn(${X.join(", ")}) { ${Z} }`,{ast:z}=S0(W);return o1(z),async(...J)=>{let L={};for(let _=0;_<X.length;_++)L[X[_]]=J[_];try{let _=await H.run(z,L,{fuel:Q,timeoutMs:K,capabilities:Y}),U=_.result;return{result:U&&typeof U==="object"&&"__result"in U?U.__result:U,fuelUsed:_.fuelUsed,error:_.error?{message:_.error.message||String(_.error)}:void 0}}catch(_){return{result:void 0,fuelUsed:Q,error:{message:_.message||String(_)}}}}}function T4($,Z={}){let{ast:X,returnType:Q,originalSource:K,requiredParams:Y}=P1($,{filename:Z.filename,colonShorthand:!0,vmTarget:!0}),H=i0(X,Z.filename),{ast:G,signature:W,warnings:z}=w0(H,K,Q,Z,Y);return{ast:G,signature:W,warnings:z}}function bY($,...Z){if(typeof $==="string")return T4($).ast;let X=$.reduce((Q,K,Y)=>Q+K+(Z[Y]!==void 0?String(Z[Y]):""),"");return T4(X).ast}function fY($,Z,...X){if(typeof $==="string")return E0($,Z);let Q=Z!==void 0?[Z,...X]:X,K=$.reduce((Y,H,G)=>Y+H+(Q[G]!==void 0?String(Q[G]):""),"");return E0(K)}async function yY($,Z={},X){let Q=X??await F4(),K=await Q.getTranspile($);if(K)return{ast:K.ast,signature:K.signature,warnings:K.warnings};let Y=T4($,Z);return Q.setTranspile($,{ast:Y.ast,signature:Y.signature,warnings:Y.warnings}),Y}async function hY($,Z={},X){let Q=X??await F4(),K=await Q.getTJS($);if(K)return{code:K.code,types:K.types,metadata:K.types,testRunner:K.testRunner,testCount:K.testCount,warnings:K.warnings};let Y=E0($,Z);return Q.setTJS($,{code:Y.code,types:Y.types,testRunner:Y.testRunner,testCount:Y.testCount,warnings:Y.warnings}),Y}function xY($,Z,X){let{ast:Q,signature:K}=T4($),Y=async(H)=>{return(await Z.run(Q,H,X)).result};return Y.signature=K,Y.ast=Q,Y}function uY($){return Object.entries($).map(([Z,X])=>{let Q=X.signature,K={},Y=[];for(let[H,G]of Object.entries(Q.parameters)){if(K[H]=V1(G.type),G.description)K[H].description=G.description;if(G.required)Y.push(H)}return{type:"function",function:{name:Q.name||Z,description:Q.description,parameters:{type:"object",properties:K,required:Y}}}})}import{s as x}from"tosijs-schema";var w8=f("storeVectorize",x.object({text:x.string,model:x.string.optional}),x.array(x.number),async({text:$},Z)=>{let X=Z.capabilities.vector;if(!X)throw Error("Capability 'vector' missing. Ensure vector battery is loaded.");let Q=T($,Z);return X.embed(Q)},{docs:"Generate embeddings using vector battery",cost:20}),B8=f("storeCreateCollection",x.object({collection:x.string,dimension:x.number.optional}),void 0,async({collection:$,dimension:Z},X)=>{let Q=X.capabilities.store;if(!Q?.createCollection)throw Error("Capability 'store' missing or does not support createCollection.");let K=T($,X),Y=T(Z,X);return Q.createCollection(K,void 0,Y)},{docs:"Create a vector store collection",cost:5}),j8=f("storeVectorAdd",x.object({collection:x.string,doc:x.any}),void 0,async({collection:$,doc:Z},X)=>{let Q=X.capabilities.store;if(!Q?.vectorAdd)throw Error("Capability 'store' missing or does not support vectorAdd.");let K=T($,X),Y=T(Z,X);return Q.vectorAdd(K,Y)},{docs:"Add a document to a vector store collection",cost:5}),M8=f("storeSearch",x.object({collection:x.string,queryVector:x.array(x.number),k:x.number.optional,filter:x.record(x.any).optional}),x.array(x.any),async({collection:$,queryVector:Z,k:X,filter:Q},K)=>{let Y=K.capabilities.store;if(!Y?.vectorSearch)throw Error("Capability 'store' missing or does not support vectorSearch.");let H=T($,K),G=T(Z,K),W=T(X,K)??5,z=T(Q,K);return Y.vectorSearch(H,G,W,z)},{docs:"Search vector store",cost:($,Z)=>5+(T($.k,Z)??5)}),F8=f("llmPredictBattery",x.object({system:x.string.optional,user:x.string,tools:x.array(x.any).optional,responseFormat:x.any.optional}),x.object({role:x.string.optional,content:x.string.optional,tool_calls:x.array(x.any).optional}),async({system:$,user:Z,tools:X,responseFormat:Q},K)=>{let Y=K.capabilities.llmBattery;if(!Y?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let H=T($,K)??"You are a helpful agent.",G=T(Z,K),W=T(X,K),z=T(Q,K);return Y.predict(H,G,W,z)},{docs:"Generate completion using LLM battery",cost:100}),P8=f("llmVision",x.object({system:x.string.optional,prompt:x.string,images:x.array(x.string),responseFormat:x.any.optional}),x.object({role:x.string.optional,content:x.string.optional,tool_calls:x.array(x.any).optional}),async({system:$,prompt:Z,images:X,responseFormat:Q},K)=>{let Y=K.capabilities.llmBattery;if(!Y?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let H=T($,K)??"You analyze images accurately and concisely.",G=T(Z,K),W=T(X,K)??[],z=T(Q,K);return Y.predict(H,{text:G,images:W},void 0,z)},{docs:"Analyze images using a vision model",timeoutMs:120000,cost:150});var z2={storeCreateCollection:B8,storeSearch:M8,storeVectorAdd:j8,storeVectorize:w8,llmPredictBattery:F8,llmVision:P8};var V8=new Map,S4=new Map;function uX($,Z){if($.length!==Z.length)throw Error("Vectors must have the same length for cosine similarity.");let X=0,Q=0,K=0;for(let Y=0;Y<$.length;Y++)X+=$[Y]*Z[Y],Q+=$[Y]*$[Y],K+=Z[Y]*Z[Y];if(Q=Math.sqrt(Q),K=Math.sqrt(K),Q===0||K===0)return 0;return X/(Q*K)}function C6(){return{async get($){return V8.get($)},async set($,Z){V8.set($,Z)},async createCollection($,Z,X){if(S4.has($))console.warn(`Collection '${$}' already exists. Overwriting.`);S4.set($,[])},async vectorAdd($,Z){let X=S4.get($);if(!X)throw Error(`Collection '${$}' not found. Create it first.`);if(!Z.embedding||!Array.isArray(Z.embedding))throw Error("Document must have an 'embedding' property that is an array of numbers.");X.push(Z)},async vectorSearch($,Z,X=5){let Q=S4.get($);if(!Q)throw Error(`Collection '${$}' not found. Create it first.`);let K=Q.map((Y)=>({doc:Y,score:uX(Z,Y.embedding)}));return K.sort((Y,H)=>H.score-Y.score),K.slice(0,X).map((Y)=>Y.doc)}}}function dX($){if(typeof $==="string")return{role:"user",content:$};let Z=[{type:"text",text:$.text}];for(let X of $.images||[])Z.push({type:"image_url",image_url:{url:X}});return{role:"user",content:Z}}var lX="http://localhost:1234/v1";function C8($,Z=lX){return{async predict(X,Q,K,Y){try{let H=Y?$.getStructuredLLM():$.getLLM(),G=[{role:"system",content:X},dX(Q)],W=await fetch(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:H.id,messages:G,temperature:0.7,tools:K,response_format:Y})});if(!W.ok)throw Error(`LLM Error: ${W.status} ${W.statusText}`);return(await W.json()).choices[0]?.message??{content:""}}catch(H){if(H.cause?.code==="ECONNREFUSED")throw Error("No LLM provider configured. Please start LM Studio or provide an API key.");throw H}},async embed(X){try{let Q=$.getEmbedding(),K=await fetch(`${Z}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Q.id,input:X})});if(!K.ok)throw Error(`Embedding Error: ${K.status}`);return(await K.json()).data[0]?.embedding??[]}catch(Q){if(Q.cause?.code==="ECONNREFUSED")throw Error("No LLM provider configured. Please start LM Studio or provide an API key.");throw Q}}}}var k0=typeof window<"u"&&typeof window.localStorage<"u";async function pX($){try{if(k0){let Z=window.localStorage.getItem(".models.cache.json");if(!Z)return null;let X=JSON.parse(Z);if(X.baseUrl!==$)return null;if(Date.now()-X.timestamp>86400000)return null;return X.models}else{let Z=await import("node:fs/promises"),Q=(await Promise.resolve().then(() => (E6(),N6))).join(process.cwd(),".models.cache.json");try{let K=await Z.readFile(Q,"utf-8"),Y=JSON.parse(K);if(Y.baseUrl!==$)return null;if(Date.now()-Y.timestamp>86400000)return null;return Y.models}catch{return null}}}catch(Z){return console.warn("⚠️ Error reading model cache:",Z),null}}async function nX($,Z){let X={timestamp:Date.now(),baseUrl:$,models:Z};try{if(k0)window.localStorage.setItem(".models.cache.json",JSON.stringify(X));else{let Q=await import("node:fs/promises"),Y=(await Promise.resolve().then(() => (E6(),N6))).join(process.cwd(),".models.cache.json");await Q.writeFile(Y,JSON.stringify(X,null,2))}}catch(Q){console.error("❌ Error writing model cache:",Q)}}var g0=async($,Z)=>{let X=new AbortController,Q=setTimeout(()=>X.abort(),60000);try{let K=await fetch($,{...Z,signal:X.signal});return clearTimeout(Q),K}catch(K){throw clearTimeout(Q),K}};async function cX($,Z){try{let X={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},Q=await g0(`${$}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Z,messages:[{role:"system",content:"You respond in JSON."},{role:"user",content:'Return JSON: {"status": "ok"}'}],response_format:X,max_tokens:20})});if(!Q.ok){if(Q.status===400)return oX($,Z);return{ok:!1,msg:`HTTP ${Q.status}`}}let K=await Q.json();return JSON.parse(K.choices[0].message.content),{ok:!0,msg:"OK (Schema)"}}catch(X){return{ok:!1,msg:X.message||"Error"}}}async function oX($,Z){try{if((await g0(`${$}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Z,messages:[{role:"user",content:'JSON: {"a":1}'}],response_format:{type:"json_object"},max_tokens:10})})).ok)return{ok:!0,msg:"OK (Legacy Mode)"};return{ok:!1,msg:"Not Supported"}}catch{return{ok:!1,msg:"Legacy Fail"}}}async function sX($,Z){try{return(await g0(`${$}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Z,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function aX($,Z){try{let X=await g0(`${$}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Z,input:"test"})});if(!X.ok)return null;return(await X.json()).data[0]?.embedding?.length??null}catch{return null}}var rX="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function tX($,Z){try{return(await g0(`${$}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Z,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:rX}}]}],max_tokens:10})})).ok}catch{return!1}}async function u8($){let Z=await pX($),X=[];try{let H=await fetch(`${$}/models`);if(!H.ok)throw Error("Could not connect");X=(await H.json()).data.map((W)=>W.id).sort()}catch(H){if(Z)return console.log("⚠️ LM Studio unavailable, using cached model audit."),Z;return console.error("❌ Failed to connect to LM Studio."),[]}if(Z){let H=Z.map((G)=>G.id).sort();if(JSON.stringify(X)===JSON.stringify(H))return console.log("✅ Using cached model audit."),Z;console.log("\uD83D\uDD0D Model list changed. Re-running audit...")}console.log("\uD83D\uDD0D Scanning models (this may take a moment)...");let Q=[],K=X.map((H)=>({id:H})),Y;if(!k0)Y=await import("node:readline");for(let H of K){if(!k0&&Y)Y.cursorTo(process.stdout,0),process.stdout.write(`\uD83D\uDC49 Testing: ${H.id}...`),Y.clearLine(process.stdout,1);let G="Unknown",W=!1,z=!1,J="",L=void 0,_=await sX($,H.id),U=await aX($,H.id);if(U)L=U;if(_){G="LLM";let q=await cX($,H.id);if(W=q.ok,z=await tX($,H.id),J=W?q.msg:`Fail: ${q.msg}`,z)J+=" +Vision"}else if(U)G="Embedding",J=`OK (Dim: ${U})`;else J="LLM Fail";Q.push({id:H.id,type:G,structuredOutput:W,vision:z,dimension:L,status:J})}if(!k0&&Y)Y.cursorTo(process.stdout,0),Y.clearLine(process.stdout,0);return console.log(`
|
|
435
|
-
`),console.table(Q),await nX($,Q),console.log("\uD83D\uDCDD Audit results saved to cache."),Q}var eX="http://localhost:1234/v1";class T6{baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;constructor($=eX){this.baseUrl=$}async audit(){this.models=await u8(this.baseUrl),this.selectDefaults()}selectDefaults(){if(this.defaultEmbedding=this.models.find(($)=>$.type==="Embedding")||null,this.defaultLLM=this.models.find(($)=>$.type==="LLM")||null,this.defaultStructuredLLM=this.models.find(($)=>$.type==="LLM"&&$.structuredOutput)||null,!this.defaultEmbedding)console.warn("⚠️ No embedding model found.");if(!this.defaultLLM)console.warn("⚠️ No LLM found.");if(!this.defaultStructuredLLM)console.warn("⚠️ No LLM with structured output support found.")}getModels(){return this.models}_setDefaultModel($,Z,X,Q){let K=this.models.find((Y)=>Y.id===$&&X(Y));if(!K)throw Error(`Model '${$}' not found or is not ${Q}.`);this[Z]=K}setDefaultLLM($){this._setDefaultModel($,"defaultLLM",(Z)=>Z.type==="LLM","an LLM")}setDefaultEmbedding($){this._setDefaultModel($,"defaultEmbedding",(Z)=>Z.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM($){this._setDefaultModel($,"defaultStructuredLLM",(Z)=>Z.type==="LLM"&&Z.structuredOutput,"a structured-output LLM")}getLLM(){if(!this.defaultLLM)throw Error("No LLM available.");return this.defaultLLM}getEmbedding(){if(!this.defaultEmbedding)throw Error("No embedding model available.");return this.defaultEmbedding}getStructuredLLM(){if(!this.defaultStructuredLLM)throw Error("No structured-output LLM available.");return this.defaultStructuredLLM}}var $Q=typeof window<"u",ZQ=$Q&&window.location.protocol==="https:",b0=null,S6=null,d8=!1;async function XQ(){if(d8)return{localModels:b0,llm:S6};if(d8=!0,ZQ)return console.log("\uD83D\uDCE1 HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{b0=new T6,await b0.audit(),S6=C8(b0)}catch($){console.warn("⚠️ Could not connect to local LLM:",$)}return{localModels:b0,llm:S6}}async function QQ(){let{localModels:$,llm:Z}=await XQ();return{vector:Z?{embed:Z.embed}:void 0,store:C6(),llmBattery:Z,models:$}}async function w2(){return QQ()}var B2={store:C6(),llmBattery:null,vector:void 0,models:null};function KQ($){if(typeof $!=="string")return!1;let Z=new Date($);return!isNaN(Z.getTime())&&$.includes("T")}function YQ(){return new Date().toISOString()}function W0($,Z,X,Q=0,K=0,Y=0,H=0){return new Date(Date.UTC($,Z-1,X,Q,K,Y,H)).toISOString()}function l8($){let Z=new Date($);if(isNaN(Z.getTime()))throw Error(`Invalid date string: ${$}`);return Z.toISOString()}function HQ($){try{return l8($)}catch{return null}}function v0($,Z){let X=new Date($);return X.setTime(X.getTime()+Z),X.toISOString()}function GQ($,Z){return v0($,Z*1000)}function WQ($,Z){return v0($,Z*60*1000)}function zQ($,Z){return v0($,Z*60*60*1000)}function m8($,Z){return v0($,Z*24*60*60*1000)}function JQ($,Z){return m8($,Z*7)}function _Q($,Z){let X=new Date($),Q=X.getUTCMonth()+Z;if(X.setUTCMonth(Q),X.getUTCMonth()!==(Q%12+12)%12)X.setUTCDate(0);return X.toISOString()}function LQ($,Z){let X=new Date($),Q=X.getUTCDate();if(X.setUTCFullYear(X.getUTCFullYear()+Z),X.getUTCDate()!==Q)X.setUTCDate(0);return X.toISOString()}function b1($,Z){return new Date($).getTime()-new Date(Z).getTime()}function UQ($,Z){return Math.floor(b1($,Z)/1000)}function qQ($,Z){return Math.floor(b1($,Z)/60000)}function DQ($,Z){return Math.floor(b1($,Z)/3600000)}function AQ($,Z){return Math.floor(b1($,Z)/86400000)}function z0($){return new Date($).getUTCFullYear()}function g4($){return new Date($).getUTCMonth()+1}function k6($){return new Date($).getUTCDate()}function IQ($){return new Date($).getUTCHours()}function RQ($){return new Date($).getUTCMinutes()}function wQ($){return new Date($).getUTCSeconds()}function BQ($){return new Date($).getUTCMilliseconds()}function jQ($){let Z=new Date($).getUTCDay();return Z===0?7:Z}function b4($,Z,X){let Q=new Date($),K={timeZone:Z,...X};return new Intl.DateTimeFormat(void 0,K).format(Q)}function MQ($,Z){return b4($,Z,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function FQ($,Z){return b4($,Z,{year:"numeric",month:"short",day:"numeric"})}function PQ($,Z){return b4($,Z,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function VQ($){return $.slice(0,10)}function i8($,Z){return b1($,Z)<0}function p8($,Z){return b1($,Z)>0}function CQ($,Z){return b1($,Z)===0}function OQ($,Z){return i8($,Z)?$:Z}function NQ($,Z){return p8($,Z)?$:Z}function EQ($){return W0(z0($),g4($),k6($))}function TQ($){return W0(z0($),g4($),k6($),23,59,59,999)}function SQ($){return W0(z0($),g4($),1)}function kQ($){let Z=new Date($);return Z.setUTCMonth(Z.getUTCMonth()+1,0),Z.setUTCHours(23,59,59,999),Z.toISOString()}function gQ($){return W0(z0($),1,1)}function bQ($){return W0(z0($),12,31,23,59,59,999)}var J0={isValid:KQ,now:YQ,from:W0,parse:l8,tryParse:HQ,addMilliseconds:v0,addSeconds:GQ,addMinutes:WQ,addHours:zQ,addDays:m8,addWeeks:JQ,addMonths:_Q,addYears:LQ,diff:b1,diffSeconds:UQ,diffMinutes:qQ,diffHours:DQ,diffDays:AQ,year:z0,month:g4,day:k6,hour:IQ,minute:RQ,second:wQ,millisecond:BQ,dayOfWeek:jQ,toLocal:b4,format:MQ,formatDate:FQ,formatTime:PQ,toDate:VQ,isBefore:i8,isAfter:p8,isEqual:CQ,min:OQ,max:NQ,startOfDay:EQ,endOfDay:TQ,startOfMonth:SQ,endOfMonth:kQ,startOfYear:gQ,endOfYear:bQ};function g6($){if(typeof $!=="string")return!1;if(!/^\d{4}-\d{2}-\d{2}$/.test($))return!1;let Z=parseInt($.slice(0,4),10),X=parseInt($.slice(5,7),10),Q=parseInt($.slice(8,10),10);if(X<1||X>12)return!1;if(Q<1)return!1;let K=[31,28,31,30,31,30,31,31,30,31,30,31],Y=X===2&&(Z%4===0&&Z%100!==0||Z%400===0)?29:K[X-1];return Q<=Y}function vQ(){return J0.toDate(J0.now())}function fQ($){let Z=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:$,year:"numeric",month:"2-digit",day:"2-digit"}).format(Z)}function A1($,Z,X){let Q=String($).padStart(4,"0"),K=String(Z).padStart(2,"0"),Y=String(X).padStart(2,"0"),H=`${Q}-${K}-${Y}`;if(!g6(H))throw Error(`Invalid date: ${$}-${Z}-${X}`);return H}function n8($){if(/^\d{4}-\d{2}-\d{2}$/.test($)){if(!g6($))throw Error(`Invalid date: ${$}`);return $}let Z=new Date($);if(isNaN(Z.getTime()))throw Error(`Invalid date string: ${$}`);let X=Z.getUTCFullYear(),Q=Z.getUTCMonth()+1,K=Z.getUTCDate();return A1(X,Q,K)}function yQ($){try{return n8($)}catch{return null}}function v4($,Z){let X=o8($);return J0.toDate(J0.addDays(X,Z))}function hQ($,Z){return v4($,Z*7)}function xQ($,Z){let X=G1($),Q=v1($),K=b6($),Y=X*12+(Q-1)+Z,H=Math.floor(Y/12),G=Y%12+1,W=f0(H,G),z=Math.min(K,W);return A1(H,G,z)}function uQ($,Z){let X=G1($),Q=v1($),K=b6($),Y=X+Z,H=f0(Y,Q),G=Math.min(K,H);return A1(Y,Q,G)}function c8($,Z){let Q=new Date($+"T00:00:00Z").getTime(),K=new Date(Z+"T00:00:00Z").getTime();return Math.round((Q-K)/86400000)}function dQ($,Z){let X=G1($),Q=v1($),K=G1(Z),Y=v1(Z);return(X-K)*12+(Q-Y)}function lQ($,Z){return G1($)-G1(Z)}function G1($){return parseInt($.slice(0,4),10)}function v1($){return parseInt($.slice(5,7),10)}function b6($){return parseInt($.slice(8,10),10)}function v6($){let Z=new Date($+"T00:00:00Z").getUTCDay();return Z===0?7:Z}function mQ($){let Z=new Date($+"T00:00:00Z"),X=Z.getUTCDay()||7;Z.setUTCDate(Z.getUTCDate()+4-X);let Q=new Date(Date.UTC(Z.getUTCFullYear(),0,1));return Math.ceil(((Z.getTime()-Q.getTime())/86400000+1)/7)}function iQ($){let Z=A1(G1($),1,1);return c8($,Z)+1}function f6($){return Math.ceil(v1($)/3)}function y6($){return $%4===0&&$%100!==0||$%400===0}function f0($,Z){let X=[31,28,31,30,31,30,31,31,30,31,30,31];if(Z===2&&y6($))return 29;return X[Z-1]}function pQ($){return y6($)?366:365}function o8($){return $+"T00:00:00.000Z"}function nQ($){return Math.floor(new Date($+"T00:00:00Z").getTime()/1000)}function cQ($){let Z=new Date($*1000);return A1(Z.getUTCFullYear(),Z.getUTCMonth()+1,Z.getUTCDate())}function h6($,Z){let X=new Date($+"T00:00:00Z"),Q={timeZone:"UTC",...Z};return new Intl.DateTimeFormat(void 0,Q).format(X)}function oQ($){return h6($,{year:"numeric",month:"long",day:"numeric"})}function sQ($){return h6($,{year:"numeric",month:"short",day:"numeric"})}function aQ($,Z){return $<Z}function rQ($,Z){return $>Z}function tQ($,Z){return $===Z}function eQ($,Z){return $<Z?$:Z}function $K($,Z){return $>Z?$:Z}function ZK($,Z,X){return $>=Z&&$<=X}function XK($){return A1(G1($),v1($),1)}function QK($){let Z=G1($),X=v1($);return A1(Z,X,f0(Z,X))}function KK($){let X=(f6($)-1)*3+1;return A1(G1($),X,1)}function YK($){let X=f6($)*3;return A1(G1($),X,f0(G1($),X))}function HK($){return A1(G1($),1,1)}function GK($){return A1(G1($),12,31)}function WK($){let Z=v6($);return v4($,-(Z-1))}function zK($){let Z=v6($);return v4($,7-Z)}var JK={isValid:g6,today:vQ,todayIn:fQ,from:A1,parse:n8,tryParse:yQ,addDays:v4,addWeeks:hQ,addMonths:xQ,addYears:uQ,diff:c8,diffMonths:dQ,diffYears:lQ,year:G1,month:v1,day:b6,dayOfWeek:v6,weekOfYear:mQ,dayOfYear:iQ,quarter:f6,isLeapYear:y6,daysInMonth:f0,daysInYear:pQ,toTimestamp:o8,toUnix:nQ,fromUnix:cQ,format:h6,formatLong:oQ,formatShort:sQ,isBefore:aQ,isAfter:rQ,isEqual:tQ,min:eQ,max:$K,isBetween:ZK,startOfMonth:XK,endOfMonth:QK,startOfQuarter:KK,endOfQuarter:YK,startOfYear:HK,endOfYear:GK,startOfWeek:WK,endOfWeek:zK};export{RX as xmlParse,G6 as wrap,vZ as whileLoop,_X as vectorSearch,mZ as varsLet,lZ as varsImport,iZ as varsExport,xZ as varSet,dZ as varGet,H6 as validateArgs,MX as uuid,i4 as typeToString,$0 as typeOf,K0 as typeDescriptorToTS,V1 as typeDescriptorToJSONSchema,yZ as tryCatch,yY as transpileWithCache,E0 as transpileToJS,qX as transpileCode,T4 as transpile,w0 as transformFunction,hY as tjsWithCache,fY as tjs,u5 as testUtils,$X as template,x7 as stripTjsPreamble,A4 as stripModuleSyntax,zX as storeSet,JX as storeQuery,CX as storeProcedure,WX as storeGet,tZ as split,IZ as setGlobalCache,D1 as seq,pZ as scope,u1 as runtime,DX as runCode,fZ as ret,T as resolveValue,M6 as resolveProcedureToken,OX as releaseProcedure,n7 as registerWasmBlock,ZX as regexMatch,oZ as reduce,jX as random,aZ as push,G0 as procedureStore,m0 as preprocess,XX as pick,I7 as parseReturnType,E1 as parseParameter,P1 as parse,QX as omit,KX as merge,wX as memoize,nZ as map,W5 as lookupVariable,LX as llmPredict,BZ as lint,rZ as len,YX as keys,IX as jsonStringify,AX as jsonParse,eZ as join,o4 as isValidUrl,s4 as isValidTimestamp,a4 as isValidLegalDate,T1 as isRuntimeType,j6 as isProcedureToken,C1 as isError,PZ as isAgentError,p7 as instantiateWasm,W6 as installRuntime,z1 as inferTypeFromValue,bZ as iff,qZ as hashSourceSync,M4 as hashSource,F6 as hash,uY as getToolDefinitions,C6 as getStoreCapabilityDefault,w2 as getStandardCapabilities,a as getLocation,C8 as getLLMCapability,F4 as getGlobalCache,QQ as getBatteries,FZ as generateDocsMarkdown,K8 as generateDocs,p$ as generateDTS,n0 as functionMetaToJSONSchema,LZ as fromTS,sZ as find,cZ as filter,GX as fetch,n4 as extractTests,A0 as extractTDoc,B1 as extractLiteralValue,F7 as expectFunction,x1 as exampleToJSONSchema,e as evaluateExpr,hZ as errorAtom,M1 as error,K$ as emitRuntimeWrapper,f as defineAtom,g1 as createChildScope,U1 as createChildContext,xY as createAgent,N4 as coreAtoms,uZ as constSet,PX as consoleWarn,FX as consoleLog,VX as consoleError,O$ as compileWasmBlocks,w4 as compileToWasm,NX as clearExpiredProcedures,m1 as checkType,BX as cache,N1 as builtins,z2 as batteryAtoms,B2 as batteries,M7 as assertFunction,bY as ajs,UX as agentRun,Y4 as Union,K1 as TypedBuilder,G5 as TypeError,$1 as Type,s as TranspileError,r4 as TimestampType,J0 as Timestamp,X4 as TUuid,Z4 as TUrl,o0 as TString,W4 as TRecord,t0 as TPositiveInt,G4 as TPair,s0 as TNumber,e0 as TNonEmptyString,H1 as TJS_VERSION,r0 as TInteger,$4 as TEmail,a0 as TBoolean,H4 as TArray,W1 as SyntaxError,UZ as Schema,xX as SafeFunction,B6 as PROCEDURE_TOKEN_PREFIX,K4 as Optional,Q4 as Nullable,I6 as MetadataCache,T6 as LocalModels,t4 as LegalDateType,JK as LegalDate,r1 as Generic,B0 as FunctionPredicate,hX as Eval,z4 as Enum,VZ as DEFAULT_PROCEDURE_TTL,CZ as DEFAULT_MAX_AST_SIZE,V6 as AgentVM,J1 as AgentError,bX as Agent,DY as A99};
|
|
436
|
-
|
|
437
|
-
//# debugId=097353F624C593A864756E2164756E21
|
|
433
|
+
`)}return r.trim()||"*No documentation available*"}import{s as h,validate as Tr,filter as ci}from"tosijs-schema";var kn=Symbol.for("tjs.equals");function vn(e,t){if(e!==null&&typeof e=="object"&&typeof e[kn]=="function")return e[kn](t);if(t!==null&&typeof t=="object"&&typeof t[kn]=="function")return t[kn](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)=>vn(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=>vn(e[s],t[s]))}var ae=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 rc(e){return e instanceof ae||e&&e.$error===!0}var ot=new Map,sc=3600*1e3,ic=100*1024,Sr="proc_";function wr(e){return typeof e=="string"&&e.startsWith(Sr)}function Er(e){let t=ot.get(e);if(!t)throw new Error(`Procedure not found: ${e}`);if(Date.now()>t.expiresAt)throw ot.delete(e),new Error(`Procedure expired: ${e}`);return t.ast}function oc(){return typeof crypto<"u"&&crypto.randomUUID?Sr+crypto.randomUUID():Sr+Math.random().toString(36).slice(2)+Date.now().toString(36)}var li=new Set(["__proto__","constructor","prototype"]);function ni(e){if(li.has(e))throw new Error(`Security Error: Access to '${e}' is forbidden`)}var ac=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function cc(e){try{let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")return!0;let n=t.hostname.toLowerCase();return!!(ac.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 lc(e){return!!(/\([^)]*[+*][^)]*\)[+*]/.test(e)||/\(([^|)]+)\|\1\)[+*]/.test(e)||/\(\.\*\)\+/.test(e)||/\(\.\+\)\+/.test(e)||/\(\[.*\]\+\)\+/.test(e))}function Ce(e){return{...e,state:Object.create(e.state)}}function uc(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 M(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]=M(e[r],t);return n}return Array.isArray(e)?e.map(n=>M(n,t)):e}function Ve(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 it(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:it(e[0])};if(t==="object"){let n={},r=[];for(let[s,i]of Object.entries(e))n[s]=it(i),r.push(s);return{type:"object",properties:n,required:r}}return{}}var ke={Math:Ve("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:Ve("JSON",{parse:e=>JSON.parse(e),stringify:(e,t,n)=>JSON.stringify(e,t,n)}),console:Ve("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:Ve("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:Ve("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:Ve("String",{fromCharCode:(...e)=>String.fromCharCode(...e),fromCodePoint:(...e)=>String.fromCodePoint(...e)}),Number:Ve("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=it(t),r=ci(e,n);if(r instanceof Error)throw r;return r},Schema:{...h,response:(e,t)=>{let n=t?.schema!=null?t.schema:it(t);return{type:"json_schema",json_schema:{name:e,strict:!0,schema:n}}},fromExample:e=>it(e),isValid:(e,t)=>t?.schema!=null?Tr(e,t):Tr(e,it(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 ke.Set([...t,...r])},intersection(n){let r=n?.toArray?.()??n??[];return ke.Set(t.filter(s=>r.includes(s)))},diff(n){let r=n?.toArray?.()??n??[];return ke.Set(t.filter(s=>!r.includes(s)))},forEach(n){t.forEach(n)},map(n){return ke.Set(t.map(n))},filter(n){return ke.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})()},jn={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."},fc=.01,ri=1e-4,si=.001,pc=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-=fc,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 ke)return ke[e.name];if(e.name in jn)throw new Error(jn[e.name]);return}case"member":{let n=Q(e.object,t);if(e.optional&&n==null)return;let r=e.property;return ni(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 ae("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 vn(n,r);case"!=":return!vn(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 ae(s,"Error");return}if(e.callee in ke){let r=ke[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 jn?new Error(jn[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(ni(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&&pc.has(r)){let a=0;if(typeof o=="string"?a=o.length*ri:Array.isArray(o)?a=o.length*si:typeof o=="object"&&o!==null&&(a=Object.keys(o).length*si),t.fuel.current-=a,t.fuel.current<=0){t.error=new ae("Out of Fuel",`expr.${r}`);return}}return o}default:throw new Error(`Unknown expression type: ${e.$expr}`)}}function D(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:p,result:f,...m}=l;if(u.error)return;let d=u.trace?{...u.state}:null,y=u.fuel.current,x,E;try{let _=u.costOverrides?.[e],b=_!==void 0?_:a,T=typeof b=="function"?b(m,u):b;if((u.fuel.current-=T)<=0){u.error=new ae("Out of Fuel",e);return}let k,w=async()=>r(l,u);if(x=o>0?await Promise.race([w(),new Promise((j,C)=>{k=setTimeout(()=>C(new Error(`Atom '${e}' timed out`)),o)})]).finally(()=>clearTimeout(k)):await w(),l.result){if(u.consts.has(l.result))throw new Error(`Cannot reassign const variable '${l.result}'`);if(x!==void 0&&n&&!Tr(x,n)){u.error=new ae(`Output validation failed for '${e}'`,e);return}u.state[l.result]=x,l.resultConst&&u.consts.add(l.result)}}catch(_){E=_.message||String(_),u.error=new ae(E,e,_)}finally{if(u.trace&&d){let _=uc(d,u.state);u.trace.push({op:e,input:m,stateDiff:_,result:x,error:E,fuelBefore:y,fuelAfter:u.fuel.current,timestamp:new Date().toISOString()})}}},docs:i,timeoutMs:o,cost:a,create:l=>({op:e,...l})}}var de=D("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}),mc=D("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 de.exec({op:"seq",steps:e.then},t):e.else&&await de.exec({op:"seq",steps:e.else},t)},{docs:"If/Else",timeoutMs:0,cost:.1}),dc=D("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 de.exec({op:"seq",steps:e.body},t),t.output!==void 0)return}},{docs:"While Loop",timeoutMs:0,cost:.1}),yc=D("return",void 0,h.any,async(e,t)=>{if(t.error)return t.output=t.error,t.error;if("value"in e){let r=M(e.value,t);if(r!=null&&!rc(r)&&(typeof r!="object"||Array.isArray(r))){let s=new ae(`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=ci(n,e.schema);r instanceof Error||(n=r)}}return t.output=n,n},{docs:"Return",cost:.1}),gc=D("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 de.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 de.exec({op:"seq",steps:e.catch},t)}},{docs:"Try/Catch",timeoutMs:0,cost:.1}),hc=D("Error",h.object({args:h.array(h.any).optional}),void 0,async(e,t)=>{let n=e.args?.[0]??"Error";t.error=new ae(String(n),"Error")},{docs:"Trigger error flow",cost:.1}),bc=D("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]=M(t,n)},{docs:"Set Variable",cost:.1}),xc=D("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]=M(t,n),n.consts.add(e)},{docs:"Set Const Variable (immutable)",cost:.1}),Tc=D("varGet",h.object({key:h.string}),h.any,async({key:e},t)=>M(e,t),{docs:"Get Variable",cost:.1}),Sc=D("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]=M({$kind:"arg",path:n},t);else for(let[n,r]of Object.entries(e))t.state[n]=M({$kind:"arg",path:r},t)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:.2}),wc=D("varsLet",h.record(h.any),void 0,async(e,t)=>{for(let n of Object.keys(e))n==="op"||n==="result"||(t.state[n]=M(e[n],t))},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:.1}),Ec=D("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]=M(r,t);else for(let[r,s]of Object.entries(e))n[r]=M(s,t);return n},{docs:"Export variables from the current scope, with optional renaming.",cost:.2}),_c=D("scope",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{let n=Ce(t);await de.exec({op:"seq",steps:e},n),n.output!==void 0&&(t.output=n.output)},{docs:"Create new scope",timeoutMs:0,cost:.1}),$c=D("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=M(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=Ce(r);a.state[t]=o,await de.exec({op:"seq",steps:n},a),s.push(a.state.result??null)}return s},{docs:"Map Array",timeoutMs:0,cost:1}),kc=D("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=M(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=Ce(r);a.state[t]=o,Q(n,a)&&s.push(o)}return s},{docs:"Filter Array",timeoutMs:0,cost:1}),jc=D("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=M(e,i),a=M(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=Ce(i);u.state[t]=l,u.state[n]=c,await de.exec({op:"seq",steps:s},u),c=u.state.result??c}return c},{docs:"Reduce Array",timeoutMs:0,cost:1}),vc=D("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=M(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=Ce(r);if(o.state[t]=i,Q(n,o))return i}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),Ac=D("push",h.object({list:h.array(h.any),item:h.any}),h.array(h.any),async({list:e,item:t},n)=>{let r=M(e,n),s=M(t,n);return Array.isArray(r)&&r.push(s),r},{docs:"Push to Array",cost:1}),Mc=D("len",h.object({list:h.any}),h.number,async({list:e},t)=>{let n=M(e,t);return Array.isArray(n)||typeof n=="string"?n.length:0},{docs:"Length",cost:1}),Cc=D("split",h.object({str:h.string,sep:h.string}),h.array(h.string),async({str:e,sep:t},n)=>M(e,n).split(M(t,n)),{docs:"Split String",cost:1}),Rc=D("join",h.object({list:h.array(h.string),sep:h.string}),h.string,async({list:e,sep:t},n)=>M(e,n).join(M(t,n)),{docs:"Join String",cost:1}),Nc=D("template",h.object({tmpl:h.string,vars:h.record(h.any)}),h.string,async({tmpl:e,vars:t},n)=>M(e,n).replace(/\{\{(\w+)\}\}/g,(s,i)=>String(M(t[i],n)??"")),{docs:"String Template",cost:1}),Pc=D("regexMatch",h.object({pattern:h.string,value:h.any}),h.boolean,async({pattern:e,value:t},n)=>{if(lc(e))throw new Error(`Suspicious regex pattern rejected (potential ReDoS): ${e}`);let r=M(t,n);return new RegExp(e).test(r)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),Ic=D("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=M(e,n),s=M(t,n),i={};return r&&Array.isArray(s)&&s.forEach(o=>i[o]=r[o]),i},{docs:"Pick Keys",cost:1}),Dc=D("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=M(e,n),s=new Set(M(t,n)),i={};return r&&Object.keys(r).forEach(o=>{s.has(o)||(i[o]=r[o])}),i},{docs:"Omit Keys",cost:1}),Oc=D("merge",h.object({a:h.record(h.any),b:h.record(h.any)}),h.record(h.any),async({a:e,b:t},n)=>({...M(e,n),...M(t,n)}),{docs:"Merge Objects",cost:1}),Lc=D("keys",h.object({obj:h.record(h.any)}),h.array(h.string),async({obj:e},t)=>Object.keys(M(e,t)??{}),{docs:"Object Keys",cost:1}),ii=10,oi="X-Agent-Depth";function Bc(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 Fc=D("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=M(e.url,t),r=M(e.method,t),s=M(e.headers,t)||{},i=M(e.body,t),o=M(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,[oi]:String(a+1)},body:i,signal:t.signal,responseType:o});let c=t.context?.allowedFetchDomains;if(c){if(!Bc(n,c))throw new Error(`Fetch blocked: domain not in allowlist. Allowed: ${c.join(", ")}`)}else{if(cc(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}`)}}if(typeof globalThis.fetch=="function"){let l=await globalThis.fetch(n,{method:r,headers:{...s,[oi]:String(a+1)},body:i?JSON.stringify(i):void 0,signal:t.signal});if(o==="dataUrl"){let p=await l.arrayBuffer(),f=new Uint8Array(p),m="";for(let x=0;x<f.length;x++)m+=String.fromCharCode(f[x]);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}),Uc=D("storeGet",h.object({key:h.string}),h.any,async({key:e},t)=>{let n=M(e,t);return t.capabilities.store?.get(n)},{docs:"Store Get",cost:5}),qc=D("storeSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{let r=M(e,n),s=M(t,n);return n.capabilities.store?.set(r,s)},{docs:"Store Set",cost:5}),Jc=D("storeQuery",h.object({query:h.any}),h.array(h.any),async({query:e},t)=>t.capabilities.store?.query?.(M(e,t))??[],{docs:"Store Query",cost:5}),Wc=D("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?.(M(e,r),M(t,r),M(n,r))??[],{docs:"Vector Search",cost:(e,t)=>5+(M(e.k,t)??5)}),Vc=D("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(M(e,n),M(t,n))},{docs:"LLM Predict",timeoutMs:12e4,cost:100}),Kc=D("agentRun",h.object({agentId:h.any,input:h.any}),h.any,async({agentId:e,input:t},n)=>{let r=M(e,n),s=M(t,n),i=s;if(s&&typeof s=="object"&&!Array.isArray(s)){i={};for(let a in s)i[a]=M(s[a],n)}if(wr(r)){let a=Er(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}),zc=D("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=M(e,t);try{return t.capabilities.code.transpile(n)}catch(r){throw new Error(`Code transpilation failed: ${r.message}`)}},{docs:"Transpile AsyncJS code to AST",cost:1}),ai=10,Gc=D("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>=ai)throw new Error(`runCode recursion limit exceeded (max ${ai}). 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=M(e,n),i=t?M(t,n):{},o;try{o=n.capabilities.code.transpile(s)}catch(c){throw new Error(`Code transpilation failed: ${c.message}`)}if(o.op!=="seq")throw new Error("Transpiled code must be a seq node");let a=Ce(n);if(a.args=i,a.output=void 0,a.runCodeDepth=r+1,await de.exec(o,a),a.error){n.error=a.error;return}return a.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),Hc=D("jsonParse",h.object({str:h.string}),h.any,async({str:e},t)=>JSON.parse(M(e,t)),{docs:"Parse JSON",cost:1}),Zc=D("jsonStringify",h.object({value:h.any}),h.string,async({value:e},t)=>JSON.stringify(M(e,t)),{docs:"Stringify JSON",cost:1}),Yc=D("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(M(e,t))},{docs:"Parse XML",cost:1}),Xc=D("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=M(e,n)??await _r.exec({value:t,algorithm:"SHA-256"},n);if(n.memo.has(r))return n.memo.get(r);let s=Ce(n);await de.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}),Qc=D("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:${M(e,r)??await _r.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=Ce(r);await de.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}),el=D("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=M(n,s)??"float",o=M(r,s)??10,a=M(e,s)??0,c=M(t,s)??1;if(i==="base36"){let f="0123456789abcdefghijklmnopqrstuvwxyz",m="";if(typeof crypto<"u"&&crypto.getRandomValues){let d=new Uint8Array(o);crypto.getRandomValues(d);for(let y=0;y<o;y++)m+=f[d[y]%36]}else for(let d=0;d<o;d++)m+=f.charAt(Math.floor(Math.random()*36));return m}let l;if(typeof crypto<"u"&&crypto.getRandomValues){let f=new Uint32Array(1);crypto.getRandomValues(f),l=f[0]/4294967296}else l=Math.random();let u=c-a,p=l*u+a;return i==="integer"?Math.floor(p):p},{docs:"Generate Random",cost:1}),tl=D("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}),_r=D("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(M(e,n)),s=M(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}),nl=D("consoleLog",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=M(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}),rl=D("consoleWarn",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=M(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}),sl=D("consoleError",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=M(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.error=new ae(r,"console.error")},{docs:"Emit error and stop",cost:.1}),il=D("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=M(e,r),i=t?M(t,r):sc,o=n?M(n,r):ic;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=oc(),l=Date.now();return ot.set(c,{ast:s,createdAt:l,expiresAt:l+i}),c},{docs:"Store an AST and return a token for later execution",cost:1}),ol=D("releaseProcedure",h.object({token:h.string}),h.boolean,async({token:e},t)=>{let n=M(e,t);return ot.delete(n)},{docs:"Release a stored procedure by token",cost:.1}),al=D("clearExpiredProcedures",void 0,h.number,async()=>{let e=Date.now(),t=0;for(let[n,r]of ot)e>r.expiresAt&&(ot.delete(n),t++);return t},{docs:"Clear all expired procedures and return count",cost:.5}),An={seq:de,if:mc,while:dc,return:yc,try:gc,Error:hc,varSet:bc,constSet:xc,varGet:Tc,varsImport:Sc,varsLet:wc,varsExport:Ec,scope:_c,map:$c,filter:kc,reduce:jc,find:vc,push:Ac,len:Mc,split:Cc,join:Rc,template:Nc,regexMatch:Pc,pick:Ic,omit:Dc,merge:Oc,keys:Lc,httpFetch:Fc,storeGet:Uc,storeSet:qc,storeQuery:Jc,storeVectorSearch:Wc,llmPredict:Vc,agentRun:Kc,transpileCode:zc,runCode:Gc,jsonParse:Hc,jsonStringify:Zc,xmlParse:Yc,memoize:Xc,cache:Qc,random:el,uuid:tl,hash:_r,consoleLog:nl,consoleWarn:rl,consoleError:sl,storeProcedure:il,releaseProcedure:ol,clearExpiredProcedures:al};var cl=new Set(["true","false","null","undefined","and","or","not"]);function ll(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=>!cl.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 Mn(e,t){ll(e,t);let n=ul(e),r=di(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}
|
|
434
|
+
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return r.node}function ul(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 di(e,t,n){return fl(e,t,n)}function fl(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}=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}=pi(e,t,n),i=["==","!=",">","<",">=","<="];for(;i.includes(e[s]);){let o=e[s++],{node:a,pos:c}=pi(e,s,n);r={$expr:"binary",op:o,left:r,right:a},s=c}return{node:r,pos:s}}function pi(e,t,n){let{node:r,pos:s}=mi(e,t,n);for(;e[s]==="+"||e[s]==="-";){let i=e[s++],{node:o,pos:a}=mi(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function mi(e,t,n){let{node:r,pos:s}=$r(e,t,n);for(;e[s]==="*"||e[s]==="/"||e[s]==="%";){let i=e[s++],{node:o,pos:a}=$r(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function $r(e,t,n){if(e[t]==="!"||e[t]==="-"){let r=e[t++],{node:s,pos:i}=$r(e,t,n);return{node:{$expr:"unary",op:r,argument:s},pos:i}}return pl(e,t,n)}function pl(e,t,n){let r=e[t];if(r==="("){let{node:s,pos:i}=di(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 Ke=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=Mn(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=Mn(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=Mn(r,s),o=this.atoms.filter;return this.add(o.create({items:t,as:n,condition:i}))}find(t,n,r,s={}){let i=Mn(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}))}},ml={take(e){return new Ke(An)},custom(e){return new Ke(e)},args(e){return{$kind:"arg",path:e}},val(e){return e}},zf=ml;import{validate as dl}from"tosijs-schema";function Mt(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=we(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),o=Jt(n,t.filename),{ast:a,signature:c,warnings:l}=bt(o,s,r,t,i);return{ast:a,signature:c,warnings:l}}var yl=10,Cn=class{atoms;constructor(t={}){this.atoms={...An,...t}}get builder(){return new Ke(this.atoms)}get Agent(){return new Ke(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(wr(t))s=Er(t);else try{s=Mt(t).ast}catch(d){throw new Error(`AJS transpilation failed: ${d.message}`)}else s=t;let i=r.fuel??1e3,o=r.timeoutMs??i*yl,a=r.capabilities??{},c=[];if(!a.store){let d=new Map,y=!1;a.store={get:async x=>(y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.get(x)),set:async(x,E)=>{y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.set(x,E)}}}let l=new AbortController,u=setTimeout(()=>l.abort(),o);r.signal&&r.signal.addEventListener("abort",()=>l.abort());let p={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&&(p.trace=[]),s.op!=="seq")throw new Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let f=s.inputSchema;if(f&&!dl(n,f)){let d=new ae("Input validation failed: args do not match expected schema","vm.run");return{result:d,error:d,fuelUsed:0,trace:p.trace,warnings:c.length>0?c:void 0}}try{await Promise.race([this.resolve("seq")?.exec(s,p),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)p.error=new ae(`Execution timeout after ${o}ms (fuel: ${i}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw d}finally{clearTimeout(u)}p.error&&p.output===void 0&&(p.output=p.error);let m=[...c,...p.warnings??[]];return{result:p.output,error:p.error,fuelUsed:i-p.fuel.current,trace:p.trace,warnings:m.length>0?m:void 0}}};var gl=null,yi=()=>gl??=new Cn;function ze(e){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let t of e)ze(t);return}e.op==="return"&&"value"in e&&(e.value={__result:e.value}),e.steps&&ze(e.steps),e.then&&ze(e.then),e.else&&ze(e.else),e.body&&ze(e.body)}}async function hl(e){let{code:t,context:n={},fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=yi(),c=/\breturn\b/.test(t)?`function __eval() { ${t} }`:`function __eval() { return (${t}) }`;try{let{ast:l}=Mt(c);ze(l);let u=await o.run(l,n,{fuel:r,timeoutMs:s,capabilities:i}),p=u.result;return{result:p&&typeof p=="object"&&"__result"in p?p.__result:p,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 bl(e){let{body:t,params:n=[],fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=yi(),c=`function __safeFn(${n.join(", ")}) { ${t} }`,{ast:l}=Mt(c);return ze(l),async(...u)=>{let p={};for(let f=0;f<n.length;f++)p[n[f]]=u[f];try{let f=await o.run(l,p,{fuel:r,timeoutMs:s,capabilities:i}),m=f.result;return{result:m&&typeof m=="object"&&"__result"in m?m.__result:m,fuelUsed:f.fuelUsed,error:f.error?{message:f.error.message||String(f.error)}:void 0}}catch(f){return{result:void 0,fuelUsed:r,error:{message:f.message||String(f)}}}}}function Rn(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=we(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),o=Jt(n,t.filename),{ast:a,signature:c,warnings:l}=bt(o,s,r,t,i);return{ast:a,signature:c,warnings:l}}function pp(e,...t){if(typeof e=="string")return Rn(e).ast;let n=e.reduce((r,s,i)=>r+s+(t[i]!==void 0?String(t[i]):""),"");return Rn(n).ast}function dp(e,t,...n){if(typeof e=="string")return vt(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 vt(s)}async function yp(e,t={},n){let r=n??await _n(),s=await r.getTranspile(e);if(s)return{ast:s.ast,signature:s.signature,warnings:s.warnings};let i=Rn(e,t);return r.setTranspile(e,{ast:i.ast,signature:i.signature,warnings:i.warnings}),i}async function gp(e,t={},n){let r=n??await _n(),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=vt(e,t);return r.setTJS(e,{code:i.code,types:i.types,testRunner:i.testRunner,testCount:i.testCount,warnings:i.warnings}),i}function hp(e,t,n){let{ast:r,signature:s}=Rn(e),i=async o=>(await t.run(r,o,n)).result;return i.signature=s,i.ast=r,i}function bp(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]=Ee(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 B}from"tosijs-schema";var gi=D("storeVectorize",B.object({text:B.string,model:B.string.optional}),B.array(B.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=M(e,t);return n.embed(r)},{docs:"Generate embeddings using vector battery",cost:20}),hi=D("storeCreateCollection",B.object({collection:B.string,dimension:B.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=M(e,n),i=M(t,n);return r.createCollection(s,void 0,i)},{docs:"Create a vector store collection",cost:5}),bi=D("storeVectorAdd",B.object({collection:B.string,doc:B.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=M(e,n),i=M(t,n);return r.vectorAdd(s,i)},{docs:"Add a document to a vector store collection",cost:5}),xi=D("storeSearch",B.object({collection:B.string,queryVector:B.array(B.number),k:B.number.optional,filter:B.record(B.any).optional}),B.array(B.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=M(e,s),a=M(t,s),c=M(n,s)??5,l=M(r,s);return i.vectorSearch(o,a,c,l)},{docs:"Search vector store",cost:(e,t)=>5+(M(e.k,t)??5)}),Ti=D("llmPredictBattery",B.object({system:B.string.optional,user:B.string,tools:B.array(B.any).optional,responseFormat:B.any.optional}),B.object({role:B.string.optional,content:B.string.optional,tool_calls:B.array(B.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=M(e,s)??"You are a helpful agent.",a=M(t,s),c=M(n,s),l=M(r,s);return i.predict(o,a,c,l)},{docs:"Generate completion using LLM battery",cost:100}),Si=D("llmVision",B.object({system:B.string.optional,prompt:B.string,images:B.array(B.string),responseFormat:B.any.optional}),B.object({role:B.string.optional,content:B.string.optional,tool_calls:B.array(B.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=M(e,s)??"You analyze images accurately and concisely.",a=M(t,s),c=M(n,s)??[],l=M(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 Up={storeCreateCollection:hi,storeSearch:xi,storeVectorAdd:bi,storeVectorize:gi,llmPredictBattery:Ti,llmVision:Si};var wi=new Map,Nn=new Map;function xl(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 kr(){return{async get(e){return wi.get(e)},async set(e,t){wi.set(e,t)},async createCollection(e,t,n){Nn.has(e)&&console.warn(`Collection '${e}' already exists. Overwriting.`),Nn.set(e,[])},async vectorAdd(e,t){let n=Nn.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=Nn.get(e);if(!r)throw new Error(`Collection '${e}' not found. Create it first.`);let s=r.map(i=>({doc:i,score:xl(t,i.embedding)}));return s.sort((i,o)=>o.score-i.score),s.slice(0,n).map(i=>i.doc)}}}function Tl(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 Sl="http://localhost:1234/v1";function Ei(e,t=Sl){return{async predict(n,r,s,i){try{let o=i?e.getStructuredLLM():e.getLLM(),a=[{role:"system",content:n},Tl(r)],c=await fetch(`${t}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:o.id,messages:a,temperature:.7,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."):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."):r}}}}var Pn=".models.cache.json";var Ct=typeof window<"u"&&typeof window.localStorage<"u";async function wl(e){try{if(Ct){let t=window.localStorage.getItem(Pn);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(),Pn);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 El(e,t){let n={timestamp:Date.now(),baseUrl:e,models:t};try{if(Ct)window.localStorage.setItem(Pn,JSON.stringify(n));else{let r=await import("node:fs/promises"),i=(await import("node:path")).join(process.cwd(),Pn);await r.writeFile(i,JSON.stringify(n,null,2))}}catch(r){console.error("\u274C Error writing model cache:",r)}}var Rt=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 _l(e,t){try{let n={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},r=await Rt(`${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?$l(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 $l(e,t){try{return(await Rt(`${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 kl(e,t){try{return(await Rt(`${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 jl(e,t){try{let n=await Rt(`${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 vl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function Al(e,t){try{return(await Rt(`${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:vl}}]}],max_tokens:10})})).ok}catch{return!1}}async function _i(e){let t=await wl(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;Ct||(i=await import("node:readline"));for(let o of s){!Ct&&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="",p,f=await kl(e,o.id),m=await jl(e,o.id);if(m&&(p=m),f){a="LLM";let d=await _l(e,o.id);c=d.ok,l=await Al(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:p,status:u})}return!Ct&&i&&(i.cursorTo(process.stdout,0),i.clearLine(process.stdout,0)),console.log(`
|
|
435
|
+
`),console.table(r),await El(e,r),console.log("\u{1F4DD} Audit results saved to cache."),r}var Ml="http://localhost:1234/v1",In=class{constructor(t=Ml){this.baseUrl=t}baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;async audit(){this.models=await _i(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 Cl=typeof window<"u",Rl=Cl&&window.location.protocol==="https:",Nt=null,jr=null,$i=!1;async function Nl(){if($i)return{localModels:Nt,llm:jr};if($i=!0,Rl)return console.log("\u{1F4E1} HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{Nt=new In,await Nt.audit(),jr=Ei(Nt)}catch(e){console.warn("\u26A0\uFE0F Could not connect to local LLM:",e)}return{localModels:Nt,llm:jr}}async function Pl(){let{localModels:e,llm:t}=await Nl();return{vector:t?{embed:t.embed}:void 0,store:kr(),llmBattery:t,models:e}}async function Yp(){return Pl()}var Xp={store:kr(),llmBattery:null,vector:void 0,models:null};function Il(e){if(typeof e!="string")return!1;let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")}function Dl(){return new Date().toISOString()}function at(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 ki(e){let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);return t.toISOString()}function Ol(e){try{return ki(e)}catch{return null}}function Pt(e,t){let n=new Date(e);return n.setTime(n.getTime()+t),n.toISOString()}function Ll(e,t){return Pt(e,t*1e3)}function Bl(e,t){return Pt(e,t*60*1e3)}function Fl(e,t){return Pt(e,t*60*60*1e3)}function ji(e,t){return Pt(e,t*24*60*60*1e3)}function Ul(e,t){return ji(e,t*7)}function ql(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 Jl(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 Re(e,t){return new Date(e).getTime()-new Date(t).getTime()}function Wl(e,t){return Math.floor(Re(e,t)/1e3)}function Vl(e,t){return Math.floor(Re(e,t)/(60*1e3))}function Kl(e,t){return Math.floor(Re(e,t)/(3600*1e3))}function zl(e,t){return Math.floor(Re(e,t)/(1440*60*1e3))}function ct(e){return new Date(e).getUTCFullYear()}function Dn(e){return new Date(e).getUTCMonth()+1}function vr(e){return new Date(e).getUTCDate()}function Gl(e){return new Date(e).getUTCHours()}function Hl(e){return new Date(e).getUTCMinutes()}function Zl(e){return new Date(e).getUTCSeconds()}function Yl(e){return new Date(e).getUTCMilliseconds()}function Xl(e){let t=new Date(e).getUTCDay();return t===0?7:t}function On(e,t,n){let r=new Date(e),s={timeZone:t,...n};return new Intl.DateTimeFormat(void 0,s).format(r)}function Ql(e,t){return On(e,t,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function eu(e,t){return On(e,t,{year:"numeric",month:"short",day:"numeric"})}function tu(e,t){return On(e,t,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function nu(e){return e.slice(0,10)}function vi(e,t){return Re(e,t)<0}function Ai(e,t){return Re(e,t)>0}function ru(e,t){return Re(e,t)===0}function su(e,t){return vi(e,t)?e:t}function iu(e,t){return Ai(e,t)?e:t}function ou(e){return at(ct(e),Dn(e),vr(e))}function au(e){return at(ct(e),Dn(e),vr(e),23,59,59,999)}function cu(e){return at(ct(e),Dn(e),1)}function lu(e){let t=new Date(e);return t.setUTCMonth(t.getUTCMonth()+1,0),t.setUTCHours(23,59,59,999),t.toISOString()}function uu(e){return at(ct(e),1,1)}function fu(e){return at(ct(e),12,31,23,59,59,999)}var lt={isValid:Il,now:Dl,from:at,parse:ki,tryParse:Ol,addMilliseconds:Pt,addSeconds:Ll,addMinutes:Bl,addHours:Fl,addDays:ji,addWeeks:Ul,addMonths:ql,addYears:Jl,diff:Re,diffSeconds:Wl,diffMinutes:Vl,diffHours:Kl,diffDays:zl,year:ct,month:Dn,day:vr,hour:Gl,minute:Hl,second:Zl,millisecond:Yl,dayOfWeek:Xl,toLocal:On,format:Ql,formatDate:eu,formatTime:tu,toDate:nu,isBefore:vi,isAfter:Ai,isEqual:ru,min:su,max:iu,startOfDay:ou,endOfDay:au,startOfMonth:cu,endOfMonth:lu,startOfYear:uu,endOfYear:fu};function Ar(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 pu(){return lt.toDate(lt.now())}function mu(e){let t=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function ye(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(!Ar(o))throw new Error(`Invalid date: ${e}-${t}-${n}`);return o}function Mi(e){if(/^\d{4}-\d{2}-\d{2}$/.test(e)){if(!Ar(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 ye(n,r,s)}function du(e){try{return Mi(e)}catch{return null}}function Ln(e,t){let n=Ri(e);return lt.toDate(lt.addDays(n,t))}function yu(e,t){return Ln(e,t*7)}function gu(e,t){let n=ce(e),r=Ne(e),s=Mr(e),i=n*12+(r-1)+t,o=Math.floor(i/12),a=i%12+1,c=It(o,a),l=Math.min(s,c);return ye(o,a,l)}function hu(e,t){let n=ce(e),r=Ne(e),s=Mr(e),i=n+t,o=It(i,r),a=Math.min(s,o);return ye(i,r,a)}function Ci(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 bu(e,t){let n=ce(e),r=Ne(e),s=ce(t),i=Ne(t);return(n-s)*12+(r-i)}function xu(e,t){return ce(e)-ce(t)}function ce(e){return parseInt(e.slice(0,4),10)}function Ne(e){return parseInt(e.slice(5,7),10)}function Mr(e){return parseInt(e.slice(8,10),10)}function Cr(e){let t=new Date(e+"T00:00:00Z").getUTCDay();return t===0?7:t}function Tu(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 Su(e){let t=ye(ce(e),1,1);return Ci(e,t)+1}function Rr(e){return Math.ceil(Ne(e)/3)}function Nr(e){return e%4===0&&e%100!==0||e%400===0}function It(e,t){let n=[31,28,31,30,31,30,31,31,30,31,30,31];return t===2&&Nr(e)?29:n[t-1]}function wu(e){return Nr(e)?366:365}function Ri(e){return e+"T00:00:00.000Z"}function Eu(e){return Math.floor(new Date(e+"T00:00:00Z").getTime()/1e3)}function _u(e){let t=new Date(e*1e3);return ye(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate())}function Pr(e,t){let n=new Date(e+"T00:00:00Z"),r={timeZone:"UTC",...t};return new Intl.DateTimeFormat(void 0,r).format(n)}function $u(e){return Pr(e,{year:"numeric",month:"long",day:"numeric"})}function ku(e){return Pr(e,{year:"numeric",month:"short",day:"numeric"})}function ju(e,t){return e<t}function vu(e,t){return e>t}function Au(e,t){return e===t}function Mu(e,t){return e<t?e:t}function Cu(e,t){return e>t?e:t}function Ru(e,t,n){return e>=t&&e<=n}function Nu(e){return ye(ce(e),Ne(e),1)}function Pu(e){let t=ce(e),n=Ne(e);return ye(t,n,It(t,n))}function Iu(e){let n=(Rr(e)-1)*3+1;return ye(ce(e),n,1)}function Du(e){let n=Rr(e)*3;return ye(ce(e),n,It(ce(e),n))}function Ou(e){return ye(ce(e),1,1)}function Lu(e){return ye(ce(e),12,31)}function Bu(e){let t=Cr(e);return Ln(e,-(t-1))}function Fu(e){let t=Cr(e);return Ln(e,7-t)}var Uu={isValid:Ar,today:pu,todayIn:mu,from:ye,parse:Mi,tryParse:du,addDays:Ln,addWeeks:yu,addMonths:gu,addYears:hu,diff:Ci,diffMonths:bu,diffYears:xu,year:ce,month:Ne,day:Mr,dayOfWeek:Cr,weekOfYear:Tu,dayOfYear:Su,quarter:Rr,isLeapYear:Nr,daysInMonth:It,daysInYear:wu,toTimestamp:Ri,toUnix:Eu,fromUnix:_u,format:Pr,formatLong:$u,formatShort:ku,isBefore:ju,isAfter:vu,isEqual:Au,min:Mu,max:Cu,isBetween:Ru,startOfMonth:Nu,endOfMonth:Pu,startOfQuarter:Iu,endOfQuarter:Du,startOfYear:Ou,endOfYear:Lu,startOfWeek:Bu,endOfWeek:Fu};export{zf as A99,ml as Agent,ae as AgentError,Cn as AgentVM,ic as DEFAULT_MAX_AST_SIZE,sc as DEFAULT_PROCEDURE_TTL,ln as Enum,hl as Eval,xt as FunctionPredicate,Ze as Generic,Uu as LegalDate,er as LegalDateType,In as LocalModels,En as MetadataCache,nn as Nullable,rn as Optional,Sr as PROCEDURE_TOKEN_PREFIX,bl as SafeFunction,Ka as Schema,ie as SyntaxError,on as TArray,Ht as TBoolean,Qt as TEmail,Zt as TInteger,oe as TJS_VERSION,Xt as TNonEmptyString,Gt as TNumber,an as TPair,Yt as TPositiveInt,cn as TRecord,zt as TString,en as TUrl,tn as TUuid,lt as Timestamp,Qn as TimestampType,z as TranspileError,ee as Type,Or as TypeError,Ke as TypedBuilder,sn as Union,Kc as agentRun,pp as ajs,xs as assertFunction,Xp as batteries,Up as batteryAtoms,ke as builtins,Qc as cache,Ue as checkType,al as clearExpiredProcedures,xn as compileToWasm,oa as compileWasmBlocks,sl as consoleError,nl as consoleLog,rl as consoleWarn,xc as constSet,An as coreAtoms,hp as createAgent,pe as createChildContext,Ce as createChildScope,D as defineAtom,Oo as emitRuntimeWrapper,Se as error,hc as errorAtom,Q as evaluateExpr,Oe as exampleToJSONSchema,Ts as expectFunction,xe as extractLiteralValue,yt as extractTDoc,Gn as extractTests,Fc as fetch,kc as filter,vc as find,Va as fromTS,Vt as functionMetaToJSONSchema,_a as generateDTS,ti as generateDocs,nc as generateDocsMarkdown,Pl as getBatteries,_n as getGlobalCache,Ei as getLLMCapability,Z as getLocation,Yp as getStandardCapabilities,kr as getStoreCapabilityDefault,bp as getToolDefinitions,_r as hash,wn as hashSource,za as hashSourceSync,mc as iff,le as inferTypeFromValue,ur as installRuntime,qs as instantiateWasm,rc as isAgentError,_e as isError,wr as isProcedureToken,ve as isRuntimeType,Xn as isValidLegalDate,Yn as isValidTimestamp,Zn as isValidUrl,Rc as join,Hc as jsonParse,Zc as jsonStringify,Lc as keys,Mc as len,Qa as lint,Vc as llmPredict,Fi as lookupVariable,$c as map,Xc as memoize,Oc as merge,Dc as omit,we as parse,je as parseParameter,ds as parseReturnType,Ic as pick,qt as preprocess,ot as procedureStore,Ac as push,el as random,jc as reduce,Pc as regexMatch,Js as registerWasmBlock,ol as releaseProcedure,Er as resolveProcedureToken,M as resolveValue,yc as ret,Gc as runCode,Le as runtime,_c as scope,de as seq,Za as setGlobalCache,Cc as split,Uc as storeGet,il as storeProcedure,Jc as storeQuery,qc as storeSet,gn as stripModuleSyntax,Ds as stripTjsPreamble,Nc as template,xo as testUtils,dp as tjs,gp as tjsWithCache,bt as transformFunction,Rn as transpile,zc as transpileCode,vt as transpileToJS,yp as transpileWithCache,gc as tryCatch,Ee as typeDescriptorToJSONSchema,rt as typeDescriptorToTS,Qe as typeOf,Kn as typeToString,tl as uuid,cr as validateArgs,Tc as varGet,bc as varSet,Ec as varsExport,Sc as varsImport,wc as varsLet,Wc as vectorSearch,dc as whileLoop,lr as wrap,Yc as xmlParse};
|
|
436
|
+
//# sourceMappingURL=index.js.map
|