tjs-lang 0.9.0 → 0.9.1

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.
@@ -1,4 +1,4 @@
1
- var rn=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var ve=rn((On,ln)=>{ln.exports={name:"tjs-lang",version:"0.9.0",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],browser:["./dist/src/lang/browser.d.ts"],"browser/from-ts":["./dist/src/lang/browser-from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"],css:["./dist/src/css/index.d.ts"],schema:["./dist/src/schema/index.d.ts"],runtime:["./dist/src/lang/runtime.d.ts"]}},exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./browser":{types:"./dist/src/lang/browser.d.ts",default:"./dist/tjs-browser.js"},"./browser/from-ts":{types:"./dist/src/lang/browser-from-ts.d.ts",default:"./dist/tjs-browser-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.js"},"./css":{bun:"./src/css/index.ts",types:"./dist/src/css/index.d.ts",default:"./dist/tjs-css.js"},"./schema":{bun:"./src/schema/index.ts",types:"./dist/src/schema/index.d.ts",default:"./dist/tjs-schema.js"},"./runtime":{bun:"./src/lang/runtime.ts",types:"./dist/src/lang/runtime.d.ts",default:"./dist/tjs-runtime.js"},"./bun-plugin":{bun:"./src/bun-plugin/tjs-plugin.ts"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md","llms.txt"],sideEffects:["./src/schema/index.ts","./dist/tjs-schema.js"],repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","build:editors":"bun scripts/build-editors.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 && bun run build:editors && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-loose":"^8.5.2","acorn-walk":"^8.3.4","tosijs-schema":"^1.4.0"}}});import{validate as Ie,s as ne}from"tosijs-schema";function F(e){if(e.nullable)return{anyOf:[F({...e,nullable:!1}),{type:"null"}]};switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"integer":return{type:"integer"};case"non-negative-integer":return{type:"integer",minimum:0};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"undefined":return{};case"any":return{};case"array":return e.items?{type:"array",items:F(e.items)}:{type:"array"};case"object":if(e.shape){let n={},t=[];for(let[r,i]of Object.entries(e.shape))n[r]=F(i),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(F)}:{};default:return{}}}function D(e){if(e===null)return{type:"null"};if(e===void 0)return{};switch(typeof e){case"string":return{type:"string"};case"number":return Number.isInteger(e)?{type:"integer"}:{type:"number"};case"boolean":return{type:"boolean"};case"object":{if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:D(e[0])};let n={},t=[];for(let[r,i]of Object.entries(e))n[r]=D(i),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}default:return{}}}function ie(e){let n={},t=[];for(let[o,s]of Object.entries(e.params))s?.type?.kind?n[o]=F(s.type):s?.example!==void 0?n[o]=D(s.example):n[o]={},s?.required!==!1&&t.push(o),s?.example!==void 0&&(n[o].examples=[s.example]);let r={type:"object",properties:n,required:t},i;return e.returns&&(e.returns.type?.kind?i=F(e.returns.type):e.returns.example!==void 0&&(i=D(e.returns.example))),{input:r,output:i}}import{validate as oe,filter as sn,s as X}from"tosijs-schema";function v(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function Je(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function on(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function b(e,n,t,r){let i,o,s,a=t,l=r;if(typeof e=="string")if(i=e,typeof n=="function")o=n,a!==void 0&&(s=X.infer(a));else if(n===void 0&&a!==void 0)s=X.infer(a);else if(Je(n))s=n;else if(on(n))s=n;else if(n!==void 0)a=n,l=a,s=X.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else Je(e),s=e,i=an(s);let f;if(s){let u=s?.schema??s;u&&typeof u=="object"&&Array.isArray(u.examples)&&(f=u.examples)}return a===void 0&&f&&f.length>0&&(a=f[0]),{description:i,check:u=>o?o(u):s?oe(u,s):!1,schema:s,predicate:o,example:a,examples:f,default:l,toJSONSchema(){if(s){let u=s?.schema??s;if(u&&typeof u=="object"&&"type"in u)return u}return a!==void 0?D(a):{description:i}},strip(u){return s?sn(u,s):u},__runtimeType:!0}}function an(e){let n=e?.schema??e;if(n&&typeof n=="object"&&"type"in n){let t=n;switch(t.type){case"string":return t.format?`string (${t.format})`:t.pattern?`string matching ${t.pattern}`:t.minLength!==void 0&&t.maxLength!==void 0?`string (${t.minLength}-${t.maxLength} chars)`:"string";case"number":case"integer":return t.minimum!==void 0&&t.maximum!==void 0?`${t.type} (${t.minimum}-${t.maximum})`:t.minimum!==void 0?`${t.type} >= ${t.minimum}`:t.maximum!==void 0?`${t.type} <= ${t.maximum}`:t.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var ae=b("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),ue=b("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),ce=b("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),fe=b("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),le=b("positive integer",e=>typeof e!="number"?`expected positive integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?e<=0?`${e} is not positive`:!0:`${e} is not an integer`),pe=b("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),de=b("email address",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?!0:`"${e}" is not a valid email`),Pe=e=>{try{return new URL(e),!0}catch{return!1}},ye=b("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:Pe(e)?!0:`"${e}" is not a valid URL`),me=b("UUID",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?!0:`"${e}" is not a valid UUID`),Ae=e=>{let n=new Date(e);return!isNaN(n.getTime())&&e.includes("T")},Ce=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let n=new Date(e+"T00:00:00Z");return!isNaN(n.getTime())},Me=b("ISO 8601 timestamp",e=>typeof e=="string"&&Ae(e)),Ue=b("date (YYYY-MM-DD)",e=>typeof e=="string"&&Ce(e));function ge(e){return b(`${e.description} or null`,n=>n===null||e.check(n)===!0)}function be(e){return b(`${e.description} (optional)`,n=>n==null||e.check(n)===!0)}function Te(e,n,...t){if(typeof e=="string"&&Array.isArray(n)){let o=e,s=n,a=new Set(s);return{description:o,check:f=>a.has(f),toJSONSchema:()=>({enum:s}),strip:f=>f,__runtimeType:!0,values:s}}let r=[];v(e)&&r.push(e),v(n)&&r.push(n),r.push(...t);let i=r.map(o=>o.description).join(" | ");return b(i,o=>r.some(s=>s.check(o)===!0))}function ke(e){return b(`array of ${e.description}`,n=>Array.isArray(n)&&n.every(t=>e.check(t)===!0))}function un(e){if(v(e))return t=>e.check(t)===!0;if(e&&typeof e=="object"&&"schema"in e)return t=>oe(t,e);let n=X.infer(e);return t=>oe(t,n)}function H(e,n,t){let r=[],i=[];for(let s of e)typeof s=="string"?(r.push(s),i.push(void 0)):(r.push(s[0]),i.push(s[1]));let o=(...s)=>{let a=r.map((f,d)=>{let u=d<s.length?s[d]:i[d];return u===void 0?()=>!0:un(u)}),l=t;return r.forEach((f,d)=>{let u=d<s.length?s[d]:i[d],x="any";v(u)?x=u.description:u!==void 0&&(x=typeof u=="string"?"string":JSON.stringify(u)),l=l.replace(new RegExp(`\\b${f}\\b`,"g"),x)}),b(l,f=>n(f,...a))};return o.params=r,o.description=t,o}var he=H(["T","U"],(e,n,t)=>Array.isArray(e)&&e.length===2&&n(e[0])&&t(e[1]),"Pair<T, U>"),Se=H(["V"],(e,n)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(n),"Record<string, V>");function je(e,n){let t=Object.values(n),r=new Set(t),i=Object.keys(n),o={};for(let[a,l]of Object.entries(n))o[l]=a;return{description:e,check:a=>r.has(a),toJSONSchema:()=>({enum:t}),strip:a=>a,__runtimeType:!0,members:n,names:o,values:t,keys:i}}function cn(e){if(e===null)return"null";if(e===void 0)return"undefined";switch(typeof e){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger(e)?"integer":"number";case"object":return Array.isArray(e)?"array":"object";default:return null}}function Q(e,n,t){if(Array.isArray(n)&&t){let r=n,i=[],o=[];for(let a of r)Array.isArray(a)?(i.push(a[0]),o.push(a[1])):(i.push(a),o.push(void 0));let s=((...a)=>{let l=i.map((d,u)=>u<a.length?a[u]:o[u]),f=t(...l);return Q(e,f)});return Object.defineProperties(s,{typeParamNames:{value:i,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),s}return fn(e,n)}function fn(e,n){let t={},r,i="assertReturns";if(typeof n=="function"){let s=n.__tjs;if(s){if(s.params)for(let[a,l]of Object.entries(s.params))t[a]=l?.example??null;s.returns&&(r=s.returns?.example??null),s.safeReturn?i="checkedReturns":s.unsafe?i="assertReturns":i="returns"}}else t=n.params??{},r=n.returns,i=n.returnContract??"assertReturns";return{description:e,params:t,returns:r,returnContract:i,toJSONSchema:()=>({description:e,type:"function"}),strip:s=>s,check:s=>{if(typeof s!="function")return`expected function, got ${s===null?"null":typeof s}`;let a=Object.keys(t).length;if(a>0){let f=s.__tjs;if(f?.params){let d=Object.keys(f.params).length;if(d!==a)return`expected ${a} params, got ${d}`;let u=Object.keys(t),x=Object.keys(f.params);for(let m=0;m<u.length;m++){let _=f.params[x[m]],R=t[u[m]];if(_?.type?.kind&&R!==void 0){let O=cn(R);if(O&&_.type.kind!==O&&_.type.kind!=="any")return`param '${u[m]}' expected ${O}, got ${_.type.kind}`}}}}return!0},__runtimeType:!0}}var pn=ve(),A=pn.version,W=Symbol.for("tjs.equals");function te(e){let[n=0,t=0,r=0]=e.split(".").map(Number);return{major:n,minor:t,patch:r}}function we(e,n){let t=te(e),r=te(n);return t.major!==r.major?t.major<r.major?-1:1:t.minor!==r.minor?t.minor<r.minor?-1:1:t.patch!==r.patch?t.patch<r.patch?-1:1:0}function Ee(e,n){let t=te(e),r=te(n);return t.major===r.major}var M=class e extends Error{path;expected;actual;callStack;reason;constructor(n,t,r,i,o,s){super(n),this.name="MonadicError",this.path=t,this.expected=r,this.actual=i,this.callStack=o,this.reason=s,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function dn(e,n,t,r){let i=t===null?"null":typeof t,o=p.callStacks||p.debug?Re():void 0,s=r?`Expected ${n} for '${e}': ${r}`:`Expected ${n} for '${e}', got ${i}`,a=new M(s,e,n,i,o,r);if(p.trackErrors!==!1){let l=p.maxErrors??re;Be[L]=a,L=(L+1)%l,q<l&&q++,se++}if(p.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),p.throwTypeErrors)throw a;return a}function xe(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var $e={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},p={...$e},Z=64,qe=new Array(Z).fill(""),I=0,N=0,re=64,Be=new Array(re).fill(null),L=0,q=0,se=0,K=0;function yn(){K++}function mn(){K>0&&K--}function gn(){return K>0}function bn(e){p={...p,...e}}function Tn(){return{...p}}function Fe(e){if((p.callStacks||p.debug)&&e){let n=p.maxStackSize??Z;qe[I]=e,I=(I+1)%n,N<n&&N++}}function ee(){if((p.callStacks||p.debug)&&N>0){let e=p.maxStackSize??Z;I=(I-1+e)%e,N--}}function Re(){if(N===0)return[];let e=p.maxStackSize??Z,n=[],t=(I-N+e)%e;for(let r=0;r<N;r++)n.push(qe[(t+r)%e]);return n}function De(){if(p.trackErrors===!1||q===0)return[];let e=p.maxErrors??re,n=[],t=(L-q+e)%e;for(let r=0;r<q;r++)n.push(Be[(t+r)%e]);return n}function kn(){let e=De();return L=0,q=0,se=0,e}function hn(){return se}function Sn(){p={...$e},I=0,N=0,L=0,q=0,se=0,K=0}function V(e,n){if(e!==null&&typeof e=="object"&&typeof e[W]=="function")return e[W](n);if(n!==null&&typeof n=="object"&&typeof n[W]=="function")return n[W](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(n);if(n!==null&&typeof n=="object"&&typeof n.Equals=="function")return n.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)return!0;if(e==null||n===null||n===void 0||typeof e!=typeof n||typeof e!="object")return!1;if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(let i of e)if(!n.has(i))return!1;return!0}if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(let[i,o]of e)if(!n.has(i)||!V(o,n.get(i)))return!1;return!0}if(e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(e instanceof RegExp&&n instanceof RegExp)return e.toString()===n.toString();if(Array.isArray(e)&&Array.isArray(n))return e.length!==n.length?!1:e.every((i,o)=>V(i,n[o]));if(Array.isArray(e)!==Array.isArray(n))return!1;let t=Object.keys(e),r=Object.keys(n);return t.length!==r.length?!1:t.every(i=>V(e[i],n[i]))}function ze(e,n){return!V(e,n)}function Le(e){return e===null?"null":typeof e}function Ve(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function Oe(e,n){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),!!(e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)}function Ge(e,n){return!Oe(e,n)}function C(e){return e!==null&&typeof e=="object"&&e.$error===!0}function J(e,n){let t={$error:!0,message:e,...n};if((p.callStacks||p.debug)&&N>0){let r=Re(),i=n?.path?[...r,n.path]:r;t.stack=i}return t}function _e(e,n){if(e.length===0)return J("Unknown error");if(e.length===1)return e[0];let t=e.map(i=>{if(i.path){let o=i.path.split(".");return o[o.length-1]}return"unknown"}).join(", "),r=`Multiple parameter errors in ${n||"function"}: ${t}`;return J(r,{path:n,errors:e})}function Y(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let n=typeof e;if(n!=="object")return n;let t=e.constructor?.name;return t&&t!=="Object"?t:"object"}function Ke(e,n){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let t=e;for(;t!==null;){if(t.constructor?.name===n)return!0;t=Object.getPrototypeOf(t)}return!1}function G(e,n,t){if(C(e))return e;if(typeof n=="object"&&n!==null&&"check"in n){let i=n.check(e);if(i===!0)return null;let o=typeof i=="string"?i:void 0,s=o?`Expected ${n.description} for '${t}': ${o}`:`Expected ${n.description} but got ${Y(e)}`;return J(s,{path:t,expected:n.description,actual:Y(e),reason:o})}let r=Y(e);return n==="any"||n===r||n==="number"&&r==="number"||n==="integer"&&r==="number"&&Number.isInteger(e)||n==="non-negative-integer"&&r==="number"&&Number.isInteger(e)&&e>=0||n==="object"&&r==="object"?null:J(`Expected ${n} but got ${r}`,{path:t,expected:n,actual:r})}function He(e,n,t,r){if(typeof e!="function")return e;let i=e.__tjs;if(!i||!i.params)return e;let o=Object.entries(i.params);for(let s=0;s<n.length;s++){let a=n[s];if(a==="any")continue;let l=o[s];if(!l)continue;let f=l[1]?.type?.kind;if(!(!f||f==="any")&&f!==a)return new M(`Expected (...arg${s}: ${a}, ...) for '${r}', but callback declares arg${s} as ${f}`,`${r}(arg${s})`,a,f)}if(t!=="any"&&i.returns){let s=i.returns.type?.kind??i.returns.kind;if(s&&s!=="any"&&s!==t)return new M(`Expected callback returning ${t} for '${r}', but callback returns ${s}`,`${r}(return)`,t,s)}return e}function We(e,n,t){for(let[r,i]of Object.entries(n.params)){let o=e[r];if(C(o))return o;if(i.required&&o===void 0){let a=typeof i.type=="string"?i.type:i.type.description;return J(`Missing required parameter '${r}'`,{path:t?`${t}.${r}`:r,expected:a,actual:"undefined",loc:i.loc})}if(o===void 0)continue;let s=G(o,i.type,t?`${t}.${r}`:r);if(s)return i.loc&&(s.loc=i.loc),s}return null}function Ye(e,n){if(e.__tjs=n,e.__tjs.schema=()=>ie(n),!(!n.polymorphic&&(n.safe||n.safeReturn||p.safety!=="none"&&!n.unsafe||n.returns&&p.safety==="all"&&!n.unsafeReturn)))return e;let r=!!n.returns,i=!!n.unsafe,o=!!n.safe,s=!!n.unsafeReturn,a=!!n.safeReturn,l=n.returns?.defaults,f=Object.entries(n.params),d=f.length,u=e.name||n.name||"anonymous",x=function(...m){if(K>0)return e.apply(this,m);let _=o||!i&&p.safety!=="none",R=r&&(a||!s&&p.safety==="all");if(!_&&!R)return e.apply(this,m);if(m.length>0&&C(m[0]))return m[0];if(_){let h=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),w=[];if(h){let $=m[0];for(let S=0;S<d;S++){let[k,T]=f[S],E=$[k];if(C(E)){w.push(E);continue}if(T.required&&E===void 0){w.push(J(`Missing required parameter '${k}'`,{path:`${u}.${k}`,expected:typeof T.type=="string"?T.type:T.type?.description||"value",actual:"undefined",loc:T.loc}));continue}if(E!==void 0){let B=G(E,T.type,`${u}.${k}`);B&&(T.loc&&(B.loc=T.loc),w.push(B))}}}else for(let $=0;$<d;$++){let[S,k]=f[$],T=m[$];if(C(T)){w.push(T);continue}if(k.required&&T===void 0){w.push(J(`Missing required parameter '${S}'`,{path:`${u}.${S}`,expected:typeof k.type=="string"?k.type:k.type?.description||"value",actual:"undefined",loc:k.loc}));continue}if(T!==void 0){let E=G(T,k.type,`${u}.${S}`);E&&(k.loc&&(E.loc=k.loc),w.push(E))}}if(w.length>0)return _e(w,u)}let O=p.callStacks||p.debug;O&&Fe(u);try{let h=e.apply(this,m);if(R&&n.returns&&!C(h)){let w=l&&typeof h=="object"&&h!==null?Object.assign({},l,h):h,$=G(w,n.returns.type,`${u}()`);if($)return O&&ee(),$}return O&&ee(),h}catch(h){return O&&ee(),J(h.message||String(h),{path:u,cause:h})}};return Object.defineProperty(x,"name",{value:e.name}),x.__tjs=n,x.__tjs.schema=()=>ie(n),x}function Ze(e){let n=new Proxy(e,{construct(t,r,i){return Reflect.construct(t,r,i)},apply(t,r,i){return Reflect.construct(t,i)}});Object.defineProperty(n,"name",{value:e.name});for(let t of Object.getOwnPropertyNames(e))t!=="length"&&t!=="name"&&t!=="prototype"&&Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n}function Xe(){let e={...p},n=e.maxStackSize??Z,t=new Array(n).fill(""),r=0,i=0,o=e.maxErrors??re,s=new Array(o).fill(null),a=0,l=0,f=0,d=0;function u(c){e={...e,...c}}function x(){return{...e}}function m(c){(e.callStacks||e.debug)&&c&&(t[r]=c,r=(r+1)%n,i<n&&i++)}function _(){(e.callStacks||e.debug)&&i>0&&(r=(r-1+n)%n,i--)}function R(){if(i===0)return[];let c=[],g=(r-i+n)%n;for(let y=0;y<i;y++)c.push(t[(g+y)%n]);return c}function O(){e={...$e},r=0,i=0,a=0,l=0,f=0,d=0}function h(){d++}function w(){d>0&&d--}function $(){return d>0}let S=new Map;function k(c,g,y){S.has(c)||S.set(c,new Map),S.get(c).set(g,y)}function T(c,g){let y=typeof c,j;if(c==null)return;if(y==="string")j="String";else if(y==="number")j="Number";else if(y==="boolean")j="Boolean";else if(Array.isArray(c))j="Array";else if(y==="object")j=c.constructor?.name||"Object";else return;let P=j;for(;P;){let Ne=S.get(P);if(Ne?.has(g))return Ne.get(g);if(y==="object"&&!Array.isArray(c)){if(P=Object.getPrototypeOf(P===j?c:Object.getPrototypeOf(c))?.constructor?.name,P==="Object"||P===j)break}else break}let U=S.get("Object");if(U?.has(g))return U.get(g)}function E(c,g,y){let j=y===null?"null":typeof y,P=e.callStacks||e.debug?R():void 0,U=new M(`Expected ${g} for '${c}', got ${j}`,c,g,j,P);if(e.trackErrors!==!1&&(s[a]=U,a=(a+1)%o,l<o&&l++,f++),e.logTypeErrors&&console.error(`[TJS TypeError] ${U.message}`),e.throwTypeErrors)throw U;return U}function B(){if(e.trackErrors===!1||l===0)return[];let c=[],g=(a-l+o)%o;for(let y=0;y<l;y++)c.push(s[(g+y)%o]);return c}function Qe(){let c=B();return a=0,l=0,f=0,c}function en(){return f}function nn(c,g){let y={$error:!0,message:c,...g};if((e.callStacks||e.debug)&&i>0){let j=g?.path?[...R(),g.path]:R();y.stack=j}return y}function tn(c,g){return c==null?E(`bang.${g}`,"non-null",c):xe(c)?c:c[g]}return{version:A,MonadicError:M,typeError:E,isMonadicError:xe,bang:tn,isError:C,error:nn,composeErrors:_e,typeOf:Y,isNativeType:Ke,checkType:G,validateArgs:We,wrap:Ye,checkFnShape:He,wrapClass:Ze,compareVersions:we,versionsCompatible:Ee,createRuntime:Xe,configure:u,getConfig:x,pushStack:m,popStack:_,getStack:R,errors:B,clearErrors:Qe,getErrorCount:en,resetRuntime:O,enterUnsafe:h,exitUnsafe:w,isUnsafeMode:$,validate:Ie,infer:ne.infer.bind(ne),Type:b,isRuntimeType:v,Union:Te,Generic:H,Enum:je,FunctionPredicate:Q,Nullable:ge,Optional:be,TArray:ke,TString:ae,TNumber:ue,TBoolean:ce,TInteger:fe,TPositiveInt:le,TNonEmptyString:pe,TEmail:de,TUrl:ye,TUuid:me,TPair:he,TRecord:Se,Is:V,IsNot:ze,Eq:Oe,NotEq:Ge,TypeOf:Le,toBool:Ve,tjsEquals:W,registerExtension:k,resolveExtension:T}}var z={version:A,MonadicError:M,typeError:dn,isMonadicError:xe,isError:C,error:J,composeErrors:_e,typeOf:Y,isNativeType:Ke,checkType:G,validateArgs:We,wrap:Ye,checkFnShape:He,wrapClass:Ze,compareVersions:we,versionsCompatible:Ee,configure:bn,getConfig:Tn,pushStack:Fe,popStack:ee,getStack:Re,errors:De,clearErrors:kn,getErrorCount:hn,resetRuntime:Sn,enterUnsafe:yn,exitUnsafe:mn,isUnsafeMode:gn,createRuntime:Xe,validate:Ie,infer:ne.infer.bind(ne),Type:b,isRuntimeType:v,Union:Te,Generic:H,Enum:je,FunctionPredicate:Q,Nullable:ge,Optional:be,TArray:ke,TString:ae,TNumber:ue,TBoolean:ce,TInteger:fe,TPositiveInt:le,TNonEmptyString:pe,TEmail:de,TUrl:ye,TUuid:me,Timestamp:Me,LegalDate:Ue,TPair:he,TRecord:Se,Is:V,IsNot:ze,Eq:Oe,NotEq:Ge,TypeOf:Le,toBool:Ve};function Pn(){let e=globalThis;if(e.__tjs){let n=e.__tjs.version;if(typeof n!="string")return e.__tjs=z,z;let t=we(A,n);return t===0||(Ee(A,n)?t>0?(console.info(`TJS runtime: upgrading ${n} \u2192 ${A}`),e.__tjs=z):console.info(`TJS runtime: keeping ${n} (newer than ${A})`):(console.warn(`TJS runtime version conflict: ${n} vs ${A} (major version mismatch)`),t>0&&(console.warn(`Upgrading to ${A} - check for breaking changes`),e.__tjs=z))),e.__tjs}return e.__tjs=z,z}function An(e){return`
1
+ var rn=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var ve=rn((On,ln)=>{ln.exports={name:"tjs-lang",version:"0.9.1",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],browser:["./dist/src/lang/browser.d.ts"],"browser/from-ts":["./dist/src/lang/browser-from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"],css:["./dist/src/css/index.d.ts"],schema:["./dist/src/schema/index.d.ts"],runtime:["./dist/src/lang/runtime.d.ts"]}},exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./browser":{types:"./dist/src/lang/browser.d.ts",default:"./dist/tjs-browser.js"},"./browser/from-ts":{types:"./dist/src/lang/browser-from-ts.d.ts",default:"./dist/tjs-browser-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.js"},"./css":{bun:"./src/css/index.ts",types:"./dist/src/css/index.d.ts",default:"./dist/tjs-css.js"},"./schema":{bun:"./src/schema/index.ts",types:"./dist/src/schema/index.d.ts",default:"./dist/tjs-schema.js"},"./runtime":{bun:"./src/lang/runtime.ts",types:"./dist/src/lang/runtime.d.ts",default:"./dist/tjs-runtime.js"},"./bun-plugin":{bun:"./src/bun-plugin/tjs-plugin.ts"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md","llms.txt"],sideEffects:["./src/schema/index.ts","./dist/tjs-schema.js"],repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","build:editors":"bun scripts/build-editors.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 && bun run build:editors && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-loose":"^8.5.2","acorn-walk":"^8.3.4","tosijs-schema":"^1.4.0"}}});import{validate as Ie,s as ne}from"tosijs-schema";function F(e){if(e.nullable)return{anyOf:[F({...e,nullable:!1}),{type:"null"}]};switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"integer":return{type:"integer"};case"non-negative-integer":return{type:"integer",minimum:0};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"undefined":return{};case"any":return{};case"array":return e.items?{type:"array",items:F(e.items)}:{type:"array"};case"object":if(e.shape){let n={},t=[];for(let[r,i]of Object.entries(e.shape))n[r]=F(i),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(F)}:{};default:return{}}}function D(e){if(e===null)return{type:"null"};if(e===void 0)return{};switch(typeof e){case"string":return{type:"string"};case"number":return Number.isInteger(e)?{type:"integer"}:{type:"number"};case"boolean":return{type:"boolean"};case"object":{if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:D(e[0])};let n={},t=[];for(let[r,i]of Object.entries(e))n[r]=D(i),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}default:return{}}}function ie(e){let n={},t=[];for(let[o,s]of Object.entries(e.params))s?.type?.kind?n[o]=F(s.type):s?.example!==void 0?n[o]=D(s.example):n[o]={},s?.required!==!1&&t.push(o),s?.example!==void 0&&(n[o].examples=[s.example]);let r={type:"object",properties:n,required:t},i;return e.returns&&(e.returns.type?.kind?i=F(e.returns.type):e.returns.example!==void 0&&(i=D(e.returns.example))),{input:r,output:i}}import{validate as oe,filter as sn,s as X}from"tosijs-schema";function v(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function Je(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function on(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function b(e,n,t,r){let i,o,s,a=t,l=r;if(typeof e=="string")if(i=e,typeof n=="function")o=n,a!==void 0&&(s=X.infer(a));else if(n===void 0&&a!==void 0)s=X.infer(a);else if(Je(n))s=n;else if(on(n))s=n;else if(n!==void 0)a=n,l=a,s=X.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else Je(e),s=e,i=an(s);let f;if(s){let u=s?.schema??s;u&&typeof u=="object"&&Array.isArray(u.examples)&&(f=u.examples)}return a===void 0&&f&&f.length>0&&(a=f[0]),{description:i,check:u=>o?o(u):s?oe(u,s):!1,schema:s,predicate:o,example:a,examples:f,default:l,toJSONSchema(){if(s){let u=s?.schema??s;if(u&&typeof u=="object"&&"type"in u)return u}return a!==void 0?D(a):{description:i}},strip(u){return s?sn(u,s):u},__runtimeType:!0}}function an(e){let n=e?.schema??e;if(n&&typeof n=="object"&&"type"in n){let t=n;switch(t.type){case"string":return t.format?`string (${t.format})`:t.pattern?`string matching ${t.pattern}`:t.minLength!==void 0&&t.maxLength!==void 0?`string (${t.minLength}-${t.maxLength} chars)`:"string";case"number":case"integer":return t.minimum!==void 0&&t.maximum!==void 0?`${t.type} (${t.minimum}-${t.maximum})`:t.minimum!==void 0?`${t.type} >= ${t.minimum}`:t.maximum!==void 0?`${t.type} <= ${t.maximum}`:t.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var ae=b("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),ue=b("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),ce=b("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),fe=b("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),le=b("positive integer",e=>typeof e!="number"?`expected positive integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?e<=0?`${e} is not positive`:!0:`${e} is not an integer`),pe=b("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),de=b("email address",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?!0:`"${e}" is not a valid email`),Pe=e=>{try{return new URL(e),!0}catch{return!1}},ye=b("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:Pe(e)?!0:`"${e}" is not a valid URL`),me=b("UUID",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?!0:`"${e}" is not a valid UUID`),Ae=e=>{let n=new Date(e);return!isNaN(n.getTime())&&e.includes("T")},Ce=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let n=new Date(e+"T00:00:00Z");return!isNaN(n.getTime())},Me=b("ISO 8601 timestamp",e=>typeof e=="string"&&Ae(e)),Ue=b("date (YYYY-MM-DD)",e=>typeof e=="string"&&Ce(e));function ge(e){return b(`${e.description} or null`,n=>n===null||e.check(n)===!0)}function be(e){return b(`${e.description} (optional)`,n=>n==null||e.check(n)===!0)}function Te(e,n,...t){if(typeof e=="string"&&Array.isArray(n)){let o=e,s=n,a=new Set(s);return{description:o,check:f=>a.has(f),toJSONSchema:()=>({enum:s}),strip:f=>f,__runtimeType:!0,values:s}}let r=[];v(e)&&r.push(e),v(n)&&r.push(n),r.push(...t);let i=r.map(o=>o.description).join(" | ");return b(i,o=>r.some(s=>s.check(o)===!0))}function ke(e){return b(`array of ${e.description}`,n=>Array.isArray(n)&&n.every(t=>e.check(t)===!0))}function un(e){if(v(e))return t=>e.check(t)===!0;if(e&&typeof e=="object"&&"schema"in e)return t=>oe(t,e);let n=X.infer(e);return t=>oe(t,n)}function H(e,n,t){let r=[],i=[];for(let s of e)typeof s=="string"?(r.push(s),i.push(void 0)):(r.push(s[0]),i.push(s[1]));let o=(...s)=>{let a=r.map((f,d)=>{let u=d<s.length?s[d]:i[d];return u===void 0?()=>!0:un(u)}),l=t;return r.forEach((f,d)=>{let u=d<s.length?s[d]:i[d],x="any";v(u)?x=u.description:u!==void 0&&(x=typeof u=="string"?"string":JSON.stringify(u)),l=l.replace(new RegExp(`\\b${f}\\b`,"g"),x)}),b(l,f=>n(f,...a))};return o.params=r,o.description=t,o}var he=H(["T","U"],(e,n,t)=>Array.isArray(e)&&e.length===2&&n(e[0])&&t(e[1]),"Pair<T, U>"),Se=H(["V"],(e,n)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(n),"Record<string, V>");function je(e,n){let t=Object.values(n),r=new Set(t),i=Object.keys(n),o={};for(let[a,l]of Object.entries(n))o[l]=a;return{description:e,check:a=>r.has(a),toJSONSchema:()=>({enum:t}),strip:a=>a,__runtimeType:!0,members:n,names:o,values:t,keys:i}}function cn(e){if(e===null)return"null";if(e===void 0)return"undefined";switch(typeof e){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger(e)?"integer":"number";case"object":return Array.isArray(e)?"array":"object";default:return null}}function Q(e,n,t){if(Array.isArray(n)&&t){let r=n,i=[],o=[];for(let a of r)Array.isArray(a)?(i.push(a[0]),o.push(a[1])):(i.push(a),o.push(void 0));let s=((...a)=>{let l=i.map((d,u)=>u<a.length?a[u]:o[u]),f=t(...l);return Q(e,f)});return Object.defineProperties(s,{typeParamNames:{value:i,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),s}return fn(e,n)}function fn(e,n){let t={},r,i="assertReturns";if(typeof n=="function"){let s=n.__tjs;if(s){if(s.params)for(let[a,l]of Object.entries(s.params))t[a]=l?.example??null;s.returns&&(r=s.returns?.example??null),s.safeReturn?i="checkedReturns":s.unsafe?i="assertReturns":i="returns"}}else t=n.params??{},r=n.returns,i=n.returnContract??"assertReturns";return{description:e,params:t,returns:r,returnContract:i,toJSONSchema:()=>({description:e,type:"function"}),strip:s=>s,check:s=>{if(typeof s!="function")return`expected function, got ${s===null?"null":typeof s}`;let a=Object.keys(t).length;if(a>0){let f=s.__tjs;if(f?.params){let d=Object.keys(f.params).length;if(d!==a)return`expected ${a} params, got ${d}`;let u=Object.keys(t),x=Object.keys(f.params);for(let m=0;m<u.length;m++){let _=f.params[x[m]],R=t[u[m]];if(_?.type?.kind&&R!==void 0){let O=cn(R);if(O&&_.type.kind!==O&&_.type.kind!=="any")return`param '${u[m]}' expected ${O}, got ${_.type.kind}`}}}}return!0},__runtimeType:!0}}var pn=ve(),A=pn.version,W=Symbol.for("tjs.equals");function te(e){let[n=0,t=0,r=0]=e.split(".").map(Number);return{major:n,minor:t,patch:r}}function we(e,n){let t=te(e),r=te(n);return t.major!==r.major?t.major<r.major?-1:1:t.minor!==r.minor?t.minor<r.minor?-1:1:t.patch!==r.patch?t.patch<r.patch?-1:1:0}function Ee(e,n){let t=te(e),r=te(n);return t.major===r.major}var M=class e extends Error{path;expected;actual;callStack;reason;constructor(n,t,r,i,o,s){super(n),this.name="MonadicError",this.path=t,this.expected=r,this.actual=i,this.callStack=o,this.reason=s,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function dn(e,n,t,r){let i=t===null?"null":typeof t,o=p.callStacks||p.debug?Re():void 0,s=r?`Expected ${n} for '${e}': ${r}`:`Expected ${n} for '${e}', got ${i}`,a=new M(s,e,n,i,o,r);if(p.trackErrors!==!1){let l=p.maxErrors??re;Be[L]=a,L=(L+1)%l,q<l&&q++,se++}if(p.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),p.throwTypeErrors)throw a;return a}function xe(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var $e={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},p={...$e},Z=64,qe=new Array(Z).fill(""),I=0,N=0,re=64,Be=new Array(re).fill(null),L=0,q=0,se=0,K=0;function yn(){K++}function mn(){K>0&&K--}function gn(){return K>0}function bn(e){p={...p,...e}}function Tn(){return{...p}}function Fe(e){if((p.callStacks||p.debug)&&e){let n=p.maxStackSize??Z;qe[I]=e,I=(I+1)%n,N<n&&N++}}function ee(){if((p.callStacks||p.debug)&&N>0){let e=p.maxStackSize??Z;I=(I-1+e)%e,N--}}function Re(){if(N===0)return[];let e=p.maxStackSize??Z,n=[],t=(I-N+e)%e;for(let r=0;r<N;r++)n.push(qe[(t+r)%e]);return n}function De(){if(p.trackErrors===!1||q===0)return[];let e=p.maxErrors??re,n=[],t=(L-q+e)%e;for(let r=0;r<q;r++)n.push(Be[(t+r)%e]);return n}function kn(){let e=De();return L=0,q=0,se=0,e}function hn(){return se}function Sn(){p={...$e},I=0,N=0,L=0,q=0,se=0,K=0}function V(e,n){if(e!==null&&typeof e=="object"&&typeof e[W]=="function")return e[W](n);if(n!==null&&typeof n=="object"&&typeof n[W]=="function")return n[W](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(n);if(n!==null&&typeof n=="object"&&typeof n.Equals=="function")return n.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)return!0;if(e==null||n===null||n===void 0||typeof e!=typeof n||typeof e!="object")return!1;if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(let i of e)if(!n.has(i))return!1;return!0}if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(let[i,o]of e)if(!n.has(i)||!V(o,n.get(i)))return!1;return!0}if(e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(e instanceof RegExp&&n instanceof RegExp)return e.toString()===n.toString();if(Array.isArray(e)&&Array.isArray(n))return e.length!==n.length?!1:e.every((i,o)=>V(i,n[o]));if(Array.isArray(e)!==Array.isArray(n))return!1;let t=Object.keys(e),r=Object.keys(n);return t.length!==r.length?!1:t.every(i=>V(e[i],n[i]))}function ze(e,n){return!V(e,n)}function Le(e){return e===null?"null":typeof e}function Ve(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function Oe(e,n){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),!!(e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)}function Ge(e,n){return!Oe(e,n)}function C(e){return e!==null&&typeof e=="object"&&e.$error===!0}function J(e,n){let t={$error:!0,message:e,...n};if((p.callStacks||p.debug)&&N>0){let r=Re(),i=n?.path?[...r,n.path]:r;t.stack=i}return t}function _e(e,n){if(e.length===0)return J("Unknown error");if(e.length===1)return e[0];let t=e.map(i=>{if(i.path){let o=i.path.split(".");return o[o.length-1]}return"unknown"}).join(", "),r=`Multiple parameter errors in ${n||"function"}: ${t}`;return J(r,{path:n,errors:e})}function Y(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let n=typeof e;if(n!=="object")return n;let t=e.constructor?.name;return t&&t!=="Object"?t:"object"}function Ke(e,n){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let t=e;for(;t!==null;){if(t.constructor?.name===n)return!0;t=Object.getPrototypeOf(t)}return!1}function G(e,n,t){if(C(e))return e;if(typeof n=="object"&&n!==null&&"check"in n){let i=n.check(e);if(i===!0)return null;let o=typeof i=="string"?i:void 0,s=o?`Expected ${n.description} for '${t}': ${o}`:`Expected ${n.description} but got ${Y(e)}`;return J(s,{path:t,expected:n.description,actual:Y(e),reason:o})}let r=Y(e);return n==="any"||n===r||n==="number"&&r==="number"||n==="integer"&&r==="number"&&Number.isInteger(e)||n==="non-negative-integer"&&r==="number"&&Number.isInteger(e)&&e>=0||n==="object"&&r==="object"?null:J(`Expected ${n} but got ${r}`,{path:t,expected:n,actual:r})}function He(e,n,t,r){if(typeof e!="function")return e;let i=e.__tjs;if(!i||!i.params)return e;let o=Object.entries(i.params);for(let s=0;s<n.length;s++){let a=n[s];if(a==="any")continue;let l=o[s];if(!l)continue;let f=l[1]?.type?.kind;if(!(!f||f==="any")&&f!==a)return new M(`Expected (...arg${s}: ${a}, ...) for '${r}', but callback declares arg${s} as ${f}`,`${r}(arg${s})`,a,f)}if(t!=="any"&&i.returns){let s=i.returns.type?.kind??i.returns.kind;if(s&&s!=="any"&&s!==t)return new M(`Expected callback returning ${t} for '${r}', but callback returns ${s}`,`${r}(return)`,t,s)}return e}function We(e,n,t){for(let[r,i]of Object.entries(n.params)){let o=e[r];if(C(o))return o;if(i.required&&o===void 0){let a=typeof i.type=="string"?i.type:i.type.description;return J(`Missing required parameter '${r}'`,{path:t?`${t}.${r}`:r,expected:a,actual:"undefined",loc:i.loc})}if(o===void 0)continue;let s=G(o,i.type,t?`${t}.${r}`:r);if(s)return i.loc&&(s.loc=i.loc),s}return null}function Ye(e,n){if(e.__tjs=n,e.__tjs.schema=()=>ie(n),!(!n.polymorphic&&(n.safe||n.safeReturn||p.safety!=="none"&&!n.unsafe||n.returns&&p.safety==="all"&&!n.unsafeReturn)))return e;let r=!!n.returns,i=!!n.unsafe,o=!!n.safe,s=!!n.unsafeReturn,a=!!n.safeReturn,l=n.returns?.defaults,f=Object.entries(n.params),d=f.length,u=e.name||n.name||"anonymous",x=function(...m){if(K>0)return e.apply(this,m);let _=o||!i&&p.safety!=="none",R=r&&(a||!s&&p.safety==="all");if(!_&&!R)return e.apply(this,m);if(m.length>0&&C(m[0]))return m[0];if(_){let h=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),w=[];if(h){let $=m[0];for(let S=0;S<d;S++){let[k,T]=f[S],E=$[k];if(C(E)){w.push(E);continue}if(T.required&&E===void 0){w.push(J(`Missing required parameter '${k}'`,{path:`${u}.${k}`,expected:typeof T.type=="string"?T.type:T.type?.description||"value",actual:"undefined",loc:T.loc}));continue}if(E!==void 0){let B=G(E,T.type,`${u}.${k}`);B&&(T.loc&&(B.loc=T.loc),w.push(B))}}}else for(let $=0;$<d;$++){let[S,k]=f[$],T=m[$];if(C(T)){w.push(T);continue}if(k.required&&T===void 0){w.push(J(`Missing required parameter '${S}'`,{path:`${u}.${S}`,expected:typeof k.type=="string"?k.type:k.type?.description||"value",actual:"undefined",loc:k.loc}));continue}if(T!==void 0){let E=G(T,k.type,`${u}.${S}`);E&&(k.loc&&(E.loc=k.loc),w.push(E))}}if(w.length>0)return _e(w,u)}let O=p.callStacks||p.debug;O&&Fe(u);try{let h=e.apply(this,m);if(R&&n.returns&&!C(h)){let w=l&&typeof h=="object"&&h!==null?Object.assign({},l,h):h,$=G(w,n.returns.type,`${u}()`);if($)return O&&ee(),$}return O&&ee(),h}catch(h){return O&&ee(),J(h.message||String(h),{path:u,cause:h})}};return Object.defineProperty(x,"name",{value:e.name}),x.__tjs=n,x.__tjs.schema=()=>ie(n),x}function Ze(e){let n=new Proxy(e,{construct(t,r,i){return Reflect.construct(t,r,i)},apply(t,r,i){return Reflect.construct(t,i)}});Object.defineProperty(n,"name",{value:e.name});for(let t of Object.getOwnPropertyNames(e))t!=="length"&&t!=="name"&&t!=="prototype"&&Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n}function Xe(){let e={...p},n=e.maxStackSize??Z,t=new Array(n).fill(""),r=0,i=0,o=e.maxErrors??re,s=new Array(o).fill(null),a=0,l=0,f=0,d=0;function u(c){e={...e,...c}}function x(){return{...e}}function m(c){(e.callStacks||e.debug)&&c&&(t[r]=c,r=(r+1)%n,i<n&&i++)}function _(){(e.callStacks||e.debug)&&i>0&&(r=(r-1+n)%n,i--)}function R(){if(i===0)return[];let c=[],g=(r-i+n)%n;for(let y=0;y<i;y++)c.push(t[(g+y)%n]);return c}function O(){e={...$e},r=0,i=0,a=0,l=0,f=0,d=0}function h(){d++}function w(){d>0&&d--}function $(){return d>0}let S=new Map;function k(c,g,y){S.has(c)||S.set(c,new Map),S.get(c).set(g,y)}function T(c,g){let y=typeof c,j;if(c==null)return;if(y==="string")j="String";else if(y==="number")j="Number";else if(y==="boolean")j="Boolean";else if(Array.isArray(c))j="Array";else if(y==="object")j=c.constructor?.name||"Object";else return;let P=j;for(;P;){let Ne=S.get(P);if(Ne?.has(g))return Ne.get(g);if(y==="object"&&!Array.isArray(c)){if(P=Object.getPrototypeOf(P===j?c:Object.getPrototypeOf(c))?.constructor?.name,P==="Object"||P===j)break}else break}let U=S.get("Object");if(U?.has(g))return U.get(g)}function E(c,g,y){let j=y===null?"null":typeof y,P=e.callStacks||e.debug?R():void 0,U=new M(`Expected ${g} for '${c}', got ${j}`,c,g,j,P);if(e.trackErrors!==!1&&(s[a]=U,a=(a+1)%o,l<o&&l++,f++),e.logTypeErrors&&console.error(`[TJS TypeError] ${U.message}`),e.throwTypeErrors)throw U;return U}function B(){if(e.trackErrors===!1||l===0)return[];let c=[],g=(a-l+o)%o;for(let y=0;y<l;y++)c.push(s[(g+y)%o]);return c}function Qe(){let c=B();return a=0,l=0,f=0,c}function en(){return f}function nn(c,g){let y={$error:!0,message:c,...g};if((e.callStacks||e.debug)&&i>0){let j=g?.path?[...R(),g.path]:R();y.stack=j}return y}function tn(c,g){return c==null?E(`bang.${g}`,"non-null",c):xe(c)?c:c[g]}return{version:A,MonadicError:M,typeError:E,isMonadicError:xe,bang:tn,isError:C,error:nn,composeErrors:_e,typeOf:Y,isNativeType:Ke,checkType:G,validateArgs:We,wrap:Ye,checkFnShape:He,wrapClass:Ze,compareVersions:we,versionsCompatible:Ee,createRuntime:Xe,configure:u,getConfig:x,pushStack:m,popStack:_,getStack:R,errors:B,clearErrors:Qe,getErrorCount:en,resetRuntime:O,enterUnsafe:h,exitUnsafe:w,isUnsafeMode:$,validate:Ie,infer:ne.infer.bind(ne),Type:b,isRuntimeType:v,Union:Te,Generic:H,Enum:je,FunctionPredicate:Q,Nullable:ge,Optional:be,TArray:ke,TString:ae,TNumber:ue,TBoolean:ce,TInteger:fe,TPositiveInt:le,TNonEmptyString:pe,TEmail:de,TUrl:ye,TUuid:me,TPair:he,TRecord:Se,Is:V,IsNot:ze,Eq:Oe,NotEq:Ge,TypeOf:Le,toBool:Ve,tjsEquals:W,registerExtension:k,resolveExtension:T}}var z={version:A,MonadicError:M,typeError:dn,isMonadicError:xe,isError:C,error:J,composeErrors:_e,typeOf:Y,isNativeType:Ke,checkType:G,validateArgs:We,wrap:Ye,checkFnShape:He,wrapClass:Ze,compareVersions:we,versionsCompatible:Ee,configure:bn,getConfig:Tn,pushStack:Fe,popStack:ee,getStack:Re,errors:De,clearErrors:kn,getErrorCount:hn,resetRuntime:Sn,enterUnsafe:yn,exitUnsafe:mn,isUnsafeMode:gn,createRuntime:Xe,validate:Ie,infer:ne.infer.bind(ne),Type:b,isRuntimeType:v,Union:Te,Generic:H,Enum:je,FunctionPredicate:Q,Nullable:ge,Optional:be,TArray:ke,TString:ae,TNumber:ue,TBoolean:ce,TInteger:fe,TPositiveInt:le,TNonEmptyString:pe,TEmail:de,TUrl:ye,TUuid:me,Timestamp:Me,LegalDate:Ue,TPair:he,TRecord:Se,Is:V,IsNot:ze,Eq:Oe,NotEq:Ge,TypeOf:Le,toBool:Ve};function Pn(){let e=globalThis;if(e.__tjs){let n=e.__tjs.version;if(typeof n!="string")return e.__tjs=z,z;let t=we(A,n);return t===0||(Ee(A,n)?t>0?(console.info(`TJS runtime: upgrading ${n} \u2192 ${A}`),e.__tjs=z):console.info(`TJS runtime: keeping ${n} (newer than ${A})`):(console.warn(`TJS runtime version conflict: ${n} vs ${A} (major version mismatch)`),t>0&&(console.warn(`Upgrading to ${A} - check for breaking changes`),e.__tjs=z))),e.__tjs}return e.__tjs=z,z}function An(e){return`
2
2
  // TJS runtime wrapper (skips unsafe functions)
3
3
  if (typeof ${e}.__tjs === 'object' && !${e}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
4
4
  ${e} = globalThis.__tjs.wrap(${e}, ${e}.__tjs)