tjs-lang 0.6.26 → 0.6.27
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 +1 -1
- package/dist/bin/benchmarks.d.ts +9 -0
- package/dist/bin/dev.d.ts +1 -0
- package/dist/bin/docs.d.ts +1 -0
- package/dist/bin/select-local-models.d.ts +1 -0
- package/dist/examples/modules/dist/main.d.ts +34 -0
- package/dist/examples/modules/dist/math.d.ts +120 -0
- package/dist/index.js +423 -0
- package/dist/index.js.map +45 -0
- package/dist/scripts/build-demo.d.ts +2 -0
- package/dist/scripts/build.d.ts +11 -0
- package/dist/scripts/seed-blog-rules.d.ts +2 -0
- package/dist/scripts/seed-stored-function.d.ts +2 -0
- package/dist/src/atoms/batteries.d.ts +4 -0
- package/dist/src/atoms/browser.d.ts +4 -0
- package/dist/src/atoms/index.d.ts +4 -0
- package/dist/src/batteries/audit.d.ts +9 -0
- package/dist/src/batteries/index.d.ts +28 -0
- package/dist/src/batteries/llm.d.ts +18 -0
- package/dist/src/batteries/models.d.ts +19 -0
- package/dist/src/batteries/store.d.ts +13 -0
- package/dist/src/builder.d.ts +127 -0
- package/dist/src/bun-plugin/tjs-plugin.d.ts +12 -0
- package/dist/src/cli/commands/check.d.ts +4 -0
- package/dist/src/cli/commands/convert.d.ts +20 -0
- package/dist/src/cli/commands/emit.d.ts +34 -0
- package/dist/src/cli/commands/run.d.ts +6 -0
- package/dist/src/cli/commands/test.d.ts +21 -0
- package/dist/src/cli/commands/types.d.ts +4 -0
- package/dist/src/cli/create-app.d.ts +9 -0
- package/dist/src/cli/playground.d.ts +9 -0
- package/dist/src/cli/tjs.d.ts +15 -0
- package/dist/src/cli/tjsx.d.ts +16 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/inference.types.d.ts +1 -0
- package/dist/src/lang/core.d.ts +56 -0
- package/dist/src/lang/docs.d.ts +69 -0
- package/dist/src/lang/emitters/ast.d.ts +24 -0
- package/dist/src/lang/emitters/dts.d.ts +48 -0
- package/dist/src/lang/emitters/from-ts.d.ts +94 -0
- package/dist/src/lang/emitters/js-tests.d.ts +70 -0
- package/dist/src/lang/emitters/js-wasm.d.ts +15 -0
- package/dist/src/lang/emitters/js.d.ts +175 -0
- package/dist/src/lang/eval.d.ts +63 -0
- package/dist/src/lang/index.d.ts +216 -0
- package/dist/src/lang/inference.d.ts +40 -0
- package/dist/src/lang/linter.d.ts +53 -0
- package/dist/src/lang/metadata-cache.d.ts +172 -0
- package/dist/src/lang/parser-params.d.ts +37 -0
- package/dist/src/lang/parser-transforms.d.ts +281 -0
- package/dist/src/lang/parser-types.d.ts +175 -0
- package/dist/src/lang/parser.d.ts +56 -0
- package/dist/src/lang/runtime.d.ts +488 -0
- package/dist/src/lang/schema.d.ts +35 -0
- package/dist/src/lang/tests.d.ts +94 -0
- package/dist/src/lang/transpiler.d.ts +25 -0
- package/dist/src/lang/types.d.ts +147 -0
- package/dist/src/lang/wasm.d.ts +83 -0
- package/dist/src/rbac/index.d.ts +85 -0
- package/dist/src/rbac/rules.d.ts +184 -0
- package/dist/src/runtime.d.ts +4 -0
- package/dist/src/store/index.d.ts +3 -0
- package/dist/src/store/indexeddb.d.ts +6 -0
- package/dist/src/store/interface.d.ts +90 -0
- package/dist/src/store/memory.d.ts +10 -0
- package/dist/src/test-examples.d.ts +41 -0
- package/dist/src/test-utils.d.ts +86 -0
- package/dist/src/transpiler/index.d.ts +6 -0
- package/dist/src/transpiler/parser.d.ts +4 -0
- package/dist/src/transpiler/transformer.d.ts +4 -0
- package/dist/src/transpiler/type-system/inference.d.ts +1 -0
- package/dist/src/transpiler/types.d.ts +4 -0
- package/dist/src/types/LegalDate.d.ts +241 -0
- package/dist/src/types/Timestamp.d.ts +233 -0
- package/dist/src/types/Type.d.ts +234 -0
- package/dist/src/types/index.d.ts +8 -0
- package/dist/src/vm/atoms/batteries.d.ts +6 -0
- package/dist/src/vm/atoms/browser.d.ts +18 -0
- package/dist/src/vm/atoms/index.d.ts +10 -0
- package/dist/src/vm/index.d.ts +12 -0
- package/dist/src/vm/runtime.d.ts +333 -0
- package/dist/src/vm/vm.d.ts +28 -0
- package/dist/src/vm.d.ts +4 -0
- package/dist/test-preprocess.d.ts +1 -0
- package/dist/tjs-batteries.js +4 -0
- package/dist/tjs-batteries.js.map +15 -0
- package/dist/tjs-full.js +423 -0
- package/dist/tjs-full.js.map +45 -0
- package/dist/tjs-src/runtime.d.ts +1 -0
- package/dist/tjs-transpiler.js +3 -0
- package/dist/tjs-transpiler.js.map +11 -0
- package/dist/tjs-vm.js +54 -0
- package/dist/tjs-vm.js.map +22 -0
- package/package.json +1 -1
- package/src/cli/tjs.ts +1 -1
- package/src/lang/emitters/js.ts +3 -0
- package/src/lang/parser-transforms.ts +6 -0
- package/src/lang/roundtrip.test.ts +1 -1
- package/src/lang/runtime.ts +18 -1
- package/src/lang/wasm.ts +1 -1
package/dist/index.js
ADDED
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
var f8=Object.defineProperty;var y8=(Z,$)=>()=>($||Z(($={exports:{}}).exports,$),$.exports);var h8=(Z)=>Z;function x8(Z,$){this[Z]=h8.bind(null,$)}var u8=(Z,$)=>{for(var X in $)f8(Z,X,{get:$[X],enumerable:!0,configurable:!0,set:x8.bind($,X)})};var d8=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var T4=((Z)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(Z,{get:($,X)=>(typeof require<"u"?require:$)[X]}):Z)(function(Z){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+Z+'" is not supported')});var G7=y8((WH,CZ)=>{CZ.exports={name:"tjs-lang",version:"0.6.27",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",exports:{".":{bun:"./src/index.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang":{bun:"./src/lang/index.ts",default:"./dist/lang/index.js"},"./lang/eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",default:"./dist/lang/emitters/from-ts.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",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.2.0","tosijs-ui":"^1.2.0",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.2.0"}}});var D6={};u8(D6,{sep:()=>B8,resolve:()=>F4,relative:()=>_8,posix:()=>M8,parse:()=>I8,normalize:()=>q6,join:()=>J8,isAbsolute:()=>G8,format:()=>A8,extname:()=>D8,dirname:()=>U8,delimiter:()=>R8,default:()=>RX,basename:()=>q8,_makeLong:()=>L8});function M1(Z){if(typeof Z!=="string")throw TypeError("Path must be a string. Received "+JSON.stringify(Z))}function W8(Z,$){var X="",Q=0,H=-1,K=0,Y;for(var z=0;z<=Z.length;++z){if(z<Z.length)Y=Z.charCodeAt(z);else if(Y===47)break;else Y=47;if(Y===47){if(H===z-1||K===1);else if(H!==z-1&&K===2){if(X.length<2||Q!==2||X.charCodeAt(X.length-1)!==46||X.charCodeAt(X.length-2)!==46){if(X.length>2){var W=X.lastIndexOf("/");if(W!==X.length-1){if(W===-1)X="",Q=0;else X=X.slice(0,W),Q=X.length-1-X.lastIndexOf("/");H=z,K=0;continue}}else if(X.length===2||X.length===1){X="",Q=0,H=z,K=0;continue}}if($){if(X.length>0)X+="/..";else X="..";Q=2}}else{if(X.length>0)X+="/"+Z.slice(H+1,z);else X=Z.slice(H+1,z);Q=z-H-1}H=z,K=0}else if(Y===46&&K!==-1)++K;else K=-1}return X}function BX(Z,$){var X=$.dir||$.root,Q=$.base||($.name||"")+($.ext||"");if(!X)return Q;if(X===$.root)return X+Q;return X+Z+Q}function F4(){var Z="",$=!1,X;for(var Q=arguments.length-1;Q>=-1&&!$;Q--){var H;if(Q>=0)H=arguments[Q];else{if(X===void 0)X=process.cwd();H=X}if(M1(H),H.length===0)continue;Z=H+"/"+Z,$=H.charCodeAt(0)===47}if(Z=W8(Z,!$),$)if(Z.length>0)return"/"+Z;else return"/";else if(Z.length>0)return Z;else return"."}function q6(Z){if(M1(Z),Z.length===0)return".";var $=Z.charCodeAt(0)===47,X=Z.charCodeAt(Z.length-1)===47;if(Z=W8(Z,!$),Z.length===0&&!$)Z=".";if(Z.length>0&&X)Z+="/";if($)return"/"+Z;return Z}function G8(Z){return M1(Z),Z.length>0&&Z.charCodeAt(0)===47}function J8(){if(arguments.length===0)return".";var Z;for(var $=0;$<arguments.length;++$){var X=arguments[$];if(M1(X),X.length>0)if(Z===void 0)Z=X;else Z+="/"+X}if(Z===void 0)return".";return q6(Z)}function _8(Z,$){if(M1(Z),M1($),Z===$)return"";if(Z=F4(Z),$=F4($),Z===$)return"";var X=1;for(;X<Z.length;++X)if(Z.charCodeAt(X)!==47)break;var Q=Z.length,H=Q-X,K=1;for(;K<$.length;++K)if($.charCodeAt(K)!==47)break;var Y=$.length,z=Y-K,W=H<z?H:z,G=-1,J=0;for(;J<=W;++J){if(J===W){if(z>W){if($.charCodeAt(K+J)===47)return $.slice(K+J+1);else if(J===0)return $.slice(K+J)}else if(H>W){if(Z.charCodeAt(X+J)===47)G=J;else if(J===0)G=0}break}var L=Z.charCodeAt(X+J),_=$.charCodeAt(K+J);if(L!==_)break;else if(L===47)G=J}var U="";for(J=X+G+1;J<=Q;++J)if(J===Q||Z.charCodeAt(J)===47)if(U.length===0)U+="..";else U+="/..";if(U.length>0)return U+$.slice(K+G);else{if(K+=G,$.charCodeAt(K)===47)++K;return $.slice(K)}}function L8(Z){return Z}function U8(Z){if(M1(Z),Z.length===0)return".";var $=Z.charCodeAt(0),X=$===47,Q=-1,H=!0;for(var K=Z.length-1;K>=1;--K)if($=Z.charCodeAt(K),$===47){if(!H){Q=K;break}}else H=!1;if(Q===-1)return X?"/":".";if(X&&Q===1)return"//";return Z.slice(0,Q)}function q8(Z,$){if($!==void 0&&typeof $!=="string")throw TypeError('"ext" argument must be a string');M1(Z);var X=0,Q=-1,H=!0,K;if($!==void 0&&$.length>0&&$.length<=Z.length){if($.length===Z.length&&$===Z)return"";var Y=$.length-1,z=-1;for(K=Z.length-1;K>=0;--K){var W=Z.charCodeAt(K);if(W===47){if(!H){X=K+1;break}}else{if(z===-1)H=!1,z=K+1;if(Y>=0)if(W===$.charCodeAt(Y)){if(--Y===-1)Q=K}else Y=-1,Q=z}}if(X===Q)Q=z;else if(Q===-1)Q=Z.length;return Z.slice(X,Q)}else{for(K=Z.length-1;K>=0;--K)if(Z.charCodeAt(K)===47){if(!H){X=K+1;break}}else if(Q===-1)H=!1,Q=K+1;if(Q===-1)return"";return Z.slice(X,Q)}}function D8(Z){M1(Z);var $=-1,X=0,Q=-1,H=!0,K=0;for(var Y=Z.length-1;Y>=0;--Y){var z=Z.charCodeAt(Y);if(z===47){if(!H){X=Y+1;break}continue}if(Q===-1)H=!1,Q=Y+1;if(z===46){if($===-1)$=Y;else if(K!==1)K=1}else if($!==-1)K=-1}if($===-1||Q===-1||K===0||K===1&&$===Q-1&&$===X+1)return"";return Z.slice($,Q)}function A8(Z){if(Z===null||typeof Z!=="object")throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof Z);return BX("/",Z)}function I8(Z){M1(Z);var $={root:"",dir:"",base:"",ext:"",name:""};if(Z.length===0)return $;var X=Z.charCodeAt(0),Q=X===47,H;if(Q)$.root="/",H=1;else H=0;var K=-1,Y=0,z=-1,W=!0,G=Z.length-1,J=0;for(;G>=H;--G){if(X=Z.charCodeAt(G),X===47){if(!W){Y=G+1;break}continue}if(z===-1)W=!1,z=G+1;if(X===46){if(K===-1)K=G;else if(J!==1)J=1}else if(K!==-1)J=-1}if(K===-1||z===-1||J===0||J===1&&K===z-1&&K===Y+1){if(z!==-1)if(Y===0&&Q)$.base=$.name=Z.slice(1,z);else $.base=$.name=Z.slice(Y,z)}else{if(Y===0&&Q)$.name=Z.slice(1,K),$.base=Z.slice(1,z);else $.name=Z.slice(Y,K),$.base=Z.slice(Y,z);$.ext=Z.slice(K,z)}if(Y>0)$.dir=Z.slice(0,Y-1);else if(Q)$.dir="/";return $}var B8="/",R8=":",M8,RX;var A6=d8(()=>{M8=((Z)=>(Z.posix=Z,Z))({resolve:F4,normalize:q6,isAbsolute:G8,join:J8,relative:_8,_makeLong:L8,dirname:U8,basename:q8,extname:D8,format:A8,parse:I8,sep:B8,delimiter:R8,win32:null,posix:null}),RX=M8});import*as Z7 from"acorn";class i extends Error{line;column;source;filename;constructor(Z,$,X,Q){let H=`${Q||"<source>"}:${$.line}:${$.column}`;super(`${Z} at ${H}`);this.name="TranspileError",this.line=$.line,this.column=$.column,this.source=X,this.filename=Q}}class X1 extends i{constructor(Z,$,X,Q){super(Z,$,X,Q);this.name="SyntaxError"}formatWithContext(Z=2){if(!this.source)return this.message;let $=this.source.split(`
|
|
2
|
+
`),X=this.line-1,Q=Math.max(0,X-Z),H=Math.min($.length-1,X+Z),K=[],Y=String(H+1).length;for(let z=Q;z<=H;z++){let W=String(z+1).padStart(Y),G=z===X?">":" ";if(K.push(`${G} ${W} | ${$[z]}`),z===X){let J=" ".repeat(Y+4+this.column);K.push(`${J}^ ${this.message.split(" at ")[0]}`)}}return K.join(`
|
|
3
|
+
`)}}class l8 extends i{expected;received;suggestion;constructor(Z,$,X){super(Z,$,X?.source,X?.filename);this.name="TypeError",this.expected=X?.expected,this.received=X?.received,this.suggestion=X?.suggestion}}function W1(Z){return{depth:Z.depth+1,locals:new Map,parent:Z,parameters:Z.parameters,atoms:Z.atoms,warnings:Z.warnings,source:Z.source,filename:Z.filename,options:Z.options}}function m8(Z,$){if($.locals.has(Z))return $.locals.get(Z);if($.parameters.has(Z))return $.parameters.get(Z)?.type;if($.parent)return m8(Z,$.parent);return}function p(Z){if(Z.loc)return{line:Z.loc.start.line,column:Z.loc.start.column};return{line:1,column:0}}function b0(Z,$){let X="",Q=0,H,K,Y="normal",z=[],W=[{type:"top-level",braceDepth:0}],G=0,J=()=>W[W.length-1]?.type||"top-level",L=()=>{let _=W[W.length-1];return _?.type==="class-body"&&G===_.braceDepth+1};while(Q<Z.length){let _=Z[Q],U=Z[Q+1];switch(Y){case"single-string":if(X+=_,_==="\\"&&Q+1<Z.length){X+=U,Q+=2;continue}if(_==="'")Y="normal";Q++;continue;case"double-string":if(X+=_,_==="\\"&&Q+1<Z.length){X+=U,Q+=2;continue}if(_==='"')Y="normal";Q++;continue;case"template-string":if(X+=_,_==="\\"&&Q+1<Z.length){X+=U,Q+=2;continue}if(_==="$"&&U==="{"){X+=U,Q+=2,z.push(1),Y="normal";continue}if(_==="`")Y="normal";Q++;continue;case"line-comment":if(X+=_,_===`
|
|
4
|
+
`)Y="normal";Q++;continue;case"block-comment":if(X+=_,_==="*"&&U==="/"){X+=U,Q+=2,Y="normal";continue}Q++;continue;case"regex":if(X+=_,_==="\\"&&Q+1<Z.length){X+=U,Q+=2;continue}if(_==="["){Q++;while(Q<Z.length&&Z[Q]!=="]")if(X+=Z[Q],Z[Q]==="\\"&&Q+1<Z.length)X+=Z[Q+1],Q+=2;else Q++;if(Q<Z.length)X+=Z[Q],Q++;continue}if(_==="/"){Q++;while(Q<Z.length&&/[gimsuy]/.test(Z[Q]))X+=Z[Q],Q++;Y="normal";continue}Q++;continue;case"normal":if(z.length>0){if(_==="{")z[z.length-1]++;else if(_==="}"){if(z[z.length-1]--,z[z.length-1]===0){z.pop(),X+=_,Q++,Y="template-string";continue}}}if(_==="'"){X+=_,Q++,Y="single-string";continue}if(_==='"'){X+=_,Q++,Y="double-string";continue}if(_==="`"){X+=_,Q++,Y="template-string";continue}if(_==="/"&&U==="/"){X+=_+U,Q+=2,Y="line-comment";continue}if(_==="/"&&U==="*"){X+=_+U,Q+=2,Y="block-comment";continue}if(_==="/"){let R=X.trimEnd();if(!R[R.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(R)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(R)){X+=_,Q++,Y="regex";continue}}break}if(_==="{"){G++,X+=_,Q++;continue}if(_==="}"){G--;let R=W[W.length-1];if(R&&G===R.braceDepth)W.pop();X+=_,Q++;continue}let q=Z.slice(Q).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(q){let R=q[0].slice(0,-1);X+=R,Q+=R.length,W.push({type:"class-body",braceDepth:G});continue}let I=Z.slice(Q).match(/^function\s+(\w+)\s*\(/);if(I){let R=I[1],P=I[0].length,B=Z[Q+P],F=null,N=Q+P;if(B==="?"||B==="!")if(F=B,N++,F==="!")$.unsafeFunctions.add(R);else $.safeFunctions.add(R);X+=`function ${R}(`,Q=N;let V=S0(Z,Q,"(",")");if(!V){X+=Z[Q],Q++;continue}let{content:w,endPos:C}=V;Q=C;let O=S4(w,$,!0);X+=O+")";let k=Q;while(k<Z.length&&/\s/.test(Z[k]))k++;let S=Z.slice(k,k+2);if(S==="->"||S==="-?"||S==="-!"){k+=2;while(k<Z.length&&/\s/.test(Z[k]))k++;let b=T0(Z,k);if(b){let{type:h,endPos:d}=b;if(H===void 0){if(H=h,S==="-?")K="safe";else if(S==="-!")K="unsafe"}Q=d}}continue}let M=Z.slice(Q).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/);if(M&&L()){let R=M[1],P=M[0].length,B=Q+P;X+=R+"(",Q=B;let F=S0(Z,Q,"(",")");if(!F){X+=Z[Q],Q++;continue}let{content:N,endPos:V}=F;Q=V;let w=S4(N,$,!0);X+=w+")";let C=Q;while(C<Z.length&&/\s/.test(Z[C]))C++;let O=Z.slice(C,C+2);if(O==="->"||O==="-!"||O==="-?"){C+=2;while(C<Z.length&&/\s/.test(Z[C]))C++;let k=T0(Z,C);if(k)Q=k.endPos}else if(Z[C]===":"){C++;while(C<Z.length&&/\s/.test(Z[C]))C++;let k=T0(Z,C);if(k)Q=k.endPos}continue}if(Z[Q]==="("){let R=S0(Z,Q+1,"(",")");if(!R){X+=Z[Q],Q++;continue}let{content:P,endPos:B}=R,F=B;while(F<Z.length&&/\s/.test(Z[F]))F++;let N,V=Z.slice(F,F+2);if(V==="->"||V==="-?"||V==="-!"){F+=2;while(F<Z.length&&/\s/.test(Z[F]))F++;let w=T0(Z,F);if(w){N=w.type,F=w.endPos;while(F<Z.length&&/\s/.test(Z[F]))F++}}if(Z.slice(F,F+2)==="=>"){let w=null,C=P,O=P.trimStart();if(O.startsWith("?")&&(O.length===1||/\s/.test(O[1])))w="?",C=O.slice(1);else if(O.startsWith("!")&&(O.length===1||/\s/.test(O[1])))w="!",C=O.slice(1);let k=S4(C,$,!1);X+=`(${w==="?"?"/* safe */ ":w==="!"?"/* unsafe */ ":""}${k})`,Q=B;while(Q<F&&/\s/.test(Z[Q]))X+=Z[Q],Q++;if(N)Q=F}else{let w=b0(P,$);X+=`(${w.source})`,Q=B}continue}X+=Z[Q],Q++}return{source:X,returnType:H,returnSafety:K}}function S0(Z,$,X,Q){let H=1,K=$,Y=!1,z="";while(K<Z.length&&H>0){let W=Z[K];if(!Y&&(W==="'"||W==='"'||W==="`"))Y=!0,z=W;else if(Y&&W===z&&Z[K-1]!=="\\")Y=!1;else if(!Y){if(W===X)H++;else if(W===Q)H--}K++}if(H!==0)return null;return{content:Z.slice($,K-1),endPos:K}}function S6(Z,$){let X=$;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)return null;let Q=X,H=Z[X];if(H==="{"||H==="["){let Y=H==="{"?"}":"]",z=S0(Z,X+1,H,Y);if(!z)return null;return{value:Z.slice(Q,z.endPos),endPos:z.endPos}}if(H==="'"||H==='"'||H==="`"){X++;while(X<Z.length){if(Z[X]===H&&Z[X-1]!=="\\")return X++,{value:Z.slice(Q,X),endPos:X};X++}return null}if(/[-+\d]/.test(H)){while(X<Z.length&&/[\d.eE+-]/.test(Z[X]))X++;return{value:Z.slice(Q,X),endPos:X}}let K=Z.slice(X).match(/^(true|false|null|undefined)\b/);if(K)return{value:K[1],endPos:X+K[1].length};return null}function K0(Z){return Z.replace(/(?<!\|)\|(?!\|)/g," || ")}function T0(Z,$){let X=$,Q=0,H=!1,K="",Y=!1,z=(W)=>({type:K0(Z.slice($,W).trim()),endPos:W});while(X<Z.length){let W=Z[X];if(!H&&(W==="'"||W==='"'||W==="`")){H=!0,K=W,Y=!0,X++;continue}if(H){if(W===K&&Z[X-1]!=="\\"){if(H=!1,X++,Q===0){let G=X;while(G<Z.length&&/\s/.test(Z[G]))G++;if(Z[G]==="{"){if(!Z.slice(G+1).match(/^\s*(\w+)\s*:/))return z(X)}if(Z[G]!=="|"&&Z[G]!=="&")return z(X)}continue}X++;continue}if(W==="{"||W==="["||W==="("){Q++,Y=!0,X++;continue}if(W==="}"||W==="]"||W===")"){if(Q--,Q===0){X++;let G=X;while(G<Z.length&&/\s/.test(Z[G]))G++;if(Z[G]==="|"||Z[G]==="&")continue;return z(X)}X++;continue}if(Q===0&&W==="{"){if(Y)return z(X);if(Z.slice(X+1).match(/^\s*(\w+)\s*:/)){Q++,Y=!0,X++;continue}return z(X)}if(Q===0&&(W==="|"||W==="&")){if(X++,X<Z.length&&Z[X]==="|")X++;while(X<Z.length&&/\s/.test(Z[X]))X++;continue}if(Q===0&&(/\d/.test(W)||W==="-"&&/\d/.test(Z[X+1]))){let G=X;if(Z[G]==="-")G++;while(G<Z.length&&/\d/.test(Z[G]))G++;if(G<Z.length&&Z[G]==="."&&/\d/.test(Z[G+1])){G++;while(G<Z.length&&/\d/.test(Z[G]))G++}if(G<Z.length&&(Z[G]==="e"||Z[G]==="E")){if(G++,G<Z.length&&(Z[G]==="+"||Z[G]==="-"))G++;while(G<Z.length&&/\d/.test(Z[G]))G++}Y=!0,X=G;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X<Z.length&&Z[X]==="{")return{type:K0(Z.slice($,G).trim()),endPos:G};if(Z[X]!=="|"&&Z[X]!=="&")return{type:K0(Z.slice($,G).trim()),endPos:G};continue}if(Q===0&&/[a-zA-Z_]/.test(W)){let G=X;while(G<Z.length&&/\w/.test(Z[G]))G++;Y=!0,X=G;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X<Z.length&&Z[X]==="("){Q++,X++;continue}if(X<Z.length&&Z[X]==="{"){if(!Z.slice(X+1).match(/^\s*(\w+)\s*:/)){let L=G;while(L>$&&/\s/.test(Z[L-1]))L--;return{type:K0(Z.slice($,L).trim()),endPos:G}}}if(Z[X]!=="|"&&Z[X]!=="&")return{type:K0(Z.slice($,G).trim()),endPos:G};continue}X++}if(Y)return z(X);return null}function v0(Z){let $=[],X="",Q=0,H=!1,K=!1,Y=0;while(Y<Z.length){let z=Z[Y],W=Z[Y+1];if(!K&&z==="/"&&W==="/"){H=!0,X+="//",Y+=2;continue}if(!H&&z==="/"&&W==="*"){K=!0,X+="/*",Y+=2;continue}if(H&&z===`
|
|
5
|
+
`){H=!1,X+=z,Y++;continue}if(K&&z==="*"&&W==="/"){K=!1,X+="*/",Y+=2;continue}if(H||K){X+=z,Y++;continue}if(z==="("||z==="{"||z==="[")Q++,X+=z;else if(z===")"||z==="}"||z==="]")Q--,X+=z;else if(z===","&&Q===0)$.push(X),X="";else X+=z;Y++}if(X.trim())$.push(X);return $}function S4(Z,$,X){let Q=b0(Z,{originalSource:Z,requiredParams:$.requiredParams,unsafeFunctions:$.unsafeFunctions,safeFunctions:$.safeFunctions}).source,H=v0(Q),K=!1,Y=new Set,z=(G)=>{if(X&&/^\w+$/.test(G)){if(Y.has(G))throw Error(`Duplicate parameter name '${G}'`);Y.add(G)}};return H.map((G)=>{let J=G.trim();if(!J)return G;if(X&&J.startsWith("{")&&J.endsWith("}")){let U=J.slice(1,-1);return`{ ${E6(U,$)} }`}if(X&&J.startsWith("[")&&J.endsWith("]")){let U=J.slice(1,-1);return`[ ${E6(U,$)} ]`}if(J.startsWith("...")){let U=T6(J);if(U!==-1)return J.slice(0,U).trim();return G}let L=J.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(L){let[,U,q]=L;return z(U),K=!0,`${U} = ${q}`}if(!i8(J)){let U=J.match(/^(\w+)\s*=/);if(U)z(U[1]);return K=!0,G}let _=T6(J);if(_!==-1){let U=J.slice(0,_).trim(),q=J.slice(_+1).trim();if(z(U),K&&X&&/^\w+$/.test(U));if(X&&/^\w+$/.test(U))$.requiredParams.add(U);return`${U} = ${q}`}return G}).join(",")}function E6(Z,$){return v0(Z).map((H)=>{let K=H.trim();if(!K)return H;let Y=K.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(Y){let[,G,J]=Y;$.requiredParams.add(G);let L=k0(J);return`${G} = ${L}`}let z=K.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(z){let[,G,J]=z;$.requiredParams.add(G);let L=g0(J);return`${G} = ${L}`}let W=K.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(W){let[,G,J]=W;return $.requiredParams.add(G),`${G} = ${J}`}return H}).join(", ")}function k0(Z){let $=Z.slice(1,-1).trim();return`{ ${v0($).map((H)=>{let K=H.trim();if(!K)return H;let Y=K.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(Y){let[,L,_]=Y;return`${L}: ${k0(_)}`}let z=K.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(z){let[,L,_]=z;return`${L}: ${k0(_)}`}let W=K.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(W){let[,L,_]=W;return`${L}: ${g0(_)}`}let G=K.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(G){let[,L,_]=G;return`${L}: ${g0(_)}`}let J=K.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(J){let[,L,_]=J;return`${L}: ${_}`}return H}).join(", ")} }`}function g0(Z){let $=Z.slice(1,-1).trim();return`[ ${v0($).map((H)=>{let K=H.trim();if(!K)return H;if(K.startsWith("{")&&K.endsWith("}"))return k0(K);if(K.startsWith("[")&&K.endsWith("]"))return g0(K);return H}).join(", ")} ]`}function i8(Z){let $=0,X=!1,Q=!1,H=!1,K="";for(let Y=0;Y<Z.length;Y++){let z=Z[Y];if(!H&&(z==="'"||z==='"'||z==="`")){H=!0,K=z;continue}if(H){if(z===K&&Z[Y-1]!=="\\")H=!1;continue}if(z==="("||z==="{"||z==="[")$++;else if(z===")"||z==="}"||z==="]")$--;else if($===0){if(z===":")X=!0;if(z==="="&&Z[Y+1]!==">")Q=!0}}return X&&!Q}function T6(Z){let $=0,X=!1,Q="";for(let H=0;H<Z.length;H++){let K=Z[H];if(!X&&(K==="'"||K==='"'||K==="`")){X=!0,Q=K;continue}if(X){if(K===Q&&Z[H-1]!=="\\")X=!1;continue}if(K==="("||K==="{"||K==="[")$++;else if(K===")"||K==="}"||K==="]")$--;else if($===0&&K===":")return H}return-1}function p8(Z,$){let X=Z.match($);if(!X)return null;let Q=X.index+X[0].length-1,H=1,K=Q+1;while(K<Z.length&&H>0){if(Z[K]==="{")H++;else if(Z[K]==="}")H--;K++}if(H!==0)return null;let Y=Z.slice(Q,K),z=[X[0].slice(0,-1)+Y,Y];return z.index=X.index,z}function v6(Z){let $="",X=0;while(X<Z.length){let Q=Z.slice(X).match(/^\btry\s*\{/);if(Q){let K=X+Q[0].length-1+1,Y=1,z=K;while(z<Z.length&&Y>0){let G=Z[z];if(G==="{")Y++;else if(G==="}")Y--;z++}if(Y!==0){$+=Z[X],X++;continue}if(Z.slice(z).match(/^\s*(catch|finally)\b/))$+=Z.slice(X,z),X=z;else{let G=Z.slice(K,z-1);$+=`try {${G}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,X=z}}else $+=Z[X],X++}return $}function f6(Z){let $=[],X="",Q=0,H=0;while(Q<Z.length){let K=Z.slice(Q).match(/^\bwasm\s*\{/);if(K){let Y=Q,z=Q+K[0].length,W=1,G=z;while(G<Z.length&&W>0){let V=Z[G];if(V==="{")W++;else if(V==="}")W--;G++}if(W!==0){X+=Z[Q],Q++;continue}let J=Z.slice(z,G-1),L,_=G,U=Z.slice(G).match(/^\s*fallback\s*\{/);if(U){let V=G+U[0].length;W=1;let w=V;while(w<Z.length&&W>0){let C=Z[w];if(C==="{")W++;else if(C==="}")W--;w++}if(W===0)L=Z.slice(V,w-1),_=w}let I=c8(J).map((V)=>{let w=o8(Z,Y,V);return w?`${V}: ${w}`:V}),M={id:`__tjs_wasm_${H}`,body:J,fallback:L,captures:I,start:Y,end:_};$.push(M);let R=L??J,P=I.map((V)=>V.split(":")[0].trim()),B=P.length>0?P.join(", "):"",F=P.length>0?`globalThis.${M.id}(${B})`:`globalThis.${M.id}()`,N=`(globalThis.${M.id} ? ${F} : (() => {${R}})())`;X+=N,Q=_,H++}else X+=Z[Q],Q++}return{source:X,blocks:$}}function n8(Z){return Z.startsWith("f32x4_")||Z.startsWith("v128_")}function c8(Z){let $=Z.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),X=new Set,Q=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,H;while((H=Q.exec($))!==null)X.add(H[1]);let K=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,Y=new Set;while((H=K.exec($))!==null)Y.add(H[1]);for(let _ of X){if(!Y.has(_))continue;let U=new RegExp(`(?<!\\.)\\b${_}\\b`,"g"),q=new RegExp(`\\.${_}\\b`,"g"),I=$.match(U)?.length||0,M=$.match(q)?.length||0;if(I<=M)Y.delete(_)}let z=new Set,W=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((H=W.exec($))!==null)z.add(H[1]);let G=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((H=G.exec($))!==null)z.add(H[1]);let J=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"]),L=[];for(let _ of Y)if(!z.has(_)&&!J.has(_)&&!n8(_))L.push(_);return L.sort()}function o8(Z,$,X){let Q=Z.slice(0,$),H=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,K=Q.match(H);if(!K){let Y=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,z=Q.match(Y);if(!z)return;return k6(z[1],X)}return k6(K[1],X)}function k6(Z,$){let X=Z.split(",").map((Q)=>Q.trim());for(let Q of X){let H=Q.match(new RegExp(`^${$}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(H)return H[1];let K=Q.match(new RegExp(`^${$}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(K)return K[1]}return}function y6(Z){let X=new RegExp(`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")\\s+IsNot\\s+([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,"g");Z=Z.replace(X,"IsNot($1, $2)");let Q=new RegExp(`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")\\s+Is\\s+([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,"g");return Z=Z.replace(Q,"Is($1, $2)"),Z}function h6(Z){let $=/^[\s]*[([/+\-`]/,X=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,Q=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,H=Z.split(`
|
|
6
|
+
`),K=[];for(let Y=0;Y<H.length;Y++){let z=H[Y],W=Y>0?H[Y-1]:"";if(Y>0&&$.test(z)){let G=W.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!X.test(G)&&!Q.test(G)){let J=z.match(/^(\s*)/),L=J?J[1]:"",_=z.slice(L.length);K.push(L+";"+_);continue}}K.push(z)}return K.join(`
|
|
7
|
+
`)}function x6(Z){Z=Z.replace(/\btypeof\s+([a-zA-Z_$][\w$.]*(?:\?\.[\w$]+)*)/g,"TypeOf($1)");let $=[],X=0,Q="normal",H=[];while(X<Z.length){let Y=Z[X],z=Z[X+1];switch(Q){case"single-string":if(Y==="\\"&&X+1<Z.length){X+=2;continue}if(Y==="'")Q="normal";X++;continue;case"double-string":if(Y==="\\"&&X+1<Z.length){X+=2;continue}if(Y==='"')Q="normal";X++;continue;case"template-string":if(Y==="\\"&&X+1<Z.length){X+=2;continue}if(Y==="$"&&z==="{"){X+=2,H.push(1),Q="normal";continue}if(Y==="`")Q="normal";X++;continue;case"line-comment":if(Y===`
|
|
8
|
+
`)Q="normal";X++;continue;case"block-comment":if(Y==="*"&&z==="/"){X+=2,Q="normal";continue}X++;continue;case"regex":if(Y==="\\"&&X+1<Z.length){X+=2;continue}if(Y==="["){X++;while(X<Z.length&&Z[X]!=="]")if(Z[X]==="\\"&&X+1<Z.length)X+=2;else X++;if(X<Z.length)X++;continue}if(Y==="/"){X++;while(X<Z.length&&/[gimsuy]/.test(Z[X]))X++;Q="normal";continue}X++;continue;case"normal":if(H.length>0){if(Y==="{")H[H.length-1]++;else if(Y==="}"){if(H[H.length-1]--,H[H.length-1]===0){H.pop(),X++,Q="template-string";continue}}}if(Y==="'"){X++,Q="single-string";continue}if(Y==='"'){X++,Q="double-string";continue}if(Y==="`"){X++,Q="template-string";continue}if(Y==="/"&&z==="/"){X+=2,Q="line-comment";continue}if(Y==="/"&&z==="*"){X+=2,Q="block-comment";continue}if(Y==="/"){let W=X-1;while(W>=0&&/\s/.test(Z[W]))W--;let G=W>=0?Z[W]:"";if(!G||/[=(!,;:{[&|?+\-*%<>~^]/.test(G)||W>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(Z.slice(Math.max(0,W-10),W+1))){X++,Q="regex";continue}}if(Y==="="&&z==="="&&Z[X+2]!=="="&&Z[X-1]!=="!"){$.push({pos:X,op:"=="}),X+=2;continue}if(Y==="!"&&z==="="&&Z[X+2]!=="="){$.push({pos:X,op:"!="}),X+=2;continue}break}X++}if($.length===0)return Z;let K=Z;for(let Y=$.length-1;Y>=0;Y--){let{pos:z,op:W}=$[Y],G=W==="=="?"Eq":"NotEq",J=s8(K,z),L=a8(K,z+2),_=K.slice(J,z).trim(),U=K.slice(z+2,L).trim();if(_&&U){let q=K.slice(0,J),I=K.slice(L),R=/[a-zA-Z0-9_$]$/.test(q)?" ":"";K=`${q}${R}${G}(${_}, ${U})${I}`}}return K}function s8(Z,$){let X=$-1;while(X>=0&&/\s/.test(Z[X]))X--;if(X<0)return 0;let Q=0,H=!1,K="";while(X>=0){let Y=Z[X],z=X>0?Z[X-1]:"";if(H){if(Y===K&&z!=="\\")H=!1;X--;continue}if((Y==='"'||Y==="'"||Y==="`")&&z!=="\\"){H=!0,K=Y,X--;continue}if(Y===")"||Y==="]"||Y==="}"){Q++,X--;continue}if(Y==="("||Y==="["){if(Q>0){Q--,X--;continue}return X+1}if(Y==="{"){if(Q>0){Q--,X--;continue}return X+1}if(Q>0){X--;continue}if(Y===";")return X+1;if(/[a-z]/.test(Y)){let W=X+1,G=X;while(G>0&&/[a-z]/i.test(Z[G-1]))G--;let J=Z.slice(G,W),L=G>0?Z[G-1]:"";if(!/[a-zA-Z0-9_$]/.test(L)){if(["return","throw","case","typeof","void","delete","await","yield"].includes(J))return W;if(J==="new")return G}}if(Y===">"&&z==="=")return X+1;if(Y==="="&&z!=="="&&z!=="!"&&z!=="<"&&z!==">")return X+1;if(Y==="&"&&z==="&")return X+1;if(Y==="|"&&z==="|")return X+1;if(Y==="?"||Y===":")return X+1;if(Y===",")return X+1;X--}return 0}function a8(Z,$){let X=$;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)return Z.length;let Q=0,H=!1,K="";while(X<Z.length){let Y=Z[X],z=X+1<Z.length?Z[X+1]:"";if(H){if(Y===K&&Z[X-1]!=="\\")H=!1;X++;continue}if((Y==='"'||Y==="'"||Y==="`")&&Z[X-1]!=="\\"){H=!0,K=Y,X++;continue}if(Y==="("||Y==="["||Y==="{"){Q++,X++;continue}if(Y===")"||Y==="]"||Y==="}"){if(Q>0){Q--,X++;continue}return X}if(Q>0){X++;continue}if(Y===";")return X;if(Y==="&"&&z==="&")return X;if(Y==="|"&&z==="|")return X;if(Y==="?")return X;if(Y===":")return X;if(Y===",")return X;if((Y==="="||Y==="!")&&z==="="&&Z[X+2]!=="=")return X;X++}return Z.length}function u6(Z){let $="",X=0;while(X<Z.length){let Q=Z.slice(X).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(Q){let H=Q[1],K=X+Q[0].length,Y=H,z=!1,W=Z.slice(K).match(/^(['"`])([^]*?)\1\s*/);if(W){let _=K+W[0].length,U=Z[_],q=U===void 0||_>=Z.length||U!=="="&&U!=="{";if(U==="="||U==="{")Y=W[2],z=!0,K=_;else if(q){let I=W[0].trim(),M=W[0].slice(I.length);$+=`const ${H} = Type('${H}', ${I})${M}`,X=_;continue}}let G,J=K,L=Z.slice(K).match(/^=\s*/);if(L){K+=L[0].length;let _=Z.slice(K).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(_){G=_[0],K+=_[0].length,J=K;let U=Z.slice(K).match(/^\s*/);if(U)K+=U[0].length}}if(Z[K]==="{"){let _=K+1,U=1,q=_;while(q<Z.length&&U>0){let N=Z[q];if(N==="{")U++;else if(N==="}")U--;q++}if(U!==0){$+=Z[X],X++;continue}let I=Z.slice(_,q-1).trim(),M=q,R=I.match(/description\s*:\s*(['"`])([^]*?)\1/);if(R&&!z)Y=R[2];let P,B=I.match(/example\s*:\s*/);if(B){let N=B.index+B[0].length,V=S6(I,N);if(V)P=V.value.trim()}let F=I.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(F&&P){let N=F[1].trim(),V=F[2].trim(),w=G?`, ${G}`:"";$+=`const ${H} = Type('${Y}', (${N}) => { if (!globalThis.__tjs?.validate(${N}, globalThis.__tjs?.infer(${P}))) return false; ${V} }, ${P}${w})`}else if(F){let N=F[1].trim(),V=F[2].trim(),w=G?`, undefined, ${G}`:"";$+=`const ${H} = Type('${Y}', (${N}) => { ${V} }${w})`}else if(P){let N=G?`, ${G}`:"";$+=`const ${H} = Type('${Y}', undefined, ${P}${N})`}else if(G)$+=`const ${H} = Type('${Y}', ${G})`;else $+=`const ${H} = Type('${Y}')`;X=M;continue}else if(G){$+=`const ${H} = Type('${Y}', ${G})`,X=J;continue}else if(!W){let _=Z.slice(K).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(_){let U=_[0];$+=`const ${H} = Type('${H}', ${U})`,X=K+_[0].length;continue}}}$+=Z[X],X++}return $}function d6(Z){let $="",X=0;while(X<Z.length){let Q=Z.slice(X).match(/^\bFunctionPredicate\s+([A-Z_][a-zA-Z0-9_]*)\s*(?:<([^>]+)>)?\s*/);if(Q){let H=Q[1],K=Q[2],Y=X+Q[0].length;if(Z[Y]==="{"){let z=1,W=Y+1;while(W<Z.length&&z>0){if(Z[W]==="{")z++;else if(Z[W]==="}")z--;W++}if(z===0){let G=Z.slice(Y+1,W-1).trim(),J=p8(G,/params\s*:\s*\{/),L=G.match(/returns\s*:\s*(.+?)(?:\n|$)/),_=G.match(/returnContract\s*:\s*['"](\w+)['"]/),U=G.match(/description\s*:\s*(['"])([^]*?)\1/),q=[];if(J)q.push(`params: ${J[1]}`);if(L)q.push(`returns: ${L[1].trim()}`);if(_)q.push(`returnContract: '${_[1]}'`);let I=U?U[2]:H;if(K){let M=K.split(",").map((P)=>{let B=P.trim().split("=").map((F)=>F.trim());if(B.length===2){let F=B[1]==="any"||B[1]==="undefined"?"null":B[1];return`['${B[0]}', ${F}]`}return`'${B[0]}'`}),R=K.split(",").map((P)=>P.trim().split("=")[0].trim());$+=`const ${H} = FunctionPredicate('${I}', [${M.join(", ")}], (${R.join(", ")}) => ({ ${q.join(", ")} }))`}else $+=`const ${H} = FunctionPredicate('${I}', { ${q.join(", ")} })`;X=W;continue}}if(Z[Y]==="("){let z=1,W=Y+1;while(W<Z.length&&z>0){if(Z[W]==="(")z++;else if(Z[W]===")")z--;W++}if(z===0){let G=Z.slice(Y+1,W-1).trim(),J=G.indexOf(",");if(J!==-1){let L=G.slice(0,J).trim(),_=G.slice(J+1).trim();$+=`const ${H} = FunctionPredicate(${_}, ${L})`}else $+=`const ${H} = FunctionPredicate('${H}', ${G})`;X=W;continue}}}$+=Z[X],X++}return $}function l6(Z){let $="",X=0;while(X<Z.length){let Q=Z.slice(X).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(Q){let H=Q[1],K=Q[2],z=X+Q[0].length-1+1,W=1,G=z;while(G<Z.length&&W>0){let P=Z[G];if(P==="{")W++;else if(P==="}")W--;G++}if(W!==0){$+=Z[X],X++;continue}let J=Z.slice(z,G-1).trim(),L=G,_=K.split(",").map((P)=>{let B=P.trim().split("=").map((F)=>F.trim());if(B.length===2){let F=B[1]==="any"||B[1]==="undefined"?"null":B[1];return`['${B[0]}', ${F}]`}return`'${B[0]}'`}),U=J,q=U.search(/\bdeclaration\s*\{/);if(q!==-1){let P=U.indexOf("{",q),B=1,F=P+1;while(F<U.length&&B>0){if(U[F]==="{")B++;else if(U[F]==="}")B--;F++}U=U.slice(0,q)+U.slice(F)}let I=U.match(/description\s*:\s*(['"`])([^]*?)\1/),M=U.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),R=I?I[2]:H;if(M){let P=M[1].trim().split(",").map((w)=>w.trim()),B=M[2].trim(),F=P[0]||"x",N=P.slice(1),V=N.map((w)=>`check${w}`);N.forEach((w,C)=>{B=B.replace(new RegExp(`\\b${w}\\s*\\(`,"g"),`${V[C]}(`)}),$+=`const ${H} = Generic([${_.join(", ")}], (${F}, ${V.join(", ")}) => { ${B} }, '${R}')`}else $+=`const ${H} = Generic([${_.join(", ")}], () => true, '${R}')`;X=L;continue}$+=Z[X],X++}return $}function m6(Z){let $="",X=0;while(X<Z.length){let Q=Z.slice(X).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(Q){let H=Q[1],K=Q[3],Y=X+Q[0].length;if(Z[Y]==="{"){let z=Y+1,W=1,G=z;while(G<Z.length&&W>0){let U=Z[G];if(U==="{")W++;else if(U==="}")W--;G++}if(W!==0){$+=Z[X],X++;continue}let J=Z.slice(z,G-1).trim(),L=G,_=g6(J);$+=`const ${H} = Union('${K}', [${_.join(", ")}])`,X=L;continue}else{let z=Z.indexOf(`
|
|
9
|
+
`,Y);if(z===-1)z=Z.length;let W=Z.slice(Y,z).trim();if(W){let G=g6(W);$+=`const ${H} = Union('${K}', [${G.join(", ")}])`,X=z;continue}}}$+=Z[X],X++}return $}function g6(Z){let $=[],X=Z.split("|").map((Q)=>Q.trim());for(let Q of X){if(!Q)continue;$.push(Q)}return $}function i6(Z){let $="",X=0;while(X<Z.length){let Q=Z.slice(X).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(Q){let H=Q[1],K=Q[3],z=X+Q[0].length-1+1,W=1,G=z;while(G<Z.length&&W>0){let q=Z[G];if(q==="{")W++;else if(q==="}")W--;G++}if(W!==0){$+=Z[X],X++;continue}let J=Z.slice(z,G-1).trim(),L=G,U=r8(J).map(([q,I])=>`${q}: ${I}`).join(", ");$+=`const ${H} = Enum('${K}', { ${U} })`,X=L;continue}$+=Z[X],X++}return $}function r8(Z){let $=[],X=0,Q=Z.split(/[\n,]/).map((H)=>H.trim()).filter((H)=>H&&!H.startsWith("//"));for(let H of Q){let K=H.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*(?:=\s*(.+))?$/);if(K){let Y=K[1],z=K[2]?.trim();if(z!==void 0){$.push([Y,z]);let W=Number(z);if(!isNaN(W))X=W+1}else $.push([Y,String(X)]),X++}}return $}function p6(Z){let $=new Map,X="",Q=0;while(Q<Z.length){let H=Z.slice(Q),K=H.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/);if(!K){if(Q===0||Z[Q-1]===`
|
|
10
|
+
`||Z[Q-1]===";"||Z[Q-1]==="}"){let B=H.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}X+=Z[Q],Q++;continue}let Y=K[1],z=K[2],W=Q+K[0].length-1,G=z0(Z,W),J=Z.slice(W+1,G-1).trim(),L=[],_=0,U=Z.slice(W+1,G-1);while(_<U.length){let B=U.slice(_).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!B){_++;continue}let F=B[1],N=!!B[2],V=B[3],w=_+B[0].length-1,C=1,O=w+1;while(O<U.length&&C>0){if(U[O]==="(")C++;if(U[O]===")")C--;O++}let k=U.slice(w+1,O-1),S=O;while(S<U.length&&/\s/.test(U[S]))S++;if(U[S]==="="&&U[S+1]===">"){let L1=Y0(Z,W+1+_);throw new X1(`Arrow functions are not allowed in extend blocks (method '${V}' in extend ${z}). Use regular function syntax instead, as extension methods need 'this' binding.`,L1)}if(U[S]!=="{"){_++;continue}let b=z0(U,S),h=U.slice(_,b).trim(),d=k.split(",").map((L1)=>L1.trim()).filter((L1)=>L1.length>0).map((L1)=>{let l1=L1.match(/^(\w+)\s*:\s*(.+)$/);if(l1)return`${l1[1]} = ${l1[2]}`;return L1}).join(", "),A1=N?"async ":"",E0=U.slice(S+1,b-1);L.push({name:V,isAsync:N,fullText:`${V}: ${A1}function(${d}) {${E0}}`}),_=b}let q=!$.has(z);if(q)$.set(z,new Set);let I=$.get(z);for(let P of L)I.add(P.name);let M=L.map((P)=>` ${P.fullText}`).join(`,
|
|
11
|
+
`),R;if(q)R=`${Y}const __ext_${z} = {
|
|
12
|
+
${M}
|
|
13
|
+
${Y}}
|
|
14
|
+
`;else R=`${Y}Object.assign(__ext_${z}, {
|
|
15
|
+
${M}
|
|
16
|
+
${Y}})
|
|
17
|
+
`;for(let P of L)R+=`${Y}if (__tjs?.registerExtension) { __tjs.registerExtension('${z}', '${P.name}', __ext_${z}.${P.name}) }
|
|
18
|
+
`;X+=R,Q=G}if(Q<=Z.length&&X.length<Z.length);return{source:X,extensions:$}}function W0(Z,$){if($.size===0)return Z;let X=new Map;for(let[H,K]of $)for(let Y of K){if(!X.has(Y))X.set(Y,[]);X.get(Y).push(H)}let Q=Z;for(let[H,K]of X){if(!K.includes("String"))continue;let Y=new RegExp(`('(?:[^'\\\\]|\\\\.)*')\\.(${H})\\((\\))?`,"g");Q=Q.replace(Y,(G,J,L,_)=>{return _?`__ext_String.${L}.call(${J})`:`__ext_String.${L}.call(${J}, `});let z=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${H})\\((\\))?`,"g");Q=Q.replace(z,(G,J,L,_)=>{return _?`__ext_String.${L}.call(${J})`:`__ext_String.${L}.call(${J}, `});let W=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+H+"\\((\\))?","g");Q=Q.replace(W,(G,J,L)=>{return L?`__ext_String.${H}.call(${J})`:`__ext_String.${H}.call(${J}, `})}for(let[H,K]of X){if(!K.includes("Array"))continue;let Y=`].${H}(`,z=0,W;while((W=Q.indexOf(Y,z))!==-1){let G=1,J=W-1,L=!1;while(J>=0&&G>0){let _=Q[J];if(L){if(_===L&&(J===0||Q[J-1]!=="\\"))L=!1}else{if(_==="]")G++;if(_==="[")G--;if(_==="'"||_==='"'||_==="`")L=_}J--}if(G===0){let _=Q.slice(J+1,W+1),U=Q.slice(0,J+1),q=Q.slice(W+Y.length);if(q[0]===")")Q=`${U}__ext_Array.${H}.call(${_})${q.slice(1)}`;else Q=`${U}__ext_Array.${H}.call(${_}, ${q}`}z=W+1}}for(let[H,K]of X){if(!K.includes("Number"))continue;let Y=new RegExp(`(\\d+(?:\\.\\d+)?)\\.(${H})\\((\\))?`,"g");Q=Q.replace(Y,(z,W,G,J)=>{return J?`__ext_Number.${G}.call(${W})`:`__ext_Number.${G}.call(${W}, `})}return Q}function Y0(Z,$){let X=1,Q=0;for(let H=0;H<$&&H<Z.length;H++)if(Z[H]===`
|
|
19
|
+
`)X++,Q=0;else Q++;return{line:X,column:Q}}function n6(Z,$){let X=$.trim();if(/^['"`]/.test(X))return`typeof ${Z} === 'string'`;if(X==="true"||X==="false")return`typeof ${Z} === 'boolean'`;if(X==="null")return`${Z} === null`;if(X==="undefined")return`${Z} === undefined`;if(X.startsWith("["))return`Array.isArray(${Z})`;if(X.startsWith("{"))return`(typeof ${Z} === 'object' && ${Z} !== null && !Array.isArray(${Z}))`;if(/^\+\d+/.test(X))return`(typeof ${Z} === 'number' && Number.isInteger(${Z}) && ${Z} >= 0)`;if(/^-?\d+\.\d+/.test(X))return`typeof ${Z} === 'number'`;if(/^-?\d+$/.test(X))return`(typeof ${Z} === 'number' && Number.isInteger(${Z}))`;return"true"}function f0(Z){let $=Z.trim();if(/^['"`]/.test($))return"string";if($==="true"||$==="false")return"boolean";if($==="null")return"null";if($==="undefined")return"undefined";if($.startsWith("["))return"array";if($.startsWith("{"))return"object";if(/^\+\d+/.test($))return"non-negative-integer";if(/^-?\d+\.\d+/.test($))return"number";if(/^-?\d+$/.test($))return"integer";return"any"}function k4(Z,$){let X=[],Q=0,H="",K=!1;for(let z=0;z<Z.length;z++){let W=Z[z];if(!K&&(W==="'"||W==='"'||W==="`")){K=W,H+=W;continue}if(K){if(H+=W,W==="\\"){if(z++,z<Z.length)H+=Z[z];continue}if(W===K)K=!1;continue}if(W==="("||W==="["||W==="{"){Q++,H+=W;continue}if(W===")"||W==="]"||W==="}"){Q--,H+=W;continue}if(W===","&&Q===0){let G=b6(H.trim(),$);if(G)X.push(G);H="";continue}H+=W}let Y=H.trim();if(Y){let z=b6(Y,$);if(z)X.push(z)}return X}function b6(Z,$){let X=Z.replace(/^\/\*\s*unsafe\s*\*\/\s*/,"");if(X.startsWith("..."))return null;let Q=X.indexOf("=");if(Q===-1)return{name:X.trim(),defaultValue:"",required:!0};let H=X.slice(0,Q).trim(),K=X.slice(Q+1).trim();return{name:H,defaultValue:K,required:$.has(H)}}function z0(Z,$){let X=1,Q=$+1,H=!1,K=!1,Y=!1;while(Q<Z.length&&X>0){let z=Z[Q],W=Q+1<Z.length?Z[Q+1]:"";if(K){if(z===`
|
|
20
|
+
`)K=!1;Q++;continue}if(Y){if(z==="*"&&W==="/"){Y=!1,Q+=2;continue}Q++;continue}if(H){if(z==="\\"){Q+=2;continue}if(z===H)H=!1;Q++;continue}if(z==="/"&&W==="/"){K=!0,Q+=2;continue}if(z==="/"&&W==="*"){Y=!0,Q+=2;continue}if(z==="'"||z==='"'||z==="`"){H=z,Q++;continue}if(z==="{")X++;if(z==="}")X--;Q++}return Q}function c6(Z,$){let X=new Set,Q=/(?:^|(?<=[\n;{}]))\s*(export\s+)?(async\s+)?function\s+(\w+)\s*\(/gm,H=new Map,K,Y=[];while((K=Q.exec(Z))!==null){let L=!!K[1],_=!!K[2],U=K[3],q=K.index,I=q,R=K[0].indexOf("function");if(R>=0)I=q+R;Y.push({name:U,fullMatchStart:q,funcKeywordStart:I,exported:L,isAsync:_})}for(let L of Y)if(!H.has(L.name))H.set(L.name,[]);let z=new Map;for(let L of Y)z.set(L.name,(z.get(L.name)||0)+1);let W=new Set;for(let[L,_]of z)if(_>1)W.add(L);if(W.size===0)return{source:Z,polymorphicNames:X};for(let L of Y){if(!W.has(L.name))continue;let _=Z.indexOf("(",L.funcKeywordStart);if(_===-1)continue;let U=1,q=_+1;while(q<Z.length&&U>0){if(Z[q]==="(")U++;if(Z[q]===")")U--;q++}let I=q-1,M=Z.slice(_+1,I),R=q;while(R<Z.length&&Z[R]!=="{")R++;if(R>=Z.length)continue;let P=z0(Z,R),B=L.fullMatchStart;while(B>0&&Z[B-1]===" ")B--;let F=H.get(L.name),N=k4(M,$);if(M.includes("...")){let w=Y0(Z,L.funcKeywordStart);throw new X1(`Rest parameters are not supported in polymorphic function '${L.name}'. Use separate function names instead.`,w)}F.push({index:F.length+1,start:B,end:P,text:Z.slice(B,P),exported:L.exported,isAsync:L.isAsync,params:N})}for(let[L,_]of H){if(_.length<2)continue;let U=_.filter((q)=>q.isAsync).length;if(U>0&&U<_.length){let q=Y0(Z,_[0].start);throw new X1(`Polymorphic function '${L}': all variants must be either sync or async, not mixed.`,q)}for(let q=0;q<_.length;q++)for(let I=q+1;I<_.length;I++){let M=_[q],R=_[I];if(M.params.length!==R.params.length)continue;let P=!0;for(let B=0;B<M.params.length;B++){let F=M.params[B].defaultValue?f0(M.params[B].defaultValue):"any",N=R.params[B].defaultValue?f0(R.params[B].defaultValue):"any";if(F!==N){P=!1;break}}if(P){let B=Y0(Z,R.start);throw new X1(`Polymorphic function '${L}': variants ${q+1} and ${I+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,B)}}}let G=[];for(let[L,_]of H){if(_.length<2)continue;for(let U of _)G.push({name:L,variant:U})}G.sort((L,_)=>_.variant.start-L.variant.start);let J=Z;for(let{name:L,variant:_}of G){let U=_.isAsync?"async ":"",q=_.text.replace(new RegExp(`(?:export\\s+)?${U?U.replace(/\s+$/,"\\s+"):""}function\\s+${L}\\s*\\(`),`${U}function ${L}$$${_.index}(`);J=J.slice(0,_.start)+q+J.slice(_.end)}for(let[L,_]of H){if(_.length<2)continue;X.add(L);let U=_[0].isAsync,q=_.some((F)=>F.exported),I=U?"async ":"",M=q?"export ":"",R=[..._].sort((F,N)=>{if(F.params.length!==N.params.length)return 0;let V=0,w=0;for(let C of F.params){let O=C.defaultValue?f0(C.defaultValue):"any";if(O==="non-negative-integer")V+=3;else if(O==="integer")V+=2;else if(O!=="any")V+=1}for(let C of N.params){let O=C.defaultValue?f0(C.defaultValue):"any";if(O==="non-negative-integer")w+=3;else if(O==="integer")w+=2;else if(O!=="any")w+=1}return w-V}),P=[];for(let F of R){let N=[`__args.length === ${F.params.length}`],V=[];for(let w=0;w<F.params.length;w++){let C=F.params[w];if(V.push(`__args[${w}]`),C.defaultValue){let O=n6(`__args[${w}]`,C.defaultValue);if(O!=="true")N.push(O)}}P.push(` if (${N.join(" && ")}) return ${L}$${F.index}(${V.join(", ")})`)}let B=`
|
|
21
|
+
${M}${I}function ${L}(...__args) {
|
|
22
|
+
${P.join(`
|
|
23
|
+
`)}
|
|
24
|
+
return __tjs.typeError('${L}', 'no matching overload', __args)
|
|
25
|
+
}
|
|
26
|
+
`;J+=B}return{source:J,polymorphicNames:X}}function o6(Z){return Z.replace(/(?<=^|[;\n{])\s*([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,($,X)=>{return $.replace(X,`const ${X}`)})}function s6(Z,$=!1){let X=[],Q=[],H="",K=0;while(K<Z.length){let Y=Z.slice(K).match(/^\btest\s+/);if(Y){let z=K,W=K+Y[0].length,G,J=Z.slice(W).match(/^(['"`])([^]*?)\1\s*/);if(J)G=J[2],W+=J[0].length;if(Z[W]==="{"){let L=W+1,_=1,U=L;while(U<Z.length&&_>0){let q=Z[U];if(q==="{")_++;else if(q==="}")_--;U++}if(_===0){let q=Z.slice(L,U-1).trim(),I=U,M=(Z.slice(0,z).match(/\n/g)||[]).length+1;if(X.push({description:G,body:q,start:z,end:I,line:M}),!$)try{Function(q)()}catch(B){let F=G||`test at line ${M}`;Q.push(`Test failed: ${F} (line ${M})
|
|
27
|
+
${B.message||B}`)}let P=(Z.slice(z,I).match(/\n/g)||[]).length;H+=`
|
|
28
|
+
`.repeat(P),K=I;continue}}}H+=Z[K],K++}return{source:H,tests:X,errors:Q}}function a6(Z,$){let X=new Set,Q=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,H,K=[];while((H=Q.exec(Z))!==null){let z=H[1],W=H[2]?.trim()||"",G=H.index+H[0].length-1,J=z0(Z,G),L=Z.slice(G,J);K.push({className:z,extendsClause:W,bodyStart:G,bodyEnd:J,body:L})}let Y=Z;for(let z=K.length-1;z>=0;z--){let{className:W,extendsClause:G,bodyStart:J,bodyEnd:L,body:_}=K[z],U=/\bconstructor\s*\(/g,q,I=[];while((q=U.exec(_))!==null)I.push(q.index);if(I.length<2)continue;X.add(W);let M=[];for(let w=0;w<I.length;w++){let C=I[w],O=_.indexOf("(",C),k=1,S=O+1;while(S<_.length&&k>0){if(_[S]==="(")k++;if(_[S]===")")k--;S++}let b=_.slice(O+1,S-1),h=S;while(h<_.length&&_[h]!=="{")h++;let d=z0(_,h),A1=_.slice(h+1,d-1);M.push({index:w+1,paramStr:b,bodyText:A1,fullStart:C,fullEnd:d})}let R=_.slice(0,M[0].fullEnd),P=M[M.length-1].fullEnd;R+=_.slice(P);let B=_;for(let w=M.length-1;w>=1;w--){let C=M[w],O=C.fullStart;while(O>0&&B[O-1]===" ")O--;if(O>0&&B[O-1]===`
|
|
29
|
+
`)O--;B=B.slice(0,O)+B.slice(C.fullEnd)}let F="";for(let w=1;w<M.length;w++){let C=M[w],O=k4(C.paramStr,$);if(C.paramStr.includes("...")){let S=Y0(Z,J+C.fullStart);throw new X1(`Rest parameters are not supported in polymorphic constructors for '${W}'.`,S)}F+=`
|
|
30
|
+
function ${W}$ctor$${C.index}(${C.paramStr}) {`,F+=`
|
|
31
|
+
const __obj = Object.create(${W}.prototype)`,F+=`
|
|
32
|
+
;(function() {${C.bodyText}}).call(__obj)`,F+=`
|
|
33
|
+
return __obj`,F+=`
|
|
34
|
+
}
|
|
35
|
+
`}let N=[];for(let w=0;w<M.length;w++){let C=M[w],O=k4(C.paramStr,$),k=[`a.length === ${O.length}`];for(let S=0;S<O.length;S++){let b=O[S];if(b.defaultValue){let h=n6(`a[${S}]`,b.defaultValue);if(h!=="true")k.push(h)}}if(w===0)N.push(` if (${k.join(" && ")}) return Reflect.construct(t, a)`);else{let S=O.map((b,h)=>`a[${h}]`).join(", ");N.push(` if (${k.join(" && ")}) return ${W}$ctor$${C.index}(${S})`)}}F+=`
|
|
36
|
+
function ${W}$dispatch(t, a) {
|
|
37
|
+
`,F+=N.join(`
|
|
38
|
+
`)+`
|
|
39
|
+
`,F+=` return __tjs.typeError('${W}', 'no matching constructor', a)
|
|
40
|
+
`,F+=`}
|
|
41
|
+
`,Y=Y.slice(0,J)+B+Y.slice(L);let V=J+B.length;Y=Y.slice(0,V)+F+Y.slice(V)}return{source:Y,polyCtorClasses:X}}function r6(Z,$=new Set){let X=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,Q="",H=0,K;while((K=X.exec(Z))!==null){let Y=K[1],z=K[2]||"",W=K.index,G=W+K[0].length-1,J=1,L=G+1;while(L<Z.length&&J>0){let _=Z[L];if(_==="{")J++;else if(_==="}")J--;L++}if(J===0){let _=L,U=Z.slice(G,_);if(Q+=Z.slice(H,W),Q+=`let ${Y} = class ${Y}${z} ${U}; `,$.has(Y))Q+=`${Y} = new Proxy(${Y}, { apply(t, _, a) { return ${Y}$dispatch(t, a) }, construct(t, a) { return ${Y}$dispatch(t, a) } });`;else Q+=`${Y} = new Proxy(${Y}, { apply(t, _, a) { return Reflect.construct(t, a) } });`;H=_}}return Q+=Z.slice(H),Q}function t6(Z){let $=[{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:X,message:Q}of $)if(X.test(Z))throw Error(Q);return Z}function e6(Z){if(/(?<![A-Za-z_$])\beval\s*\(/.test(Z))throw Error("eval() is not allowed in TjsNoeval mode. Use Eval() from TJS runtime for safe evaluation.");if(/\bnew\s+Function\s*\(/.test(Z))throw Error("new Function() is not allowed in TjsNoeval mode. Use SafeFunction() from TJS runtime.");return Z}function y0(Z,$={}){let X=Z,Q,H=new Set,K=new Set,Y=new Set,z={tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1},W=Z.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);if(W)Q=W[2],Z=Z.replace(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\s*/,"$1");let G=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsStandard|TjsSafeEval)\b/,J;while(J=Z.match(G)){let B=J[2];if(B==="TjsStrict")z.tjsEquals=!0,z.tjsClass=!0,z.tjsDate=!0,z.tjsNoeval=!0,z.tjsStandard=!0;else if(B==="TjsEquals")z.tjsEquals=!0;else if(B==="TjsClass")z.tjsClass=!0;else if(B==="TjsDate")z.tjsDate=!0;else if(B==="TjsNoeval")z.tjsNoeval=!0;else if(B==="TjsStandard")z.tjsStandard=!0;else if(B==="TjsSafeEval")z.tjsSafeEval=!0;Z=Z.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${B}\\s*`),"$1")}if(z.tjsStandard)Z=h6(Z);if(Z=y6(Z),z.tjsEquals&&!$.vmTarget)Z=x6(Z);Z=u6(Z),Z=l6(Z),Z=d6(Z),Z=m6(Z),Z=i6(Z),Z=o6(Z);let{source:L,returnType:_,returnSafety:U}=b0(Z,{originalSource:X,requiredParams:H,unsafeFunctions:K,safeFunctions:Y});Z=L;let q=p6(Z);Z=q.source,Z=v6(Z);let I=c6(Z,H);Z=I.source;let M=f6(Z);Z=M.source;let R=s6(Z,$.dangerouslySkipTests);Z=R.source;let P=a6(Z,H);Z=P.source;for(let B of P.polyCtorClasses)K.add(`${B}$dispatch`);if(z.tjsClass)Z=r6(Z,P.polyCtorClasses);if(z.tjsDate)Z=t6(Z);if(z.tjsNoeval)Z=e6(Z);return Z=W0(Z,q.extensions),{source:Z,returnType:_,returnSafety:U,moduleSafety:Q,tjsModes:z,originalSource:X,requiredParams:H,unsafeFunctions:K,safeFunctions:Y,wasmBlocks:M.blocks,tests:R.tests,testErrors:R.errors,polymorphicNames:I.polymorphicNames,extensions:q.extensions}}function j1(Z,$={}){let{filename:X="<source>",colonShorthand:Q=!0,vmTarget:H=!1}=$,{source:K,returnType:Y,returnSafety:z,moduleSafety:W,originalSource:G,requiredParams:J,unsafeFunctions:L,safeFunctions:_,wasmBlocks:U,tests:q,testErrors:I}=Q?y0(Z,{vmTarget:H}):{source:Z,returnType:void 0,returnSafety:void 0,moduleSafety:void 0,originalSource:Z,requiredParams:new Set,unsafeFunctions:new Set,safeFunctions:new Set,wasmBlocks:[],tests:[],testErrors:[]};try{return{ast:Z7.parse(K,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:Y,returnSafety:z,moduleSafety:W,originalSource:G,requiredParams:J,unsafeFunctions:L,safeFunctions:_,wasmBlocks:U,tests:q,testErrors:I}}catch(M){let R=M.loc||{line:1,column:0};throw new X1(M.message.replace(/\s*\(\d+:\d+\)$/,""),R,G,X)}}function h0(Z,$){for(let Q of Z.body){if(Q.type==="ImportDeclaration")throw new X1("Imports are not supported. All atoms must be registered with the VM.",Q.loc?.start||{line:1,column:0},void 0,$);if(Q.type==="ExportNamedDeclaration"||Q.type==="ExportDefaultDeclaration")throw new X1("Exports are not supported. The function is automatically exported.",Q.loc?.start||{line:1,column:0},void 0,$);if(Q.type==="ClassDeclaration")throw new X1("Classes are not supported. Agent99 uses functional composition.",Q.loc?.start||{line:1,column:0},void 0,$)}let X=Z.body.filter((Q)=>Q.type==="FunctionDeclaration");if(X.length===0)throw new X1("Source must contain a function declaration",{line:1,column:0},void 0,$);if(X.length>1){let Q=X[1];throw new X1("Only a single function per agent is allowed",Q.loc?.start||{line:1,column:0},void 0,$)}return X[0]}function G0(Z,$){let X={params:{}};if(!$.loc)return X;let Q=Z.substring(0,$.start),H=[...Q.matchAll(/\/\*#([\s\S]*?)\*\//g)];if(H.length>0){let J=H[H.length-1],L=Q.substring(J.index+J[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(L)){let _=J[1],U=_.split(`
|
|
42
|
+
`),q=U.filter((I)=>I.trim().length>0).reduce((I,M)=>{let R=M.match(/^(\s*)/)?.[1].length||0;return Math.min(I,R)},1/0);if(q>0&&q<1/0)_=U.map((I)=>I.slice(q)).join(`
|
|
43
|
+
`);return X.description=_.trim(),X}}let K=Q.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!K)return X;let Y=K[0],z=Y.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);if(z)X.description=z[1].trim();let W=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,G;while((G=W.exec(Y))!==null)X.params[G[1]]=G[2].trim();return X}import{parseExpressionAt as t8}from"acorn";function Q1(Z){switch(Z.type){case"Literal":{let $=Z.value;if($===null)return{kind:"null"};if(typeof $==="string")return{kind:"string"};if(typeof $==="number"){let X=Z.raw;if(X&&X.includes("."))return{kind:"number"};return{kind:"integer"}}if(typeof $==="boolean")return{kind:"boolean"};return{kind:"any"}}case"ArrayExpression":{let $=Z.elements;if($.length===0)return{kind:"array",items:{kind:"any"}};let X=$.filter((Y)=>Y!=null).map((Y)=>Q1(Y));if(X.length===0)return{kind:"array",items:{kind:"any"}};let Q=new Map;for(let Y of X){let z=JSON.stringify(Y);if(!Q.has(z))Q.set(z,Y)}let H=[...Q.values()];return{kind:"array",items:H.length===1?H[0]:{kind:"union",members:H}}}case"ObjectExpression":{let $=Z.properties,X={};for(let Q of $)if(Q.type==="Property"&&Q.key.type==="Identifier"){let H=Q.key.name;X[H]=Q1(Q.value)}return{kind:"object",shape:X}}case"LogicalExpression":{let{operator:$,left:X,right:Q}=Z;if($==="||")return Q1(X);if($==="&&")return Q1(Q);if($==="??")return Q1(Q);return{kind:"any"}}case"BinaryExpression":{let{operator:$,left:X,right:Q}=Z;if($==="|"){let H=Q1(X),K=Q1(Q);if(K.kind==="null")return{...H,nullable:!0};if(H.kind==="null")return{...K,nullable:!0};return{kind:"union",members:[H,K]}}return{kind:"any"}}case"Identifier":{if(Z.name==="undefined")return{kind:"undefined"};return{kind:"any"}}case"UnaryExpression":{let{operator:$,argument:X}=Z;if($==="+"&&X.type==="Literal"){if(typeof X.value==="number")return{kind:"non-negative-integer"}}if($==="-"&&X.type==="Literal"){if(typeof X.value==="number"){let H=X.raw;if(H&&H.includes("."))return{kind:"number"};return{kind:"integer"}}}return{kind:"any"}}default:return{kind:"any"}}}function C1(Z,$){if(Z.type==="Identifier")return{name:Z.name,type:{kind:"any"},required:!0};if(Z.type==="AssignmentPattern"){let{left:X,right:Q}=Z;if(X.type!=="Identifier")throw new i("Only simple parameter names are supported",p(Z));let H=X.name,K=$?.has(H)??!1,Y=Q1(Q),z=I1(Q);return{name:H,type:Y,required:K,default:K?null:z,example:z,loc:{start:Z.start,end:Z.end}}}if(Z.type==="ObjectPattern"){let X=Z.properties,Q={},H={};for(let K of X)if(K.type==="Property"){let Y=K.key.type==="Identifier"?K.key.name:String(K.key.value);if(K.value.type==="Identifier")Q[Y]={kind:"any"},H[Y]={name:Y,type:{kind:"any"},required:!0};else if(K.value.type==="AssignmentPattern"){let z=C1(K.value,$),W=$?.has(Y)??!1;Q[Y]=z.type,H[Y]={name:Y,type:z.type,required:W,default:W?null:z.example,example:z.example}}}return{name:"__destructured__",type:{kind:"object",shape:Q,destructuredParams:H},required:!0}}throw new i(`Unsupported parameter pattern: ${Z.type}`,p(Z))}function I1(Z){switch(Z.type){case"Literal":return Z.value;case"ArrayExpression":return Z.elements.map(($)=>$?I1($):null);case"ObjectExpression":{let $={};for(let X of Z.properties)if(X.type==="Property"&&X.key.type==="Identifier")$[X.key.name]=I1(X.value);return $}case"UnaryExpression":if(Z.operator==="-"){let $=I1(Z.argument);return typeof $==="number"?-$:void 0}if(Z.operator==="+"){let $=I1(Z.argument);return typeof $==="number"?+$:void 0}return;case"BinaryExpression":{let{operator:$,left:X}=Z;if($==="|")return I1(X);return}case"LogicalExpression":{let{operator:$,left:X,right:Q}=Z;if($==="&&"){if(X.type==="Literal"&&X.value===null)return null}if($==="||")return I1(X)??I1(Q);if($==="??")return I1(X)??I1(Q);return}default:return}}function $7(Z){try{let $=t8(Z,0,{ecmaVersion:2022});return Q1($)}catch{return{kind:"any"}}}function g4(Z){switch(Z.kind){case"string":return Z.nullable?"string | null":"string";case"number":return Z.nullable?"number | null":"number";case"integer":return Z.nullable?"integer | null":"integer";case"non-negative-integer":return Z.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return Z.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let $=Z.items?g4(Z.items):"any";return Z.nullable?`${$}[] | null`:`${$}[]`}case"object":{if(!Z.shape||Object.keys(Z.shape).length===0)return Z.nullable?"object | null":"object";let $=Object.entries(Z.shape).map(([X,Q])=>`${X}: ${g4(Q)}`).join(", ");return Z.nullable?`{ ${$} } | null`:`{ ${$} }`}case"union":return Z.members?.map(g4).join(" | ")||"any";default:return"any"}}function x0(Z){switch(Z.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:Z.items?x0(Z.items):{}};case"object":if(Z.shape){let $={};for(let[X,Q]of Object.entries(Z.shape))$[X]=x0(Q);return{type:"object",properties:$,additionalProperties:!1}}return{type:"object"};case"union":if(Z.members)return{oneOf:Z.members.map(x0)};return{};default:return{}}}function e8(Z){let $={},X=[];for(let[Q,H]of Object.entries(Z))if($[Q]=x0(H.type),H.required)X.push(Q);return{type:"object",properties:$,required:X.length>0?X:void 0,additionalProperties:!1}}function L0(Z,$,X,Q={},H){let K=G0($,Z),Y=new Map;for(let M of Z.params){let R=C1(M,H);if(R.name==="__destructured__"&&R.type.kind==="object"&&R.type.destructuredParams)for(let[P,B]of Object.entries(R.type.destructuredParams))Y.set(P,{...B,description:K.params[P]});else R.description=K.params[R.name],Y.set(R.name,R)}let z;if(X)z=$7(X);let W={depth:0,locals:new Map,parameters:Y,atoms:new Set(Object.keys(Q.atoms||{})),warnings:[],source:$,filename:Q.filename||"<source>",options:Q},G=B1(Z.body,W),J=[],L=[],_=[];for(let[M,R]of Y.entries())if(R.required)L.push(M);else if(R.default!==void 0)_.push({name:M,defaultValue:R.default});else L.push(M);if(L.length>0)J.push({op:"varsImport",keys:L});for(let{name:M,defaultValue:R}of _)J.push({op:"varsImport",keys:[M]}),J.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:M},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:M,value:R}]});J.push(...G);let U=Object.fromEntries(Y),q={name:Z.id?.name||"anonymous",description:K.description,parameters:U,returns:z},I=e8(U);return{ast:{op:"seq",steps:J,inputSchema:I},signature:q,warnings:W.warnings}}function B1(Z,$){let X=[];for(let Q of Z.body){let H=J0(Q,$);if(H)if(Array.isArray(H))X.push(...H);else X.push(H)}return X}function J0(Z,$){switch(Z.type){case"VariableDeclaration":return ZZ(Z,$);case"ExpressionStatement":return $Z(Z,$);case"IfStatement":return QZ(Z,$);case"WhileStatement":return HZ(Z,$);case"ForOfStatement":return KZ(Z,$);case"TryStatement":return YZ(Z,$);case"ReturnStatement":return zZ(Z,$);case"ThrowStatement":throw new i("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",p(Z),$.source,$.filename);case"BlockStatement":return{op:"scope",steps:B1(Z,W1($))};case"EmptyStatement":return null;default:throw new i(`Unsupported statement type: ${Z.type}`,p(Z),$.source,$.filename)}}function ZZ(Z,$){let X=[],Q=Z.kind==="const",H=Q?"constSet":"varSet";for(let K of Z.declarations){if(K.id.type!=="Identifier")throw new i("Only simple variable names are supported",p(K),$.source,$.filename);let Y=K.id.name;if(K.init){let{step:z,resultVar:W}=g1(K.init,$,Y,Q);if(z)X.push(z);else if(W!==Y)X.push({op:H,key:Y,value:W});let G=Q1(K.init);$.locals.set(Y,G)}else{if(Q)throw new i("const declarations must be initialized",p(K),$.source,$.filename);X.push({op:"varSet",key:Y,value:null}),$.locals.set(Y,{kind:"any",nullable:!0})}}return X}function $Z(Z,$){let X=Z.expression;if(X.type==="AssignmentExpression")return XZ(X,$);if(X.type==="CallExpression"){let{step:Q,resultVar:H}=g1(X,$);if(Q)return Q;if(H)return{op:"varSet",key:"_",value:H};return null}return $.warnings.push({message:"Expression statement has no effect",line:p(Z).line,column:p(Z).column}),null}function XZ(Z,$){if(Z.left.type!=="Identifier")throw new i("Only simple variable assignment is supported",p(Z),$.source,$.filename);let X=Z.left.name,{step:Q,resultVar:H}=g1(Z.right,$,X);if(Q)return Q;return{op:"varSet",key:X,value:H}}function QZ(Z,$){let X=m(Z.test,$),Q=Z.consequent.type==="BlockStatement"?B1(Z.consequent,W1($)):[J0(Z.consequent,$)].filter(Boolean),H;if(Z.alternate)H=Z.alternate.type==="BlockStatement"?B1(Z.alternate,W1($)):[J0(Z.alternate,$)].filter(Boolean);return{op:"if",condition:X,then:Q,...H&&{else:H}}}function HZ(Z,$){let X=m(Z.test,$),Q=Z.body.type==="BlockStatement"?B1(Z.body,W1($)):[J0(Z.body,$)].filter(Boolean);return{op:"while",condition:X,body:Q}}function KZ(Z,$){let X;if(Z.left.type==="VariableDeclaration"){let Y=Z.left.declarations[0];if(Y.id.type!=="Identifier")throw new i("Only simple variable names are supported in for...of",p(Z.left),$.source,$.filename);X=Y.id.name}else if(Z.left.type==="Identifier")X=Z.left.name;else throw new i("Unsupported for...of left-hand side",p(Z.left),$.source,$.filename);let Q=r(Z.right,$),H=W1($);H.locals.set(X,{kind:"any"});let K=Z.body.type==="BlockStatement"?B1(Z.body,H):[J0(Z.body,H)].filter(Boolean);return{op:"map",items:Q,as:X,steps:K}}function YZ(Z,$){let X=B1(Z.block,W1($)),Q,H;if(Z.handler){let K=W1($);if(Z.handler.param?.type==="Identifier")H=Z.handler.param.name,K.locals.set(H,{kind:"any"});Q=B1(Z.handler.body,K)}return{op:"try",try:X,...Q&&{catch:Q},...H&&{catchParam:H}}}function zZ(Z,$){if(!Z.argument)return{op:"return",value:{}};let{step:X,resultVar:Q}=g1(Z.argument,$,"__returnVal__");if(X)return[X,{op:"return",value:Q}];return{op:"return",value:r(Z.argument,$)}}var Q7=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),WZ=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),_0=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),GZ=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 JZ(Z){if(Z.callee.type==="Identifier"){let $=Z.callee.name;return WZ.has($)||_0.has($)}if(Z.callee.type==="MemberExpression"){let $=Z.callee;if($.object.type==="Identifier"){let X=$.object.name;if(Q7.has(X)||_0.has(X))return!0}if($.property.type==="Identifier"){let X=$.property.name;if(GZ.has(X))return!0}}return!1}function _Z(Z){if(Z.object.type==="Identifier"){let $=Z.object.name;return Q7.has($)||_0.has($)}return!1}var X7={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 LZ(Z){if(Z.callee.type==="Identifier"){let $=Z.callee.name;if(_0.has($))return X7[$]||`${$} is not available in AsyncJS.`}if(Z.callee.type==="MemberExpression"){let $=Z.callee;if($.object.type==="Identifier"){let X=$.object.name;if(_0.has(X))return X7[X]||`${X} is not available in AsyncJS.`}}return null}function H7(Z){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."}[Z]||" Use factory functions or object literals instead."}function g1(Z,$,X,Q){let H=Q?"constSet":"varSet";if(Z.type==="ChainExpression")return g1(Z.expression,$,X,Q);if(Z.type==="NewExpression"){let Y=Z,z="constructor";if(Y.callee.type==="Identifier")z=Y.callee.name;let W=H7(z);throw new i(`The 'new' keyword is not supported in AsyncJS.${W}`,p(Z),$.source,$.filename)}if(Z.type==="CallExpression"){let Y=LZ(Z);if(Y)throw new i(Y,p(Z),$.source,$.filename)}if(Z.type==="CallExpression"&&JZ(Z)){let Y=m(Z,$);if(X)return{step:{op:H,key:X,value:Y},resultVar:X};return{step:null,resultVar:Y}}if(Z.type==="MemberExpression"&&_Z(Z)){let Y=m(Z,$);if(X)return{step:{op:H,key:X,value:Y},resultVar:X};return{step:null,resultVar:Y}}if(Z.type==="CallExpression")return UZ(Z,$,X,Q);if(Z.type==="TemplateLiteral")return DZ(Z,$,X,Q);if(Z.type==="BinaryExpression"||Z.type==="LogicalExpression"||Z.type==="UnaryExpression"){let Y=m(Z,$);if(X)return{step:{op:H,key:X,value:Y},resultVar:X};return{step:null,resultVar:Y}}return{step:null,resultVar:r(Z,$)}}function UZ(Z,$,X,Q){let H,K=!1,Y;if(Z.callee.type==="Identifier")H=Z.callee.name;else if(Z.callee.type==="MemberExpression"){let W=Z.callee;if(W.property.type==="Identifier")H=W.property.name,K=!0,Y=r(W.object,$);else throw new i("Computed method names are not supported",p(Z),$.source,$.filename)}else throw new i("Only named function calls are supported",p(Z),$.source,$.filename);if(K)return qZ(H,Y,Z.arguments,$,X,Q);if(H==="console"&&Z.callee.type==="MemberExpression");let z=AZ(Z,$);return{step:{op:H,...z,...X&&{result:X},...X&&Q&&{resultConst:!0}},resultVar:X}}function qZ(Z,$,X,Q,H,K){switch(Z){case"map":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let Y=X[0],z=Y.params[0],W=z?.type==="Identifier"?z.name:"item",G=W1(Q);G.locals.set(W,{kind:"any"});let J;if(Y.body.type==="BlockStatement")J=B1(Y.body,G);else{let{step:L,resultVar:_}=g1(Y.body,G,"result");J=L?[L]:[{op:"varSet",key:"result",value:_}]}return{step:{op:"map",items:$,as:W,steps:J,...H&&{result:H},...H&&K&&{resultConst:!0}},resultVar:H}}break;case"filter":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let Y=X[0],z=Y.params[0],W=z?.type==="Identifier"?z.name:"item",G=W1(Q);G.locals.set(W,{kind:"any"});let J;if(Y.body.type==="BlockStatement")throw new i("filter callback must be an expression, not a block",p(X[0]),Q.source,Q.filename);else J=m(Y.body,G);return{step:{op:"filter",items:$,as:W,condition:J,...H&&{result:H},...H&&K&&{resultConst:!0}},resultVar:H}}break;case"find":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let Y=X[0],z=Y.params[0],W=z?.type==="Identifier"?z.name:"item",G=W1(Q);G.locals.set(W,{kind:"any"});let J;if(Y.body.type==="BlockStatement")throw new i("find callback must be an expression, not a block",p(X[0]),Q.source,Q.filename);else J=m(Y.body,G);return{step:{op:"find",items:$,as:W,condition:J,...H&&{result:H},...H&&K&&{resultConst:!0}},resultVar:H}}break;case"reduce":if(X.length>=2&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let Y=X[0],z=Y.params[0],W=Y.params[1],G=z?.type==="Identifier"?z.name:"acc",J=W?.type==="Identifier"?W.name:"item",L=W1(Q);L.locals.set(G,{kind:"any"}),L.locals.set(J,{kind:"any"});let _;if(Y.body.type==="BlockStatement")_=B1(Y.body,L);else{let{step:q,resultVar:I}=g1(Y.body,L,"result");_=q?[q]:[{op:"varSet",key:"result",value:I}]}let U=r(X[1],Q);return{step:{op:"reduce",items:$,as:J,accumulator:G,initial:U,steps:_,...H&&{result:H},...H&&K&&{resultConst:!0}},resultVar:H}}break;case"slice":break;case"push":return{step:{op:"push",list:$,item:r(X[0],Q),...H&&{result:H},...H&&K&&{resultConst:!0}},resultVar:H};case"join":return{step:{op:"join",list:$,sep:X.length>0?r(X[0],Q):"",...H&&{result:H},...H&&K&&{resultConst:!0}},resultVar:H};case"split":return{step:{op:"split",str:$,sep:X.length>0?r(X[0],Q):"",...H&&{result:H},...H&&K&&{resultConst:!0}},resultVar:H}}return Q.warnings.push({message:`Unknown method '${Z}' - treating as atom call`,line:0,column:0}),{step:{op:Z,receiver:$,args:X.map((Y)=>r(Y,Q)),...H&&{result:H},...H&&K&&{resultConst:!0}},resultVar:H}}function DZ(Z,$,X,Q){let H="",K={};for(let Y=0;Y<Z.quasis.length;Y++)if(H+=Z.quasis[Y].value.cooked||Z.quasis[Y].value.raw,Y<Z.expressions.length){let z=Z.expressions[Y],W=`_${Y}`;K[W]=r(z,$),H+=`{{${W}}}`}return{step:{op:"template",tmpl:H,vars:K,...X&&{result:X},...X&&Q&&{resultConst:!0}},resultVar:X}}function m(Z,$){switch(Z.type){case"Literal":return{$expr:"literal",value:Z.value};case"Identifier":return{$expr:"ident",name:Z.name};case"MemberExpression":{let X=Z,Q=m(X.object,$),H=X.optional===!0;if(X.computed){let Y=X.property;if(Y.type==="Literal")return{$expr:"member",object:Q,property:String(Y.value),computed:!0,...H&&{optional:!0}};throw new i("Computed member access with variables not yet supported",p(Z),$.source,$.filename)}let K=X.property.name;return{$expr:"member",object:Q,property:K,...H&&{optional:!0}}}case"ChainExpression":return m(Z.expression,$);case"BinaryExpression":{let X=Z;return{$expr:"binary",op:X.operator,left:m(X.left,$),right:m(X.right,$)}}case"LogicalExpression":{let X=Z;return{$expr:"logical",op:X.operator,left:m(X.left,$),right:m(X.right,$)}}case"UnaryExpression":{let X=Z;return{$expr:"unary",op:X.operator,argument:m(X.argument,$)}}case"ConditionalExpression":{let X=Z;return{$expr:"conditional",test:m(X.test,$),consequent:m(X.consequent,$),alternate:m(X.alternate,$)}}case"ArrayExpression":return{$expr:"array",elements:Z.elements.filter((Q)=>Q!==null).map((Q)=>m(Q,$))};case"ObjectExpression":{let X=Z,Q=[];for(let H of X.properties)if(H.type==="Property"){let K=H.key.type==="Identifier"?H.key.name:String(H.key.value);Q.push({key:K,value:m(H.value,$)})}return{$expr:"object",properties:Q}}case"CallExpression":{let X=Z;if(X.callee.type==="MemberExpression"){let Q=X.callee,H=Q.property.type==="Identifier"?Q.property.name:String(Q.property.value),K=Q.optional===!0||X.optional===!0;return{$expr:"methodCall",object:m(Q.object,$),method:H,arguments:X.arguments.map((Y)=>m(Y,$)),...K&&{optional:!0}}}if(X.callee.type==="Identifier")return{$expr:"call",callee:X.callee.name,arguments:X.arguments.map((H)=>m(H,$))};throw new i("Complex function calls in expressions should be lifted to statements",p(Z),$.source,$.filename)}case"NewExpression":{let X=Z,Q="constructor";if(X.callee.type==="Identifier")Q=X.callee.name;let H=H7(Q);throw new i(`The 'new' keyword is not supported in AsyncJS.${H}`,p(Z),$.source,$.filename)}case"TemplateLiteral":throw new i("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",p(Z),$.source,$.filename);default:throw new i(`Unsupported expression type in condition: ${Z.type}`,p(Z),$.source,$.filename)}}function r(Z,$){switch(Z.type){case"Literal":return Z.value;case"Identifier":return Z.name;case"MemberExpression":{let X=Z;if(X.optional===!0)return m(Z,$);let H=r(X.object,$);if(H&&typeof H==="object"&&H.$expr){let Y=X.computed?String(X.property.value):X.property.name;return{$expr:"member",object:H,property:Y,...X.computed&&{computed:!0}}}if(X.computed)return`${H}[${r(X.property,$)}]`;let K=X.property.name;if(typeof H==="string")return`${H}.${K}`;if(H&&H.$kind==="arg")return{$kind:"arg",path:`${H.path}.${K}`};return`${H}.${K}`}case"ChainExpression":return r(Z.expression,$);case"ArrayExpression":return Z.elements.map((X)=>X?r(X,$):null);case"ObjectExpression":{let X={};for(let Q of Z.properties)if(Q.type==="Property"){let H=Q.key.type==="Identifier"?Q.key.name:String(Q.key.value);X[H]=r(Q.value,$)}return X}case"TemplateLiteral":return m(Z,$);case"CallExpression":return m(Z,$);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return m(Z,$);default:return null}}function AZ(Z,$){if(Z.arguments.length===1&&Z.arguments[0].type==="ObjectExpression"){let X=Z.arguments[0],Q={};for(let H of X.properties)if(H.type==="Property"){let K=H.key.type==="Identifier"?H.key.name:String(H.key.value);Q[K]=r(H.value,$)}return Q}return{args:Z.arguments.map((X)=>r(X,$))}}import{parseExpressionAt as E7}from"acorn";function IZ(Z,$){let X=$;while(X>0&&Z[X-1]!==`
|
|
44
|
+
`)X--;if(Z.slice(X,$).includes("//"))return!0;let H=0,K=!1;while(H<$)if(!K&&Z.slice(H,H+2)==="/*")K=!0,H+=2;else if(K&&Z.slice(H,H+2)==="*/")K=!1,H+=2;else H++;return K}function BZ(Z){let $=[],X=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,Q;while((Q=X.exec(Z))!==null){let H=Q[2]||`embedded test ${$.length+1}`,K=(Q[3]||Q[4]||"").trim();$.push({description:H,body:K,line:b4(Z,Q.index)})}return $}function v4(Z){let $=[],X=[],Q=BZ(Z);$.push(...Q);let H=/test\s+(['"`])([^'"`]*)\1\s*\{|test\s*\(\s*(['"`])([^'"`]*)\3\s*\)\s*\{|test\s*\{/g,K=/mock\s*\{/g,Y=Z,z,W=[];while((z=H.exec(Z))!==null){let _=z.index;if(IZ(Z,_))continue;let U=z[2]||z[4]||`test ${$.length+1}`,q=z.index+z[0].length,I=K7(Z,q-1);if(I===-1)continue;let M=Z.slice(q,I).trim();$.push({description:U,body:M,line:b4(Z,_)}),W.push({start:_,end:I+1,desc:U})}let G=[];while((z=K.exec(Z))!==null){let _=z.index,U=z.index+z[0].length,q=K7(Z,U-1);if(q===-1)continue;let I=Z.slice(U,q).trim();X.push({body:I,line:b4(Z,_)}),G.push({start:_,end:q+1})}let J=[...W,...G].sort((_,U)=>U.start-_.start);for(let _ of J)Y=Y.slice(0,_.start)+Y.slice(_.end);Y=Y.replace(/\n\s*\n\s*\n/g,`
|
|
45
|
+
|
|
46
|
+
`).trim();let L=RZ($,X);return{code:Y,tests:$,mocks:X,testRunner:L}}function K7(Z,$){let X=0,Q=null,H=!1;for(let K=$;K<Z.length;K++){let Y=Z[K];if(H){H=!1;continue}if(Y==="\\"){H=!0;continue}if(!Q&&(Y==='"'||Y==="'"||Y==="`")){Q=Y;continue}if(Q===Y){Q=null;continue}if(Q)continue;if(Y==="{")X++;if(Y==="}"){if(X--,X===0)return K}}return-1}function b4(Z,$){return Z.slice(0,$).split(`
|
|
47
|
+
`).length}function RZ(Z,$){if(Z.length===0)return"// No tests defined";let X=$.map((H)=>H.body).join(`
|
|
48
|
+
`);return`(async () => {
|
|
49
|
+
const __results = []
|
|
50
|
+
|
|
51
|
+
${Z.map((H,K)=>`
|
|
52
|
+
// Test ${K+1}: ${H.description}
|
|
53
|
+
try {
|
|
54
|
+
${X}
|
|
55
|
+
await (async () => {
|
|
56
|
+
${H.body}
|
|
57
|
+
})()
|
|
58
|
+
__results.push({ description: ${JSON.stringify(H.description)}, passed: true })
|
|
59
|
+
} catch (__e) {
|
|
60
|
+
__results.push({ description: ${JSON.stringify(H.description)}, passed: false, error: __e.message })
|
|
61
|
+
}`).join(`
|
|
62
|
+
`)}
|
|
63
|
+
|
|
64
|
+
// Compute summary (no console output - caller handles reporting)
|
|
65
|
+
const __passed = __results.filter(r => r.passed).length
|
|
66
|
+
const __failed = __results.filter(r => !r.passed).length
|
|
67
|
+
|
|
68
|
+
// Return summary
|
|
69
|
+
return { passed: __passed, failed: __failed, results: __results }
|
|
70
|
+
})()`.trim()}var Y7=`
|
|
71
|
+
function assert(condition, message) {
|
|
72
|
+
if (!condition) {
|
|
73
|
+
throw new Error(message || 'Assertion failed')
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
`,z7=`
|
|
77
|
+
function expect(actual) {
|
|
78
|
+
const deepEqual = (a, b) => {
|
|
79
|
+
if (a === b) return true
|
|
80
|
+
if (a === null || b === null) return a === b
|
|
81
|
+
if (a === undefined || b === undefined) return a === undefined && b === undefined
|
|
82
|
+
if (typeof a !== typeof b) return false
|
|
83
|
+
if (typeof a !== 'object') return a === b
|
|
84
|
+
if (Array.isArray(a) !== Array.isArray(b)) return false
|
|
85
|
+
if (Array.isArray(a)) {
|
|
86
|
+
if (a.length !== b.length) return false
|
|
87
|
+
return a.every((v, i) => deepEqual(v, b[i]))
|
|
88
|
+
}
|
|
89
|
+
const keysA = Object.keys(a)
|
|
90
|
+
const keysB = Object.keys(b)
|
|
91
|
+
if (keysA.length !== keysB.length) return false
|
|
92
|
+
return keysA.every(k => deepEqual(a[k], b[k]))
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const format = (v) => {
|
|
96
|
+
if (v === null) return 'null'
|
|
97
|
+
if (v === undefined) return 'undefined'
|
|
98
|
+
if (typeof v === 'string') return JSON.stringify(v)
|
|
99
|
+
if (typeof v === 'object') return JSON.stringify(v)
|
|
100
|
+
return String(v)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
toBe(expected) {
|
|
105
|
+
if (!deepEqual(actual, expected)) {
|
|
106
|
+
throw new Error(\`Expected \${format(expected)} but got \${format(actual)}\`)
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
toEqual(expected) {
|
|
110
|
+
if (!deepEqual(actual, expected)) {
|
|
111
|
+
throw new Error(\`Expected \${format(expected)} but got \${format(actual)}\`)
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
toContain(item) {
|
|
115
|
+
if (!Array.isArray(actual) || !actual.some(v => deepEqual(v, item))) {
|
|
116
|
+
throw new Error(\`Expected \${format(actual)} to contain \${format(item)}\`)
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
toThrow(message) {
|
|
120
|
+
let threw = false
|
|
121
|
+
let thrownMessage = ''
|
|
122
|
+
try {
|
|
123
|
+
if (typeof actual === 'function') actual()
|
|
124
|
+
} catch (e) {
|
|
125
|
+
threw = true
|
|
126
|
+
thrownMessage = e.message || String(e)
|
|
127
|
+
}
|
|
128
|
+
if (!threw) {
|
|
129
|
+
throw new Error('Expected function to throw but it did not')
|
|
130
|
+
}
|
|
131
|
+
if (message && !thrownMessage.includes(message)) {
|
|
132
|
+
throw new Error(\`Expected error containing "\${message}" but got "\${thrownMessage}"\`)
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
toBeTruthy() {
|
|
136
|
+
if (!actual) {
|
|
137
|
+
throw new Error(\`Expected \${format(actual)} to be truthy\`)
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
toBeFalsy() {
|
|
141
|
+
if (actual) {
|
|
142
|
+
throw new Error(\`Expected \${format(actual)} to be falsy\`)
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
toBeNull() {
|
|
146
|
+
if (actual !== null) {
|
|
147
|
+
throw new Error(\`Expected null but got \${format(actual)}\`)
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
toBeUndefined() {
|
|
151
|
+
if (actual !== undefined) {
|
|
152
|
+
throw new Error(\`Expected undefined but got \${format(actual)}\`)
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
toBeGreaterThan(n) {
|
|
156
|
+
if (!(actual > n)) {
|
|
157
|
+
throw new Error(\`Expected \${format(actual)} to be greater than \${n}\`)
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
toBeLessThan(n) {
|
|
161
|
+
if (!(actual < n)) {
|
|
162
|
+
throw new Error(\`Expected \${format(actual)} to be less than \${n}\`)
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
`,MZ=Y7+`
|
|
168
|
+
`+z7;import{validate as J7,s as H4}from"tosijs-schema";import{validate as f4,s as u0}from"tosijs-schema";function O1(Z){return Z!==null&&typeof Z==="object"&&"__runtimeType"in Z&&Z.__runtimeType===!0}function W7(Z){return Z!==null&&typeof Z==="object"&&"schema"in Z&&typeof Z.schema==="object"}function wZ(Z){return Z!==null&&typeof Z==="object"&&"type"in Z&&typeof Z.type==="string"}function s(Z,$,X,Q){let H,K,Y,z=X,W=Q;if(typeof Z==="string")if(H=Z,typeof $==="function"){if(K=$,z!==void 0)Y=u0.infer(z)}else if($===void 0&&z!==void 0)Y=u0.infer(z);else if(W7($))Y=$;else if(wZ($))Y=$;else if($!==void 0)z=$,W=z,Y=u0.infer(z);else throw Error("Type(description) requires a predicate, schema, or example");else{if(W7(Z))Y=Z;else Y=Z;H=jZ(Y)}let G;if(Y){let L=Y?.schema??Y;if(L&&typeof L==="object"&&Array.isArray(L.examples))G=L.examples}if(z===void 0&&G&&G.length>0)z=G[0];return{description:H,check:(L)=>{if(K)return K(L);if(Y)return f4(L,Y);return!1},schema:Y,predicate:K,example:z,examples:G,default:W,__runtimeType:!0}}function jZ(Z){let $=Z?.schema??Z;if($&&typeof $==="object"&&"type"in $){let X=$;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 d0=s("string",(Z)=>typeof Z==="string"),l0=s("number",(Z)=>typeof Z==="number"),m0=s("boolean",(Z)=>typeof Z==="boolean"),i0=s("integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)),p0=s("positive integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)&&Z>0),n0=s("non-empty string",(Z)=>typeof Z==="string"&&Z.length>0),c0=s("email address",(Z)=>typeof Z==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(Z)),y4=(Z)=>{try{return new URL(Z),!0}catch{return!1}},o0=s("URL",(Z)=>typeof Z==="string"&&y4(Z)),s0=s("UUID",(Z)=>typeof Z==="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(Z)),h4=(Z)=>{let $=new Date(Z);return!isNaN($.getTime())&&Z.includes("T")},x4=(Z)=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(Z))return!1;let $=new Date(Z+"T00:00:00Z");return!isNaN($.getTime())},u4=s("ISO 8601 timestamp",(Z)=>typeof Z==="string"&&h4(Z)),d4=s("date (YYYY-MM-DD)",(Z)=>typeof Z==="string"&&x4(Z));function a0(Z){return s(`${Z.description} or null`,($)=>$===null||Z.check($))}function r0(Z){return s(`${Z.description} (optional)`,($)=>$===null||$===void 0||Z.check($))}function t0(Z,$,...X){if(typeof Z==="string"&&Array.isArray($)){let K=Z,Y=$,z=new Set(Y);return{description:K,check:(G)=>z.has(G),__runtimeType:!0,values:Y}}let Q=[];if(O1(Z))Q.push(Z);if(O1($))Q.push($);Q.push(...X);let H=Q.map((K)=>K.description).join(" | ");return s(H,(K)=>Q.some((Y)=>Y.check(K)))}function e0(Z){return s(`array of ${Z.description}`,($)=>Array.isArray($)&&$.every((X)=>Z.check(X)))}function FZ(Z){if(O1(Z))return(X)=>Z.check(X);if(Z&&typeof Z==="object"&&"schema"in Z)return(X)=>f4(X,Z);let $=u0.infer(Z);return(X)=>f4(X,$)}function p1(Z,$,X){let Q=[],H=[];for(let Y of Z)if(typeof Y==="string")Q.push(Y),H.push(void 0);else Q.push(Y[0]),H.push(Y[1]);let K=(...Y)=>{let z=Q.map((G,J)=>{let L=J<Y.length?Y[J]:H[J];if(L===void 0)return()=>!0;return FZ(L)}),W=X;return Q.forEach((G,J)=>{let L=J<Y.length?Y[J]:H[J],_="any";if(O1(L))_=L.description;else if(L!==void 0)_=typeof L==="string"?"string":JSON.stringify(L);W=W.replace(new RegExp(`\\b${G}\\b`,"g"),_)}),s(W,(G)=>$(G,...z))};return K.params=Q,K.description=X,K}var Z4=p1(["T","U"],(Z,$,X)=>Array.isArray(Z)&&Z.length===2&&$(Z[0])&&X(Z[1]),"Pair<T, U>"),$4=p1(["V"],(Z,$)=>typeof Z==="object"&&Z!==null&&!Array.isArray(Z)&&Object.values(Z).every($),"Record<string, V>");function X4(Z,$){let X=Object.values($),Q=new Set(X),H=Object.keys($),K={};for(let[z,W]of Object.entries($))K[W]=z;return{description:Z,check:(z)=>Q.has(z),__runtimeType:!0,members:$,names:K,values:X,keys:H}}function PZ(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";switch(typeof Z){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger(Z)?"integer":"number";case"object":return Array.isArray(Z)?"array":"object";default:return null}}function U0(Z,$,X){if(Array.isArray($)&&X){let Q=$,H=[],K=[];for(let z of Q)if(Array.isArray(z))H.push(z[0]),K.push(z[1]);else H.push(z),K.push(void 0);let Y=(...z)=>{let W=H.map((J,L)=>L<z.length?z[L]:K[L]),G=X(...W);return U0(Z,G)};return Object.defineProperties(Y,{typeParamNames:{value:H,enumerable:!0},description:{value:Z,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),Y}return VZ(Z,$)}function VZ(Z,$){let X={},Q=void 0,H="assertReturns";if(typeof $==="function"){let Y=$.__tjs;if(Y){if(Y.params)for(let[z,W]of Object.entries(Y.params))X[z]=W?.example??null;if(Y.returns)Q=Y.returns?.example??null;if(Y.safeReturn)H="checkedReturns";else if(Y.unsafe)H="assertReturns";else H="returns"}}else X=$.params??{},Q=$.returns,H=$.returnContract??"assertReturns";return{description:Z,params:X,returns:Q,returnContract:H,check:(Y)=>{if(typeof Y!=="function")return!1;let z=Object.keys(X).length;if(z>0){let G=Y.__tjs;if(G?.params){if(Object.keys(G.params).length!==z)return!1;let L=Object.keys(X),_=Object.keys(G.params);for(let U=0;U<L.length;U++){let q=G.params[_[U]],I=X[L[U]];if(q?.type?.kind&&I!==void 0){let M=PZ(I);if(M&&q.type.kind!==M&&q.type.kind!=="any")return!1}}}}return!0},__runtimeType:!0}}var OZ=G7(),Z1=OZ.version,q0=Symbol.for("tjs.equals");function K4(Z){let[$=0,X=0,Q=0]=Z.split(".").map(Number);return{major:$,minor:X,patch:Q}}function l4(Z,$){let X=K4(Z),Q=K4($);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 m4(Z,$){let X=K4(Z),Q=K4($);return X.major===Q.major}class f1 extends Error{path;expected;actual;callStack;constructor(Z,$,X,Q,H){super(Z);if(this.name="MonadicError",this.path=$,this.expected=X,this.actual=Q,this.callStack=H,Error.captureStackTrace)Error.captureStackTrace(this,f1)}}function NZ(Z,$,X){let Q=X===null?"null":typeof X,H=H1.debug?U7():void 0;return new f1(`Expected ${$} for '${Z}', got ${Q}`,Z,$,Q,H)}function _7(Z){return Z instanceof f1}var i4={debug:!1,safety:"inputs",requireReturnTypes:!1,maxStackSize:100},H1={...i4},P1=[],o1=0;function EZ(){o1++}function TZ(){if(o1>0)o1--}function SZ(){return o1>0}function kZ(Z){H1={...H1,...Z}}function gZ(){return{...H1}}function L7(Z){if(H1.debug&&Z){P1.push(Z);let $=H1.maxStackSize??100;while(P1.length>$)P1.shift()}}function Q4(){if(H1.debug)P1.pop()}function U7(){return[...P1]}function bZ(){H1={...i4},P1.length=0,o1=0}function n1(Z,$){if(Z!==null&&typeof Z==="object"&&typeof Z[q0]==="function")return Z[q0]($);if($!==null&&typeof $==="object"&&typeof $[q0]==="function")return $[q0](Z);if(Z!==null&&typeof Z==="object"&&typeof Z.Equals==="function")return Z.Equals($);if($!==null&&typeof $==="object"&&typeof $.Equals==="function")return $.Equals(Z);if(Z instanceof String||Z instanceof Number||Z instanceof Boolean)Z=Z.valueOf();if($ instanceof String||$ instanceof Number||$ instanceof Boolean)$=$.valueOf();if(Z===$)return!0;if((Z===null||Z===void 0)&&($===null||$===void 0))return!0;if(Z===null||Z===void 0||$===null||$===void 0)return!1;if(typeof Z!==typeof $)return!1;if(typeof Z!=="object")return!1;if(Z instanceof Set&&$ instanceof Set){if(Z.size!==$.size)return!1;for(let H of Z)if(!$.has(H))return!1;return!0}if(Z instanceof Map&&$ instanceof Map){if(Z.size!==$.size)return!1;for(let[H,K]of Z){if(!$.has(H))return!1;if(!n1(K,$.get(H)))return!1}return!0}if(Z instanceof Date&&$ instanceof Date)return Z.getTime()===$.getTime();if(Z instanceof RegExp&&$ instanceof RegExp)return Z.toString()===$.toString();if(Array.isArray(Z)&&Array.isArray($)){if(Z.length!==$.length)return!1;return Z.every((H,K)=>n1(H,$[K]))}if(Array.isArray(Z)!==Array.isArray($))return!1;let X=Object.keys(Z),Q=Object.keys($);if(X.length!==Q.length)return!1;return X.every((H)=>n1(Z[H],$[H]))}function q7(Z,$){return!n1(Z,$)}function D7(Z){if(Z===null)return"null";return typeof Z}function p4(Z,$){if(Z instanceof String||Z instanceof Number||Z instanceof Boolean)Z=Z.valueOf();if($ instanceof String||$ instanceof Number||$ instanceof Boolean)$=$.valueOf();if(Z===$)return!0;if((Z===null||Z===void 0)&&($===null||$===void 0))return!0;return!1}function A7(Z,$){return!p4(Z,$)}function F1(Z){return Z!==null&&typeof Z==="object"&&Z.$error===!0}function R1(Z,$){let X={$error:!0,message:Z,...$};if(H1.debug&&P1.length>0){let Q=$?.path?[...P1,$.path]:[...P1];X.stack=Q}return X}function n4(Z,$){if(Z.length===0)return R1("Unknown error");if(Z.length===1)return Z[0];let X=Z.map((H)=>{if(H.path){let K=H.path.split(".");return K[K.length-1]}return"unknown"}).join(", "),Q=`Multiple parameter errors in ${$||"function"}: ${X}`;return R1(Q,{path:$,errors:Z})}function c1(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";let $=typeof Z;if($!=="object")return $;let X=Z.constructor?.name;if(X&&X!=="Object")return X;return"object"}function I7(Z,$){if(Z===null||Z===void 0)return!1;if(typeof Z!=="object"&&typeof Z!=="function")return!1;let X=Z;while(X!==null){if(X.constructor?.name===$)return!0;X=Object.getPrototypeOf(X)}return!1}function v1(Z,$,X){if(F1(Z))return Z;if(typeof $==="object"&&$!==null&&"check"in $){if($.check(Z))return null;return R1(`Expected ${$.description} but got ${c1(Z)}`,{path:X,expected:$.description,actual:c1(Z)})}let Q=c1(Z);if($==="any")return null;if($===Q)return null;if($==="number"&&Q==="number")return null;if($==="integer"&&Q==="number"&&Number.isInteger(Z))return null;if($==="non-negative-integer"&&Q==="number"&&Number.isInteger(Z)&&Z>=0)return null;if($==="object"&&Q==="object")return null;return R1(`Expected ${$} but got ${Q}`,{path:X,expected:$,actual:Q})}function c4(Z,$,X){for(let[Q,H]of Object.entries($.params)){let K=Z[Q];if(F1(K))return K;if(H.required&&K===void 0){let z=typeof H.type==="string"?H.type:H.type.description;return R1(`Missing required parameter '${Q}'`,{path:X?`${X}.${Q}`:Q,expected:z,actual:"undefined",loc:H.loc})}if(K===void 0)continue;let Y=v1(K,H.type,X?`${X}.${Q}`:Q);if(Y){if(H.loc)Y.loc=H.loc;return Y}}return null}function o4(Z,$){if(Z.__tjs=$,!(!$.polymorphic&&($.safe||$.safeReturn||H1.safety!=="none"&&!$.unsafe||$.returns&&H1.safety==="all"&&!$.unsafeReturn)))return Z;let Q=!!$.returns,H=!!$.unsafe,K=!!$.safe,Y=!!$.unsafeReturn,z=!!$.safeReturn,W=$.returns?.defaults,G=Object.entries($.params),J=G.length,L=Z.name||$.name||"anonymous",_=function(...U){if(o1>0)return Z.apply(this,U);let q=K||!H&&H1.safety!=="none",I=Q&&(z||!Y&&H1.safety==="all");if(!q&&!I)return Z.apply(this,U);if(U.length>0&&F1(U[0]))return U[0];if(q){let M=U.length===1&&typeof U[0]==="object"&&U[0]!==null&&!Array.isArray(U[0]),R=[];if(!M)for(let P=0;P<J;P++){let[B,F]=G[P],N=U[P];if(F1(N)){R.push(N);continue}if(F.required&&N===void 0){R.push(R1(`Missing required parameter '${B}'`,{path:`${L}.${B}`,expected:typeof F.type==="string"?F.type:F.type?.description||"value",actual:"undefined",loc:F.loc}));continue}if(N!==void 0){let V=v1(N,F.type,`${L}.${B}`);if(V){if(F.loc)V.loc=F.loc;R.push(V)}}}else{let P=U[0];for(let B=0;B<J;B++){let[F,N]=G[B],V=P[F];if(F1(V)){R.push(V);continue}if(N.required&&V===void 0){R.push(R1(`Missing required parameter '${F}'`,{path:`${L}.${F}`,expected:typeof N.type==="string"?N.type:N.type?.description||"value",actual:"undefined",loc:N.loc}));continue}if(V!==void 0){let w=v1(V,N.type,`${L}.${F}`);if(w){if(N.loc)w.loc=N.loc;R.push(w)}}}}if(R.length>0)return n4(R,L)}L7(L);try{let M=Z.apply(this,U);if(I&&$.returns&&!F1(M)){let R=W&&typeof M==="object"&&M!==null?Object.assign({},W,M):M,P=v1(R,$.returns.type,`${L}()`);if(P)return Q4(),P}return Q4(),M}catch(M){return Q4(),R1(M.message||String(M),{path:L,cause:M})}};return Object.defineProperty(_,"name",{value:Z.name}),_.__tjs=$,_}function B7(Z){let $=new Proxy(Z,{construct(X,Q,H){return Reflect.construct(X,Q,H)},apply(X,Q,H){return Reflect.construct(X,H)}});Object.defineProperty($,"name",{value:Z.name});for(let X of Object.getOwnPropertyNames(Z))if(X!=="length"&&X!=="name"&&X!=="prototype")Object.defineProperty($,X,Object.getOwnPropertyDescriptor(Z,X));return $}function vZ(){let Z={...H1},$=[],X=0;function Q(R){Z={...Z,...R}}function H(){return{...Z}}function K(R){if(Z.debug&&R){$.push(R);let P=Z.maxStackSize??100;while($.length>P)$.shift()}}function Y(){if(Z.debug)$.pop()}function z(){return[...$]}function W(){Z={...i4},$.length=0,X=0}function G(){X++}function J(){if(X>0)X--}function L(){return X>0}let _=new Map;function U(R,P,B){if(!_.has(R))_.set(R,new Map);_.get(R).set(P,B)}function q(R,P){let B=typeof R,F;if(R===null||R===void 0)return;if(B==="string")F="String";else if(B==="number")F="Number";else if(B==="boolean")F="Boolean";else if(Array.isArray(R))F="Array";else if(B==="object")F=R.constructor?.name||"Object";else return;let N=F;while(N){let w=_.get(N);if(w?.has(P))return w.get(P);if(B==="object"&&!Array.isArray(R)){if(N=Object.getPrototypeOf(N===F?R:Object.getPrototypeOf(R))?.constructor?.name,N==="Object"||N===F)break}else break}let V=_.get("Object");if(V?.has(P))return V.get(P);return}function I(R,P,B){let F=B===null?"null":typeof B,N=Z.debug?z():void 0;return new f1(`Expected ${P} for '${R}', got ${F}`,R,P,F,N)}function M(R,P){let B={$error:!0,message:R,...P};if(Z.debug&&$.length>0){let F=P?.path?[...$,P.path]:[...$];B.stack=F}return B}return{version:Z1,MonadicError:f1,typeError:I,isMonadicError:_7,isError:F1,error:M,composeErrors:n4,typeOf:c1,isNativeType:I7,checkType:v1,validateArgs:c4,wrap:o4,wrapClass:B7,compareVersions:l4,versionsCompatible:m4,configure:Q,getConfig:H,pushStack:K,popStack:Y,getStack:z,resetRuntime:W,enterUnsafe:G,exitUnsafe:J,isUnsafeMode:L,validate:J7,infer:H4.infer.bind(H4),Type:s,isRuntimeType:O1,Union:t0,Generic:p1,Enum:X4,FunctionPredicate:U0,Nullable:a0,Optional:r0,TArray:e0,TString:d0,TNumber:l0,TBoolean:m0,TInteger:i0,TPositiveInt:p0,TNonEmptyString:n0,TEmail:c0,TUrl:o0,TUuid:s0,TPair:Z4,TRecord:$4,Is:n1,IsNot:q7,Eq:p4,NotEq:A7,TypeOf:D7,tjsEquals:q0,registerExtension:U,resolveExtension:q}}var b1={version:Z1,MonadicError:f1,typeError:NZ,isMonadicError:_7,isError:F1,error:R1,composeErrors:n4,typeOf:c1,isNativeType:I7,checkType:v1,validateArgs:c4,wrap:o4,wrapClass:B7,compareVersions:l4,versionsCompatible:m4,configure:kZ,getConfig:gZ,pushStack:L7,popStack:Q4,getStack:U7,resetRuntime:bZ,enterUnsafe:EZ,exitUnsafe:TZ,isUnsafeMode:SZ,createRuntime:vZ,validate:J7,infer:H4.infer.bind(H4),Type:s,isRuntimeType:O1,Union:t0,Generic:p1,Enum:X4,FunctionPredicate:U0,Nullable:a0,Optional:r0,TArray:e0,TString:d0,TNumber:l0,TBoolean:m0,TInteger:i0,TPositiveInt:p0,TNonEmptyString:n0,TEmail:c0,TUrl:o0,TUuid:s0,Timestamp:u4,LegalDate:d4,TPair:Z4,TRecord:$4,Is:n1,IsNot:q7,Eq:p4,NotEq:A7,TypeOf:D7};function s4(){let Z=globalThis;if(Z.__tjs){let $=Z.__tjs.version;if(typeof $!=="string")return Z.__tjs=b1,b1;let X=l4(Z1,$);if(X===0)return Z.__tjs;if(m4(Z1,$))if(X>0)console.info(`TJS runtime: upgrading ${$} → ${Z1}`),Z.__tjs=b1;else console.info(`TJS runtime: keeping ${$} (newer than ${Z1})`);else if(console.warn(`TJS runtime version conflict: ${$} vs ${Z1} (major version mismatch)`),X>0)console.warn(`Upgrading to ${Z1} - check for breaking changes`),Z.__tjs=b1;return Z.__tjs}return Z.__tjs=b1,b1}function fZ(Z){return`
|
|
169
|
+
// TJS runtime wrapper (skips unsafe functions)
|
|
170
|
+
if (typeof ${Z}.__tjs === 'object' && !${Z}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
|
|
171
|
+
${Z} = globalThis.__tjs.wrap(${Z}, ${Z}.__tjs)
|
|
172
|
+
}
|
|
173
|
+
`.trim()}function R7(Z){return`
|
|
174
|
+
// TJS: callable without new
|
|
175
|
+
${Z} = new Proxy(${Z}, { apply(t, _, a) { return Reflect.construct(t, a) } });
|
|
176
|
+
`.trim()}function yZ(Z,$,X=0.000000001){if(Z===$)return!0;if(typeof Z==="number"&&typeof $==="number"){if(!Number.isInteger(Z)||!Number.isInteger($)){let Q=Math.abs(Z-$),H=Math.max(Math.abs(Z),Math.abs($),1);return Q/H<X}}return!1}function a4(Z,$){if(Z===$)return!0;if(typeof Z==="number"&&typeof $==="number"&&Number.isNaN(Z)&&Number.isNaN($))return!0;if(yZ(Z,$))return!0;if(Z===null||$===null)return Z===$;if(Z===void 0||$===void 0)return Z===$;if(typeof Z!==typeof $)return!1;if(typeof Z!=="object")return!1;if(Array.isArray(Z)&&Array.isArray($)){if(Z.length!==$.length)return!1;return Z.every((H,K)=>a4(H,$[K]))}if(Array.isArray(Z)!==Array.isArray($))return!1;let X=Object.keys(Z),Q=Object.keys($);if(X.length!==Q.length)return!1;return X.every((H)=>a4(Z[H],$[H]))}function r4(Z,$,X=""){if($===null){if(Z===null)return{matches:!0};return{matches:!1,error:`Expected null at '${X}', got ${y1(Z)}`}}if($===void 0){if(Z===void 0)return{matches:!0};return{matches:!1,error:`Expected undefined at '${X}', got ${y1(Z)}`}}if(typeof $==="number"){if(typeof Z==="number")return{matches:!0};return{matches:!1,error:`Expected number at '${X}', got ${y1(Z)}`}}if(typeof $==="string"){if(typeof Z==="string")return{matches:!0};return{matches:!1,error:`Expected string at '${X}', got ${y1(Z)}`}}if(typeof $==="boolean"){if(typeof Z==="boolean")return{matches:!0};return{matches:!1,error:`Expected boolean at '${X}', got ${y1(Z)}`}}if(Array.isArray($)){if(!Array.isArray(Z))return{matches:!1,error:`Expected array at '${X}', got ${y1(Z)}`};if($.length===0)return{matches:!0};let Q=$[0];for(let H=0;H<Z.length;H++){let K=r4(Z[H],Q,`${X}[${H}]`);if(!K.matches)return K}return{matches:!0}}if(typeof $==="object"&&$!==null){if(typeof Z!=="object"||Z===null||Array.isArray(Z))return{matches:!1,error:`Expected object at '${X}', got ${y1(Z)}`};for(let Q of Object.keys($)){let H=X?`${X}.${Q}`:Q;if(!(Q in Z))return{matches:!1,error:`Missing property '${H}'`};let K=r4(Z[Q],$[Q],H);if(!K.matches)return K}return{matches:!0}}if(Z===$)return{matches:!0};return{matches:!1,error:`Type mismatch at '${X}'`}}function y1(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";return typeof Z}function D0(Z,$=0){if(Z===null)return"null";if(Z===void 0)return"undefined";if(typeof Z==="string")return JSON.stringify(Z);if(typeof Z==="number")return String(Z);if(typeof Z==="boolean")return String(Z);if(Array.isArray(Z)){if(Z.length===0)return"[]";if(Z.length<=3)return`[${Z.map((X)=>D0(X,$)).join(", ")}]`;return`[${Z.slice(0,3).map((X)=>D0(X,$)).join(", ")}, ...]`}if(typeof Z==="object"){let X=Object.entries(Z);if(X.length===0)return"{}";let Q=(W)=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(W)?W:JSON.stringify(W);if(X.length<=2)return`{${X.map(([G,J])=>`${Q(G)}: ${D0(J,$)}`).join(", ")}}`;let H=" ".repeat($+1),K=" ".repeat($),Y=X.slice(0,8).map(([W,G])=>`${H}${Q(W)}: ${D0(G,$+1)}`).join(`,
|
|
177
|
+
`),z=X.length>8?`,
|
|
178
|
+
${H}...`:"";return`{
|
|
179
|
+
${Y}${z}
|
|
180
|
+
${K}}`}return String(Z)}function hZ(Z){let $=Z.replace(/\/\*[\s\S]*?\*\//g,(X)=>{let Q=X.split(`
|
|
181
|
+
`).length-1;return`
|
|
182
|
+
`.repeat(Q)});return $=$.replace(/\/\/[^\n]*/g,""),$}function Y4(Z){let $=Z.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return $=$.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),$=$.replace(/^export\s+default\s+/gm,""),$=$.replace(/^export\s+/gm,""),$=$.replace(/^(\s*)((?:const|let|var)\s+\w+\s*=\s*)?await\s+.+$/gm,"$1/* top-level await removed for test execution */"),$}function M7(Z){let $=Z.replace(/^const __tjs = globalThis\.__tjs\?\.createRuntime\?\.\(\) \?\? globalThis\.__tjs;\n?/m,"");return $=$.replace(/^const \{ [\w, ]+ \} = __tjs \?\? \{\};\n?/m,""),$}function xZ(Z){if(Object.keys(Z).length===0)return"";let $=[];for(let[X,Q]of Object.entries(Z)){let H=Y4(Q);$.push(`// Resolved import: ${X}`),$.push(H)}return $.join(`
|
|
183
|
+
`)}function uZ(Z){let $={},X=Z.trim();if(!X.startsWith("{")||!X.includes("="))try{return{pattern:Function(`return ${Z}`)(),defaults:$}}catch{return null}let Q="",H=0,K=0;while(K<X.length){let Y=X[K];if(Y==="{"||Y==="["||Y==="(")H++,Q+=Y,K++;else if(Y==="}"||Y==="]"||Y===")")H--,Q+=Y,K++;else if(Y==="'"||Y==='"'||Y==="`"){let z=Y;Q+=Y,K++;while(K<X.length&&X[K]!==z){if(X[K]==="\\")Q+=X[K++];Q+=X[K++]}if(K<X.length)Q+=X[K++]}else if(H===1&&Y==="="){let G=(Q.slice(Q.lastIndexOf("{")+1).split(",").pop()||"").match(/\s*(\w+)\s*$/);if(G){let J=K+1;while(J<X.length&&/\s/.test(X[J]))J++;let L="",_=0;while(J<X.length){let U=X[J];if(U==="{"||U==="["||U==="(")_++;else if(U==="}"||U==="]"||U===")"){if(_===0)break;_--}else if(U===","&&_===0)break;L+=U,J++}try{$[G[1]]=Function(`return ${L.trim()}`)()}catch{}Q+=":",K++;continue}Q+=Y,K++}else Q+=Y,K++}try{return{pattern:Function(`return ${Q}`)(),defaults:$}}catch{return null}}function w7(Z){let $=[],X=hZ(Z),Q=/(async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(-[>?])\s*/g,H;while((H=Q.exec(X))!==null){let K=!!H[1],Y=H[2],z=H[3],W=H[4],G=X.slice(0,H.index).split(`
|
|
184
|
+
`).length;if(W==="-!")continue;let J=X.slice(H.index+H[0].length),L=t4(J);if(!L)continue;let _=dZ(z);if(z.trim()&&_.length===0)continue;try{let U=uZ(L);if(!U)continue;let q=_.map((I)=>Function(`return ${I}`)());$.push({funcName:Y,args:q,expected:U.pattern,defaults:Object.keys(U.defaults).length>0?U.defaults:void 0,line:G,isAsync:K})}catch{}}return $}function j7(Z,$,X,Q,H={},K=new Map){let Y=[];if(Z.length===0&&X.length===0)return Y;let z=Q.match(/^import\s+.*?from\s+['"]([^'"]+)['"];?\s*$/gm)||[],W=z.length>0&&z.some((B)=>{let F=B.match(/from\s+['"]([^'"]+)['"]/);return F&&!(F[1]in H)}),G=Y4(Q),J=xZ(H),L=$.map((B)=>B.body).join(`
|
|
185
|
+
`),_=Z.map((B,F)=>{let N=K.size>0?W0(B.body,K):B.body;return`
|
|
186
|
+
// Test ${F}: ${B.description}
|
|
187
|
+
try {
|
|
188
|
+
${N}
|
|
189
|
+
__testResults.push({ idx: ${F}, passed: true });
|
|
190
|
+
} catch (e) {
|
|
191
|
+
__testResults.push({ idx: ${F}, passed: false, error: e.message || String(e) });
|
|
192
|
+
}
|
|
193
|
+
`}).join(`
|
|
194
|
+
`),U=X.filter((B)=>!B.isAsync),q=X.filter((B)=>B.isAsync),I=U.map((B,F)=>`
|
|
195
|
+
// Signature test ${F}: ${B.funcName}
|
|
196
|
+
try {
|
|
197
|
+
let __actual = ${B.funcName}(${B.args.map((N)=>JSON.stringify(N)).join(", ")});
|
|
198
|
+
const __expected = ${JSON.stringify(B.expected)};${B.defaults?`
|
|
199
|
+
const __defaults = ${JSON.stringify(B.defaults)};
|
|
200
|
+
if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
|
|
201
|
+
if (__deepEqual(__actual, __expected)) {
|
|
202
|
+
__sigTestResults.push({ idx: ${F}, passed: true });
|
|
203
|
+
} else {
|
|
204
|
+
__sigTestResults.push({ idx: ${F}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${B.funcName}\\', got ' + __format(__actual) });
|
|
205
|
+
}
|
|
206
|
+
} catch (e) {
|
|
207
|
+
__sigTestResults.push({ idx: ${F}, passed: false, error: e.message || String(e) });
|
|
208
|
+
}
|
|
209
|
+
`).join(`
|
|
210
|
+
`);s4();let P=`
|
|
211
|
+
${`
|
|
212
|
+
const __saved_tjs = globalThis.__tjs;
|
|
213
|
+
`}
|
|
214
|
+
const __testResults = [];
|
|
215
|
+
const __sigTestResults = [];
|
|
216
|
+
try {
|
|
217
|
+
// Test assertions
|
|
218
|
+
function assert(condition, message) {
|
|
219
|
+
if (!condition) throw new Error(message || 'Assertion failed')
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function expect(actual) {
|
|
223
|
+
return {
|
|
224
|
+
toBe(expected) {
|
|
225
|
+
if (!__deepEqual(actual, expected)) {
|
|
226
|
+
throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
toEqual(expected) {
|
|
230
|
+
if (!__deepEqual(actual, expected)) {
|
|
231
|
+
throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
toContain(item) {
|
|
235
|
+
if (!Array.isArray(actual) || !actual.some(function(v) { return __deepEqual(v, item) })) {
|
|
236
|
+
throw new Error('Expected ' + __format(actual) + ' to contain ' + __format(item))
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
toBeTruthy() {
|
|
240
|
+
if (!actual) {
|
|
241
|
+
throw new Error('Expected ' + __format(actual) + ' to be truthy')
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
toBeFalsy() {
|
|
245
|
+
if (actual) {
|
|
246
|
+
throw new Error('Expected ' + __format(actual) + ' to be falsy')
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
toBeNull() {
|
|
250
|
+
if (actual !== null) {
|
|
251
|
+
throw new Error('Expected null but got ' + __format(actual))
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
toBeUndefined() {
|
|
255
|
+
if (actual !== undefined) {
|
|
256
|
+
throw new Error('Expected undefined but got ' + __format(actual))
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
toBeGreaterThan(n) {
|
|
260
|
+
if (!(actual > n)) {
|
|
261
|
+
throw new Error('Expected ' + __format(actual) + ' to be greater than ' + n)
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
toBeLessThan(n) {
|
|
265
|
+
if (!(actual < n)) {
|
|
266
|
+
throw new Error('Expected ' + __format(actual) + ' to be less than ' + n)
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
toBeNaN() {
|
|
270
|
+
if (typeof actual !== 'number' || !Number.isNaN(actual)) {
|
|
271
|
+
throw new Error('Expected NaN but got ' + __format(actual))
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Inject resolved imports first (they may be dependencies)
|
|
278
|
+
${J}
|
|
279
|
+
|
|
280
|
+
// Execute the module code ONCE
|
|
281
|
+
${G}
|
|
282
|
+
${L}
|
|
283
|
+
|
|
284
|
+
// Run explicit test blocks
|
|
285
|
+
${_}
|
|
286
|
+
|
|
287
|
+
// Run signature tests
|
|
288
|
+
${I}
|
|
289
|
+
|
|
290
|
+
} finally {
|
|
291
|
+
${"globalThis.__tjs = __saved_tjs;"}
|
|
292
|
+
}
|
|
293
|
+
return { testResults: __testResults, sigTestResults: __sigTestResults };
|
|
294
|
+
`;try{let B=Function("__deepEqual","__format","__typeMatches",P),{testResults:F,sigTestResults:N}=B(a4,D0,r4);for(let V of F){let w=Z[V.idx],C=W&&!V.passed&&V.error&&/is not defined$/.test(V.error);Y.push({description:w.description,passed:C?!0:V.passed,error:C?void 0:V.error,line:w.line})}for(let V of N){let w=U[V.idx],C=W&&!V.passed&&V.error&&/is not defined$/.test(V.error);Y.push({description:`${w.funcName} signature example`,passed:C?!0:V.passed,error:C?void 0:V.error,isSignatureTest:!0,line:w.line})}}catch(B){let F=W&&B instanceof ReferenceError;for(let N of Z)Y.push({description:N.description,passed:F,error:F?void 0:`Module execution failed: ${B.message}`,line:N.line});for(let N of U)Y.push({description:`${N.funcName} signature example`,passed:F,error:F?void 0:`Module execution failed: ${B.message}`,isSignatureTest:!0,line:N.line})}for(let B of q)Y.push({description:`${B.funcName} signature example`,passed:!0,isSignatureTest:!0,line:B.line});return Y}function t4(Z){let $="",X=0,Q=!1;for(let K=0;K<Z.length;K++){let Y=Z[K];if(Y==="{"||Y==="["||Y==="("){if(Y==="{"&&X===0&&Q)break;X++,$+=Y,Q=!0}else if(Y==="}"||Y==="]"||Y===")")X--,$+=Y;else if(!/\s/.test(Y))$+=Y,Q=!0;else $+=Y}return $.trim()||null}function dZ(Z){if(!Z.trim())return[];let $=[],X=lZ(Z);for(let Q of X){let H=Q.trim(),K=H.match(/^\.\.\.(\w+)\s*[:=]\s*(\[.+\])$/);if(K){try{let z=Function(`return ${K[2]}`)();if(Array.isArray(z))for(let W of z)$.push(JSON.stringify(W))}catch{}continue}if(H.startsWith("..."))continue;let Y=H.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(Y)$.push(Y[2].trim());else return[]}return $}function lZ(Z){let $=[],X="",Q=0;for(let H of Z){if(H==="("||H==="["||H==="{")Q++;else if(H===")"||H==="]"||H==="}")Q--;else if(H===","&&Q===0){$.push(X.trim()),X="";continue}X+=H}if(X.trim())$.push(X.trim());return $}import*as P7 from"acorn";var D1={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},A0={custom:0,type:1,import:2,function:3,table:4,memory:5,global:6,export:7,start:8,element:9,code:10,data:11},D={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},mZ=Object.fromEntries(Object.entries(D).map(([Z,$])=>[$,Z.replace(/_/g,".")])),B0=253,t={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},iZ=Object.fromEntries(Object.entries(t).map(([Z,$])=>[$,Z.replace(/_/g,".")]));function e4(Z){return[B0,...y(Z)]}function F7(Z,$,X){return[B0,...y(Z),...y($),...y(X)]}function y(Z){let $=[];do{let X=Z&127;if(Z>>>=7,Z!==0)X|=128;$.push(X)}while(Z!==0);return $}function R0(Z){let $=[],X=!0;while(X){let Q=Z&127;if(Z>>=7,Z===0&&(Q&64)===0||Z===-1&&(Q&64)!==0)X=!1;else Q|=128;$.push(Q)}return $}function $6(Z){let $=new ArrayBuffer(4);return new Float32Array($)[0]=Z,[...new Uint8Array($)]}function G1(Z){let $=new ArrayBuffer(8);return new Float64Array($)[0]=Z,[...new Uint8Array($)]}function Z6(Z){let $=new TextEncoder().encode(Z);return[...y($.length),...$]}function I0(Z,$){return[Z,...y($.length),...$]}function N1(Z,$){let X=0,Q=0,H=$;while(H<Z.length){let K=Z[H];if(X|=(K&127)<<Q,H++,(K&128)===0)break;Q+=7}return[X,H-$]}function pZ(Z,$){let X=new ArrayBuffer(8),Q=new Uint8Array(X);for(let H=0;H<8;H++)Q[H]=Z[$+H];return new Float64Array(X)[0]}function nZ(Z,$,X){let Q=[],H=1,K=()=>" ".repeat(H),Y=$.map((G,J)=>`(param $${G.name} ${G.type})`).join(" "),z=X.map((G,J)=>`(local $L${$.length+J} ${G})`).join(" ");if(Q.push(`(func (export "compute") ${Y} (result f64)`),z)Q.push(` ${z}`);let W=0;while(W<Z.length){let G=Z[W],J=mZ[G]||`unknown(0x${G.toString(16)})`;if(W++,G===D.local_get||G===D.local_set||G===D.local_tee){let[L,_]=N1(Z,W);W+=_;let U=L<$.length?`$${$[L].name}`:`$L${L}`;Q.push(`${K()}${J} ${U}`)}else if(G===D.br||G===D.br_if){let[L,_]=N1(Z,W);W+=_,Q.push(`${K()}${J} ${L}`)}else if(G===D.i32_const){let[L,_]=N1(Z,W);W+=_,Q.push(`${K()}i32.const ${L}`)}else if(G===D.f32_const){let L=new ArrayBuffer(4),_=new Uint8Array(L);for(let q=0;q<4;q++)_[q]=Z[W+q];let U=new Float32Array(L)[0];W+=4,Q.push(`${K()}f32.const ${U}`)}else if(G===D.f64_const){let L=pZ(Z,W);W+=8,Q.push(`${K()}f64.const ${L}`)}else if(G===D.block||G===D.loop){let L=Z[W];W++,Q.push(`${K()}${J}${L===D1.void?"":` (result ${L===D1.f64?"f64":"i32"})`}`),H++}else if(G===D.if){let L=Z[W];W++,Q.push(`${K()}if${L===D1.void?"":` (result ${L===D1.f64?"f64":"i32"})`}`),H++}else if(G===D.else)H--,Q.push(`${K()}else`),H++;else if(G===D.end)H=Math.max(1,H-1),Q.push(`${K()}end`);else if(G===D.f64_load||G===D.f64_store||G===D.f32_load||G===D.f32_store||G===D.i32_load||G===D.i32_store){let[L,_]=N1(Z,W);W+=_;let[U,q]=N1(Z,W);W+=q,Q.push(`${K()}${J}${U?` offset=${U}`:""}`)}else if(G===B0){let[L,_]=N1(Z,W);W+=_;let U=iZ[L]||`simd.unknown(0x${L.toString(16)})`;if(L===t.v128_load||L===t.v128_store){let[q,I]=N1(Z,W);W+=I;let[M,R]=N1(Z,W);W+=R,Q.push(`${K()}${U}${M?` offset=${M}`:""}`)}else if(L===t.v128_const){let q=Z.slice(W,W+16);W+=16,Q.push(`${K()}v128.const ${q.map((I)=>"0x"+I.toString(16).padStart(2,"0")).join(" ")}`)}else if(L===t.f32x4_extract_lane||L===t.f32x4_replace_lane){let q=Z[W];W++,Q.push(`${K()}${U} ${q}`)}else Q.push(`${K()}${U}`)}else Q.push(`${K()}${J}`)}return Q.push(")"),Q.join(`
|
|
295
|
+
`)}var W4={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:D.i32_load8_s,storeOp:D.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:D.i32_load8_u,storeOp:D.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:D.i32_load8_u,storeOp:D.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:D.i32_load16_s,storeOp:D.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:D.i32_load16_u,storeOp:D.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:D.i32_load,storeOp:D.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:D.i32_load,storeOp:D.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:D.f32_load,storeOp:D.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:D.f64_load,storeOp:D.f64_store}};function cZ(Z){let $={params:Z,locals:new Map,nextLocalIndex:Z.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1};return Z.forEach((X,Q)=>{$.locals.set(X.name,{index:Q,type:X.type})}),$}function z4(Z,$,X){if(Z.locals.has($))return Z.errors.push(`Duplicate local declaration: ${$}`),Z.locals.get($).index;let Q=Z.nextLocalIndex++;return Z.locals.set($,{index:Q,type:X}),Z.localTypes.push(X),Q}function h1(Z,$){return Z.locals.get($)}function s1(Z,$){switch(Z.type){case"ExpressionStatement":{let X=Z.expression;return[...u(X,$),D.drop]}case"ReturnStatement":{let X=Z;if($.hasReturn=!0,!X.argument)return[D.return];let Q=u(X.argument,$),H=n(X.argument,$);if(H==="i32")Q.push(D.f64_convert_i32_s);else if(H==="f32")Q.push(D.f64_promote_f32);return Q.push(D.return),Q}case"VariableDeclaration":{let X=Z,Q=[];for(let H of X.declarations){if(H.id.type!=="Identifier"){$.errors.push("Destructuring not supported in WASM blocks");continue}let K=H.id.name,Y="f64";if(H.init)Y=n(H.init,$);let z=z4($,K,Y);if(H.init)Q.push(...u(H.init,$)),Q.push(D.local_set,...y(z))}return Q}case"ForStatement":return oZ(Z,$);case"IfStatement":return sZ(Z,$);case"BlockStatement":{let X=Z,Q=[];for(let H of X.body)Q.push(...s1(H,$));return Q}default:return $.errors.push(`Unsupported statement type: ${Z.type}`),[]}}function oZ(Z,$){let X=[];if(Z.init)if(Z.init.type==="VariableDeclaration")X.push(...s1(Z.init,$));else X.push(...u(Z.init,$));if(X.push(D.block,D1.void),X.push(D.loop,D1.void),Z.test)X.push(...u(Z.test,$)),X.push(D.i32_eqz),X.push(D.br_if,1);if($.loopDepth++,Z.body)X.push(...s1(Z.body,$));if($.loopDepth--,Z.update)X.push(...u(Z.update,$)),X.push(D.drop);return X.push(D.br,0),X.push(D.end),X.push(D.end),X}function sZ(Z,$){let X=[];if(X.push(...u(Z.test,$)),X.push(D.if,D1.void),X.push(...s1(Z.consequent,$)),Z.alternate)X.push(D.else),X.push(...s1(Z.alternate,$));return X.push(D.end),X}function n(Z,$){switch(Z.type){case"Literal":{let X=Z;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 h1($,Z.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let X=Z;if(["<",">","<=",">=","==","!=","===","!=="].includes(X.operator))return"i32";if(["|","&","^","<<",">>",">>>"].includes(X.operator))return"i32";let Q=n(X.left,$),H=n(X.right,$);if(Q==="v128"||H==="v128")return"v128";if(Q==="f64"||H==="f64")return"f64";if(Q==="f32"||H==="f32")return"f32";return"i32"}case"UnaryExpression":{let X=Z;if(X.operator==="!")return"i32";return n(X.argument,$)}case"MemberExpression":{let X=Z;if(X.object.type==="Identifier"){if(h1($,X.object.name)){let H=$.params.find((K)=>K.name===X.object.name);if(H?.arrayType){let K=W4[H.arrayType];if(K)return K.elementType}}}return"f64"}case"CallExpression":{let X=Z;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 u(Z,$){switch(Z.type){case"Literal":{let X=Z;if(typeof X.value==="number"){let Q=n(Z,$);if(Q==="i32")return[D.i32_const,...R0(X.value|0)];else if(Q==="f32")return[D.f32_const,...$6(X.value)];else return[D.f64_const,...G1(X.value)]}return $.errors.push(`Unsupported literal type: ${typeof X.value}`),[D.f64_const,...G1(0)]}case"Identifier":{let X=Z.name,Q=h1($,X);if(Q)return[D.local_get,...y(Q.index)];return $.errors.push(`Unknown identifier: ${X}`),[D.f64_const,...G1(0)]}case"BinaryExpression":return aZ(Z,$);case"UnaryExpression":return rZ(Z,$);case"AssignmentExpression":return tZ(Z,$);case"UpdateExpression":return eZ(Z,$);case"MemberExpression":return Z5(Z,$);case"CallExpression":return X5(Z,$);case"SequenceExpression":{let X=Z,Q=[];for(let H=0;H<X.expressions.length;H++)if(Q.push(...u(X.expressions[H],$)),H<X.expressions.length-1)Q.push(D.drop);return Q}default:return $.errors.push(`Unsupported expression type: ${Z.type}`),[D.f64_const,...G1(0)]}}function aZ(Z,$){let X=u(Z.left,$),Q=u(Z.right,$),H=n(Z,$),K=n(Z.left,$),Y=n(Z.right,$),z=["<",">","<=",">=","==","===","!=","!=="].includes(Z.operator),W;if(K==="f64"||Y==="f64")W="f64";else if(K==="f32"||Y==="f32")W="f32";else W="i32";if(!z&&H==="f64")W="f64";let G=X,J=Q;if(W==="f64"){if(K==="i32")G=[...X,D.f64_convert_i32_s];else if(K==="f32")G=[...X,D.f64_promote_f32];if(Y==="i32")J=[...Q,D.f64_convert_i32_s];else if(Y==="f32")J=[...Q,D.f64_promote_f32]}else if(W==="f32"){if(K==="i32")G=[...X,D.f32_convert_i32_s];if(Y==="i32")J=[...Q,D.f32_convert_i32_s]}let _={"+":{i32:D.i32_add,f32:D.f32_add,f64:D.f64_add},"-":{i32:D.i32_sub,f32:D.f32_sub,f64:D.f64_sub},"*":{i32:D.i32_mul,f32:D.f32_mul,f64:D.f64_mul},"/":{i32:D.i32_div_s,f32:D.f32_div,f64:D.f64_div},"%":{i32:D.i32_rem_s},"<":{i32:D.i32_lt_s,f32:D.f32_lt,f64:D.f64_lt},">":{i32:D.i32_gt_s,f32:D.f32_gt,f64:D.f64_gt},"<=":{i32:D.i32_le_s,f32:D.f32_le,f64:D.f64_le},">=":{i32:D.i32_ge_s,f32:D.f32_ge,f64:D.f64_ge},"==":{i32:D.i32_eq,f32:D.f32_eq,f64:D.f64_eq},"===":{i32:D.i32_eq,f32:D.f32_eq,f64:D.f64_eq},"!=":{i32:D.i32_ne,f32:D.f32_ne,f64:D.f64_ne},"!==":{i32:D.i32_ne,f32:D.f32_ne,f64:D.f64_ne},"|":{i32:D.i32_or},"&":{i32:D.i32_and},"^":{i32:D.i32_xor},"<<":{i32:D.i32_shl},">>":{i32:D.i32_shr_s},">>>":{i32:D.i32_shr_u}}[Z.operator];if(!_)return $.errors.push(`Unsupported operator: ${Z.operator}`),[D.f64_const,...G1(0)];let U=_[W]??_.f64??_.i32;if(U===void 0)return $.errors.push(`Operator ${Z.operator} not supported for type ${W}`),[D.f64_const,...G1(0)];return[...G,...J,U]}function rZ(Z,$){let X=u(Z.argument,$),Q=n(Z.argument,$);switch(Z.operator){case"-":if(Q==="i32")return[D.i32_const,0,...X,D.i32_sub];else if(Q==="f32")return[...X,D.f32_neg];else return[...X,D.f64_neg];case"!":return[...X,D.i32_eqz];case"~":return[...X,D.i32_const,...R0(-1),D.i32_xor];default:return $.errors.push(`Unsupported unary operator: ${Z.operator}`),X}}function tZ(Z,$){if(Z.left.type==="MemberExpression")return $5(Z.left,Z.right,Z.operator,$);if(Z.left.type!=="Identifier")return $.errors.push("Assignment target must be identifier or array element"),[];let X=Z.left.name,Q=h1($,X);if(!Q)return $.errors.push(`Unknown variable: ${X}`),[];let H=[];if(Z.operator==="="){H.push(...u(Z.right,$));let K=n(Z.right,$);if(Q.type==="f64"&&K==="i32")H.push(D.f64_convert_i32_s);else if(Q.type==="f64"&&K==="f32")H.push(D.f64_promote_f32);else if(Q.type==="i32"&&K==="f64")H.push(D.i32_trunc_f64_s);else if(Q.type==="i32"&&K==="f32")H.push(D.i32_trunc_f32_s);else if(Q.type==="f32"&&K==="i32")H.push(D.f32_convert_i32_s);else if(Q.type==="f32"&&K==="f64")H.push(D.f32_demote_f64)}else{let K=n(Z.right,$),Y=Q.type;if(K==="f64"||Q.type==="f64")Y="f64";else if(K==="f32"||Q.type==="f32")Y="f32";if(H.push(D.local_get,...y(Q.index)),Y==="f64"&&Q.type==="i32")H.push(D.f64_convert_i32_s);else if(Y==="f64"&&Q.type==="f32")H.push(D.f64_promote_f32);else if(Y==="f32"&&Q.type==="i32")H.push(D.f32_convert_i32_s);if(H.push(...u(Z.right,$)),Y==="f64"&&K==="i32")H.push(D.f64_convert_i32_s);else if(Y==="f64"&&K==="f32")H.push(D.f64_promote_f32);else if(Y==="f32"&&K==="i32")H.push(D.f32_convert_i32_s);let z=Z.operator.slice(0,-1),G={"+":{i32:D.i32_add,f32:D.f32_add,f64:D.f64_add},"-":{i32:D.i32_sub,f32:D.f32_sub,f64:D.f64_sub},"*":{i32:D.i32_mul,f32:D.f32_mul,f64:D.f64_mul},"/":{i32:D.i32_div_s,f32:D.f32_div,f64:D.f64_div}}[z]?.[Y];if(!G)return $.errors.push(`Unsupported compound assignment: ${Z.operator}`),[];if(H.push(G),Q.type==="i32"&&Y==="f64")H.push(D.i32_trunc_f64_s);else if(Q.type==="i32"&&Y==="f32")H.push(D.i32_trunc_f32_s);else if(Q.type==="f32"&&Y==="f64")H.push(D.f32_demote_f64)}return H.push(D.local_tee,...y(Q.index)),H}function eZ(Z,$){if(Z.argument.type!=="Identifier")return $.errors.push("Update expression argument must be identifier"),[];let X=Z.argument.name,Q=h1($,X);if(!Q)return $.errors.push(`Unknown variable: ${X}`),[];let H=[],K=Q.type==="i32";if(Z.prefix){if(H.push(D.local_get,...y(Q.index)),K)H.push(D.i32_const,1),H.push(Z.operator==="++"?D.i32_add:D.i32_sub);else H.push(D.f64_const,...G1(1)),H.push(Z.operator==="++"?D.f64_add:D.f64_sub);H.push(D.local_tee,...y(Q.index))}else{if(H.push(D.local_get,...y(Q.index)),H.push(D.local_get,...y(Q.index)),K)H.push(D.i32_const,1),H.push(Z.operator==="++"?D.i32_add:D.i32_sub);else H.push(D.f64_const,...G1(1)),H.push(Z.operator==="++"?D.f64_add:D.f64_sub);H.push(D.local_set,...y(Q.index))}return H}function Z5(Z,$){if(Z.object.type!=="Identifier")return $.errors.push("Array access requires identifier"),[];let X=Z.object.name,Q=$.params.find((G)=>G.name===X);if(!Q?.isArray||!Q.arrayType)return $.errors.push(`${X} is not a typed array parameter`),[];let H=W4[Q.arrayType];if(!H)return $.errors.push(`Unknown array type: ${Q.arrayType}`),[];$.needsMemory=!0;let K=[],Y=h1($,X);if(!Y)return $.errors.push(`Unknown array: ${X}`),[];if(K.push(D.local_get,...y(Y.index)),!Z.computed||!Z.property)return $.errors.push("Array access requires computed index"),[];let z=u(Z.property,$),W=n(Z.property,$);if(K.push(...z),W==="f64")K.push(D.i32_trunc_f64_s);if(H.bytesPerElement>1)K.push(D.i32_const,...R0(H.bytesPerElement)),K.push(D.i32_mul);return K.push(D.i32_add),K.push(H.loadOp,0,0),K}function $5(Z,$,X,Q){if(Z.object.type!=="Identifier")return Q.errors.push("Array store requires identifier"),[];let H=Z.object.name,K=Q.params.find((q)=>q.name===H);if(!K?.isArray||!K.arrayType)return Q.errors.push(`${H} is not a typed array parameter`),[];let Y=W4[K.arrayType];if(!Y)return Q.errors.push(`Unknown array type: ${K.arrayType}`),[];Q.needsMemory=!0;let z=[],W=h1(Q,H);if(!W)return[];if(!Z.computed||!Z.property)return Q.errors.push("Array store requires computed index"),[];let G=u(Z.property,Q),J=n(Z.property,Q),L=()=>{let q=[];if(q.push(D.local_get,...y(W.index)),q.push(...G),J==="f64")q.push(D.i32_trunc_f64_s);if(Y.bytesPerElement>1)q.push(D.i32_const,...R0(Y.bytesPerElement)),q.push(D.i32_mul);return q.push(D.i32_add),q};if(X==="=")z.push(...u($,Q));else{let q=z4(Q,`__addr_${Q.nextLocalIndex}`,"i32");z.push(...L()),z.push(D.local_tee,...y(q)),z.push(Y.loadOp,0,0),z.push(...u($,Q));let I=n($,Q);if(Y.elementType==="f32"&&I==="f64")z.push(D.f32_demote_f64);else if(Y.elementType==="f64"&&I==="f32")z.push(D.f64_promote_f32);else if(Y.elementType==="f32"&&I==="i32")z.push(D.f32_convert_i32_s);else if(Y.elementType==="f64"&&I==="i32")z.push(D.f64_convert_i32_s);else if(Y.elementType==="i32"&&I==="f64")z.push(D.i32_trunc_f64_s);else if(Y.elementType==="i32"&&I==="f32")z.push(D.i32_trunc_f32_s);let M=X.slice(0,-1),R={"+":Y.elementType==="i32"?D.i32_add:Y.elementType==="f32"?D.f32_add:D.f64_add,"-":Y.elementType==="i32"?D.i32_sub:Y.elementType==="f32"?D.f32_sub:D.f64_sub,"*":Y.elementType==="i32"?D.i32_mul:Y.elementType==="f32"?D.f32_mul:D.f64_mul};z.push(R[M]??D.f64_add);let P=z4(Q,`__val_${Q.nextLocalIndex}`,Y.elementType);return z.push(D.local_set,...y(P)),z.push(D.local_get,...y(q)),z.push(D.local_get,...y(P)),z.push(Y.storeOp,0,0),z.push(D.local_get,...y(P)),z}let _=n($,Q);if(Y.elementType==="f32"&&_==="f64")z.push(D.f32_demote_f64);else if(Y.elementType==="f64"&&_==="f32")z.push(D.f64_promote_f32);else if(Y.elementType==="i32"&&_==="f64")z.push(D.i32_trunc_f64_s);let U=z4(Q,`__tmp_${Q.nextLocalIndex}`,Y.elementType);if(z.push(D.local_set,...y(U)),z.push(D.local_get,...y(W.index)),z.push(...G),J==="f64")z.push(D.i32_trunc_f64_s);if(Y.bytesPerElement>1)z.push(D.i32_const,...R0(Y.bytesPerElement)),z.push(D.i32_mul);return z.push(D.i32_add),z.push(D.local_get,...y(U)),z.push(Y.storeOp,0,0),z.push(D.local_get,...y(U)),z}function X5(Z,$){if(Z.callee.type==="MemberExpression"){let X=Z.callee;if(X.object.type==="Identifier"&&X.object.name==="Math"&&X.property.type==="Identifier"){let Q=X.property.name;return H5(Q,Z.arguments,$)}}if(Z.callee.type==="Identifier"){let X=Z.callee.name;if(X.startsWith("f32x4_")||X.startsWith("v128_"))return Q5(X,Z.arguments,$)}return $.errors.push(`Unsupported function call: ${Z.callee.type}`),[D.f64_const,...G1(0)]}function Q5(Z,$,X){X.needsMemory=!0;let Q=[];switch(Z){case"v128_load":case"f32x4_load":{if(Q.push(...u($[0],X)),n($[0],X)==="f64")Q.push(D.i32_trunc_f64_s);Q.push(...u($[1],X));let K=n($[1],X);if(K==="f64")Q.push(D.i32_trunc_f64_s);else if(K==="f32")Q.push(D.i32_trunc_f32_s);return Q.push(D.i32_add),Q.push(...F7(t.v128_load,2,0)),Q}case"v128_store":case"f32x4_store":{if(Q.push(...u($[0],X)),n($[0],X)==="f64")Q.push(D.i32_trunc_f64_s);Q.push(...u($[1],X));let K=n($[1],X);if(K==="f64")Q.push(D.i32_trunc_f64_s);else if(K==="f32")Q.push(D.i32_trunc_f32_s);return Q.push(D.i32_add),Q.push(...u($[2],X)),Q.push(...F7(t.v128_store,2,0)),Q.push(D.i32_const,0),Q}case"f32x4_splat":{Q.push(...u($[0],X));let H=n($[0],X);if(H==="i32")Q.push(D.f32_convert_i32_s);else if(H==="f64")Q.push(D.f32_demote_f64);return Q.push(...e4(t.f32x4_splat)),Q}case"f32x4_extract_lane":{Q.push(...u($[0],X));let H=$[1].value;if(!Number.isInteger(H)||H<0||H>3)return X.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${H}`),[D.f32_const,...$6(0)];return Q.push(B0,...y(t.f32x4_extract_lane),H),Q}case"f32x4_replace_lane":{Q.push(...u($[0],X));let H=$[1].value;if(!Number.isInteger(H)||H<0||H>3)return X.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${H}`),[D.f32_const,...$6(0)];Q.push(...u($[2],X));let K=n($[2],X);if(K==="i32")Q.push(D.f32_convert_i32_s);else if(K==="f64")Q.push(D.f32_demote_f64);return Q.push(B0,...y(t.f32x4_replace_lane),H),Q}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{Q.push(...u($[0],X)),Q.push(...u($[1],X));let H={f32x4_add:t.f32x4_add,f32x4_sub:t.f32x4_sub,f32x4_mul:t.f32x4_mul,f32x4_div:t.f32x4_div};return Q.push(...e4(H[Z])),Q}case"f32x4_neg":case"f32x4_sqrt":{Q.push(...u($[0],X));let H={f32x4_neg:t.f32x4_neg,f32x4_sqrt:t.f32x4_sqrt};return Q.push(...e4(H[Z])),Q}default:return X.errors.push(`Unknown SIMD intrinsic: ${Z}`),[D.f64_const,...G1(0)]}}function H5(Z,$,X){let Q=[];for(let z of $){Q.push(...u(z,X));let W=n(z,X);if(W==="i32")Q.push(D.f64_convert_i32_s);else if(W==="f32")Q.push(D.f64_promote_f32)}let K={abs:D.f64_abs,ceil:D.f64_ceil,floor:D.f64_floor,trunc:D.f64_trunc,sqrt:D.f64_sqrt,min:D.f64_min,max:D.f64_max}[Z];if(K!==void 0)return Q.push(K),Q;if(["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(Z))return X.needsMathImports.add(Z),X.errors.push(`Math.${Z} requires JS import (not yet implemented)`),[D.f64_const,...G1(0)];return X.errors.push(`Unknown Math method: ${Z}`),[D.f64_const,...G1(0)]}function V7(Z){let $=Z.split(":").map((K)=>K.trim()),X=$[0];if($.length===1)return{name:X,type:"f64"};let Q=$[1];if(W4[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 K5(Z,$,X,Q,H){let K=[0,97,115,109,1,0,0,0],Y=Z.map((P)=>D1[P.type]),z=H?[1,D1.f64]:[0],W=I0(A0.type,[1,96,...y(Z.length),...Y,...z]),G=[],J=[];if(Q)J=I0(A0.import,[1,...Z6("env"),...Z6("memory"),2,0,1]);let L=I0(A0.function,[1,0]),_=I0(A0.export,[1,...Z6("compute"),0,0]),U=[];if(X.length>0){let P=X[0],B=1;for(let F=1;F<X.length;F++)if(X[F]===P)B++;else U.push([...y(B),D1[P]]),P=X[F],B=1;U.push([...y(B),D1[P]])}let I=[...[...y(U.length),...U.flat()],...$,D.end],M=I0(A0.code,[1,...y(I.length),...I]),R=[...K,...W];if(J.length>0)R.push(...J);return R.push(...L,..._,...M),R}function G4(Z){try{let $=Z.captures.map(V7),X;try{let G=`function __wasm__(${$.map((J)=>J.name).join(", ")}) { ${Z.body} }`;X=P7.parse(G,{ecmaVersion:2022})}catch(G){return{bytes:new Uint8Array,warnings:[],success:!1,error:`Parse error: ${G.message}`}}let H=X.body[0].body.body,K=cZ($),Y=[];for(let G of H)Y.push(...s1(G,K));if(K.errors.length>0)return{bytes:new Uint8Array,warnings:K.warnings,success:!1,error:K.errors.join("; ")};let z=K5($,Y,K.localTypes,K.needsMemory,K.hasReturn),W=nZ(Y,$,K.localTypes);return{bytes:new Uint8Array(z),warnings:K.warnings,success:!0,needsMemory:K.needsMemory,wat:W}}catch($){return{bytes:new Uint8Array,warnings:[],success:!1,error:$.message}}}async function C7(Z,$){let X={};if($)X.env={memory:$};let Q=await WebAssembly.compile(Z);return WebAssembly.instantiate(Q,X)}async function Y5(Z){let $=G4(Z);if(!$.success)return{fn:()=>0,success:!1,error:$.error};try{let X;if($.needsMemory)X=new WebAssembly.Memory({initial:256});let H=(await C7($.bytes,X)).exports.compute,K=Z.captures.map(V7);if(!K.some((W)=>W.isArray))return{fn:H,memory:X,success:!0};return{fn:(...W)=>{if(!X)throw Error("Memory not initialized");let G=new Uint8Array(X.buffer),J=0,L=[];for(let U=0;U<K.length;U++){let q=K[U],I=W[U];if(q.isArray&&I instanceof Object&&"buffer"in I){let M=I,R=new Uint8Array(M.buffer,M.byteOffset,M.byteLength);G.set(R,J),L.push(J),J+=R.length,J=J+15&-16}else L.push(I)}let _=H(...L);J=0;for(let U=0;U<K.length;U++){let q=K[U],I=W[U];if(q.isArray&&I instanceof Object&&"buffer"in I){let M=I,R=new Uint8Array(M.buffer,M.byteOffset,M.byteLength);R.set(G.slice(J,J+R.length)),J+=R.length,J=J+15&-16}}return _},memory:X,success:!0}}catch(X){return{fn:()=>0,success:!1,error:X.message}}}async function O7(Z){let $=await Y5(Z);if(!$.success)return console.warn(`WASM compilation failed for ${Z.id}:`,$.error),!1;return globalThis[Z.id]=$.fn,!0}async function z5(Z){let $=0,X=0,Q=[];for(let H of Z)if(await O7(H))$++;else X++,Q.push(`Failed to compile ${H.id}`);return{compiled:$,failed:X,errors:Q}}function N7(Z){let $=[],X=[];for(let z of Z){let W=G4(z);if(W.success){let G=btoa(String.fromCharCode(...W.bytes));X.push({id:z.id,base64:G,captures:z.captures,needsMemory:W.needsMemory??!1,wat:W.wat??""}),$.push({id:z.id,success:!0,byteLength:W.bytes.length})}else $.push({id:z.id,success:!1,error:W.error})}if(X.length===0)return{code:"",results:$};let Q=X.map((z)=>{let W=z.wat.split(`
|
|
296
|
+
`).map((G)=>` * ${G}`);return`/**
|
|
297
|
+
* WASM: ${z.id}
|
|
298
|
+
${W.join(`
|
|
299
|
+
`)}
|
|
300
|
+
*/`}).join(`
|
|
301
|
+
`),H=X.map((z)=>`{id:${JSON.stringify(z.id)},b64:${JSON.stringify(z.base64)},c:${JSON.stringify(z.captures)},m:${z.needsMemory}}`).join(","),K=X.some((z)=>z.needsMemory);return{code:`${Q}
|
|
302
|
+
;(async()=>{
|
|
303
|
+
const __wasmBlocks=[${H}];
|
|
304
|
+
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};
|
|
305
|
+
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}};
|
|
306
|
+
${K?`const __wasmMem=new WebAssembly.Memory({initial:1024});
|
|
307
|
+
let __woff=0;
|
|
308
|
+
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};`:""}
|
|
309
|
+
for(const{id,b64,c,m}of __wasmBlocks){
|
|
310
|
+
const bytes=__b64ToBytes(b64);
|
|
311
|
+
const params=c.map(__parseType);
|
|
312
|
+
const hasArrays=params.some(p=>p.a);
|
|
313
|
+
const mem=m?__wasmMem:null;
|
|
314
|
+
const imp=mem?{env:{memory:mem}}:{};
|
|
315
|
+
const inst=await WebAssembly.instantiate(await WebAssembly.compile(bytes),imp);
|
|
316
|
+
const compute=inst.exports.compute;
|
|
317
|
+
if(!hasArrays){globalThis[id]=compute;continue}
|
|
318
|
+
globalThis[id]=function(...args){
|
|
319
|
+
const mv=new Uint8Array(mem.buffer);let off=__woff;const ptrs=[];
|
|
320
|
+
for(let i=0;i<params.length;i++){const p=params[i],a=args[i];
|
|
321
|
+
if(p.a&&a?.buffer){
|
|
322
|
+
if(a.buffer===mem.buffer){ptrs.push(a.byteOffset)}
|
|
323
|
+
else{const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;mv.set(ab,off);ptrs.push(off);off+=ab.length}
|
|
324
|
+
} else ptrs.push(a)}
|
|
325
|
+
const r=compute(...ptrs);off=__woff;
|
|
326
|
+
for(let i=0;i<params.length;i++){const p=params[i],a=args[i];
|
|
327
|
+
if(p.a&&a?.buffer){
|
|
328
|
+
if(a.buffer===mem.buffer) continue;
|
|
329
|
+
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}}
|
|
330
|
+
return r};
|
|
331
|
+
}})();
|
|
332
|
+
`.trim(),results:$}}function W5(Z,$,X){if(!Z||!$)return!1;let Q=new RegExp(`function\\s+${$}\\s*\\([^)]*?\\b${X}\\s*([=:])`,"s"),H=Z.match(Q);if(!H)return!1;return H[1]===":"}function G5(Z,$,X,Q,H){let K=[],Y=G0($,Z),z={},W=!1,G,J;if(Z.params.length===1&&(Z.params[0].type==="ObjectPattern"||Z.params[0].type==="AssignmentPattern"&&Z.params[0].left.type==="ObjectPattern")){W=!0;let U=Z.params[0],q=U.type==="ObjectPattern"?U:U.left,I=C1(q,X);if(I.type.kind==="object"&&I.type.destructuredParams){G={},J=new Set;for(let[M,R]of Object.entries(I.type.destructuredParams))if(z[M]={...R,description:Y.params[M]},G[M]=R.type,R.required)J.add(M)}}else for(let U of Z.params)if(U.type==="Identifier"){let q=C1(U,X);z[U.name]={...q,required:X.has(U.name),description:Y.params[U.name]}}else if(U.type==="AssignmentPattern"&&U.left.type==="Identifier"){let q=C1(U,X),I=W5(H||"",Z.id?.name||"",U.left.name);z[U.left.name]={...q,required:I,default:I?null:q.example??q.default,description:Y.params[U.left.name]}}else if(U.type==="ObjectPattern"){let q=C1(U,X);if(q.type.kind==="object"&&q.type.destructuredParams)for(let[I,M]of Object.entries(q.type.destructuredParams))z[I]={...M,description:Y.params[I]}}else if(U.type==="RestElement"&&U.argument?.type==="Identifier"){let q=U.argument.name,I=$.match(new RegExp(`\\.\\.\\.${q}\\s*:\\s*([^)]+?)\\s*\\)`));if(I)try{let M=E7(I[1].trim(),0,{ecmaVersion:2022}),R=Q1(M);z[q]={name:q,type:R,required:!1,description:Y.params[q]}}catch{z[q]={name:q,type:{kind:"array"},required:!1,description:Y.params[q]}}else z[q]={name:q,type:{kind:"array"},required:!1,description:Y.params[q]}}let L;if(Q)try{let U=Q.includes("=")?T7(Q):Q,q=E7(U,0,{ecmaVersion:2022});L=Q1(q)}catch{L={kind:"any"},K.push(`Could not parse return type: ${Q}`)}return{types:{name:Z.id?.name||"anonymous",params:z,returns:L,description:Y.description,isDestructuredParam:W,destructuredShape:G,destructuredRequired:J},warnings:K}}function J5(Z,$,X){let Q=[],H=X?`${X}:`:"",K=X?`${X}:${Z}`:Z;if($.isDestructuredParam&&$.destructuredShape){let z=$.destructuredShape,W=$.destructuredRequired||new Set,G=Object.keys(z);if(G.length===0)return null;for(let J of G)Q.push(`if (${J} instanceof Error) return ${J};`);for(let[J,L]of Object.entries(z)){let _=W.has(J),U=`${H}${Z}.${J}`,q=X6(J,L);if(q){let I=L.kind;if(_)Q.push(`if (${q}) return __tjs.typeError('${U}', '${I}', ${J});`);else Q.push(`if (${J} !== undefined && ${q}) return __tjs.typeError('${U}', '${I}', ${J});`)}}if(Q.length===0)return null;return Q.unshift(`__tjs.pushStack('${K}');`),Q.unshift("try {"),{preamble:Q.join(`
|
|
333
|
+
`),suffix:"} finally { __tjs.popStack(); }"}}let Y=Object.entries($.params);if(Y.length===0)return null;for(let[z]of Y)Q.push(`if (${z} instanceof Error) return ${z};`);for(let[z,W]of Y){let G=`${H}${Z}.${z}`,J=X6(z,W.type);if(J){let L=W.type.kind==="union"?W.type.members.map((_)=>_.kind).join(" | "):W.type.kind;if(W.required)Q.push(`if (${J}) return __tjs.typeError('${G}', '${L}', ${z});`);else Q.push(`if (${z} !== undefined && ${J}) return __tjs.typeError('${G}', '${L}', ${z});`)}}if(Q.length===0)return null;return Q.unshift(`__tjs.pushStack('${K}');`),Q.unshift("try {"),{preamble:Q.join(`
|
|
334
|
+
`),suffix:"} finally { __tjs.popStack(); }"}}function T7(Z){let $="",X=0;for(let Q=0;Q<Z.length;Q++){let H=Z[Q];if(H==="{"||H==="["||H==="(")X++,$+=H;else if(H==="}"||H==="]"||H===")")X--,$+=H;else if(H==="'"||H==='"'||H==="`"){$+=H,Q++;while(Q<Z.length&&Z[Q]!==H){if(Z[Q]==="\\")$+=Z[Q++];$+=Z[Q++]}if(Q<Z.length)$+=Z[Q]}else if(X===1&&H==="="&&Z[Q-1]!=="!"&&Z[Q+1]!=="=")$+=":";else $+=H}return $}function _5(Z,$){let Q=new RegExp(`function\\s+${$}\\s*\\([^)]*\\)\\s*(-[>?!])\\s*`,"g").exec(Z);if(!Q)return null;let H=Z.slice(Q.index+Q[0].length);return t4(H)}function L5(Z,$){let Q=new RegExp(`function\\s+${$}\\s*\\([^)]*\\)\\s*-([>?!])`,"g").exec(Z);if(!Q)return;let H=Q[1];if(H==="?")return"safe";if(H==="!")return"unsafe";return}function U5(Z){let $=Z.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return $?$[1].trim():void 0}function q5(Z,$){let X=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${$}\\s*\\(`,"m"),Q=Z.match(X);return Q?parseInt(Q[1],10):void 0}function w0(Z,$={}){let{filename:X="<source>",runTests:Q=!0,debug:H=!1,resolvedImports:K={}}=$,Y=[],W=U5(Z)||X,{code:G,tests:J,mocks:L,testRunner:_}=v4(Z),{ast:U,originalSource:q,requiredParams:I,unsafeFunctions:M}=j1(G,{filename:X,colonShorthand:!0}),R=D5(U),P=y0(G),B={},F=[],N=[];for(let x of R){let l=x.id?.name||"anonymous",Y1=_5(G,l),w1;if(Y1&&Y1.includes("="))try{let z1=Y1.matchAll(/(\w+)\s*=\s*/g),U1=T7(Y1),k1=Function(`return ${U1}`)(),q1={};for(let v8 of z1){let E4=v8[1];if(E4 in k1)q1[E4]=k1[E4]}if(Object.keys(q1).length>0)w1=q1}catch{}let{types:m1,warnings:T8}=G5(x,q,I,Y1,G);Y.push(...T8),B[l]=m1;for(let z1 of x.params)if(z1.type==="AssignmentPattern"){let U1=z1.left?.name||z1.left?.value,k1=U1?m1.params[U1]:null;if(k1?.required&&k1.default===null)N.push({start:z1.left.end,end:z1.right.end});else{let q1=z1.right;if(q1.type==="BinaryExpression"&&q1.operator==="|")N.push({start:q1.left.end,end:q1.end})}}let O6=P.moduleSafety==="none"||M.has(l),S8=P.safeFunctions.has(l),k8=L5(G,l),g8=q5(Z,l),i1={file:W,line:g8??x.loc?.start.line??0,column:x.loc?.start.column??0},b8={unsafe:O6,safe:S8,returnSafety:k8},N6=P.polymorphicNames.has(l),N4;if(N6){let z1=[];for(let k1 of R){let q1=k1.id?.name||"";if(q1.startsWith(l+"$"))z1.push(q1)}let U1={polymorphic:!0,variants:z1};if(i1)U1.source=`${i1.file}:${i1.line}`;N4=`${l}.__tjs = ${JSON.stringify(U1,null,2)}`}else N4=A5(l,m1,b8,{debug:H,source:i1,returnDefaults:w1});if(F.push({position:x.end,text:`
|
|
335
|
+
${N4}`}),!O6&&!N6){let z1=`${i1.file}:${i1.line}`,U1=J5(l,m1,z1);if(U1&&x.body&&x.body.start!==void 0)F.push({position:x.body.start+1,text:`
|
|
336
|
+
${U1.preamble}
|
|
337
|
+
`}),F.push({position:x.body.end-1,text:`
|
|
338
|
+
${U1.suffix}
|
|
339
|
+
`})}}N.sort((x,l)=>l.start-x.start);let V=P.source;for(let{start:x,end:l}of N)V=V.slice(0,x)+V.slice(l);for(let x of F){let l=0;for(let Y1 of N)if(Y1.start<x.position)l+=Y1.end-Y1.start;x.position-=l}F.sort((x,l)=>l.position-x.position);for(let{position:x,text:l}of F)V=V.slice(0,x)+l+V.slice(x);let w=V.includes("__tjs.typeError("),C=V.includes("__tjs.pushStack("),O=V.includes("Is("),k=V.includes("IsNot("),S=V.includes("Eq("),b=V.includes("NotEq("),h=V.includes("TypeOf("),d=/\bType\(/.test(V),A1=/\bGeneric\(/.test(V),E0=/\bFunctionPredicate\(/.test(V),L1=/\bEnum\(/.test(V),l1=/\bUnion\(/.test(V),C6=P.tjsModes.tjsSafeEval;if(w||C||O||k||S||b||h||d||A1||E0||L1||l1||C6){let x=`const __tjs = globalThis.__tjs?.createRuntime?.() ?? globalThis.__tjs;
|
|
340
|
+
`,l=[O&&"Is",k&&"IsNot",S&&"Eq",b&&"NotEq",h&&"TypeOf",d&&"Type",A1&&"Generic",E0&&"FunctionPredicate",L1&&"Enum",l1&&"Union"].filter(Boolean).join(", ");if(l)x+=`const { ${l} } = __tjs ?? {};
|
|
341
|
+
`;V=x+V}if(C6)V=`import { Eval, SafeFunction } from 'tjs-lang';
|
|
342
|
+
`+V;let H0;if(Q){let x=w7(Z);H0=j7(J,L,x,V,K,P.extensions);let l=H0.filter((Y1)=>!Y1.passed);if(l.length>0&&Q===!0){let Y1=l.map((w1)=>{if(w1.isSignatureTest)return` Function signature example is inconsistent:
|
|
343
|
+
${w1.error}`;let m1=w1.line?` (line ${w1.line})`:"";return` Test '${w1.description}'${m1} failed:
|
|
344
|
+
${w1.error}`});throw Error(`Transpile-time test failures:
|
|
345
|
+
${Y1.join(`
|
|
346
|
+
`)}`)}}if(Q==="only")return{code:"",types:B,metadata:B,testResults:H0,testCount:H0?.length};let O4;if(P.wasmBlocks.length>0){O4=[];let x=N7(P.wasmBlocks);if(x.code)V=x.code+`
|
|
347
|
+
`+V;O4=x.results}return{code:V,types:B,metadata:B,warnings:Y.length>0?Y:void 0,testRunner:J.length>0?_:void 0,testCount:J.length>0?J.length:void 0,testResults:H0,wasmCompiled:O4}}function D5(Z){let $=[];for(let X of Z.body)if(X.type==="FunctionDeclaration")$.push(X);else if(X.type==="ExportNamedDeclaration"&&X.declaration?.type==="FunctionDeclaration")$.push(X.declaration);else if(X.type==="ExportDefaultDeclaration"&&X.declaration?.type==="FunctionDeclaration")$.push(X.declaration);return $}function M0(Z){let $={kind:Z.kind};if(Z.nullable)$.nullable=!0;if(Z.items)$.items=M0(Z.items);if(Z.shape)$.shape=Object.fromEntries(Object.entries(Z.shape).map(([X,Q])=>[X,M0(Q)]));if(Z.members)$.members=Z.members.map(M0);return $}function A5(Z,$,X={},Q={}){let H={};for(let[Y,z]of Object.entries($.params)){if(H[Y]={type:M0(z.type),required:z.required},z.default!==void 0)H[Y].default=z.default;if(z.description)H[Y].description=z.description}let K={params:H};if($.returns){if(K.returns={type:M0($.returns)},Q.returnDefaults)K.returns.defaults=Q.returnDefaults;if(X.returnSafety==="safe")K.safeReturn=!0;else if(X.returnSafety==="unsafe")K.unsafeReturn=!0}if($.description)K.description=$.description;if(X.unsafe)K.unsafe=!0;if(X.safe)K.safe=!0;if(Q.source){let{file:Y,line:z}=Q.source;K.source=`${Y}:${z}`}return`${Z}.__tjs = ${JSON.stringify(K,null,2)}`}function X6(Z,$){switch($.kind){case"string":return`typeof ${Z} !== 'string'`;case"number":return`typeof ${Z} !== 'number'`;case"integer":return`(typeof ${Z} !== 'number' || !Number.isInteger(${Z}))`;case"non-negative-integer":return`(typeof ${Z} !== 'number' || !Number.isInteger(${Z}) || ${Z} < 0)`;case"boolean":return`typeof ${Z} !== 'boolean'`;case"null":return`${Z} !== null`;case"undefined":return`${Z} !== undefined`;case"array":return`!Array.isArray(${Z})`;case"object":return`(typeof ${Z} !== 'object' || ${Z} === null || Array.isArray(${Z}))`;case"union":{let X=$.members.map((Q)=>X6(Z,Q)).filter((Q)=>Q!==null);if(X.length===0)return null;return`(${X.join(" && ")})`}case"any":return null;default:return null}}function a1(Z){let $;switch(Z.kind){case"string":$="string";break;case"number":case"integer":case"non-negative-integer":$="number";break;case"boolean":$="boolean";break;case"null":return"null";case"undefined":return"undefined";case"any":$="any";break;case"array":if(Z.items){let X=a1(Z.items);$=X.includes("|")?`(${X})[]`:`${X}[]`}else $="any[]";break;case"object":if(Z.shape&&Object.keys(Z.shape).length>0)$=`{ ${Object.entries(Z.shape).map(([Q,H])=>`${Q}: ${a1(H)}`).join("; ")} }`;else $="Record<string, any>";break;case"union":if(Z.members&&Z.members.length>0)return Z.members.map(a1).join(" | ");$="any";break;default:$="any"}if(Z.nullable)return`${$} | null`;return $}function I5(Z,$,X,Q){let H=Object.entries($.params).map(([z,W])=>{let G=!W.required,J=a1(W.type);return G?`${z}?: ${J}`:`${z}: ${J}`}).join(", "),K=$.returns?a1($.returns):"any";return`${X?Q?"export default function":"export declare function":"declare function"} ${Z}(${H}): ${K};`}function B5(Z){let $=new Map,X,Q=/^[ \t]*export\s+(default\s+)?function\s+(\w+)/gm;while((X=Q.exec(Z))!==null)$.set(X[2],{exported:!0,isDefault:!!X[1]});let H=/^[ \t]*export\s+(default\s+)?class\s+(\w+)/gm;while((X=H.exec(Z))!==null)$.set(X[2],{exported:!0,isDefault:!!X[1]});let K=/^[ \t]*export\s+(default\s+)?(?:const|let|var)\s+(\w+)/gm;while((X=K.exec(Z))!==null)$.set(X[2],{exported:!0,isDefault:!!X[1]});let Y=/^[ \t]*export\s+Type\s+(\w+)/gm;while((X=Y.exec(Z))!==null)$.set(X[1],{exported:!0,isDefault:!1});let z=/^[ \t]*export\s+Generic\s+(\w+)/gm;while((X=z.exec(Z))!==null)$.set(X[1],{exported:!0,isDefault:!1});let W=/^[ \t]*export\s+FunctionPredicate\s+(\w+)/gm;while((X=W.exec(Z))!==null)$.set(X[1],{exported:!0,isDefault:!1});let G=/^[ \t]*export\s*\{([^}]+)\}/gm;while((X=G.exec(Z))!==null){let J=X[1].split(",").map((L)=>L.trim().split(/\s+as\s+/));for(let L of J){let _=L.length>1?L[1]:L[0];if(_&&/^\w+$/.test(_))$.set(_,{exported:!0,isDefault:!1})}}return $}function R5(Z){let $=new Map,X=/^[ \t]*(?:export\s+)?FunctionPredicate\s+(\w+)\s*(?:<([^>]+)>)?\s*\{/gm,Q;while((Q=X.exec(Z))!==null){let H=Q[1],K=Q[2],Y=Q.index+Q[0].length-1,z=1,W=Y+1;while(W<Z.length&&z>0){if(Z[W]==="{")z++;else if(Z[W]==="}")z--;W++}let G=Z.slice(Y+1,W-1),J;if(K)J=K.split(",").map((I)=>I.trim());let L=[],_=G.match(/params\s*:\s*\{([^}]*)\}/);if(_){let I=_[1],M=k7(I);for(let R of M){let P=R.match(/^(\w+)\s*:\s*(.+)$/);if(P)L.push({name:P[1],example:P[2].trim()})}}let U,q=G.match(/returns\s*:\s*(.+?)(?:\n|$)/);if(q)U=q[1].trim();$.set(H,{params:L,returns:U,typeParams:J})}return $}function M5(Z){let $=new Map,X=/^[ \t]*(?:export\s+(?:default\s+)?)?class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/gm,Q;while((Q=X.exec(Z))!==null){let H=Q[1],K=Q.index+Q[0].length-1,Y=1,z=K+1;while(z<Z.length&&Y>0){if(Z[z]==="{")Y++;else if(Z[z]==="}")Y--;z++}let W=Z.slice(K+1,z-1),G=W.indexOf("constructor"),J="";if(G!==-1){let _=W.indexOf("(",G);if(_!==-1){let U=1,q=_+1;while(q<W.length&&U>0){if(W[q]==="(")U++;else if(W[q]===")")U--;q++}J=W.slice(_+1,q-1).trim()}}let L=[];{let _=0,U=0;while(_<W.length){let q=W[_];if(q==="{"){U++,_++;continue}if(q==="}"){U--,_++;continue}if(U===0){let I=W.slice(_).match(/^(\w+)\s*\(/);if(I){let M=I[1];if(M==="constructor"||M==="get"||M==="set"){_+=M.length;continue}else{let R=_+I[0].length-1,P=1,B=R+1;while(B<W.length&&P>0){if(W[B]==="(")P++;else if(W[B]===")")P--;B++}let F=W.slice(R+1,B-1).trim(),N=W.slice(B).match(/^\s*->\s*(.+?)\s*\{/),V=N?N[1].trim():null;L.push({name:M,params:F,returnType:V}),_=B;continue}}}_++}}$.set(H,{name:H,constructorParams:J,methods:L})}return $}function k7(Z){let $=[],X=0,Q="";for(let H of Z){if(H==="{"||H==="["||H==="(")X++;else if(H==="}"||H==="]"||H===")")X--;if(H===","&&X===0)$.push(Q.trim()),Q="";else Q+=H}if(Q.trim())$.push(Q.trim());return $}function S7(Z){if(!Z.trim())return"";return k7(Z).map(($)=>{let X=$.match(/^(\w+)\s*:\s*(.+)$/);if(X){let H=X[1],K=r1(X[2].trim());return`${H}: ${K}`}let Q=$.match(/^(\w+)\s*=\s*(.+)$/);if(Q){let H=Q[1],K=r1(Q[2].trim());return`${H}?: ${K}`}if($.startsWith("{"))return"options: any";return`${$}: any`}).join(", ")}function w5(Z){let $=new Map,X,Q=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*=\s*(.+)$/gm;while((X=Q.exec(Z))!==null)$.set(X[1],X[2].trim());let H=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s+([^{=].*)$/gm;while((X=H.exec(Z))!==null)if(!$.has(X[1]))$.set(X[1],X[2].trim());let K=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*example\s*:\s*(.+?)(?:\n|\s*[,}])/gm;while((X=K.exec(Z))!==null)$.set(X[1],X[2].trim());return $}function j5(Z){let $=new Map,X=/^[ \t]*(?:export\s+)?Generic\s+(\w+)\s*<([^>]+)>\s*\{/gm,Q;while((Q=X.exec(Z))!==null){let H=Q[1],K=Q[2].split(",").map((_)=>{return _.trim().split(/\s*=/)[0].trim()}),Y=Q.index+Q[0].length-1,z=1,W=Y+1;while(W<Z.length&&z>0){if(Z[W]==="{")z++;else if(Z[W]==="}")z--;W++}let G=Z.slice(Y+1,W-1),J,L=G.match(/\bdeclaration\s*\{/);if(L&&L.index!==void 0){let _=L.index+L[0].length-1,U=1,q=_+1;while(q<G.length&&U>0){if(G[q]==="{")U++;else if(G[q]==="}")U--;q++}J=G.slice(_+1,q-1).trim()}$.set(H,{typeParams:K,declaration:J})}return $}function F5(Z,$,X={}){let Q=[],H=B5($),K=w5($),Y=M5($),z=j5($),W=H.size>0,G=new Set;for(let[L,_]of Object.entries(Z.types)){if(L.includes("$"))continue;let U=H.get(L),q=W?!!U?.exported:!0,I=U?.isDefault??!1;if(!q)continue;if(_.description)Q.push(`/** ${_.description} */`);Q.push(I5(L,_,!0,I)),G.add(L)}for(let[L,_]of Y){if(G.has(L))continue;let U=H.get(L);if(!(W?!!U?.exported:!0))continue;let I=_.constructorParams?S7(_.constructorParams):"";if(Q.push(`export declare function ${L}(${I}): any;`),I||_.methods.length>0){if(Q.push(`export declare class ${L} {`),_.constructorParams)Q.push(` constructor(${I});`);for(let M of _.methods){let R=M.params?S7(M.params):"";Q.push(` ${M.name}(${R}): any;`)}Q.push("}")}G.add(L)}for(let[L,_]of K){if(G.has(L))continue;let U=H.get(L);if(!(W?!!U?.exported:!0))continue;let I=r1(_);Q.push(`export declare const ${L}: { check(value: any): boolean; default: ${I}; (value: any): boolean; };`),G.add(L)}for(let[L,_]of z){if(G.has(L))continue;let U=H.get(L);if(!(W?!!U?.exported:!0))continue;let I=_.typeParams.length>0?`<${_.typeParams.join(", ")}>`:"";if(_.declaration){let M=_.declaration.split(`
|
|
348
|
+
`).map((R)=>R.trim()).filter((R)=>R.length>0).map((R)=>` ${R}`).join(`
|
|
349
|
+
`);Q.push(`export interface ${L}${I} {
|
|
350
|
+
${M}
|
|
351
|
+
}`)}else Q.push(`export declare function ${L}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);G.add(L)}let J=R5($);for(let[L,_]of J){if(G.has(L))continue;let U=H.get(L);if(!(W?!!U?.exported:!0))continue;let I=new Set(_.typeParams?.map((B)=>B.split("=")[0].trim())??[]),M=_.typeParams?`<${_.typeParams.join(", ")}>`:"",R=_.params.map((B)=>{let F=I.has(B.example)?B.example:r1(B.example);return`${B.name}: ${F}`}).join(", "),P=_.returns!==void 0?I.has(_.returns)?_.returns:r1(_.returns):"void";Q.push(`export type ${L}${M} = (${R}) => ${P};`),G.add(L)}if(X.moduleName){let L=Q.map((_)=>` ${_}`).join(`
|
|
352
|
+
`);return`declare module '${X.moduleName}' {
|
|
353
|
+
${L}
|
|
354
|
+
}
|
|
355
|
+
`}return Q.join(`
|
|
356
|
+
`)+`
|
|
357
|
+
`}function r1(Z){let $=Z.trim();if(P5($)){let X=V5($).map((Q)=>r1(Q.trim()));return[...new Set(X)].join(" | ")}if(/^['"]/.test($))return"string";if($==="true"||$==="false")return"boolean";if($==="null")return"null";if($==="undefined")return"undefined";if(/^[+-]?\d+\.\d+$/.test($))return"number";if(/^[+-]?\d+$/.test($))return"number";if($.startsWith("["))return"any[]";if($.startsWith("{"))return"Record<string, any>";return"any"}function P5(Z){let $=0,X=null;for(let Q of Z){if(X){if(Q===X)X=null;continue}if(Q==="'"||Q==='"'||Q==="`"){X=Q;continue}if(Q==="{"||Q==="["||Q==="(")$++;else if(Q==="}"||Q==="]"||Q===")")$--;else if(Q==="|"&&$===0)return!0}return!1}function V5(Z){let $=[],X=0,Q=null,H="";for(let K of Z){if(Q){if(H+=K,K===Q)Q=null;continue}if(K==="'"||K==='"'||K==="`"){Q=K,H+=K;continue}if(K==="{"||K==="["||K==="(")X++;else if(K==="}"||K==="]"||K===")")X--;if(K==="|"&&X===0)$.push(H),H="";else H+=K}if(H)$.push(H);return $}import j from"typescript";var b7=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 f(Z,$,X,Q){if(!Z)return"undefined";switch(Z.kind){case j.SyntaxKind.StringKeyword:return"''";case j.SyntaxKind.NumberKeyword:return"0.0";case j.SyntaxKind.BooleanKeyword:return"false";case j.SyntaxKind.NullKeyword:return"null";case j.SyntaxKind.UndefinedKeyword:return"undefined";case j.SyntaxKind.VoidKeyword:return"undefined";case j.SyntaxKind.AnyKeyword:return"any";case j.SyntaxKind.UnknownKeyword:return"any";case j.SyntaxKind.NeverKeyword:return"null";case j.SyntaxKind.SymbolKeyword:return"Symbol('example')";case j.SyntaxKind.BigIntKeyword:return"0n";case j.SyntaxKind.ObjectKeyword:return"{}";case j.SyntaxKind.ArrayType:{let K=f(Z.elementType,$);if(K==="any")K="null";return`[${K}]`}case j.SyntaxKind.TypeReference:{let H=Z,K=H.typeName.getText();if(K==="Array"&&H.typeArguments?.length)return`[${f(H.typeArguments[0],$,X,Q)}]`;if(K==="Promise"){if(H.typeArguments?.length)return f(H.typeArguments[0],$,X,Q);return"undefined"}if(K==="Generator"||K==="AsyncGenerator"||K==="IterableIterator"||K==="AsyncIterableIterator"){if(H.typeArguments?.length)return f(H.typeArguments[0],$,X,Q);return"undefined"}if(K==="Record")return"{}";let Y={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(K in Y)return Y[K];if(Q?.typeAliases?.has(K)){let z=Q.visited??new Set;if(z.has(K))return X?.push(`Circular type reference '${K}' - using 'any'`),"any";z.add(K);let W=Q.typeAliases.get(K);return f(W,$,X,{...Q,visited:z})}if(Q?.interfaces?.has(K)){let z=Q.visited??new Set;if(z.has(K))return X?.push(`Circular type reference '${K}' - using 'any'`),"any";z.add(K);let W=Q.interfaces.get(K),G=[];for(let J of W.members)if(j.isPropertySignature(J)&&J.name){let L=J.name.getText(Q.sourceFile),_=f(J.type,$,X,{...Q,visited:z});G.push(`${L}: ${_}`)}return`{ ${G.join(", ")} }`}if(Q?.typeParams?.has(K)){let z=Q.typeParams.get(K);if(z.constraint)return f(z.constraint,$,X,Q);if(z.default)return f(z.default,$,X,Q)}if(b7.has(K))return"{}";if(/^[A-Z]$/.test(K)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(K))return X?.push(`Generic type parameter '${K}' converted to 'any' - consider specializing`),"any";return X?.push(`Unknown type '${K}' converted to 'any' - may need manual review`),"any"}case j.SyntaxKind.TypeLiteral:{let H=Z,K=[];for(let Y of H.members)if(j.isPropertySignature(Y)&&Y.name){let z=Y.name.getText(),W=f(Y.type,$);if(W==="any")W="null";K.push(`${z}: ${W}`)}return`{ ${K.join(", ")} }`}case j.SyntaxKind.UnionType:{let H=Z,K=(L)=>L.kind===j.SyntaxKind.NullKeyword||j.isLiteralTypeNode(L)&&L.literal.kind===j.SyntaxKind.NullKeyword,Y=(L)=>L.kind===j.SyntaxKind.UndefinedKeyword||j.isLiteralTypeNode(L)&&L.literal.kind===j.SyntaxKind.UndefinedKeyword,z=H.types.filter((L)=>!K(L)&&!Y(L)),W=H.types.some(K),G=H.types.some(Y);if(z.length===0){if(W)return"null";return"undefined"}if(z.length===1&&(W||G)){let L=f(z[0],$);if(W)return`${L} | null`;if(G)return`${L} | undefined`}let J=H.types.map((L)=>f(L,$)).filter((L,_,U)=>U.indexOf(L)===_);if(J.length===1)return J[0];if(J.length>0)return J[0];return"undefined"}case j.SyntaxKind.LiteralType:{let H=Z;if(j.isStringLiteral(H.literal))return`'${H.literal.text}'`;if(j.isNumericLiteral(H.literal))return H.literal.text;if(H.literal.kind===j.SyntaxKind.TrueKeyword)return"true";if(H.literal.kind===j.SyntaxKind.FalseKeyword)return"false";if(H.literal.kind===j.SyntaxKind.NullKeyword)return"null";return"undefined"}case j.SyntaxKind.ParenthesizedType:return f(Z.type,$);case j.SyntaxKind.FunctionType:{let H=Z,K=[];for(let W of H.parameters){let G=W.name?.getText()||"_";if(G==="this")continue;let J=f(W.type,$,X,Q);if(J==="any")J="null";K.push(`${G}: ${J}`)}let Y=f(H.type,$,X,Q);if(Y==="any")Y="null";let z=[];if(K.length>0)z.push(`params: { ${K.join(", ")} }`);if(Y!=="undefined")z.push(`returns: ${Y}`);return`FunctionPredicate('function', { ${z.join(", ")} })`}case j.SyntaxKind.TupleType:return`[${Z.elements.map((Y)=>{let z=j.isNamedTupleMember(Y)?f(Y.type,$):f(Y,$);return z==="any"?"null":z}).join(", ")}]`;default:return"undefined"}}function c(Z,$){if(!Z)return{kind:"any"};switch(Z.kind){case j.SyntaxKind.StringKeyword:return{kind:"string"};case j.SyntaxKind.NumberKeyword:return{kind:"number"};case j.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case j.SyntaxKind.NullKeyword:return{kind:"null"};case j.SyntaxKind.UndefinedKeyword:case j.SyntaxKind.VoidKeyword:return{kind:"undefined"};case j.SyntaxKind.ArrayType:return{kind:"array",items:c(Z.elementType,$)};case j.SyntaxKind.TypeLiteral:{let X=Z,Q={};for(let H of X.members)if(j.isPropertySignature(H)&&H.name){let K=H.name.getText();Q[K]=c(H.type,$)}return{kind:"object",shape:Q}}case j.SyntaxKind.UnionType:{let X=Z,Q=X.types.filter((K)=>K.kind!==j.SyntaxKind.NullKeyword&&K.kind!==j.SyntaxKind.UndefinedKeyword),H=X.types.some((K)=>K.kind===j.SyntaxKind.NullKeyword);if(Q.length===1&&H)return{...c(Q[0],$),nullable:!0};return{kind:"union",members:X.types.map((K)=>c(K,$))}}case j.SyntaxKind.IntersectionType:{let X=Z,Q={};for(let H of X.types){let K=c(H,$);if(K.kind==="object"&&K.shape)Object.assign(Q,K.shape)}if(Object.keys(Q).length>0)return{kind:"object",shape:Q};return{kind:"any"}}case j.SyntaxKind.TupleType:{let X=Z,Q=[];for(let H of X.elements)if(j.isNamedTupleMember(H))Q.push(c(H.type,$));else Q.push(c(H,$));return{kind:"tuple",elements:Q}}case j.SyntaxKind.TypeReference:{let X=Z,Q=X.typeName.getText();if(Q==="Array"&&X.typeArguments?.length)return{kind:"array",items:c(X.typeArguments[0],$)};if(Q==="Promise"&&X.typeArguments?.length)return c(X.typeArguments[0],$);if((Q==="Generator"||Q==="AsyncGenerator"||Q==="IterableIterator"||Q==="AsyncIterableIterator")&&X.typeArguments?.length)return c(X.typeArguments[0],$);if(X.typeArguments?.length){let H=c(X.typeArguments[0],$);if(Q==="Partial")return H;if(Q==="Required")return H;if(Q==="Readonly")return H;if(Q==="Record"&&X.typeArguments.length>=2)return{kind:"object",shape:{"[key]":c(X.typeArguments[1],$)}};if(Q==="Pick"||Q==="Omit")return H;if(Q==="NonNullable"){if(H.nullable)return{...H,nullable:!1};return H}if(["ReturnType","Parameters","ConstructorParameters"].includes(Q))return{kind:"any"}}if($?.typeAliases?.has(Q)){let H=$.visited??new Set;if(H.has(Q))return{kind:"any"};H.add(Q);let K=$.typeAliases.get(Q);return c(K,{...$,visited:H})}if($?.interfaces?.has(Q)){let H=$.visited??new Set;if(H.has(Q))return{kind:"any"};H.add(Q);let K=$.interfaces.get(Q),Y={};if(K.heritageClauses){for(let z of K.heritageClauses)if(z.token===j.SyntaxKind.ExtendsKeyword)for(let W of z.types){let G=W.expression.getText($.sourceFile);if($.interfaces?.has(G)&&!H.has(G)){let J={kind:j.SyntaxKind.TypeReference,typeName:{getText:()=>G}},L=c(J,{...$,visited:H});if(L.kind==="object"&&L.shape)Object.assign(Y,L.shape)}}}for(let z of K.members)if(j.isPropertySignature(z)&&z.name){let W=z.name.getText($.sourceFile);Y[W]=c(z.type,{...$,visited:H})}return{kind:"object",shape:Y}}if($?.typeParams?.has(Q)){let H=$.typeParams.get(Q);if(H.constraint)return c(H.constraint,$);if(H.default)return c(H.default,$)}if(b7.has(Q))return{kind:"object"};return{kind:"any"}}default:return{kind:"any"}}}function C5(Z,$){if(!Z.typeParameters||Z.typeParameters.length===0)return;let X={};for(let Q of Z.typeParameters){let H=Q.name.getText(),K={};if(Q.constraint){let Y=f(Q.constraint,void 0,$);if(Y.startsWith("{"))try{K.constraint=Y}catch{K.constraint=Y}else K.constraint=Y}if(Q.default){let Y=f(Q.default,void 0,$);K.default=Y}X[H]=K}return Object.keys(X).length>0?X:void 0}function O5(Z,$,X,Q){let H=Z.name.getText($);if(Z.typeParameters&&Z.typeParameters.length>0)return N5(Z,$,X,Q);let K=Q?.find((G)=>G.kind==="example"),Y=Q?.find((G)=>G.kind==="predicate"),z;if(K?.text)z=K.text;else{let G=[];for(let J of Z.members)if(j.isPropertySignature(J)&&J.name){let L=J.name.getText($),_=f(J.type,void 0,X);if(_==="any")_="null";G.push(`${L}: ${_}`)}if(G.length===0&&!Y)return`Type ${H} {}`;z=G.length>0?`{ ${G.join(", ")} }`:"{}"}let W=[`example: ${z}`];if(Y?.text)W.push(Y.text);return`Type ${H} {
|
|
358
|
+
${W.join(`
|
|
359
|
+
`)}
|
|
360
|
+
}`}function N5(Z,$,X,Q){let H=Z.name.getText($),K=[];for(let J of Z.typeParameters||[]){let L=J.name.getText($);if(J.default){let _=f(J.default,void 0,X);K.push(`${L} = ${_}`)}else K.push(L)}let Y=Q?.find((J)=>J.kind==="predicate"),z=Q?.find((J)=>J.kind==="declaration"),W;if(Y?.text)W=Y.text;else{let J=(Z.typeParameters||[]).map((U)=>U.name.getText($)),L=["typeof x === 'object'","x !== null"];for(let U of Z.members)if(j.isPropertySignature(U)&&U.name){let q=U.name.getText($),I=q.startsWith("[")&&q.endsWith("]"),M=I?q.slice(1,-1):null;if(I)L.push(`${M} in x`);else L.push(`'${q}' in x`);if(U.type&&j.isTypeReferenceNode(U.type)){let R=U.type.typeName.getText($);if(J.includes(R))if(I)L.push(`${R}(x[${M}])`);else L.push(`${R}(x.${q})`)}}W=`predicate(${["x",...J].join(", ")}) { return ${L.join(" && ")} }`}let G=[`description: '${H}'`,W];if(z?.text)G.push(`declaration ${z.text}`);return`Generic ${H}<${K.join(", ")}> {
|
|
361
|
+
${G.join(`
|
|
362
|
+
`)}
|
|
363
|
+
}`}function E5(Z,$){if(!j.isUnionTypeNode(Z))return null;let X=[];for(let Q of Z.types)if(j.isLiteralTypeNode(Q))if(j.isStringLiteral(Q.literal))X.push(`'${Q.literal.text}'`);else if(j.isNumericLiteral(Q.literal))X.push(Q.literal.text);else if(Q.literal.kind===j.SyntaxKind.TrueKeyword)X.push("true");else if(Q.literal.kind===j.SyntaxKind.FalseKeyword)X.push("false");else if(Q.literal.kind===j.SyntaxKind.NullKeyword)X.push("null");else return null;else if(Q.kind===j.SyntaxKind.NullKeyword)X.push("null");else if(Q.kind===j.SyntaxKind.UndefinedKeyword)X.push("undefined");else return null;return X.length>0?X:null}function T5(Z,$,X){let Q=Z.name.getText($),H=[],K=0;for(let Y of Z.members){let z=Y.name.getText($);if(Y.initializer)if(j.isStringLiteral(Y.initializer))H.push(` ${z} = '${Y.initializer.text}'`);else if(j.isNumericLiteral(Y.initializer)){let W=parseInt(Y.initializer.text,10);H.push(` ${z} = ${W}`),K=W+1}else if(j.isPrefixUnaryExpression(Y.initializer)&&Y.initializer.operator===j.SyntaxKind.MinusToken){let W=Y.initializer.operand;if(j.isNumericLiteral(W)){let G=-parseInt(W.text,10);H.push(` ${z} = ${G}`),K=G+1}}else H.push(` ${z} = ${Y.initializer.getText($)}`);else H.push(` ${z} = ${K}`),K++}return`Enum ${Q} '${Q}' {
|
|
364
|
+
${H.join(`
|
|
365
|
+
`)}
|
|
366
|
+
}`}function S5(Z,$,X,Q){let H=Z.name.getText($);if(Z.typeParameters&&Z.typeParameters.length>0){if(Z.type.kind===j.SyntaxKind.FunctionType)return k5(Z,$,X);return g5(Z,$,X,Q)}let K=E5(Z.type,$);if(K)return`Union ${H} '${H}' ${K.join(" | ")}`;if(Z.type.kind===j.SyntaxKind.FunctionType){let z=Z.type,W=[];for(let L of z.parameters){let _=L.name?.getText($)||"_";if(_==="this")continue;let U=f(L.type,void 0,X);if(U==="any")U="null";W.push(`${_}: ${U}`)}let G=f(z.type,void 0,X);if(G==="any")G="null";let J=[];if(W.length>0)J.push(`params: { ${W.join(", ")} }`);if(G!=="undefined")J.push(`returns: ${G}`);return`FunctionPredicate ${H} {
|
|
367
|
+
${J.join(`
|
|
368
|
+
`)}
|
|
369
|
+
}`}let Y=f(Z.type,void 0,X);if(Y==="any"||Y==="undefined")return`Type ${H} {}`;if(Y==="''"||Y==="0"||Y==="true"||Y==="null")return`Type ${H} ${Y}`;return`Type ${H} {
|
|
370
|
+
example: ${Y}
|
|
371
|
+
}`}function k5(Z,$,X){let Q=Z.name.getText($),H=Z.type,K=new Set,Y=[];for(let L of Z.typeParameters){let _=L.name.getText($);if(K.add(_),L.default){let U=f(L.default,void 0,X);Y.push(`${_} = ${U}`)}else Y.push(_)}let z=[];for(let L of H.parameters){let _=L.name?.getText($)||"_";if(_==="this")continue;let U=L.type?.getText($)||"any";if(K.has(U))z.push(`${_}: ${U}`);else{let q=f(L.type,void 0,X);if(q==="any")q="null";z.push(`${_}: ${q}`)}}let W=H.type?.getText($)||"void",G;if(W!=="void")if(K.has(W))G=W;else{if(G=f(H.type,void 0,X),G==="any")G="null";if(G==="undefined")G=void 0}let J=[];if(z.length>0)J.push(`params: { ${z.join(", ")} }`);if(G!==void 0)J.push(`returns: ${G}`);return`FunctionPredicate ${Q}<${Y.join(", ")}> {
|
|
372
|
+
${J.join(`
|
|
373
|
+
`)}
|
|
374
|
+
}`}function g5(Z,$,X,Q){let H=Z.name.getText($),K=[];for(let U of Z.typeParameters||[]){let q=U.name.getText($);if(U.default){let I=f(U.default,void 0,X);K.push(`${q} = ${I}`)}else K.push(q)}let Y=(Z.typeParameters||[]).map((U)=>U.name.getText($)),z=Q?.find((U)=>U.kind==="predicate"),W=Q?.find((U)=>U.kind==="declaration"),G;if(z?.text)G=z.text;else G=`predicate(${["x",...Y].join(", ")}) { return true }`;let L=`/* Original TS:
|
|
375
|
+
${Z.getText($).trim()}
|
|
376
|
+
*/`,_=[`description: '${H}'`,G];if(W?.text)_.push(`declaration ${W.text}`);return`${L}
|
|
377
|
+
Generic ${H}<${K.join(", ")}> {
|
|
378
|
+
${_.join(`
|
|
379
|
+
`)}
|
|
380
|
+
}`}function g7(Z,$,X,Q,H,K){let Y;if(Z.typeParameters&&Z.typeParameters.length>0){Y=new Map;for(let w of Z.typeParameters)Y.set(w.name.getText($),{constraint:w.constraint,default:w.default})}let z=Y||K?{...K,typeParams:Y??K?.typeParams}:K,W=[],G=t1(Z.parameters,$,Q,W,z),{line:J}=$.getLineAndCharacterOfPosition(Z.getStart($)),L=H?`/* line ${J+1} */
|
|
381
|
+
`:"",_=X||(j.isFunctionDeclaration(Z)&&Z.name?Z.name.getText($):""),U=Z.type?f(Z.type,void 0,Q,z):"",q=U&&U!=="undefined"&&U!=="any"&&!U.startsWith("new ")?` -! ${U}`:"";if(Z.type&&(U==="any"||U==="undefined")){let w=Z.type.getText($);if(w!=="any"&&w!=="unknown"&&w!=="void")W.push(`return: ${w}`)}let I="";if(Z.body){let w=j.isBlock(Z.body)?Z.body.getText($):`{ return ${Z.body.getText($)} }`;I=j.transpileModule(w,{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else I="{ }";let M=Z.modifiers?.some((w)=>w.kind===j.SyntaxKind.ExportKeyword),R=Z.modifiers?.some((w)=>w.kind===j.SyntaxKind.AsyncKeyword),P=!!Z.asteriskToken,B=M?"export ":"",F=R?"async ":"",N=P?"function* ":"function ",V=W.length>0?`/* TODO: TS types degraded — ${W.join(", ")} */
|
|
382
|
+
`:"";return`${L}${V}${B}${F}${N}${_}(${G.join(", ")})${q} ${I}`}function b5(Z,$,X,Q){let H=$.name?.getText(X)||"",K=`_${H}_impl`,Y=[],z=t1($.parameters,X,Q),W="{ }";if($.body){let U=$.body.getText(X);W=j.transpileModule(U,{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}let G=$.modifiers?.some((U)=>U.kind===j.SyntaxKind.AsyncKeyword),J=!!$.asteriskToken,L=G?"async ":"",_=J?"function* ":"function ";Y.push(`${L}${_}${K}(${z.join(", ")}) ${W}`);for(let U of Z){let q=t1(U.parameters,X,Q),I=U.parameters.map((N)=>N.name.getText(X)),M=U.type?f(U.type,void 0,Q):"",R=M&&M!=="undefined"&&M!=="any"?` -! ${M}`:"",{line:P}=X.getLineAndCharacterOfPosition(U.getStart(X)),B=`/* line ${P+1} */
|
|
383
|
+
`,F=J?"yield* ":"return ";Y.push(`${B}${L}${_}${H}(${q.join(", ")})${R} { ${F}${K}(${I.join(", ")}) }`)}return Y}function v5(Z,$,X,Q){let H=Q;if(Z.typeParameters&&Z.typeParameters.length>0){let q=new Map;for(let I of Z.typeParameters)q.set(I.name.getText($),{constraint:I.constraint,default:I.default});H={...Q,typeParams:q}}let K=Z.name?.getText($)||"Anonymous",z=Z.heritageClauses?.find((q)=>q.token===j.SyntaxKind.ExtendsKeyword)?.types[0]?.expression?.getText($),W=new Map;for(let q of Z.members)if(j.isPropertyDeclaration(q)&&q.name){let I=q.name.getText($);if(q.modifiers?.some((R)=>R.kind===j.SyntaxKind.PrivateKeyword)&&!I.startsWith("#"))W.set(I,`#${I}`)}let G=(q)=>{let I=q;for(let[M,R]of W)I=I.replace(new RegExp(`(\\b\\w+)\\.${M}\\b`,"g"),`$1.${R}`);return I},J=[];for(let q of Z.members){if(j.isConstructorDeclaration(q)){let I=t1(q.parameters,$,X),M="{ }";if(q.body){let R=j.transpileModule(q.body.getText($),{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}});M=G(R.outputText.trim())}J.push(` constructor(${I.join(", ")}) ${M}`)}if(j.isMethodDeclaration(q)&&q.name){let I=q.name.getText($),M=q.modifiers?.some((k)=>k.kind===j.SyntaxKind.StaticKeyword),R=q.modifiers?.some((k)=>k.kind===j.SyntaxKind.AsyncKeyword),P=t1(q.parameters,$,X,void 0,H),B=q.type?f(q.type,void 0,X,H):"",F=B&&B!=="undefined"&&B!=="any"?` -! ${B}`:"",N="{ }";if(q.body){let k=j.transpileModule(q.body.getText($),{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}});N=G(k.outputText.trim())}let V=!!q.asteriskToken,w=M?"static ":"",C=R?"async ":"",O=V?"*":"";J.push(` ${w}${C}${O}${I}(${P.join(", ")})${F} ${N}`)}if(j.isGetAccessorDeclaration(q)&&q.name){let I=q.name.getText($),M=q.type?f(q.type,void 0,X,H):"",R=M&&M!=="undefined"&&M!=="any"&&!M.startsWith("new ")?` -> ${M}`:"",P="{ }";if(q.body){let B=j.transpileModule(q.body.getText($),{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}});P=G(B.outputText.trim())}J.push(` get ${I}()${R} ${P}`)}if(j.isSetAccessorDeclaration(q)&&q.name){let I=q.name.getText($),M=t1(q.parameters,$,X),R="{ }";if(q.body){let P=j.transpileModule(q.body.getText($),{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}});R=G(P.outputText.trim())}J.push(` set ${I}(${M.join(", ")}) ${R}`)}if(j.isPropertyDeclaration(q)&&q.name){let I=q.name.getText($),R=q.modifiers?.some((B)=>B.kind===j.SyntaxKind.StaticKeyword)?"static ":"",P=W.get(I)||I;if(q.initializer){let B=q.initializer.getText($),F=B.trimStart().startsWith("{")?`(${B})`:B,V=j.transpileModule(F,{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();if(F!==B)V=V.replace(/^\(/,"").replace(/\);?\s*$/,"");J.push(` ${R}${P} = ${V}`)}else J.push(` ${R}${P}`)}}let _=Z.modifiers?.some((q)=>q.kind===j.SyntaxKind.ExportKeyword)?"export ":"",U=z?` extends ${z}`:"";return`${_}class ${K}${U} {
|
|
384
|
+
${J.join(`
|
|
385
|
+
`)}
|
|
386
|
+
}`}function t1(Z,$,X,Q,H){let K=[];for(let Y of Z){let z=Y.name.getText($);if(z==="this")continue;let W=!!Y.questionToken||!!Y.initializer,G=f(Y.type,void 0,X,H);if(Y.initializer){let J=Y.initializer.getText($);K.push(`${z} = ${J}`)}else if(G==="any"||G==="undefined"){if(K.push(z),Q&&Y.type){let J=Y.type.getText($);if(J!=="any"&&J!=="unknown")Q.push(`${z}: ${J}`)}}else if(W)K.push(`${z}: ${G} | undefined`);else K.push(`${z}: ${G}`)}return K}function J4(Z,$,X,Q){let H=Q;if(Z.typeParameters&&Z.typeParameters.length>0){let G=new Map;for(let J of Z.typeParameters)G.set(J.name.getText($),{constraint:J.constraint,default:J.default});H={...Q,typeParams:G}}let K=j.isFunctionDeclaration(Z)&&Z.name?Z.name.getText($):"anonymous",Y={};for(let G of Z.parameters){let J=G.name.getText($),L=!!G.questionToken||!!G.initializer,_=void 0;if(G.initializer){let U=G.initializer.getText($);try{_=JSON.parse(U)}catch{_=U}}Y[J]={type:c(G.type,H),required:!L,default:_}}let z={name:K,params:Y,returns:Z.type?c(Z.type,H):void 0},W=C5(Z,X);if(W)z.typeParams=W;return z}function f5(Z,$,X,Q){let H=Q;if(Z.typeParameters&&Z.typeParameters.length>0){let J=new Map;for(let L of Z.typeParameters)J.set(L.name.getText($),{constraint:L.constraint,default:L.default});H={...Q,typeParams:J}}let K=Z.name?.getText($)||"anonymous",Y={},z={},W;for(let J of Z.members){if(j.isConstructorDeclaration(J)){let L={};for(let _ of J.parameters){let U=_.name.getText($),q=!!_.questionToken||!!_.initializer,I=void 0;if(_.initializer){let M=_.initializer.getText($);try{I=JSON.parse(M)}catch{I=M}}L[U]={type:c(_.type,H),required:!q,default:I}}W={params:L}}if(j.isMethodDeclaration(J)&&J.name){let L=J.name.getText($),_=J.modifiers?.some((I)=>I.kind===j.SyntaxKind.StaticKeyword),U={};for(let I of J.parameters){let M=I.name.getText($),R=!!I.questionToken||!!I.initializer,P=void 0;if(I.initializer){let B=I.initializer.getText($);try{P=JSON.parse(B)}catch{P=B}}U[M]={type:c(I.type,H),required:!R,default:P}}let q={name:L,params:U,returns:J.type?c(J.type,H):void 0};if(_)z[L]=q;else Y[L]=q}}let G={name:K,methods:Y,staticMethods:z,constructor:W};if(Z.typeParameters&&Z.typeParameters.length>0){let J={};for(let L of Z.typeParameters){let _=L.name.getText($),U={};if(L.constraint)U.constraint=f(L.constraint,void 0,X,Q);if(L.default)U.default=f(L.default,void 0,X,Q);J[_]=U}G.typeParams=J}return G}function y5(Z){let $=[],X=/\/\*\s*@tjs-skip\s*\*\//g,Q;while((Q=X.exec(Z))!==null)$.push({index:Q.index,kind:"skip"});let H=/\/\*\s*@tjs\s+predicate(\([^)]*\)\s*\{[\s\S]*?\})\s*\*\//g;while((Q=H.exec(Z))!==null)$.push({index:Q.index,kind:"predicate",text:`predicate${Q[1].trim()}`});let K=/\/\*\s*@tjs\s+example:\s*([\s\S]*?)\s*\*\//g;while((Q=K.exec(Z))!==null)$.push({index:Q.index,kind:"example",text:Q[1].trim()});let Y=/\/\*\s*@tjs\s+declaration\s*(\{[\s\S]*?\})\s*\*\//g;while((Q=Y.exec(Z))!==null)$.push({index:Q.index,kind:"declaration",text:Q[1].trim()});return $.sort((z,W)=>z.index-W.index)}function h5(Z,$){let X=new Map;if(Z.length===0)return X;let Q=$.statements;for(let H=0;H<Q.length;H++){let K=Q[H],Y;if(j.isInterfaceDeclaration(K))Y=K.name.getText($);else if(j.isTypeAliasDeclaration(K))Y=K.name.getText($);else if(j.isEnumDeclaration(K))Y=K.name.getText($);if(!Y)continue;let z=K.getStart($),W=H>0?Q[H-1].getEnd():0,G=Z.filter((J)=>J.index>=W&&J.index<z);if(G.length>0)X.set(Y,G)}return X}function x5(Z){let $=[],X=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{[\s\S]*?\}\s*\*\/|\/\*test\s*\{[\s\S]*?\}\s*\*\//g,Q;while((Q=X.exec(Z))!==null)$.push(Q[0]);return $}function u5(Z){let $=[],X=/\/\*#[\s\S]*?\*\//g,Q=0,H=null,K=[];for(let z=0;z<Z.length;z++){let W=Z[z],G=z>0?Z[z-1]:"";if(!H&&(W==='"'||W==="'"||W==="`"))H=W;else if(H&&W===H&&G!=="\\")H=null;if(!H){if(W==="{")Q++;if(W==="}")Q--}K[z]=Q}let Y;while((Y=X.exec(Z))!==null)if(K[Y.index]===0)$.push({content:Y[0],index:Y.index});return $}function d5(Z,$={}){let{emitTJS:X=!1,filename:Q="input.ts"}=$,H=[],K=x5(Z),Y=X?u5(Z):[],z=X?y5(Z):[],W=j.createSourceFile(Q,Z,j.ScriptTarget.Latest,!0),G=X?h5(z,W):new Map,J=[],L=new Set,_={},U={},q=new Set,I=(w)=>{for(let C=0;C<Y.length;C++){let O=Y[C];if(!q.has(C)&&O.index<w)J.push(O.content),q.add(C)}},M=new Map,R=new Map;function P(w){if(j.isTypeAliasDeclaration(w))M.set(w.name.getText(W),w.type);if(j.isInterfaceDeclaration(w)){let C=w.name.getText(W),O=R.get(C);if(O){let k=j.factory.updateInterfaceDeclaration(O,O.modifiers,O.name,O.typeParameters,O.heritageClauses,[...O.members,...w.members]);R.set(C,k)}else R.set(C,w)}j.forEachChild(w,P)}P(W);let B={typeAliases:M,interfaces:R,sourceFile:W,warnings:H},F=new Map;for(let w of W.statements)if(j.isFunctionDeclaration(w)&&w.name){let C=w.name.getText(W);if(!F.has(C))F.set(C,{signatures:[],implementation:null});let O=F.get(C);if(w.body)O.implementation=w;else O.signatures.push(w)}for(let[w,C]of F)if(C.signatures.length===0||!C.implementation)F.delete(w);for(let w of W.statements){let C=!1;if(X)I(w.getStart(W));if(j.isFunctionDeclaration(w)&&w.name){let O=w.name.getText(W);C=!0;let k=F.get(O);if(k)if(!w.body);else if(X)J.push(...b5(k.signatures,w,W,H));else{let S=[];for(let h of k.signatures)S.push(J4(h,W,H,B));let b=J4(w,W,H,B);b.overloads=S,_[O]=b}else if(X)J.push(g7(w,W,void 0,H,!0,B));else _[O]=J4(w,W,H,B)}if(j.isVariableStatement(w)){let O=!1,k=w.modifiers?.some((S)=>S.kind===j.SyntaxKind.ExportKeyword);for(let S of w.declarationList.declarations)if(j.isIdentifier(S.name)&&S.initializer&&(j.isArrowFunction(S.initializer)||j.isFunctionExpression(S.initializer))){O=!0;let b=S.name.getText(W),h=S.initializer;if(X){let d=g7(h,W,b,H,!0,B);if(k&&!d.includes("export ")){let A1=d.search(/^(async\s+)?function[\s*]/m);if(A1>0)d=d.slice(0,A1)+"export "+d.slice(A1);else d="export "+d}J.push(d)}else{let d=J4(h,W,H,B);d.name=b,_[b]=d}}if(!O&&X){let S=j.transpileModule(w.getText(W),{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}});J.push(S.outputText.trim())}C=!0}if(j.isInterfaceDeclaration(w)){if(C=!0,X){let O=w.name.getText(W),k=G.get(O);if(!L.has(O))if(L.add(O),k?.some((S)=>S.kind==="skip"));else{let S=R.get(O)||w,b=O5(S,W,H,k);if(b){let h=w.modifiers?.some((d)=>d.kind===j.SyntaxKind.ExportKeyword);J.push(h?b.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):b)}}}}if(j.isTypeAliasDeclaration(w)){if(C=!0,X){let O=w.name.getText(W),k=G.get(O);if(!L.has(O))if(L.add(O),k?.some((S)=>S.kind==="skip"));else{let S=S5(w,W,H,k);if(S){let b=w.modifiers?.some((h)=>h.kind===j.SyntaxKind.ExportKeyword);J.push(b?S.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):S)}}}}if(j.isEnumDeclaration(w)){if(C=!0,X){let O=w.name.getText(W),k=G.get(O);if(!L.has(O))if(L.add(O),k?.some((S)=>S.kind==="skip"));else{let S=T5(w,W,H);if(S)J.push(S)}}}if(j.isClassDeclaration(w)&&w.name){let O=w.name.getText(W);if(C=!0,X){let k=v5(w,W,H);J.push(k)}else U[O]=f5(w,W,H,B)}if(j.isImportDeclaration(w)){if(C=!0,X){if(!(w.importClause?.isTypeOnly||w.importClause?.namedBindings&&j.isNamedImports(w.importClause.namedBindings)&&w.importClause.namedBindings.elements.every((k)=>k.isTypeOnly)))if(w.importClause?.namedBindings&&j.isNamedImports(w.importClause.namedBindings)){let k=w.importClause.namedBindings.elements.filter((S)=>!S.isTypeOnly).map((S)=>{let b=S.name.getText(W),h=S.propertyName?.getText(W);return h?`${h} as ${b}`:b});if(k.length>0){let S=w.moduleSpecifier.text;J.push(`import { ${k.join(", ")} } from '${S}'`)}}else{let S=w.getText(W).replace(/\btype\s+/g,"").replace(/\s*:\s*\w+/g,"");J.push(S)}}}if(j.isExportDeclaration(w)||j.isExportAssignment(w)){if(C=!0,X){let k=j.transpileModule(w.getText(W),{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();if(k)J.push(k)}}if(!C&&X){let k=j.transpileModule(w.getText(W),{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();if(k)J.push(k)}}if(X){I(1/0);let C=`/* tjs <- ${Q||"unknown"} */
|
|
387
|
+
|
|
388
|
+
`,O=K.length>0?`
|
|
389
|
+
|
|
390
|
+
`+K.join(`
|
|
391
|
+
|
|
392
|
+
`):"";return{code:C+J.join(`
|
|
393
|
+
|
|
394
|
+
`)+O,warnings:H.length>0?H:void 0}}let V=j.transpileModule(Z,{compilerOptions:{target:j.ScriptTarget.ESNext,module:j.ModuleKind.ESNext,removeComments:!1}}).outputText;for(let[w,C]of Object.entries(_)){let O={params:Object.fromEntries(Object.entries(C.params).map(([S,b])=>[S,{type:b.type.kind,required:b.required,default:b.default}])),returns:C.returns?{type:C.returns.kind}:void 0};if(C.typeParams)O.typeParams=C.typeParams;let k=JSON.stringify(O,null,2);V+=`
|
|
395
|
+
${w}.__tjs = ${k};
|
|
396
|
+
`}for(let[w,C]of Object.entries(U)){let O={constructor:C.constructor?{params:Object.fromEntries(Object.entries(C.constructor.params??{}).map(([S,b])=>[S,{type:b.type.kind,required:b.required,default:b.default}]))}:void 0,methods:Object.fromEntries(Object.entries(C.methods??{}).map(([S,b])=>[S,{params:Object.fromEntries(Object.entries(b.params??{}).map(([h,d])=>[h,{type:d.type.kind,required:d.required}])),returns:b.returns?{type:b.returns.kind}:void 0}])),staticMethods:Object.fromEntries(Object.entries(C.staticMethods??{}).map(([S,b])=>[S,{params:Object.fromEntries(Object.entries(b.params??{}).map(([h,d])=>[h,{type:d.type.kind,required:d.required}])),returns:b.returns?{type:b.returns.kind}:void 0}]))};if(C.typeParams)O.typeParams=C.typeParams;let k=JSON.stringify(O,null,2);V+=`
|
|
397
|
+
${w}.__tjs = ${k};
|
|
398
|
+
`,V+=`
|
|
399
|
+
${R7(w)}
|
|
400
|
+
`}return{code:V,types:_,classes:Object.keys(U).length>0?U:void 0,warnings:H.length>0?H:void 0}}import{s as v7}from"tosijs-schema";function f7(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";return typeof Z}function _4(Z){return v7.infer(Z)}function Q6(Z){return _4(Z)}Q6.type=f7;Q6.infer=_4;var l5=new Proxy(Q6,{get(Z,$){if($==="type")return f7;if($==="infer")return _4;return v7[$]},apply(Z,$,X){return _4(X[0])}});async function L4(Z){let $=`${Z1}:${Z}`;if(typeof crypto<"u"&&crypto.subtle){let H=new TextEncoder().encode($),K=await crypto.subtle.digest("SHA-256",H);return Array.from(new Uint8Array(K)).map((z)=>z.toString(16).padStart(2,"0")).join("")}let X=5381;for(let Q=0;Q<$.length;Q++)X=(X<<5)+X+$.charCodeAt(Q)>>>0;return X.toString(16)}function m5(Z){let $=`${Z1}:${Z}`,X=5381;for(let Q=0;Q<$.length;Q++)X=(X<<5)+X+$.charCodeAt(Q)>>>0;return X.toString(16)}var i5="tjs-metadata-cache",p5=1,a="modules";class H6{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"){Z();return}let X=indexedDB.open(i5,p5);X.onerror=()=>{console.warn("MetadataCache: Failed to open IndexedDB",X.error),Z()},X.onsuccess=()=>{this.db=X.result,Z()},X.onupgradeneeded=(Q)=>{let H=Q.target.result;if(!H.objectStoreNames.contains(a)){let K=H.createObjectStore(a,{keyPath:"hash"});K.createIndex("timestamp","timestamp"),K.createIndex("version","version")}}})}async get(Z){if(!this.db){this.stats.misses++;return}let $=await L4(Z);return new Promise((X)=>{let K=this.db.transaction(a,"readonly").objectStore(a).get($);K.onerror=()=>{this.stats.misses++,X(void 0)},K.onsuccess=()=>{let Y=K.result;if(Y&&Y.version!==Z1){this.stats.misses++,X(void 0);return}if(Y)this.stats.hits++;else this.stats.misses++;X(Y)}})}async getTranspile(Z){return(await this.get(Z))?.transpile}async getTJS(Z){return(await this.get(Z))?.tjs}async setTranspile(Z,$){await this._set(Z,{transpile:$})}async setTJS(Z,$){await this._set(Z,{tjs:$})}async _set(Z,$){if(!this.db)return;let X=await L4(Z);return new Promise((Q,H)=>{let Y=this.db.transaction(a,"readwrite").objectStore(a),z=Y.get(X);z.onsuccess=()=>{let W=z.result,G={hash:X,version:Z1,timestamp:Date.now(),transpile:$.transpile??W?.transpile,tjs:$.tjs??W?.tjs},J=Y.put(G);J.onerror=()=>H(J.error),J.onsuccess=()=>Q()},z.onerror=()=>H(z.error)})}async delete(Z){if(!this.db)return;let $=await L4(Z);return new Promise((X,Q)=>{let Y=this.db.transaction(a,"readwrite").objectStore(a).delete($);Y.onerror=()=>Q(Y.error),Y.onsuccess=()=>X()})}async clear(){if(!this.db)return;return new Promise((Z,$)=>{let H=this.db.transaction(a,"readwrite").objectStore(a).clear();H.onerror=()=>$(H.error),H.onsuccess=()=>{this.stats={hits:0,misses:0},Z()}})}async prune(Z){if(!this.db)return 0;let $=Date.now()-Z;return new Promise((X,Q)=>{let Y=this.db.transaction(a,"readwrite").objectStore(a).index("timestamp"),z=IDBKeyRange.upperBound($),W=0,G=Y.openCursor(z);G.onsuccess=(J)=>{let L=J.target.result;if(L)L.delete(),W++,L.continue();else X(W)},G.onerror=()=>Q(G.error)})}async pruneOldVersions(){if(!this.db)return 0;return new Promise((Z,$)=>{let Q=this.db.transaction(a,"readwrite").objectStore(a),H=0,K=Q.openCursor();K.onsuccess=(Y)=>{let z=Y.target.result;if(z){if(z.value.version!==Z1)z.delete(),H++;z.continue()}else Z(H)},K.onerror=()=>$(K.error)})}async getStats(){let Z=await this.count(),$=await this.estimateSize(),X=this.stats.hits+this.stats.misses,Q=X>0?this.stats.hits/X:0;return{entries:Z,bytes:$,hits:this.stats.hits,misses:this.stats.misses,hitRate:Q}}async count(){if(!this.db)return 0;return new Promise((Z,$)=>{let H=this.db.transaction(a,"readonly").objectStore(a).count();H.onerror=()=>$(H.error),H.onsuccess=()=>Z(H.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(a,"readonly").objectStore(a),H=0,K=Q.openCursor();K.onsuccess=(Y)=>{let z=Y.target.result;if(z)H+=JSON.stringify(z.value).length*2,z.continue();else Z(H)},K.onerror=()=>$(K.error)})}close(){if(this.db)this.db.close(),this.db=null}isAvailable(){return this.db!==null}resetStats(){this.stats={hits:0,misses:0}}}var j0=null;async function U4(){if(!j0)j0=new H6,await j0.open();return j0}function n5(Z){j0=Z}function q4(Z,$,X,Q,H){if(!X)X=T;(function K(Y,z,W){var G=W||Y.type;if(X[G](Y,z,K),$[G])$[G](Y,z)})(Z,Q,H)}function y7(Z,$,X,Q,H){var K=[];if(!X)X=T;(function Y(z,W,G){var J=G||z.type,L=z!==K[K.length-1];if(L)K.push(z);if(X[J](z,W,Y),$[J])$[J](z,W||K,K);if(L)K.pop()})(Z,Q,H)}function K6(Z,$,X){X(Z,$)}function x1(Z,$,X){}var T={};T.Program=T.BlockStatement=T.StaticBlock=function(Z,$,X){for(var Q=0,H=Z.body;Q<H.length;Q+=1){var K=H[Q];X(K,$,"Statement")}};T.Statement=K6;T.EmptyStatement=x1;T.ExpressionStatement=T.ParenthesizedExpression=T.ChainExpression=function(Z,$,X){return X(Z.expression,$,"Expression")};T.IfStatement=function(Z,$,X){if(X(Z.test,$,"Expression"),X(Z.consequent,$,"Statement"),Z.alternate)X(Z.alternate,$,"Statement")};T.LabeledStatement=function(Z,$,X){return X(Z.body,$,"Statement")};T.BreakStatement=T.ContinueStatement=x1;T.WithStatement=function(Z,$,X){X(Z.object,$,"Expression"),X(Z.body,$,"Statement")};T.SwitchStatement=function(Z,$,X){X(Z.discriminant,$,"Expression");for(var Q=0,H=Z.cases;Q<H.length;Q+=1){var K=H[Q];X(K,$)}};T.SwitchCase=function(Z,$,X){if(Z.test)X(Z.test,$,"Expression");for(var Q=0,H=Z.consequent;Q<H.length;Q+=1){var K=H[Q];X(K,$,"Statement")}};T.ReturnStatement=T.YieldExpression=T.AwaitExpression=function(Z,$,X){if(Z.argument)X(Z.argument,$,"Expression")};T.ThrowStatement=T.SpreadElement=function(Z,$,X){return X(Z.argument,$,"Expression")};T.TryStatement=function(Z,$,X){if(X(Z.block,$,"Statement"),Z.handler)X(Z.handler,$);if(Z.finalizer)X(Z.finalizer,$,"Statement")};T.CatchClause=function(Z,$,X){if(Z.param)X(Z.param,$,"Pattern");X(Z.body,$,"Statement")};T.WhileStatement=T.DoWhileStatement=function(Z,$,X){X(Z.test,$,"Expression"),X(Z.body,$,"Statement")};T.ForStatement=function(Z,$,X){if(Z.init)X(Z.init,$,"ForInit");if(Z.test)X(Z.test,$,"Expression");if(Z.update)X(Z.update,$,"Expression");X(Z.body,$,"Statement")};T.ForInStatement=T.ForOfStatement=function(Z,$,X){X(Z.left,$,"ForInit"),X(Z.right,$,"Expression"),X(Z.body,$,"Statement")};T.ForInit=function(Z,$,X){if(Z.type==="VariableDeclaration")X(Z,$);else X(Z,$,"Expression")};T.DebuggerStatement=x1;T.FunctionDeclaration=function(Z,$,X){return X(Z,$,"Function")};T.VariableDeclaration=function(Z,$,X){for(var Q=0,H=Z.declarations;Q<H.length;Q+=1){var K=H[Q];X(K,$)}};T.VariableDeclarator=function(Z,$,X){if(X(Z.id,$,"Pattern"),Z.init)X(Z.init,$,"Expression")};T.Function=function(Z,$,X){if(Z.id)X(Z.id,$,"Pattern");for(var Q=0,H=Z.params;Q<H.length;Q+=1){var K=H[Q];X(K,$,"Pattern")}X(Z.body,$,Z.expression?"Expression":"Statement")};T.Pattern=function(Z,$,X){if(Z.type==="Identifier")X(Z,$,"VariablePattern");else if(Z.type==="MemberExpression")X(Z,$,"MemberPattern");else X(Z,$)};T.VariablePattern=x1;T.MemberPattern=K6;T.RestElement=function(Z,$,X){return X(Z.argument,$,"Pattern")};T.ArrayPattern=function(Z,$,X){for(var Q=0,H=Z.elements;Q<H.length;Q+=1){var K=H[Q];if(K)X(K,$,"Pattern")}};T.ObjectPattern=function(Z,$,X){for(var Q=0,H=Z.properties;Q<H.length;Q+=1){var K=H[Q];if(K.type==="Property"){if(K.computed)X(K.key,$,"Expression");X(K.value,$,"Pattern")}else if(K.type==="RestElement")X(K.argument,$,"Pattern")}};T.Expression=K6;T.ThisExpression=T.Super=T.MetaProperty=x1;T.ArrayExpression=function(Z,$,X){for(var Q=0,H=Z.elements;Q<H.length;Q+=1){var K=H[Q];if(K)X(K,$,"Expression")}};T.ObjectExpression=function(Z,$,X){for(var Q=0,H=Z.properties;Q<H.length;Q+=1){var K=H[Q];X(K,$)}};T.FunctionExpression=T.ArrowFunctionExpression=T.FunctionDeclaration;T.SequenceExpression=function(Z,$,X){for(var Q=0,H=Z.expressions;Q<H.length;Q+=1){var K=H[Q];X(K,$,"Expression")}};T.TemplateLiteral=function(Z,$,X){for(var Q=0,H=Z.quasis;Q<H.length;Q+=1){var K=H[Q];X(K,$)}for(var Y=0,z=Z.expressions;Y<z.length;Y+=1){var W=z[Y];X(W,$,"Expression")}};T.TemplateElement=x1;T.UnaryExpression=T.UpdateExpression=function(Z,$,X){X(Z.argument,$,"Expression")};T.BinaryExpression=T.LogicalExpression=function(Z,$,X){X(Z.left,$,"Expression"),X(Z.right,$,"Expression")};T.AssignmentExpression=T.AssignmentPattern=function(Z,$,X){X(Z.left,$,"Pattern"),X(Z.right,$,"Expression")};T.ConditionalExpression=function(Z,$,X){X(Z.test,$,"Expression"),X(Z.consequent,$,"Expression"),X(Z.alternate,$,"Expression")};T.NewExpression=T.CallExpression=function(Z,$,X){if(X(Z.callee,$,"Expression"),Z.arguments)for(var Q=0,H=Z.arguments;Q<H.length;Q+=1){var K=H[Q];X(K,$,"Expression")}};T.MemberExpression=function(Z,$,X){if(X(Z.object,$,"Expression"),Z.computed)X(Z.property,$,"Expression")};T.ExportNamedDeclaration=T.ExportDefaultDeclaration=function(Z,$,X){if(Z.declaration)X(Z.declaration,$,Z.type==="ExportNamedDeclaration"||Z.declaration.id?"Statement":"Expression");if(Z.source)X(Z.source,$,"Expression")};T.ExportAllDeclaration=function(Z,$,X){if(Z.exported)X(Z.exported,$);X(Z.source,$,"Expression")};T.ImportDeclaration=function(Z,$,X){for(var Q=0,H=Z.specifiers;Q<H.length;Q+=1){var K=H[Q];X(K,$)}X(Z.source,$,"Expression")};T.ImportExpression=function(Z,$,X){X(Z.source,$,"Expression")};T.ImportSpecifier=T.ImportDefaultSpecifier=T.ImportNamespaceSpecifier=T.Identifier=T.PrivateIdentifier=T.Literal=x1;T.TaggedTemplateExpression=function(Z,$,X){X(Z.tag,$,"Expression"),X(Z.quasi,$,"Expression")};T.ClassDeclaration=T.ClassExpression=function(Z,$,X){return X(Z,$,"Class")};T.Class=function(Z,$,X){if(Z.id)X(Z.id,$,"Pattern");if(Z.superClass)X(Z.superClass,$,"Expression");X(Z.body,$)};T.ClassBody=function(Z,$,X){for(var Q=0,H=Z.body;Q<H.length;Q+=1){var K=H[Q];X(K,$)}};T.MethodDefinition=T.PropertyDefinition=T.Property=function(Z,$,X){if(Z.computed)X(Z.key,$,"Expression");if(Z.value)X(Z.value,$,"Expression")};var o5={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function s5(Z,$={}){let X={...o5,...$},Q=[],H;try{H=j1(Z,{filename:X.filename,colonShorthand:!0}).ast}catch(Y){return{diagnostics:[{severity:"error",message:Y.message,line:Y.loc?.line,column:Y.loc?.column,rule:"parse-error"}],valid:!1}}let K=[h7()];if(y7(H,{FunctionDeclaration(Y,z,W){let G=h7();K.push(G);for(let J of Y.params)a5(G,J,"parameter");if(Y.id)(K[K.length-2]||K[0]).declarations.set(Y.id.name,{node:Y.id,kind:"function",used:!1})},VariableDeclaration(Y){let z=K[K.length-1];for(let W of Y.declarations)if(W.id.type==="Identifier")z.declarations.set(W.id.name,{node:W.id,kind:Y.kind,used:!1})}}),q4(H,{Identifier(Y){for(let z=K.length-1;z>=0;z--){let W=K[z].declarations.get(Y.name);if(W){W.used=!0;break}}}}),X.unusedVariables)for(let Y of K)for(let[z,W]of Y.declarations){if(z.startsWith("_"))continue;if(!W.used&&W.kind!=="function")Q.push({severity:"warning",message:`'${z}' is declared but never used`,line:W.node.loc?.start?.line,column:W.node.loc?.start?.column,rule:"no-unused-vars"})}if(X.unreachableCode)q4(H,{BlockStatement(Y){let z=!1;for(let W of Y.body){if(z){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")z=!0}}});if(X.noExplicitNew)q4(H,{NewExpression(Y){let z="class";if(Y.callee.type==="Identifier")z=Y.callee.name;else if(Y.callee.type==="MemberExpression"){if(Y.callee.property.type==="Identifier")z=Y.callee.property.name}Q.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${z}(...) instead of new ${z}(...)`,line:Y.loc?.start?.line,column:Y.loc?.start?.column,rule:"no-explicit-new"})}});return{diagnostics:Q,valid:Q.filter((Y)=>Y.severity==="error").length===0}}function h7(){return{declarations:new Map}}function a5(Z,$,X){if($.type==="Identifier")Z.declarations.set($.name,{node:$,kind:X,used:!1});else if($.type==="AssignmentPattern"&&$.left.type==="Identifier")Z.declarations.set($.left.name,{node:$.left,kind:X,used:!1})}function r5(Z){let $=[],X=0,Q=null;for(let H=0;H<Z.length;H++){let K=Z[H],Y=H>0?Z[H-1]:"";if(!Q&&(K==='"'||K==="'"||K==="`"))Q=K;else if(Q&&K===Q&&Y!=="\\")Q=null;if(!Q){if(K==="{")X++;if(K==="}")X--}$[H]=X}return $}function x7(Z){let $=[],X=r5(Z),Q=/\/\*#([\s\S]*?)\*\//g,H=/function\s+(\w+)\s*\(([^)]*)\)\s*(?:(-[>?!])\s*('[^']*'|"[^"]*"|[^\s{]+)|:\s*(\w+))?\s*\{/g,K=[],Y;while((Y=Q.exec(Z))!==null){if(X[Y.index]!==0)continue;let W=Y[1],G=W.split(`
|
|
401
|
+
`),J=G.filter((L)=>L.trim().length>0).reduce((L,_)=>{let U=_.match(/^(\s*)/)?.[1].length||0;return Math.min(L,U)},1/0);if(J>0&&J<1/0)W=G.map((L)=>L.slice(J)).join(`
|
|
402
|
+
`);K.push({type:"doc",index:Y.index,data:W.trim()})}while((Y=H.exec(Z))!==null){let W=Y[1],G=Y[2],J=Y[3]||"",L=Y[4]||"",_=Y[5]||"",U=`function ${W}(${G})`;if(J)U+=` ${J} ${L}`;else if(_)U+=`: ${_}`;K.push({type:"function",index:Y.index,data:{name:W,signature:U}})}K.sort((W,G)=>W.index-G.index);for(let W of K)if(W.type==="doc")$.push({type:"doc",content:W.data});else $.push({type:"function",name:W.data.name,signature:W.data.signature});let z=$.map((W)=>{if(W.type==="doc")return W.content;else return`\`\`\`tjs
|
|
403
|
+
${W.signature}
|
|
404
|
+
\`\`\``}).join(`
|
|
405
|
+
|
|
406
|
+
`);return{items:$,markdown:z}}function t5(Z,$){let X=x7(Z),Q="";for(let H of X.items)if(H.type==="doc")Q+=H.content+`
|
|
407
|
+
|
|
408
|
+
`;else if(H.type==="function"){let K=$?.[H.name];if(Q+=`## ${H.name}
|
|
409
|
+
|
|
410
|
+
`,Q+=`\`\`\`tjs
|
|
411
|
+
${H.signature}
|
|
412
|
+
\`\`\`
|
|
413
|
+
|
|
414
|
+
`,K?.params&&Object.keys(K.params).length>0){Q+=`**Parameters:**
|
|
415
|
+
`;for(let[Y,z]of Object.entries(K.params)){let W=z.required?"":" *(optional)*",G=z.type?.kind||"any",J=z.example!==void 0?` (e.g. \`${JSON.stringify(z.example)}\`)`:"";Q+=`- \`${Y}\`: ${G}${W}${J}
|
|
416
|
+
`}Q+=`
|
|
417
|
+
`}if(K?.returns)Q+=`**Returns:** ${K.returns.kind||"void"}
|
|
418
|
+
|
|
419
|
+
`}return Q.trim()||"*No documentation available*"}import{s as A,validate as Y6,filter as n7}from"tosijs-schema";var D4=Symbol.for("tjs.equals");function I4(Z,$){if(Z!==null&&typeof Z==="object"&&typeof Z[D4]==="function")return Z[D4]($);if($!==null&&typeof $==="object"&&typeof $[D4]==="function")return $[D4](Z);if(Z!==null&&typeof Z==="object"&&typeof Z.Equals==="function")return Z.Equals($);if($!==null&&typeof $==="object"&&typeof $.Equals==="function")return $.Equals(Z);if(Z===$)return!0;if((Z===null||Z===void 0)&&($===null||$===void 0))return!0;if(Z===null||Z===void 0||$===null||$===void 0)return!1;if(typeof Z!==typeof $)return!1;if(typeof Z!=="object")return!1;if(Array.isArray(Z)&&Array.isArray($)){if(Z.length!==$.length)return!1;return Z.every((H,K)=>I4(H,$[K]))}if(Array.isArray(Z)!==Array.isArray($))return!1;let X=Object.keys(Z),Q=Object.keys($);if(X.length!==Q.length)return!1;return X.every((H)=>I4(Z[H],$[H]))}class K1{$error=!0;message;op;cause;constructor(Z,$,X){this.message=Z,this.op=$,this.cause=X}toString(){return`AgentError[${this.op}]: ${this.message}`}toJSON(){return{$error:!0,message:this.message,op:this.op}}}function e5(Z){return Z instanceof K1||Z&&Z.$error===!0}var Z0=new Map,Z$=3600000,$$=102400,z6="proc_";function W6(Z){return typeof Z==="string"&&Z.startsWith(z6)}function G6(Z){let $=Z0.get(Z);if(!$)throw Error(`Procedure not found: ${Z}`);if(Date.now()>$.expiresAt)throw Z0.delete(Z),Error(`Procedure expired: ${Z}`);return $.ast}function X$(){if(typeof crypto<"u"&&crypto.randomUUID)return z6+crypto.randomUUID();return z6+Math.random().toString(36).slice(2)+Date.now().toString(36)}var c7=new Set(["__proto__","constructor","prototype"]);function u7(Z){if(c7.has(Z))throw Error(`Security Error: Access to '${Z}' is forbidden`)}var Q$=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function H$(Z){try{let $=new URL(Z);if($.protocol!=="http:"&&$.protocol!=="https:")return!0;let X=$.hostname.toLowerCase();if(Q$.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 K$(Z){if(/\([^)]*[+*][^)]*\)[+*]/.test(Z))return!0;if(/\(([^|)]+)\|\1\)[+*]/.test(Z))return!0;if(/\(\.\*\)\+/.test(Z))return!0;if(/\(\.\+\)\+/.test(Z))return!0;if(/\(\[.*\]\+\)\+/.test(Z))return!0;return!1}function E1(Z){return{...Z,state:Object.create(Z.state)}}function Y$(Z,$){let X={},Q=new Set([...Object.keys(Z),...Object.keys($)]);for(let H of Q){let K=Z[H],Y=$[H];if(Y!==K)X[H]=Y}return X}function E(Z,$){if(Z&&typeof Z==="object"&&Z.$kind==="arg")return $.args[Z.path];if(Z&&typeof Z==="object"&&Z.$expr)return o(Z,$);if(typeof Z==="string"){if(Z.startsWith("args.")&&!("args"in $.state))return $.args[Z.replace("args.","")];if(Z.includes(".")){let X=Z.split(".");for(let H of X)if(c7.has(H))throw Error(`Security Error: Access to '${H}' is forbidden`);let Q=$.state[X[0]];if(Q!==void 0){for(let H=1;H<X.length;H++)Q=Q?.[X[H]];return Q}}if(Z in $.state)return $.state[Z];return Z}if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Z.constructor===Object){let X={};for(let Q of Object.keys(Z))X[Q]=E(Z[Q],$);return X}if(Array.isArray(Z))return Z.map((X)=>E(X,$));return Z}function u1(Z,$,X){return new Proxy($,{get(Q,H){if(H in Q)return Q[H];let K=X?.[H];if(K)throw Error(`${Z}.${H} is not available. ${K}`);throw Error(`${Z}.${H} is not supported in AsyncJS. Check docs for available ${Z} methods.`)}})}function e1(Z){if(Z===null)return{type:"null"};if(Z===void 0)return{};if(typeof Z==="object"&&Z!==null&&"type"in Z&&typeof Z.type==="string")return Z;if(typeof Z==="object"&&Z!==null&&"schema"in Z&&typeof Z.schema==="object")return Z.schema;let $=typeof Z;if($==="string")return{type:"string"};if($==="number")return Number.isInteger(Z)?{type:"integer"}:{type:"number"};if($==="boolean")return{type:"boolean"};if(Array.isArray(Z)){if(Z.length===0)return{type:"array"};return{type:"array",items:e1(Z[0])}}if($==="object"){let X={},Q=[];for(let[H,K]of Object.entries(Z))X[H]=e1(K),Q.push(H);return{type:"object",properties:X,required:Q}}return{}}var V1={Math:u1("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 Z=new Uint32Array(1);return crypto.getRandomValues(Z),Z[0]/4294967296}return Math.random()}}),JSON:u1("JSON",{parse:(Z)=>JSON.parse(Z),stringify:(Z,$,X)=>JSON.stringify(Z,$,X)}),console:u1("console",{log:(...Z)=>{return},warn:(...Z)=>{return},error:(...Z)=>{return},info:(...Z)=>{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:u1("Array",{isArray:(Z)=>Array.isArray(Z),from:(Z,$,X)=>Array.from(Z,$,X),of:(...Z)=>Array.of(...Z)},{prototype:"Prototype access is not allowed."}),Object:u1("Object",{keys:(Z)=>Object.keys(Z),values:(Z)=>Object.values(Z),entries:(Z)=>Object.entries(Z),fromEntries:(Z)=>Object.fromEntries(Z),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:u1("String",{fromCharCode:(...Z)=>String.fromCharCode(...Z),fromCodePoint:(...Z)=>String.fromCodePoint(...Z)}),Number:u1("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=e1($),Q=n7(Z,X);if(Q instanceof Error)throw Q;return Q},Schema:{...A,response:(Z,$)=>{let X=$?.schema!=null?$.schema:e1($);return{type:"json_schema",json_schema:{name:Z,strict:!0,schema:X}}},fromExample:(Z)=>e1(Z),isValid:(Z,$)=>{if($?.schema!=null)return Y6(Z,$);return Y6(Z,e1($))}},Set:(Z=[])=>{let $=[...new globalThis.Set(Z)];return{add(X){if(!$.includes(X))$.push(X);return this},remove(X){let Q=$.indexOf(X);if(Q!==-1)$.splice(Q,1);return this},clear(){return $.length=0,this},has(X){return $.includes(X)},get size(){return $.length},toArray(){return[...$]},union(X){let Q=X?.toArray?.()??X??[];return V1.Set([...$,...Q])},intersection(X){let Q=X?.toArray?.()??X??[];return V1.Set($.filter((H)=>Q.includes(H)))},diff(X){let Q=X?.toArray?.()??X??[];return V1.Set($.filter((H)=>!Q.includes(H)))},forEach(X){$.forEach(X)},map(X){return V1.Set($.map(X))},filter(X){return V1.Set($.filter(X))},toJSON(){return[...$]}}},Date:(()=>{let Z=(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:H=0,days:K=0,hours:Y=0,minutes:z=0,seconds:W=0,ms:G=0}={}){let J=new globalThis.Date(X.getTime());if(Q)J.setFullYear(J.getFullYear()+Q);if(H)J.setMonth(J.getMonth()+H);if(K)J.setDate(J.getDate()+K);if(Y)J.setHours(J.getHours()+Y);if(z)J.setMinutes(J.getMinutes()+z);if(W)J.setSeconds(J.getSeconds()+W);if(G)J.setMilliseconds(J.getMilliseconds()+G);return Z(J)},diff(Q,H="ms"){let K=typeof Q==="object"&&Q.timestamp?Q.timestamp:new globalThis.Date(Q).getTime(),Y=X.getTime()-K;switch(H){case"seconds":return Y/1000;case"minutes":return Y/60000;case"hours":return Y/3600000;case"days":return Y/86400000;default:return Y}},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 H=typeof Q==="object"&&Q.timestamp?Q.timestamp:new globalThis.Date(Q).getTime();return X.getTime()<H},isAfter(Q){let H=typeof Q==="object"&&Q.timestamp?Q.timestamp:new globalThis.Date(Q).getTime();return X.getTime()>H},toString(){return X.toISOString()},toJSON(){return X.toISOString()}}),$=(X)=>{let Q=X!==void 0?new globalThis.Date(X):new globalThis.Date;if(isNaN(Q.getTime()))throw Error(`Invalid date: ${X}`);return Z(Q)};return $.now=()=>globalThis.Date.now(),$.parse=(X)=>Z(new globalThis.Date(X)),$})()},A4={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."},z$=0.01,d7=0.0001,l7=0.001,W$=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 o(Z,$){if(Z===null||Z===void 0)return Z;if(typeof Z!=="object"||!("$expr"in Z))return Z;if($.fuel){if($.fuel.current-=z$,$.fuel.current<=0)throw Error("Out of Fuel")}switch(Z.$expr){case"literal":return Z.value;case"ident":{if(Z.name in $.state)return $.state[Z.name];if(Z.name in $.args)return $.args[Z.name];if(Z.name in V1)return V1[Z.name];if(Z.name in A4)throw Error(A4[Z.name]);return}case"member":{let X=o(Z.object,$);if(Z.optional&&(X===null||X===void 0))return;let Q=Z.property;return u7(Q),X?.[Q]}case"binary":{let X=o(Z.left,$),Q=o(Z.right,$);switch(Z.op){case"+":{let H=X+Q;if(typeof H==="string"&&$.fuel){if($.fuel.current-=H.length*d7,$.fuel.current<=0){$.error=new K1("Out of Fuel","expr.concat");return}}return H}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 I4(X,Q);case"!=":return!I4(X,Q);case"===":return X===Q;case"!==":return X!==Q;default:throw Error(`Unknown binary operator: ${Z.op}`)}}case"unary":{let X=o(Z.argument,$);switch(Z.op){case"!":return!X;case"-":return-X;case"+":return+X;case"typeof":return typeof X;default:throw Error(`Unknown unary operator: ${Z.op}`)}}case"logical":{let X=o(Z.left,$);if(Z.op==="&&")return X?o(Z.right,$):X;else if(Z.op==="??")return X??o(Z.right,$);else return X?X:o(Z.right,$)}case"conditional":return o(Z.test,$)?o(Z.consequent,$):o(Z.alternate,$);case"array":return Z.elements.map((X)=>o(X,$));case"object":{let X={};for(let Q of Z.properties)X[Q.key]=o(Q.value,$);return X}case"call":{if(Z.callee==="Error"){let Q=Z.arguments.map((K)=>o(K,$)),H=typeof Q[0]==="string"?Q[0]:"Error";$.error=new K1(H,"Error");return}if(Z.callee in V1){let Q=V1[Z.callee];if(typeof Q==="function"){let H=Z.arguments.map((K)=>o(K,$));return Q(...H)}}if(!$.resolver(Z.callee)){if(Z.callee in A4)throw Error(A4[Z.callee]);throw Error(`Unknown function: ${Z.callee}`)}throw Error(`Atom calls in expressions not yet supported: ${Z.callee}`)}case"methodCall":{let X=o(Z.object,$);if(Z.optional&&(X===null||X===void 0))return;let Q=Z.method;if(u7(Q),X===null||X===void 0)throw Error(`Cannot call method '${Q}' on ${X}`);let H=X[Q];if(typeof H!=="function")throw Error(`'${Q}' is not a function`);let K=Z.arguments.map((z)=>o(z,$)),Y=H.apply(X,K);if($.fuel&&W$.has(Q)){let z=0;if(typeof Y==="string")z=Y.length*d7;else if(Array.isArray(Y))z=Y.length*l7;else if(typeof Y==="object"&&Y!==null)z=Object.keys(Y).length*l7;if($.fuel.current-=z,$.fuel.current<=0){$.error=new K1("Out of Fuel",`expr.${Q}`);return}}return Y}default:throw Error(`Unknown expression type: ${Z.$expr}`)}}function g(Z,$,X,Q,H={}){let{docs:K="",timeoutMs:Y=1000,cost:z=1}=typeof H==="string"?{docs:H}:H;return{op:Z,inputSchema:$,outputSchema:X,exec:async(G,J)=>{let{op:L,result:_,...U}=G;if(J.error)return;let q=J.trace?{...J.state}:null,I=J.fuel.current,M,R;try{let P=J.costOverrides?.[Z],B=P!==void 0?P:z,F=typeof B==="function"?B(U,J):B;if((J.fuel.current-=F)<=0){J.error=new K1("Out of Fuel",Z);return}let N,V=async()=>Q(G,J);if(M=Y>0?await Promise.race([V(),new Promise((w,C)=>{N=setTimeout(()=>C(Error(`Atom '${Z}' timed out`)),Y)})]).finally(()=>clearTimeout(N)):await V(),G.result){if(J.consts.has(G.result))throw Error(`Cannot reassign const variable '${G.result}'`);if(M!==void 0&&X&&!Y6(M,X)){J.error=new K1(`Output validation failed for '${Z}'`,Z);return}if(J.state[G.result]=M,G.resultConst)J.consts.add(G.result)}}catch(P){R=P.message||String(P),J.error=new K1(R,Z,P)}finally{if(J.trace&&q){let P=Y$(q,J.state);J.trace.push({op:Z,input:U,stateDiff:P,result:M,error:R,fuelBefore:I,fuelAfter:J.fuel.current,timestamp:new Date().toISOString()})}}},docs:K,timeoutMs:Y,cost:z,create:(G)=>({op:Z,...G})}}var J1=g("seq",A.object({steps:A.array(A.any)}),void 0,async({steps:Z},$)=>{for(let X of Z){if($.output!==void 0)return;if($.error)return;let Q=$.resolver(X.op);if(!Q)throw Error(`Unknown Atom: ${X.op}`);await Q.exec(X,$)}},{docs:"Sequence",timeoutMs:0,cost:0.1}),G$=g("if",A.object({condition:A.any,then:A.array(A.any),else:A.array(A.any).optional}),void 0,async(Z,$)=>{if(o(Z.condition,$))await J1.exec({op:"seq",steps:Z.then},$);else if(Z.else)await J1.exec({op:"seq",steps:Z.else},$)},{docs:"If/Else",timeoutMs:0,cost:0.1}),J$=g("while",A.object({condition:A.any,body:A.array(A.any)}),void 0,async(Z,$)=>{while(o(Z.condition,$)){if($.signal?.aborted)throw Error("Execution aborted");if(($.fuel.current-=0.1)<=0)throw Error("Out of Fuel");if(await J1.exec({op:"seq",steps:Z.body},$),$.output!==void 0)return}},{docs:"While Loop",timeoutMs:0,cost:0.1}),_$=g("return",void 0,A.any,async(Z,$)=>{if($.error)return $.output=$.error,$.error;if("value"in Z){let Q=E(Z.value,$);if(Q!==void 0&&Q!==null&&!e5(Q)&&(typeof Q!=="object"||Array.isArray(Q))){let H=new K1(`Agent must return an object, got ${Array.isArray(Q)?"array":typeof Q}`,"return");return $.error=H,$.output=H,H}return $.output=Q,Q}let X={};if(Z.schema?.properties){for(let Q of Object.keys(Z.schema.properties))X[Q]=$.state[Q];if(Z.filter!==!1){let Q=n7(X,Z.schema);if(!(Q instanceof Error))X=Q}}return $.output=X,X},{docs:"Return",cost:0.1}),L$=g("try",A.object({try:A.array(A.any),catch:A.array(A.any).optional,catchParam:A.string.optional}),void 0,async(Z,$)=>{if(await J1.exec({op:"seq",steps:Z.try},$),$.error&&Z.catch){let X=Z.catchParam||"error";$.state[X]=$.error.message,$.state.errorOp=$.error.op,$.error=void 0,await J1.exec({op:"seq",steps:Z.catch},$)}},{docs:"Try/Catch",timeoutMs:0,cost:0.1}),U$=g("Error",A.object({args:A.array(A.any).optional}),void 0,async(Z,$)=>{let X=Z.args?.[0]??"Error";$.error=new K1(String(X),"Error")},{docs:"Trigger error flow",cost:0.1}),q$=g("varSet",A.object({key:A.string,value:A.any}),void 0,async({key:Z,value:$},X)=>{if(X.consts.has(Z))throw Error(`Cannot reassign const variable '${Z}'`);X.state[Z]=E($,X)},{docs:"Set Variable",cost:0.1}),D$=g("constSet",A.object({key:A.string,value:A.any}),void 0,async({key:Z,value:$},X)=>{if(X.consts.has(Z))throw Error(`Cannot reassign const variable '${Z}'`);if(Z in X.state)throw Error(`Cannot redeclare variable '${Z}' as const`);X.state[Z]=E($,X),X.consts.add(Z)},{docs:"Set Const Variable (immutable)",cost:0.1}),A$=g("varGet",A.object({key:A.string}),A.any,async({key:Z},$)=>{return E(Z,$)},{docs:"Get Variable",cost:0.1}),I$=g("varsImport",A.object({keys:A.union([A.array(A.string),A.record(A.string)])}),void 0,async({keys:Z},$)=>{if(Array.isArray(Z))for(let X of Z)$.state[X]=E({$kind:"arg",path:X},$);else for(let[X,Q]of Object.entries(Z))$.state[X]=E({$kind:"arg",path:Q},$)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:0.2}),B$=g("varsLet",A.record(A.any),void 0,async(Z,$)=>{for(let X of Object.keys(Z)){if(X==="op"||X==="result")continue;$.state[X]=E(Z[X],$)}},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:0.1}),R$=g("varsExport",A.object({keys:A.union([A.array(A.string),A.record(A.string)])}),A.record(A.any),async({keys:Z},$)=>{let X={};if(Array.isArray(Z))for(let Q of Z)X[Q]=E(Q,$);else for(let[Q,H]of Object.entries(Z))X[Q]=E(H,$);return X},{docs:"Export variables from the current scope, with optional renaming.",cost:0.2}),M$=g("scope",A.object({steps:A.array(A.any)}),void 0,async({steps:Z},$)=>{let X=E1($);if(await J1.exec({op:"seq",steps:Z},X),X.output!==void 0)$.output=X.output},{docs:"Create new scope",timeoutMs:0,cost:0.1}),w$=g("map",A.object({items:A.array(A.any),as:A.string,steps:A.array(A.any)}),A.array(A.any),async({items:Z,as:$,steps:X},Q)=>{let H=[],K=E(Z,Q);if(!Array.isArray(K))throw Error("map: items is not an array");for(let Y of K){if(Q.signal?.aborted)throw Error("Execution aborted");let z=E1(Q);z.state[$]=Y,await J1.exec({op:"seq",steps:X},z),H.push(z.state.result??null)}return H},{docs:"Map Array",timeoutMs:0,cost:1}),j$=g("filter",A.object({items:A.array(A.any),as:A.string,condition:A.any}),A.array(A.any),async({items:Z,as:$,condition:X},Q)=>{let H=[],K=E(Z,Q);if(!Array.isArray(K))throw Error("filter: items is not an array");for(let Y of K){if(Q.signal?.aborted)throw Error("Execution aborted");let z=E1(Q);if(z.state[$]=Y,o(X,z))H.push(Y)}return H},{docs:"Filter Array",timeoutMs:0,cost:1}),F$=g("reduce",A.object({items:A.array(A.any),as:A.string,accumulator:A.string,initial:A.any,steps:A.array(A.any)}),A.any,async({items:Z,as:$,accumulator:X,initial:Q,steps:H},K)=>{let Y=E(Z,K),z=E(Q,K);if(!Array.isArray(Y))throw Error("reduce: items is not an array");let W=z;for(let G of Y){if(K.signal?.aborted)throw Error("Execution aborted");let J=E1(K);J.state[$]=G,J.state[X]=W,await J1.exec({op:"seq",steps:H},J),W=J.state.result??W}return W},{docs:"Reduce Array",timeoutMs:0,cost:1}),P$=g("find",A.object({items:A.array(A.any),as:A.string,condition:A.any}),A.any,async({items:Z,as:$,condition:X},Q)=>{let H=E(Z,Q);if(!Array.isArray(H))throw Error("find: items is not an array");for(let K of H){if(Q.signal?.aborted)throw Error("Execution aborted");let Y=E1(Q);if(Y.state[$]=K,o(X,Y))return K}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),V$=g("push",A.object({list:A.array(A.any),item:A.any}),A.array(A.any),async({list:Z,item:$},X)=>{let Q=E(Z,X),H=E($,X);if(Array.isArray(Q))Q.push(H);return Q},{docs:"Push to Array",cost:1}),C$=g("len",A.object({list:A.any}),A.number,async({list:Z},$)=>{let X=E(Z,$);return Array.isArray(X)||typeof X==="string"?X.length:0},{docs:"Length",cost:1}),O$=g("split",A.object({str:A.string,sep:A.string}),A.array(A.string),async({str:Z,sep:$},X)=>E(Z,X).split(E($,X)),{docs:"Split String",cost:1}),N$=g("join",A.object({list:A.array(A.string),sep:A.string}),A.string,async({list:Z,sep:$},X)=>E(Z,X).join(E($,X)),{docs:"Join String",cost:1}),E$=g("template",A.object({tmpl:A.string,vars:A.record(A.any)}),A.string,async({tmpl:Z,vars:$},X)=>{return E(Z,X).replace(/\{\{(\w+)\}\}/g,(H,K)=>String(E($[K],X)??""))},{docs:"String Template",cost:1}),T$=g("regexMatch",A.object({pattern:A.string,value:A.any}),A.boolean,async({pattern:Z,value:$},X)=>{if(K$(Z))throw Error(`Suspicious regex pattern rejected (potential ReDoS): ${Z}`);let Q=E($,X);return new RegExp(Z).test(Q)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),S$=g("pick",A.object({obj:A.record(A.any),keys:A.array(A.string)}),A.record(A.any),async({obj:Z,keys:$},X)=>{let Q=E(Z,X),H=E($,X),K={};if(Q&&Array.isArray(H))H.forEach((Y)=>K[Y]=Q[Y]);return K},{docs:"Pick Keys",cost:1}),k$=g("omit",A.object({obj:A.record(A.any),keys:A.array(A.string)}),A.record(A.any),async({obj:Z,keys:$},X)=>{let Q=E(Z,X),H=new Set(E($,X)),K={};if(Q)Object.keys(Q).forEach((Y)=>{if(!H.has(Y))K[Y]=Q[Y]});return K},{docs:"Omit Keys",cost:1}),g$=g("merge",A.object({a:A.record(A.any),b:A.record(A.any)}),A.record(A.any),async({a:Z,b:$},X)=>({...E(Z,X),...E($,X)}),{docs:"Merge Objects",cost:1}),b$=g("keys",A.object({obj:A.record(A.any)}),A.array(A.string),async({obj:Z},$)=>Object.keys(E(Z,$)??{}),{docs:"Object Keys",cost:1}),m7=10,i7="X-Agent-Depth";function v$(Z,$){try{let Q=new URL(Z).hostname.toLowerCase();for(let H of $){let K=H.toLowerCase();if(K.startsWith("*.")){let Y=K.slice(1);if(Q.endsWith(Y)||Q===K.slice(2))return!0}else if(Q===K)return!0}return!1}catch{return!1}}var f$=g("httpFetch",A.object({url:A.string,method:A.string.optional,headers:A.record(A.string).optional,body:A.any.optional,responseType:A.string.optional}),A.any,async(Z,$)=>{let X=E(Z.url,$),Q=E(Z.method,$),H=E(Z.headers,$)||{},K=E(Z.body,$),Y=E(Z.responseType,$),z=$.context?.requestDepth??0;if(z>=m7)throw Error(`Agent request depth exceeded (max ${m7}). This prevents recursive agent loops.`);if($.capabilities.fetch)return $.capabilities.fetch(X,{method:Q,headers:{...H,[i7]:String(z+1)},body:K,signal:$.signal,responseType:Y});let W=$.context?.allowedFetchDomains;if(W){if(!v$(X,W))throw Error(`Fetch blocked: domain not in allowlist. Allowed: ${W.join(", ")}`)}else{if(H$(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(G){if(G.message.includes("allowedFetchDomains"))throw G;throw Error(`Invalid URL: ${X}`)}}if(typeof globalThis.fetch==="function"){let G=await globalThis.fetch(X,{method:Q,headers:{...H,[i7]:String(z+1)},body:K?JSON.stringify(K):void 0,signal:$.signal});if(Y==="dataUrl"){let L=await G.arrayBuffer(),_=new Uint8Array(L),U="";for(let M=0;M<_.length;M++)U+=String.fromCharCode(_[M]);let q=btoa(U);return`data:${G.headers.get("content-type")||"application/octet-stream"};base64,${q}`}let J=G.headers.get("content-type");if(Y==="json"||J&&J.includes("application/json"))return G.json();return G.text()}throw Error("Capability 'fetch' missing and no global fetch available")},{docs:"HTTP Fetch",timeoutMs:30000,cost:5}),y$=g("storeGet",A.object({key:A.string}),A.any,async({key:Z},$)=>{let X=E(Z,$);return $.capabilities.store?.get(X)},{docs:"Store Get",cost:5}),h$=g("storeSet",A.object({key:A.string,value:A.any}),void 0,async({key:Z,value:$},X)=>{let Q=E(Z,X),H=E($,X);return X.capabilities.store?.set(Q,H)},{docs:"Store Set",cost:5}),x$=g("storeQuery",A.object({query:A.any}),A.array(A.any),async({query:Z},$)=>$.capabilities.store?.query?.(E(Z,$))??[],{docs:"Store Query",cost:5}),u$=g("storeVectorSearch",A.object({collection:A.string.optional,vector:A.array(A.number),k:A.number.optional}),A.array(A.any),async({collection:Z,vector:$,k:X},Q)=>Q.capabilities.store?.vectorSearch?.(E(Z,Q),E($,Q),E(X,Q))??[],{docs:"Vector Search",cost:(Z,$)=>5+(E(Z.k,$)??5)}),d$=g("llmPredict",A.object({prompt:A.string,options:A.any.optional}),A.string,async({prompt:Z,options:$},X)=>{if(!X.capabilities.llm?.predict)throw Error("Capability 'llm.predict' missing");return X.capabilities.llm.predict(E(Z,X),E($,X))},{docs:"LLM Predict",timeoutMs:120000,cost:100}),l$=g("agentRun",A.object({agentId:A.any,input:A.any}),A.any,async({agentId:Z,input:$},X)=>{let Q=E(Z,X),H=E($,X),K=H;if(H&&typeof H==="object"&&!Array.isArray(H)){K={};for(let z in H)K[z]=E(H[z],X)}if(W6(Q)){let z=G6(Q),W={...X,args:K,state:{},consts:new Set,output:void 0,error:void 0},G=X.resolver("seq");if(!G)throw Error("seq atom not found");if(await G.exec(z,W),W.error)throw Error(W.error.message||"Sub-agent failed");return W.output}if(Q&&typeof Q==="object"&&"op"in Q){let z={...X,args:K,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,z),z.error)throw Error(z.error.message||"Sub-agent failed");return z.output}if(!X.capabilities.agent?.run)throw Error("Capability 'agent.run' missing");let Y=await X.capabilities.agent.run(Q,K);if(Y&&typeof Y==="object"&&"fuelUsed"in Y&&typeof Y.fuelUsed==="number"){if(Y.error)throw Error(Y.error.message||"Sub-agent failed");return Y.result}return Y},{docs:"Run Sub-Agent (accepts procedure token, AST, or agent ID)",cost:1}),m$=g("transpileCode",A.object({code:A.string}),A.any,async({code:Z},$)=>{if(!$.capabilities.code?.transpile)throw Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let X=E(Z,$);try{return $.capabilities.code.transpile(X)}catch(Q){throw Error(`Code transpilation failed: ${Q.message}`)}},{docs:"Transpile AsyncJS code to AST",cost:1}),p7=10,i$=g("runCode",A.object({code:A.string,args:A.record(A.any).optional}),A.any,async({code:Z,args:$},X)=>{let Q=X.runCodeDepth??0;if(Q>=p7)throw Error(`runCode recursion limit exceeded (max ${p7}). 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 H=E(Z,X),K=$?E($,X):{},Y;try{Y=X.capabilities.code.transpile(H)}catch(W){throw Error(`Code transpilation failed: ${W.message}`)}if(Y.op!=="seq")throw Error("Transpiled code must be a seq node");let z=E1(X);if(z.args=K,z.output=void 0,z.runCodeDepth=Q+1,await J1.exec(Y,z),z.error){X.error=z.error;return}return z.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),p$=g("jsonParse",A.object({str:A.string}),A.any,async({str:Z},$)=>JSON.parse(E(Z,$)),{docs:"Parse JSON",cost:1}),n$=g("jsonStringify",A.object({value:A.any}),A.string,async({value:Z},$)=>JSON.stringify(E(Z,$)),{docs:"Stringify JSON",cost:1}),c$=g("xmlParse",A.object({str:A.string}),A.any,async({str:Z},$)=>{if(!$.capabilities.xml?.parse)throw Error("Capability 'xml.parse' missing");return $.capabilities.xml.parse(E(Z,$))},{docs:"Parse XML",cost:1}),o$=g("memoize",A.object({key:A.string.optional,steps:A.array(A.any)}),A.any,async({key:Z,steps:$},X)=>{if(!X.memo)X.memo=new Map;let Q=E(Z,X)??await J6.exec({value:$,algorithm:"SHA-256"},X);if(X.memo.has(Q))return X.memo.get(Q);let H=E1(X);await J1.exec({op:"seq",steps:$},H);let K=H.output??H.state.result;return X.memo.set(Q,K),K},{docs:"Memoize steps result in memory",cost:1}),s$=g("cache",A.object({key:A.string.optional,steps:A.array(A.any),ttlMs:A.number.optional}),A.any,async({key:Z,steps:$,ttlMs:X},Q)=>{if(!Q.capabilities.store)throw Error("Capability 'store' missing for caching");let K=`cache:${E(Z,Q)??await J6.exec({value:$,algorithm:"SHA-256"},Q)}`,Y=await Q.capabilities.store.get(K);if(Y)if(typeof Y==="object"&&Y._exp){if(Date.now()<Y._exp)return Y.val}else return Y;let z=E1(Q);await J1.exec({op:"seq",steps:$},z);let W=z.output??z.state.result,G=Date.now()+(X??86400000);if((Q.fuel.current-=5)<=0)throw Error("Out of Fuel");return await Q.capabilities.store.set(K,{val:W,_exp:G}),W},{docs:"Cache steps result in store with TTL",cost:5}),a$=g("random",A.object({min:A.number.optional,max:A.number.optional,format:A.string.optional,length:A.number.optional}),A.any,async({min:Z,max:$,format:X,length:Q},H)=>{let K=E(X,H)??"float",Y=E(Q,H)??10,z=E(Z,H)??0,W=E($,H)??1;if(K==="base36"){let U="";if(typeof crypto<"u"&&crypto.getRandomValues){let q=new Uint8Array(Y);crypto.getRandomValues(q);for(let I=0;I<Y;I++)U+="0123456789abcdefghijklmnopqrstuvwxyz"[q[I]%36]}else for(let q=0;q<Y;q++)U+="0123456789abcdefghijklmnopqrstuvwxyz".charAt(Math.floor(Math.random()*36));return U}let G;if(typeof crypto<"u"&&crypto.getRandomValues){let _=new Uint32Array(1);crypto.getRandomValues(_),G=_[0]/4294967296}else G=Math.random();let J=W-z,L=G*J+z;if(K==="integer")return Math.floor(L);return L},{docs:"Generate Random",cost:1}),r$=g("uuid",void 0,A.string,async()=>{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();if(typeof crypto<"u"&&crypto.getRandomValues){let Z=new Uint8Array(16);crypto.getRandomValues(Z),Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128;let $=Array.from(Z,(X)=>X.toString(16).padStart(2,"0")).join("");return`${$.slice(0,8)}-${$.slice(8,12)}-${$.slice(12,16)}-${$.slice(16,20)}-${$.slice(20)}`}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(Z)=>{let $=Math.random()*16|0;return(Z==="x"?$:$&3|8).toString(16)})},{docs:"Generate UUID",cost:1}),J6=g("hash",A.object({value:A.any,algorithm:A.string.optional}),A.string,async({value:Z,algorithm:$},X)=>{let Q=typeof Z==="string"?Z:JSON.stringify(E(Z,X)),H=E($,X)||"SHA-256";if(typeof crypto<"u"&&crypto.subtle){let z=new TextEncoder().encode(Q),W=await crypto.subtle.digest(H,z);return Array.from(new Uint8Array(W)).map((J)=>J.toString(16).padStart(2,"0")).join("")}let K=0;for(let Y=0;Y<Q.length;Y++){let z=Q.charCodeAt(Y);K=(K<<5)-K+z,K|=0}return String(K)},{docs:"Hash a value",cost:1}),t$=g("consoleLog",A.object({message:A.any}),void 0,async({message:Z},$)=>{let X=E(Z,$);if($.trace)$.trace.push({op:"console.log",input:{message:X},stateDiff:{},result:X,fuelBefore:$.fuel.current,fuelAfter:$.fuel.current,timestamp:new Date().toISOString()})},{docs:"Log to trace",cost:0.1}),e$=g("consoleWarn",A.object({message:A.any}),void 0,async({message:Z},$)=>{let X=E(Z,$),Q=typeof X==="string"?X:JSON.stringify(X);if(!$.warnings)$.warnings=[];if($.warnings.push(Q),$.trace)$.trace.push({op:"console.warn",input:{message:X},stateDiff:{},result:X,fuelBefore:$.fuel.current,fuelAfter:$.fuel.current,timestamp:new Date().toISOString()})},{docs:"Add warning",cost:0.1}),ZX=g("consoleError",A.object({message:A.any}),void 0,async({message:Z},$)=>{let X=E(Z,$),Q=typeof X==="string"?X:JSON.stringify(X);$.error=new K1(Q,"console.error")},{docs:"Emit error and stop",cost:0.1}),$X=g("storeProcedure",A.object({ast:A.any,ttl:A.number.optional,maxSize:A.number.optional}),A.string,async({ast:Z,ttl:$,maxSize:X},Q)=>{let H=E(Z,Q),K=$?E($,Q):Z$,Y=X?E(X,Q):$$;if(!H||typeof H!=="object"||!H.op)throw Error('Invalid AST: must be an object with an "op" property');let z=JSON.stringify(H);if(z.length>Y)throw Error(`AST too large: ${z.length} bytes exceeds limit of ${Y} bytes. Consider reducing AST size or using a shorter TTL.`);let W=X$(),G=Date.now();return Z0.set(W,{ast:H,createdAt:G,expiresAt:G+K}),W},{docs:"Store an AST and return a token for later execution",cost:1}),XX=g("releaseProcedure",A.object({token:A.string}),A.boolean,async({token:Z},$)=>{let X=E(Z,$);return Z0.delete(X)},{docs:"Release a stored procedure by token",cost:0.1}),QX=g("clearExpiredProcedures",void 0,A.number,async()=>{let Z=Date.now(),$=0;for(let[X,Q]of Z0)if(Z>Q.expiresAt)Z0.delete(X),$++;return $},{docs:"Clear all expired procedures and return count",cost:0.5}),B4={seq:J1,if:G$,while:J$,return:_$,try:L$,Error:U$,varSet:q$,constSet:D$,varGet:A$,varsImport:I$,varsLet:B$,varsExport:R$,scope:M$,map:w$,filter:j$,reduce:F$,find:P$,push:V$,len:C$,split:O$,join:N$,template:E$,regexMatch:T$,pick:S$,omit:k$,merge:g$,keys:b$,httpFetch:f$,storeGet:y$,storeSet:h$,storeQuery:x$,storeVectorSearch:u$,llmPredict:d$,agentRun:l$,transpileCode:m$,runCode:i$,jsonParse:p$,jsonStringify:n$,xmlParse:c$,memoize:o$,cache:s$,random:a$,uuid:r$,hash:J6,consoleLog:t$,consoleWarn:e$,consoleError:ZX,storeProcedure:$X,releaseProcedure:XX,clearExpiredProcedures:QX};var HX=new Set(["true","false","null","undefined","and","or","not"]);function KX(Z,$){let X=Z.replace(/"[^"]*"/g,'""').replace(/'[^']*'/g,"''"),Q=[],H=/(?<![.])\b([a-zA-Z_][a-zA-Z0-9_]*)\b/g,K;while((K=H.exec(X))!==null)Q.push(K[1]);let z=[...new Set(Q)].filter((W)=>!HX.has(W)&&!(W in $)&&!new RegExp(`\\b${W}\\s*\\(`).test(X));if(z.length>0)console.warn(`[Agent99 Builder] Condition "${Z}" references variables not in vars mapping: ${z.join(", ")}. Add them to vars or use AsyncJS syntax (ajs\`...\`) which handles this automatically.`)}function R4(Z,$){KX(Z,$);let X=YX(Z),Q=t7(X,0,$);if(Q.pos<X.length){let H=X.slice(Q.pos).join(" ");throw Error(`Unsupported condition syntax near '${H}' in: ${Z}
|
|
420
|
+
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return Q.node}function YX(Z){let $=[],X=0;while(X<Z.length){while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)break;if(Z[X]==='"'||Z[X]==="'"){let Q=Z[X++],H="";while(X<Z.length&&Z[X]!==Q)if(Z[X]==="\\"&&X+1<Z.length)X++,H+=Z[X++];else H+=Z[X++];X++,$.push(JSON.stringify(H));continue}if(Z.slice(X,X+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){$.push(Z.slice(X,X+2)),X+=2;continue}if("+-*/%><!().?:[]".includes(Z[X])){$.push(Z[X]),X++;continue}if(/\d/.test(Z[X])){let Q="";while(X<Z.length&&/[\d.]/.test(Z[X]))Q+=Z[X++];$.push(Q);continue}if(/[a-zA-Z_]/.test(Z[X])){let Q="";while(X<Z.length&&/[a-zA-Z0-9_]/.test(Z[X]))Q+=Z[X++];$.push(Q);continue}X++}return $}function t7(Z,$,X){return zX(Z,$,X)}function zX(Z,$,X){let{node:Q,pos:H}=o7(Z,$,X);while(Z[H]==="||"){H++;let{node:K,pos:Y}=o7(Z,H,X);Q={$expr:"logical",op:"||",left:Q,right:K},H=Y}return{node:Q,pos:H}}function o7(Z,$,X){let{node:Q,pos:H}=s7(Z,$,X);while(Z[H]==="&&"){H++;let{node:K,pos:Y}=s7(Z,H,X);Q={$expr:"logical",op:"&&",left:Q,right:K},H=Y}return{node:Q,pos:H}}function s7(Z,$,X){let{node:Q,pos:H}=a7(Z,$,X),K=["==","!=",">","<",">=","<="];while(K.includes(Z[H])){let Y=Z[H++],{node:z,pos:W}=a7(Z,H,X);Q={$expr:"binary",op:Y,left:Q,right:z},H=W}return{node:Q,pos:H}}function a7(Z,$,X){let{node:Q,pos:H}=r7(Z,$,X);while(Z[H]==="+"||Z[H]==="-"){let K=Z[H++],{node:Y,pos:z}=r7(Z,H,X);Q={$expr:"binary",op:K,left:Q,right:Y},H=z}return{node:Q,pos:H}}function r7(Z,$,X){let{node:Q,pos:H}=_6(Z,$,X);while(Z[H]==="*"||Z[H]==="/"||Z[H]==="%"){let K=Z[H++],{node:Y,pos:z}=_6(Z,H,X);Q={$expr:"binary",op:K,left:Q,right:Y},H=z}return{node:Q,pos:H}}function _6(Z,$,X){if(Z[$]==="!"||Z[$]==="-"){let Q=Z[$++],{node:H,pos:K}=_6(Z,$,X);return{node:{$expr:"unary",op:Q,argument:H},pos:K}}return WX(Z,$,X)}function WX(Z,$,X){let Q=Z[$];if(Q==="("){let{node:H,pos:K}=t7(Z,$+1,X);return{node:H,pos:K+1}}if(Q&&Q.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(Q)},pos:$+1};if(Q&&/^\d/.test(Q))return{node:{$expr:"literal",value:parseFloat(Q)},pos:$+1};if(Q==="true")return{node:{$expr:"literal",value:!0},pos:$+1};if(Q==="false")return{node:{$expr:"literal",value:!1},pos:$+1};if(Q==="null")return{node:{$expr:"literal",value:null},pos:$+1};if(Q&&/^[a-zA-Z_]/.test(Q)){let H={$expr:"ident",name:Q},K=$+1;while(Z[K]==="."){K++;let Y=Z[K++];H={$expr:"member",object:H,property:Y}}return{node:H,pos:K}}return{node:{$expr:"literal",value:null},pos:$+1}}class e{steps=[];atoms;proxy;constructor(Z){return this.atoms=Z,this.proxy=new Proxy(this,{get:($,X,Q)=>{if(X in $)return $[X];if(typeof X==="string"&&X in $.atoms)return(H)=>{let K=$.atoms[X];return $.add(K.create(H)),Q};return}}),this.proxy}add(Z){return this.steps.push(Z),this.proxy}as(Z){if(this.steps.length===0)throw Error("No step to capture");let $=this.steps[this.steps.length-1];return $.result=Z,this.proxy}step(Z){return this.add(Z)}return(Z){let $=this.atoms.return;if(!$)throw Error("Atom 'return' not found");let X=Z.schema??Z;return this.add($.create({schema:X}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport(Z){return this.add(this.atoms.varsImport.create({keys:Z}))}varsExport(Z){return this.add(this.atoms.varsExport.create({keys:Z}))}if(Z,$,X,Q){let H=new e(this.atoms);X(H);let K;if(Q){let W=new e(this.atoms);Q(W),K=W.steps}let Y=R4(Z,$),z=this.atoms.if;return this.add(z.create({condition:Y,then:H.steps,else:K}))}while(Z,$,X){let Q=new e(this.atoms);X(Q);let H=R4(Z,$),K=this.atoms.while;return this.add(K.create({condition:H,body:Q.steps}))}scope(Z){let $=new e(this.atoms);Z($);let X=this.atoms.scope;return this.add(X.create({steps:$.steps}))}map(Z,$,X){let Q=new e(this.atoms);X(Q);let H=this.atoms.map;return this.add(H.create({items:Z,as:$,steps:Q.steps}))}filter(Z,$,X,Q={}){let H=R4(X,Q),K=this.atoms.filter;return this.add(K.create({items:Z,as:$,condition:H}))}find(Z,$,X,Q={}){let H=R4(X,Q),K=this.atoms.find;return this.add(K.create({items:Z,as:$,condition:H}))}reduce(Z,$,X,Q,H){let K=new e(this.atoms);H(K);let Y=this.atoms.reduce;return this.add(Y.create({items:Z,as:$,accumulator:X,initial:Q,steps:K.steps}))}memoize(Z,$){let X=new e(this.atoms);Z(X);let Q=this.atoms.memoize;return this.add(Q.create({key:$,steps:X.steps}))}cache(Z,$,X){let Q=new e(this.atoms);Z(Q);let H=this.atoms.cache;return this.add(H.create({key:$,steps:Q.steps,ttlMs:X}))}try(Z){let $=new e(this.atoms);Z.try($);let X;if(Z.catch){let H=new e(this.atoms);Z.catch(H),X=H.steps}let Q=this.atoms.try;return this.add(Q.create({try:$.steps,catch:X}))}}var GX={take(Z){return new e(B4)},custom(Z){return new e(Z)},args(Z){return{$kind:"arg",path:Z}},val(Z){return Z}},dH=GX;import{validate as JX}from"tosijs-schema";function F0(Z,$={}){let{ast:X,returnType:Q,originalSource:H,requiredParams:K}=j1(Z,{filename:$.filename,colonShorthand:!0,vmTarget:!0}),Y=h0(X,$.filename),{ast:z,signature:W,warnings:G}=L0(Y,H,Q,$,K);return{ast:z,signature:W,warnings:G}}var _X=10;class L6{atoms;constructor(Z={}){this.atoms={...B4,...Z}}get builder(){return new e(this.atoms)}get Agent(){return new e(this.atoms)}get A99(){return this.Agent}resolve(Z){return this.atoms[Z]}getTools(Z="all"){let $=Object.values(this.atoms);if(Array.isArray(Z))$=$.filter((X)=>Z.includes(X.op));else if(Z==="flow"){let X=["seq","if","while","return","try","varSet","varGet","scope"];$=$.filter((Q)=>X.includes(Q.op))}return $.map((X)=>({type:"function",function:{name:X.op,description:X.docs,parameters:X.inputSchema?.schema??{}}}))}async run(Z,$={},X={}){let Q;if(typeof Z==="string")if(W6(Z))Q=G6(Z);else try{Q=F0(Z).ast}catch(U){throw Error(`AJS transpilation failed: ${U.message}`)}else Q=Z;let H=X.fuel??1000,K=X.timeoutMs??H*_X,Y=X.capabilities??{},z=[];if(!Y.store){let U=new Map,q=!1;Y.store={get:async(I)=>{if(!q)q=!0,z.push("Using default in-memory store (not suitable for production)");return U.get(I)},set:async(I,M)=>{if(!q)q=!0,z.push("Using default in-memory store (not suitable for production)");U.set(I,M)}}}let W=new AbortController,G=setTimeout(()=>W.abort(),K);if(X.signal)X.signal.addEventListener("abort",()=>W.abort());let J={fuel:{current:H},args:$,state:{},consts:new Set,capabilities:Y,resolver:(U)=>this.resolve(U),output:void 0,signal:W.signal,costOverrides:X.costOverrides,context:X.context,warnings:z};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&&!JX($,L)){let U=new K1("Input validation failed: args do not match expected schema","vm.run");return{result:U,error:U,fuelUsed:0,trace:J.trace,warnings:z.length>0?z: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 ${K}ms (fuel: ${H}). Consider increasing fuel or optimizing your agent.`))}),W.signal.aborted)q(Error(`Execution timeout after ${K}ms (fuel: ${H}). Consider increasing fuel or optimizing your agent.`))})])}catch(U){if(U.message?.includes("timeout")||U.message?.includes("aborted")||W.signal.aborted)J.error=new K1(`Execution timeout after ${K}ms (fuel: ${H}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw U}finally{clearTimeout(G)}if(J.error&&J.output===void 0)J.output=J.error;let _=[...z,...J.warnings??[]];return{result:J.output,error:J.error,fuelUsed:H-J.fuel.current,trace:J.trace,warnings:_.length>0?_:void 0}}}var LX=null,e7=()=>LX??=new L6;function d1(Z){if(!Z||typeof Z!=="object")return;if(Array.isArray(Z)){for(let $ of Z)d1($);return}if(Z.op==="return"&&"value"in Z)Z.value={__result:Z.value};if(Z.steps)d1(Z.steps);if(Z.then)d1(Z.then);if(Z.else)d1(Z.else);if(Z.body)d1(Z.body)}async function UX(Z){let{code:$,context:X={},fuel:Q=1000,timeoutMs:H,capabilities:K={}}=Z,Y=e7(),W=/\breturn\b/.test($)?`function __eval() { ${$} }`:`function __eval() { return (${$}) }`;try{let{ast:G}=F0(W);d1(G);let J=await Y.run(G,X,{fuel:Q,timeoutMs:H,capabilities:K}),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(G){return{result:void 0,fuelUsed:Q,error:{message:G.message||String(G)}}}}async function qX(Z){let{body:$,params:X=[],fuel:Q=1000,timeoutMs:H,capabilities:K={}}=Z,Y=e7(),W=`function __safeFn(${X.join(", ")}) { ${$} }`,{ast:G}=F0(W);return d1(G),async(...J)=>{let L={};for(let _=0;_<X.length;_++)L[X[_]]=J[_];try{let _=await Y.run(G,L,{fuel:Q,timeoutMs:H,capabilities:K}),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 w4(Z,$={}){let{ast:X,returnType:Q,originalSource:H,requiredParams:K}=j1(Z,{filename:$.filename,colonShorthand:!0,vmTarget:!0}),Y=h0(X,$.filename),{ast:z,signature:W,warnings:G}=L0(Y,H,Q,$,K);return{ast:z,signature:W,warnings:G}}function KK(Z,...$){if(typeof Z==="string")return w4(Z).ast;let X=Z.reduce((Q,H,K)=>Q+H+($[K]!==void 0?String($[K]):""),"");return w4(X).ast}function zK(Z,$,...X){if(typeof Z==="string")return w0(Z,$);let Q=$!==void 0?[$,...X]:X,H=Z.reduce((K,Y,z)=>K+Y+(Q[z]!==void 0?String(Q[z]):""),"");return w0(H)}async function WK(Z,$={},X){let Q=X??await U4(),H=await Q.getTranspile(Z);if(H)return{ast:H.ast,signature:H.signature,warnings:H.warnings};let K=w4(Z,$);return Q.setTranspile(Z,{ast:K.ast,signature:K.signature,warnings:K.warnings}),K}async function GK(Z,$={},X){let Q=X??await U4(),H=await Q.getTJS(Z);if(H)return{code:H.code,types:H.types,metadata:H.types,testRunner:H.testRunner,testCount:H.testCount,warnings:H.warnings};let K=w0(Z,$);return Q.setTJS(Z,{code:K.code,types:K.types,testRunner:K.testRunner,testCount:K.testCount,warnings:K.warnings}),K}function JK(Z,$,X){let{ast:Q,signature:H}=w4(Z),K=async(Y)=>{return(await $.run(Q,Y,X)).result};return K.signature=H,K.ast=Q,K}function _K(Z){return Object.entries(Z).map(([$,X])=>{let Q=X.signature,H={},K=[];for(let[Y,z]of Object.entries(Q.parameters)){if(H[Y]=M4(z.type),z.description)H[Y].description=z.description;if(z.required)K.push(Y)}return{type:"function",function:{name:Q.name||$,description:Q.description,parameters:{type:"object",properties:H,required:K}}}})}function M4(Z){switch(Z.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"array":return{type:"array",items:Z.items?M4(Z.items):{}};case"object":if(!Z.shape)return{type:"object"};return{type:"object",properties:Object.fromEntries(Object.entries(Z.shape).map(([$,X])=>[$,M4(X)]))};case"union":if(!Z.members)return{};return{anyOf:Z.members.map(M4)};case"any":default:return{}}}import{s as v}from"tosijs-schema";var Z8=g("storeVectorize",v.object({text:v.string,model:v.string.optional}),v.array(v.number),async({text:Z},$)=>{let X=$.capabilities.vector;if(!X)throw Error("Capability 'vector' missing. Ensure vector battery is loaded.");let Q=E(Z,$);return X.embed(Q)},{docs:"Generate embeddings using vector battery",cost:20}),$8=g("storeCreateCollection",v.object({collection:v.string,dimension:v.number.optional}),void 0,async({collection:Z,dimension:$},X)=>{let Q=X.capabilities.store;if(!Q?.createCollection)throw Error("Capability 'store' missing or does not support createCollection.");let H=E(Z,X),K=E($,X);return Q.createCollection(H,void 0,K)},{docs:"Create a vector store collection",cost:5}),X8=g("storeVectorAdd",v.object({collection:v.string,doc:v.any}),void 0,async({collection:Z,doc:$},X)=>{let Q=X.capabilities.store;if(!Q?.vectorAdd)throw Error("Capability 'store' missing or does not support vectorAdd.");let H=E(Z,X),K=E($,X);return Q.vectorAdd(H,K)},{docs:"Add a document to a vector store collection",cost:5}),Q8=g("storeSearch",v.object({collection:v.string,queryVector:v.array(v.number),k:v.number.optional,filter:v.record(v.any).optional}),v.array(v.any),async({collection:Z,queryVector:$,k:X,filter:Q},H)=>{let K=H.capabilities.store;if(!K?.vectorSearch)throw Error("Capability 'store' missing or does not support vectorSearch.");let Y=E(Z,H),z=E($,H),W=E(X,H)??5,G=E(Q,H);return K.vectorSearch(Y,z,W,G)},{docs:"Search vector store",cost:(Z,$)=>5+(E(Z.k,$)??5)}),H8=g("llmPredictBattery",v.object({system:v.string.optional,user:v.string,tools:v.array(v.any).optional,responseFormat:v.any.optional}),v.object({role:v.string.optional,content:v.string.optional,tool_calls:v.array(v.any).optional}),async({system:Z,user:$,tools:X,responseFormat:Q},H)=>{let K=H.capabilities.llmBattery;if(!K?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let Y=E(Z,H)??"You are a helpful agent.",z=E($,H),W=E(X,H),G=E(Q,H);return K.predict(Y,z,W,G)},{docs:"Generate completion using LLM battery",cost:100}),K8=g("llmVision",v.object({system:v.string.optional,prompt:v.string,images:v.array(v.string),responseFormat:v.any.optional}),v.object({role:v.string.optional,content:v.string.optional,tool_calls:v.array(v.any).optional}),async({system:Z,prompt:$,images:X,responseFormat:Q},H)=>{let K=H.capabilities.llmBattery;if(!K?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let Y=E(Z,H)??"You analyze images accurately and concisely.",z=E($,H),W=E(X,H)??[],G=E(Q,H);return K.predict(Y,{text:z,images:W},void 0,G)},{docs:"Analyze images using a vision model",timeoutMs:120000,cost:150});var gK={storeCreateCollection:$8,storeSearch:Q8,storeVectorAdd:X8,storeVectorize:Z8,llmPredictBattery:H8,llmVision:K8};var Y8=new Map,j4=new Map;function DX(Z,$){if(Z.length!==$.length)throw Error("Vectors must have the same length for cosine similarity.");let X=0,Q=0,H=0;for(let K=0;K<Z.length;K++)X+=Z[K]*$[K],Q+=Z[K]*Z[K],H+=$[K]*$[K];if(Q=Math.sqrt(Q),H=Math.sqrt(H),Q===0||H===0)return 0;return X/(Q*H)}function U6(){return{async get(Z){return Y8.get(Z)},async set(Z,$){Y8.set(Z,$)},async createCollection(Z,$,X){if(j4.has(Z))console.warn(`Collection '${Z}' already exists. Overwriting.`);j4.set(Z,[])},async vectorAdd(Z,$){let X=j4.get(Z);if(!X)throw Error(`Collection '${Z}' not found. Create it first.`);if(!$.embedding||!Array.isArray($.embedding))throw Error("Document must have an 'embedding' property that is an array of numbers.");X.push($)},async vectorSearch(Z,$,X=5){let Q=j4.get(Z);if(!Q)throw Error(`Collection '${Z}' not found. Create it first.`);let H=Q.map((K)=>({doc:K,score:DX($,K.embedding)}));return H.sort((K,Y)=>Y.score-K.score),H.slice(0,X).map((K)=>K.doc)}}}function AX(Z){if(typeof Z==="string")return{role:"user",content:Z};let $=[{type:"text",text:Z.text}];for(let X of Z.images||[])$.push({type:"image_url",image_url:{url:X}});return{role:"user",content:$}}var IX="http://localhost:1234/v1";function z8(Z,$=IX){return{async predict(X,Q,H,K){try{let Y=K?Z.getStructuredLLM():Z.getLLM(),z=[{role:"system",content:X},AX(Q)],W=await fetch(`${$}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Y.id,messages:z,temperature:0.7,tools:H,response_format:K})});if(!W.ok)throw Error(`LLM Error: ${W.status} ${W.statusText}`);return(await W.json()).choices[0]?.message??{content:""}}catch(Y){if(Y.cause?.code==="ECONNREFUSED")throw Error("No LLM provider configured. Please start LM Studio or provide an API key.");throw Y}},async embed(X){try{let Q=Z.getEmbedding(),H=await fetch(`${$}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Q.id,input:X})});if(!H.ok)throw Error(`Embedding Error: ${H.status}`);return(await H.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 P0=typeof window<"u"&&typeof window.localStorage<"u";async function MX(Z){try{if(P0){let $=window.localStorage.getItem(".models.cache.json");if(!$)return null;let X=JSON.parse($);if(X.baseUrl!==Z)return null;if(Date.now()-X.timestamp>86400000)return null;return X.models}else{let $=await import("node:fs/promises"),Q=(await Promise.resolve().then(() => (A6(),D6))).join(process.cwd(),".models.cache.json");try{let H=await $.readFile(Q,"utf-8"),K=JSON.parse(H);if(K.baseUrl!==Z)return null;if(Date.now()-K.timestamp>86400000)return null;return K.models}catch{return null}}}catch($){return console.warn("⚠️ Error reading model cache:",$),null}}async function wX(Z,$){let X={timestamp:Date.now(),baseUrl:Z,models:$};try{if(P0)window.localStorage.setItem(".models.cache.json",JSON.stringify(X));else{let Q=await import("node:fs/promises"),K=(await Promise.resolve().then(() => (A6(),D6))).join(process.cwd(),".models.cache.json");await Q.writeFile(K,JSON.stringify(X,null,2))}}catch(Q){console.error("❌ Error writing model cache:",Q)}}var V0=async(Z,$)=>{let X=new AbortController,Q=setTimeout(()=>X.abort(),60000);try{let H=await fetch(Z,{...$,signal:X.signal});return clearTimeout(Q),H}catch(H){throw clearTimeout(Q),H}};async function jX(Z,$){try{let X={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},Q=await V0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,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 FX(Z,$);return{ok:!1,msg:`HTTP ${Q.status}`}}let H=await Q.json();return JSON.parse(H.choices[0].message.content),{ok:!0,msg:"OK (Schema)"}}catch(X){return{ok:!1,msg:X.message||"Error"}}}async function FX(Z,$){try{if((await V0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,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 PX(Z,$){try{return(await V0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function VX(Z,$){try{let X=await V0(`${Z}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,input:"test"})});if(!X.ok)return null;return(await X.json()).data[0]?.embedding?.length??null}catch{return null}}var CX="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function OX(Z,$){try{return(await V0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:CX}}]}],max_tokens:10})})).ok}catch{return!1}}async function w8(Z){let $=await MX(Z),X=[];try{let Y=await fetch(`${Z}/models`);if(!Y.ok)throw Error("Could not connect");X=(await Y.json()).data.map((W)=>W.id).sort()}catch(Y){if($)return console.log("⚠️ LM Studio unavailable, using cached model audit."),$;return console.error("❌ Failed to connect to LM Studio."),[]}if($){let Y=$.map((z)=>z.id).sort();if(JSON.stringify(X)===JSON.stringify(Y))return console.log("✅ Using cached model audit."),$;console.log("\uD83D\uDD0D Model list changed. Re-running audit...")}console.log("\uD83D\uDD0D Scanning models (this may take a moment)...");let Q=[],H=X.map((Y)=>({id:Y})),K;if(!P0)K=await import("node:readline");for(let Y of H){if(!P0&&K)K.cursorTo(process.stdout,0),process.stdout.write(`\uD83D\uDC49 Testing: ${Y.id}...`),K.clearLine(process.stdout,1);let z="Unknown",W=!1,G=!1,J="",L=void 0,_=await PX(Z,Y.id),U=await VX(Z,Y.id);if(U)L=U;if(_){z="LLM";let q=await jX(Z,Y.id);if(W=q.ok,G=await OX(Z,Y.id),J=W?q.msg:`Fail: ${q.msg}`,G)J+=" +Vision"}else if(U)z="Embedding",J=`OK (Dim: ${U})`;else J="LLM Fail";Q.push({id:Y.id,type:z,structuredOutput:W,vision:G,dimension:L,status:J})}if(!P0&&K)K.cursorTo(process.stdout,0),K.clearLine(process.stdout,0);return console.log(`
|
|
421
|
+
`),console.table(Q),await wX(Z,Q),console.log("\uD83D\uDCDD Audit results saved to cache."),Q}var NX="http://localhost:1234/v1";class I6{baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;constructor(Z=NX){this.baseUrl=Z}async audit(){this.models=await w8(this.baseUrl),this.selectDefaults()}selectDefaults(){if(this.defaultEmbedding=this.models.find((Z)=>Z.type==="Embedding")||null,this.defaultLLM=this.models.find((Z)=>Z.type==="LLM")||null,this.defaultStructuredLLM=this.models.find((Z)=>Z.type==="LLM"&&Z.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 H=this.models.find((K)=>K.id===Z&&X(K));if(!H)throw Error(`Model '${Z}' not found or is not ${Q}.`);this[$]=H}setDefaultLLM(Z){this._setDefaultModel(Z,"defaultLLM",($)=>$.type==="LLM","an LLM")}setDefaultEmbedding(Z){this._setDefaultModel(Z,"defaultEmbedding",($)=>$.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM(Z){this._setDefaultModel(Z,"defaultStructuredLLM",($)=>$.type==="LLM"&&$.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 EX=typeof window<"u",TX=EX&&window.location.protocol==="https:",C0=null,B6=null,j8=!1;async function SX(){if(j8)return{localModels:C0,llm:B6};if(j8=!0,TX)return console.log("\uD83D\uDCE1 HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{C0=new I6,await C0.audit(),B6=z8(C0)}catch(Z){console.warn("⚠️ Could not connect to local LLM:",Z)}return{localModels:C0,llm:B6}}async function kX(){let{localModels:Z,llm:$}=await SX();return{vector:$?{embed:$.embed}:void 0,store:U6(),llmBattery:$,models:Z}}async function mK(){return kX()}var iK={store:U6(),llmBattery:null,vector:void 0,models:null};function gX(Z){if(typeof Z!=="string")return!1;let $=new Date(Z);return!isNaN($.getTime())&&Z.includes("T")}function bX(){return new Date().toISOString()}function $0(Z,$,X,Q=0,H=0,K=0,Y=0){return new Date(Date.UTC(Z,$-1,X,Q,H,K,Y)).toISOString()}function F8(Z){let $=new Date(Z);if(isNaN($.getTime()))throw Error(`Invalid date string: ${Z}`);return $.toISOString()}function vX(Z){try{return F8(Z)}catch{return null}}function O0(Z,$){let X=new Date(Z);return X.setTime(X.getTime()+$),X.toISOString()}function fX(Z,$){return O0(Z,$*1000)}function yX(Z,$){return O0(Z,$*60*1000)}function hX(Z,$){return O0(Z,$*60*60*1000)}function P8(Z,$){return O0(Z,$*24*60*60*1000)}function xX(Z,$){return P8(Z,$*7)}function uX(Z,$){let X=new Date(Z),Q=X.getUTCMonth()+$;if(X.setUTCMonth(Q),X.getUTCMonth()!==(Q%12+12)%12)X.setUTCDate(0);return X.toISOString()}function dX(Z,$){let X=new Date(Z),Q=X.getUTCDate();if(X.setUTCFullYear(X.getUTCFullYear()+$),X.getUTCDate()!==Q)X.setUTCDate(0);return X.toISOString()}function T1(Z,$){return new Date(Z).getTime()-new Date($).getTime()}function lX(Z,$){return Math.floor(T1(Z,$)/1000)}function mX(Z,$){return Math.floor(T1(Z,$)/60000)}function iX(Z,$){return Math.floor(T1(Z,$)/3600000)}function pX(Z,$){return Math.floor(T1(Z,$)/86400000)}function X0(Z){return new Date(Z).getUTCFullYear()}function P4(Z){return new Date(Z).getUTCMonth()+1}function R6(Z){return new Date(Z).getUTCDate()}function nX(Z){return new Date(Z).getUTCHours()}function cX(Z){return new Date(Z).getUTCMinutes()}function oX(Z){return new Date(Z).getUTCSeconds()}function sX(Z){return new Date(Z).getUTCMilliseconds()}function aX(Z){let $=new Date(Z).getUTCDay();return $===0?7:$}function V4(Z,$,X){let Q=new Date(Z),H={timeZone:$,...X};return new Intl.DateTimeFormat(void 0,H).format(Q)}function rX(Z,$){return V4(Z,$,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function tX(Z,$){return V4(Z,$,{year:"numeric",month:"short",day:"numeric"})}function eX(Z,$){return V4(Z,$,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function ZQ(Z){return Z.slice(0,10)}function V8(Z,$){return T1(Z,$)<0}function C8(Z,$){return T1(Z,$)>0}function $Q(Z,$){return T1(Z,$)===0}function XQ(Z,$){return V8(Z,$)?Z:$}function QQ(Z,$){return C8(Z,$)?Z:$}function HQ(Z){return $0(X0(Z),P4(Z),R6(Z))}function KQ(Z){return $0(X0(Z),P4(Z),R6(Z),23,59,59,999)}function YQ(Z){return $0(X0(Z),P4(Z),1)}function zQ(Z){let $=new Date(Z);return $.setUTCMonth($.getUTCMonth()+1,0),$.setUTCHours(23,59,59,999),$.toISOString()}function WQ(Z){return $0(X0(Z),1,1)}function GQ(Z){return $0(X0(Z),12,31,23,59,59,999)}var Q0={isValid:gX,now:bX,from:$0,parse:F8,tryParse:vX,addMilliseconds:O0,addSeconds:fX,addMinutes:yX,addHours:hX,addDays:P8,addWeeks:xX,addMonths:uX,addYears:dX,diff:T1,diffSeconds:lX,diffMinutes:mX,diffHours:iX,diffDays:pX,year:X0,month:P4,day:R6,hour:nX,minute:cX,second:oX,millisecond:sX,dayOfWeek:aX,toLocal:V4,format:rX,formatDate:tX,formatTime:eX,toDate:ZQ,isBefore:V8,isAfter:C8,isEqual:$Q,min:XQ,max:QQ,startOfDay:HQ,endOfDay:KQ,startOfMonth:YQ,endOfMonth:zQ,startOfYear:WQ,endOfYear:GQ};function M6(Z){if(typeof Z!=="string")return!1;if(!/^\d{4}-\d{2}-\d{2}$/.test(Z))return!1;let $=parseInt(Z.slice(0,4),10),X=parseInt(Z.slice(5,7),10),Q=parseInt(Z.slice(8,10),10);if(X<1||X>12)return!1;if(Q<1)return!1;let H=[31,28,31,30,31,30,31,31,30,31,30,31],K=X===2&&($%4===0&&$%100!==0||$%400===0)?29:H[X-1];return Q<=K}function JQ(){return Q0.toDate(Q0.now())}function _Q(Z){let $=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:Z,year:"numeric",month:"2-digit",day:"2-digit"}).format($)}function _1(Z,$,X){let Q=String(Z).padStart(4,"0"),H=String($).padStart(2,"0"),K=String(X).padStart(2,"0"),Y=`${Q}-${H}-${K}`;if(!M6(Y))throw Error(`Invalid date: ${Z}-${$}-${X}`);return Y}function O8(Z){if(/^\d{4}-\d{2}-\d{2}$/.test(Z)){if(!M6(Z))throw Error(`Invalid date: ${Z}`);return Z}let $=new Date(Z);if(isNaN($.getTime()))throw Error(`Invalid date string: ${Z}`);let X=$.getUTCFullYear(),Q=$.getUTCMonth()+1,H=$.getUTCDate();return _1(X,Q,H)}function LQ(Z){try{return O8(Z)}catch{return null}}function C4(Z,$){let X=E8(Z);return Q0.toDate(Q0.addDays(X,$))}function UQ(Z,$){return C4(Z,$*7)}function qQ(Z,$){let X=$1(Z),Q=S1(Z),H=w6(Z),K=X*12+(Q-1)+$,Y=Math.floor(K/12),z=K%12+1,W=N0(Y,z),G=Math.min(H,W);return _1(Y,z,G)}function DQ(Z,$){let X=$1(Z),Q=S1(Z),H=w6(Z),K=X+$,Y=N0(K,Q),z=Math.min(H,Y);return _1(K,Q,z)}function N8(Z,$){let Q=new Date(Z+"T00:00:00Z").getTime(),H=new Date($+"T00:00:00Z").getTime();return Math.round((Q-H)/86400000)}function AQ(Z,$){let X=$1(Z),Q=S1(Z),H=$1($),K=S1($);return(X-H)*12+(Q-K)}function IQ(Z,$){return $1(Z)-$1($)}function $1(Z){return parseInt(Z.slice(0,4),10)}function S1(Z){return parseInt(Z.slice(5,7),10)}function w6(Z){return parseInt(Z.slice(8,10),10)}function j6(Z){let $=new Date(Z+"T00:00:00Z").getUTCDay();return $===0?7:$}function BQ(Z){let $=new Date(Z+"T00:00:00Z"),X=$.getUTCDay()||7;$.setUTCDate($.getUTCDate()+4-X);let Q=new Date(Date.UTC($.getUTCFullYear(),0,1));return Math.ceil((($.getTime()-Q.getTime())/86400000+1)/7)}function RQ(Z){let $=_1($1(Z),1,1);return N8(Z,$)+1}function F6(Z){return Math.ceil(S1(Z)/3)}function P6(Z){return Z%4===0&&Z%100!==0||Z%400===0}function N0(Z,$){let X=[31,28,31,30,31,30,31,31,30,31,30,31];if($===2&&P6(Z))return 29;return X[$-1]}function MQ(Z){return P6(Z)?366:365}function E8(Z){return Z+"T00:00:00.000Z"}function wQ(Z){return Math.floor(new Date(Z+"T00:00:00Z").getTime()/1000)}function jQ(Z){let $=new Date(Z*1000);return _1($.getUTCFullYear(),$.getUTCMonth()+1,$.getUTCDate())}function V6(Z,$){let X=new Date(Z+"T00:00:00Z"),Q={timeZone:"UTC",...$};return new Intl.DateTimeFormat(void 0,Q).format(X)}function FQ(Z){return V6(Z,{year:"numeric",month:"long",day:"numeric"})}function PQ(Z){return V6(Z,{year:"numeric",month:"short",day:"numeric"})}function VQ(Z,$){return Z<$}function CQ(Z,$){return Z>$}function OQ(Z,$){return Z===$}function NQ(Z,$){return Z<$?Z:$}function EQ(Z,$){return Z>$?Z:$}function TQ(Z,$,X){return Z>=$&&Z<=X}function SQ(Z){return _1($1(Z),S1(Z),1)}function kQ(Z){let $=$1(Z),X=S1(Z);return _1($,X,N0($,X))}function gQ(Z){let X=(F6(Z)-1)*3+1;return _1($1(Z),X,1)}function bQ(Z){let X=F6(Z)*3;return _1($1(Z),X,N0($1(Z),X))}function vQ(Z){return _1($1(Z),1,1)}function fQ(Z){return _1($1(Z),12,31)}function yQ(Z){let $=j6(Z);return C4(Z,-($-1))}function hQ(Z){let $=j6(Z);return C4(Z,7-$)}var xQ={isValid:M6,today:JQ,todayIn:_Q,from:_1,parse:O8,tryParse:LQ,addDays:C4,addWeeks:UQ,addMonths:qQ,addYears:DQ,diff:N8,diffMonths:AQ,diffYears:IQ,year:$1,month:S1,day:w6,dayOfWeek:j6,weekOfYear:BQ,dayOfYear:RQ,quarter:F6,isLeapYear:P6,daysInMonth:N0,daysInYear:MQ,toTimestamp:E8,toUnix:wQ,fromUnix:jQ,format:V6,formatLong:FQ,formatShort:PQ,isBefore:VQ,isAfter:CQ,isEqual:OQ,min:NQ,max:EQ,isBetween:TQ,startOfMonth:SQ,endOfMonth:kQ,startOfQuarter:gQ,endOfQuarter:bQ,startOfYear:vQ,endOfYear:fQ,startOfWeek:yQ,endOfWeek:hQ};export{c$ as xmlParse,o4 as wrap,J$ as whileLoop,u$ as vectorSearch,B$ as varsLet,I$ as varsImport,R$ as varsExport,q$ as varSet,A$ as varGet,c4 as validateArgs,r$ as uuid,g4 as typeToString,c1 as typeOf,a1 as typeDescriptorToTS,L$ as tryCatch,WK as transpileWithCache,w0 as transpileToJS,m$ as transpileCode,w4 as transpile,L0 as transformFunction,GK as tjsWithCache,zK as tjs,MZ as testUtils,E$ as template,M7 as stripTjsPreamble,Y4 as stripModuleSyntax,h$ as storeSet,x$ as storeQuery,$X as storeProcedure,y$ as storeGet,O$ as split,n5 as setGlobalCache,J1 as seq,M$ as scope,b1 as runtime,i$ as runCode,_$ as ret,E as resolveValue,G6 as resolveProcedureToken,XX as releaseProcedure,O7 as registerWasmBlock,T$ as regexMatch,F$ as reduce,a$ as random,V$ as push,Z0 as procedureStore,y0 as preprocess,S$ as pick,$7 as parseReturnType,C1 as parseParameter,j1 as parse,k$ as omit,g$ as merge,o$ as memoize,w$ as map,m8 as lookupVariable,d$ as llmPredict,s5 as lint,C$ as len,b$ as keys,n$ as jsonStringify,p$ as jsonParse,N$ as join,y4 as isValidUrl,h4 as isValidTimestamp,x4 as isValidLegalDate,O1 as isRuntimeType,W6 as isProcedureToken,F1 as isError,e5 as isAgentError,C7 as instantiateWasm,s4 as installRuntime,Q1 as inferTypeFromValue,G$ as iff,m5 as hashSourceSync,L4 as hashSource,J6 as hash,_K as getToolDefinitions,U6 as getStoreCapabilityDefault,mK as getStandardCapabilities,p as getLocation,z8 as getLLMCapability,U4 as getGlobalCache,kX as getBatteries,t5 as generateDocsMarkdown,x7 as generateDocs,F5 as generateDTS,d5 as fromTS,P$ as find,j$ as filter,f$ as fetch,v4 as extractTests,G0 as extractTDoc,I1 as extractLiteralValue,z7 as expectFunction,o as evaluateExpr,U$ as errorAtom,R1 as error,fZ as emitRuntimeWrapper,g as defineAtom,E1 as createChildScope,W1 as createChildContext,JK as createAgent,B4 as coreAtoms,D$ as constSet,e$ as consoleWarn,t$ as consoleLog,ZX as consoleError,z5 as compileWasmBlocks,G4 as compileToWasm,QX as clearExpiredProcedures,v1 as checkType,s$ as cache,V1 as builtins,gK as batteryAtoms,iK as batteries,Y7 as assertFunction,KK as ajs,l$ as agentRun,t0 as Union,e as TypedBuilder,l8 as TypeError,s as Type,i as TranspileError,u4 as TimestampType,Q0 as Timestamp,s0 as TUuid,o0 as TUrl,d0 as TString,$4 as TRecord,p0 as TPositiveInt,Z4 as TPair,l0 as TNumber,n0 as TNonEmptyString,Z1 as TJS_VERSION,i0 as TInteger,c0 as TEmail,m0 as TBoolean,e0 as TArray,X1 as SyntaxError,l5 as Schema,qX as SafeFunction,z6 as PROCEDURE_TOKEN_PREFIX,r0 as Optional,a0 as Nullable,H6 as MetadataCache,I6 as LocalModels,d4 as LegalDateType,xQ as LegalDate,p1 as Generic,U0 as FunctionPredicate,UX as Eval,X4 as Enum,Z$ as DEFAULT_PROCEDURE_TTL,$$ as DEFAULT_MAX_AST_SIZE,L6 as AgentVM,K1 as AgentError,GX as Agent,dH as A99};
|
|
422
|
+
|
|
423
|
+
//# debugId=6603A54D749F96B464756E2164756E21
|