tjs-lang 0.7.5 → 0.7.7

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 ut=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Be=ut((Yt,yt)=>{yt.exports={name:"tjs-lang",version:"0.7.5",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^8.57.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"firebase deploy --only hosting",deploy:"npm run build:demo && npm run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-walk":"^8.3.4","tosijs-schema":"^1.3.0"}}});import u from"typescript";import{validate as qe,s as ae}from"tosijs-schema";function G(e){if(e.nullable)return{anyOf:[G({...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:G(e.items)}:{type:"array"};case"object":if(e.shape){let t={},r=[];for(let[s,n]of Object.entries(e.shape))t[s]=G(n),r.push(s);return{type:"object",properties:t,required:r,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(G)}:{};default:return{}}}function V(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:V(e[0])};let t={},r=[];for(let[s,n]of Object.entries(e))t[s]=V(n),r.push(s);return{type:"object",properties:t,required:r,additionalProperties:!1}}default:return{}}}function fe(e){let t={},r=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=G(o.type):o?.example!==void 0?t[i]=V(o.example):t[i]={},o?.required!==!1&&r.push(i),o?.example!==void 0&&(t[i].examples=[o.example]);let s={type:"object",properties:t,required:r},n;return e.returns&&(e.returns.type?.kind?n=G(e.returns.type):e.returns.example!==void 0&&(n=V(e.returns.example))),{input:s,output:n}}import{validate as de,filter as ct,s as se}from"tosijs-schema";function q(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function ve(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function lt(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function v(e,t,r,s){let n,i,o,l=r,f=s;if(typeof e=="string")if(n=e,typeof t=="function")i=t,l!==void 0&&(o=se.infer(l));else if(t===void 0&&l!==void 0)o=se.infer(l);else if(ve(t))o=t;else if(lt(t))o=t;else if(t!==void 0)l=t,f=l,o=se.infer(l);else throw new Error("Type(description) requires a predicate, schema, or example");else ve(e),o=e,n=pt(o);let p;if(o){let a=o?.schema??o;a&&typeof a=="object"&&Array.isArray(a.examples)&&(p=a.examples)}return l===void 0&&p&&p.length>0&&(l=p[0]),{description:n,check:a=>i?i(a):o?de(a,o):!1,schema:o,predicate:i,example:l,examples:p,default:f,toJSONSchema(){if(o){let a=o?.schema??o;if(a&&typeof a=="object"&&"type"in a)return a}return l!==void 0?V(l):{description:n}},strip(a){return o?ct(a,o):a},__runtimeType:!0}}function pt(e){let t=e?.schema??e;if(t&&typeof t=="object"&&"type"in t){let r=t;switch(r.type){case"string":return r.format?`string (${r.format})`:r.pattern?`string matching ${r.pattern}`:r.minLength!==void 0&&r.maxLength!==void 0?`string (${r.minLength}-${r.maxLength} chars)`:"string";case"number":case"integer":return r.minimum!==void 0&&r.maximum!==void 0?`${r.type} (${r.minimum}-${r.maximum})`:r.minimum!==void 0?`${r.type} >= ${r.minimum}`:r.maximum!==void 0?`${r.type} <= ${r.maximum}`:r.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var me=v("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),ye=v("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),ge=v("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),Te=v("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),xe=v("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`),he=v("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),Se=v("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`),De=e=>{try{return new URL(e),!0}catch{return!1}},be=v("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:De(e)?!0:`"${e}" is not a valid URL`),ke=v("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`),Le=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},_e=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},Je=v("ISO 8601 timestamp",e=>typeof e=="string"&&Le(e)),Ue=v("date (YYYY-MM-DD)",e=>typeof e=="string"&&_e(e));function $e(e){return v(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function Ee(e){return v(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function we(e,t,...r){if(typeof e=="string"&&Array.isArray(t)){let i=e,o=t,l=new Set(o);return{description:i,check:p=>l.has(p),toJSONSchema:()=>({enum:o}),strip:p=>p,__runtimeType:!0,values:o}}let s=[];q(e)&&s.push(e),q(t)&&s.push(t),s.push(...r);let n=s.map(i=>i.description).join(" | ");return v(n,i=>s.some(o=>o.check(i)===!0))}function je(e){return v(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(r=>e.check(r)===!0))}function ft(e){if(q(e))return r=>e.check(r)===!0;if(e&&typeof e=="object"&&"schema"in e)return r=>de(r,e);let t=se.infer(e);return r=>de(r,t)}function ee(e,t,r){let s=[],n=[];for(let o of e)typeof o=="string"?(s.push(o),n.push(void 0)):(s.push(o[0]),n.push(o[1]));let i=(...o)=>{let l=s.map((p,c)=>{let a=c<o.length?o[c]:n[c];return a===void 0?()=>!0:ft(a)}),f=r;return s.forEach((p,c)=>{let a=c<o.length?o[c]:n[c],y="any";q(a)?y=a.description:a!==void 0&&(y=typeof a=="string"?"string":JSON.stringify(a)),f=f.replace(new RegExp(`\\b${p}\\b`,"g"),y)}),v(f,p=>t(p,...l))};return i.params=s,i.description=r,i}var Ne=ee(["T","U"],(e,t,r)=>Array.isArray(e)&&e.length===2&&t(e[0])&&r(e[1]),"Pair<T, U>"),Pe=ee(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function Re(e,t){let r=Object.values(t),s=new Set(r),n=Object.keys(t),i={};for(let[l,f]of Object.entries(t))i[f]=l;return{description:e,check:l=>s.has(l),toJSONSchema:()=>({enum:r}),strip:l=>l,__runtimeType:!0,members:t,names:i,values:r,keys:n}}function dt(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 ie(e,t,r){if(Array.isArray(t)&&r){let s=t,n=[],i=[];for(let l of s)Array.isArray(l)?(n.push(l[0]),i.push(l[1])):(n.push(l),i.push(void 0));let o=((...l)=>{let f=n.map((c,a)=>a<l.length?l[a]:i[a]),p=r(...f);return ie(e,p)});return Object.defineProperties(o,{typeParamNames:{value:n,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),o}return mt(e,t)}function mt(e,t){let r={},s,n="assertReturns";if(typeof t=="function"){let o=t.__tjs;if(o){if(o.params)for(let[l,f]of Object.entries(o.params))r[l]=f?.example??null;o.returns&&(s=o.returns?.example??null),o.safeReturn?n="checkedReturns":o.unsafe?n="assertReturns":n="returns"}}else r=t.params??{},s=t.returns,n=t.returnContract??"assertReturns";return{description:e,params:r,returns:s,returnContract:n,toJSONSchema:()=>({description:e,type:"function"}),strip:o=>o,check:o=>{if(typeof o!="function")return`expected function, got ${o===null?"null":typeof o}`;let l=Object.keys(r).length;if(l>0){let p=o.__tjs;if(p?.params){let c=Object.keys(p.params).length;if(c!==l)return`expected ${l} params, got ${c}`;let a=Object.keys(r),y=Object.keys(p.params);for(let d=0;d<a.length;d++){let k=p.params[y[d]],m=r[a[d]];if(k?.type?.kind&&m!==void 0){let h=dt(m);if(h&&k.type.kind!==h&&k.type.kind!=="any")return`param '${a[d]}' expected ${h}, got ${k.type.kind}`}}}}return!0},__runtimeType:!0}}var gt=Be(),ze=gt.version,te=Symbol.for("tjs.equals");function ue(e){let[t=0,r=0,s=0]=e.split(".").map(Number);return{major:t,minor:r,patch:s}}function Fe(e,t){let r=ue(e),s=ue(t);return r.major!==s.major?r.major<s.major?-1:1:r.minor!==s.minor?r.minor<s.minor?-1:1:r.patch!==s.patch?r.patch<s.patch?-1:1:0}function Ge(e,t){let r=ue(e),s=ue(t);return r.major===s.major}var Z=class e extends Error{path;expected;actual;callStack;reason;constructor(t,r,s,n,i,o){super(t),this.name="MonadicError",this.path=r,this.expected=s,this.actual=n,this.callStack=i,this.reason=o,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function Tt(e,t,r,s){let n=r===null?"null":typeof r,i=K.callStacks||K.debug?Oe():void 0,o=s?`Expected ${t} for '${e}': ${s}`:`Expected ${t} for '${e}', got ${n}`,l=new Z(o,e,t,n,i,s);if(K.trackErrors!==!1){let f=K.maxErrors??ce;He[H]=l,H=(H+1)%f,F<f&&F++,le++}if(K.logTypeErrors&&console.error(`[TJS TypeError] ${l.message}`),K.throwTypeErrors)throw l;return l}function Ae(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var Me={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},K={...Me},re=64,Ve=new Array(re).fill(""),z=0,_=0,ce=64,He=new Array(ce).fill(null),H=0,F=0,le=0,X=0;function xt(){X++}function ht(){X>0&&X--}function St(){return X>0}function bt(e){K={...K,...e}}function kt(){return{...K}}function We(e){if((K.callStacks||K.debug)&&e){let t=K.maxStackSize??re;Ve[z]=e,z=(z+1)%t,_<t&&_++}}function oe(){if((K.callStacks||K.debug)&&_>0){let e=K.maxStackSize??re;z=(z-1+e)%e,_--}}function Oe(){if(_===0)return[];let e=K.maxStackSize??re,t=[],r=(z-_+e)%e;for(let s=0;s<_;s++)t.push(Ve[(r+s)%e]);return t}function Ye(){if(K.trackErrors===!1||F===0)return[];let e=K.maxErrors??ce,t=[],r=(H-F+e)%e;for(let s=0;s<F;s++)t.push(He[(r+s)%e]);return t}function $t(){let e=Ye();return H=0,F=0,le=0,e}function Et(){return le}function wt(){K={...Me},z=0,_=0,H=0,F=0,le=0,X=0}function W(e,t){if(e!==null&&typeof e=="object"&&typeof e[te]=="function")return e[te](t);if(t!==null&&typeof t=="object"&&typeof t[te]=="function")return t[te](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(t);if(t!==null&&typeof t=="object"&&typeof t.Equals=="function")return t.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object")return!1;if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,i]of e)if(!t.has(n)||!W(i,t.get(n)))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((n,i)=>W(n,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let r=Object.keys(e),s=Object.keys(t);return r.length!==s.length?!1:r.every(n=>W(e[n],t[n]))}function Ze(e,t){return!W(e,t)}function Xe(e){return e===null?"null":typeof e}function Ce(e,t){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),!!(e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)}function Qe(e,t){return!Ce(e,t)}function U(e){return e!==null&&typeof e=="object"&&e.$error===!0}function J(e,t){let r={$error:!0,message:e,...t};if((K.callStacks||K.debug)&&_>0){let s=Oe(),n=t?.path?[...s,t.path]:s;r.stack=n}return r}function Ke(e,t){if(e.length===0)return J("Unknown error");if(e.length===1)return e[0];let r=e.map(n=>{if(n.path){let i=n.path.split(".");return i[i.length-1]}return"unknown"}).join(", "),s=`Multiple parameter errors in ${t||"function"}: ${r}`;return J(s,{path:t,errors:e})}function ne(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let t=typeof e;if(t!=="object")return t;let r=e.constructor?.name;return r&&r!=="Object"?r:"object"}function et(e,t){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let r=e;for(;r!==null;){if(r.constructor?.name===t)return!0;r=Object.getPrototypeOf(r)}return!1}function Y(e,t,r){if(U(e))return e;if(typeof t=="object"&&t!==null&&"check"in t){let n=t.check(e);if(n===!0)return null;let i=typeof n=="string"?n:void 0,o=i?`Expected ${t.description} for '${r}': ${i}`:`Expected ${t.description} but got ${ne(e)}`;return J(o,{path:r,expected:t.description,actual:ne(e),reason:i})}let s=ne(e);return t==="any"||t===s||t==="number"&&s==="number"||t==="integer"&&s==="number"&&Number.isInteger(e)||t==="non-negative-integer"&&s==="number"&&Number.isInteger(e)&&e>=0||t==="object"&&s==="object"?null:J(`Expected ${t} but got ${s}`,{path:r,expected:t,actual:s})}function tt(e,t,r){for(let[s,n]of Object.entries(t.params)){let i=e[s];if(U(i))return i;if(n.required&&i===void 0){let l=typeof n.type=="string"?n.type:n.type.description;return J(`Missing required parameter '${s}'`,{path:r?`${r}.${s}`:s,expected:l,actual:"undefined",loc:n.loc})}if(i===void 0)continue;let o=Y(i,n.type,r?`${r}.${s}`:s);if(o)return n.loc&&(o.loc=n.loc),o}return null}function nt(e,t){if(e.__tjs=t,e.__tjs.schema=()=>fe(t),!(!t.polymorphic&&(t.safe||t.safeReturn||K.safety!=="none"&&!t.unsafe||t.returns&&K.safety==="all"&&!t.unsafeReturn)))return e;let s=!!t.returns,n=!!t.unsafe,i=!!t.safe,o=!!t.unsafeReturn,l=!!t.safeReturn,f=t.returns?.defaults,p=Object.entries(t.params),c=p.length,a=e.name||t.name||"anonymous",y=function(...d){if(X>0)return e.apply(this,d);let k=i||!n&&K.safety!=="none",m=s&&(l||!o&&K.safety==="all");if(!k&&!m)return e.apply(this,d);if(d.length>0&&U(d[0]))return d[0];if(k){let E=d.length===1&&typeof d[0]=="object"&&d[0]!==null&&!Array.isArray(d[0]),w=[];if(E){let j=d[0];for(let N=0;N<c;N++){let[$,O]=p[N],A=j[$];if(U(A)){w.push(A);continue}if(O.required&&A===void 0){w.push(J(`Missing required parameter '${$}'`,{path:`${a}.${$}`,expected:typeof O.type=="string"?O.type:O.type?.description||"value",actual:"undefined",loc:O.loc}));continue}if(A!==void 0){let D=Y(A,O.type,`${a}.${$}`);D&&(O.loc&&(D.loc=O.loc),w.push(D))}}}else for(let j=0;j<c;j++){let[N,$]=p[j],O=d[j];if(U(O)){w.push(O);continue}if($.required&&O===void 0){w.push(J(`Missing required parameter '${N}'`,{path:`${a}.${N}`,expected:typeof $.type=="string"?$.type:$.type?.description||"value",actual:"undefined",loc:$.loc}));continue}if(O!==void 0){let A=Y(O,$.type,`${a}.${N}`);A&&($.loc&&(A.loc=$.loc),w.push(A))}}if(w.length>0)return Ke(w,a)}let h=K.callStacks||K.debug;h&&We(a);try{let E=e.apply(this,d);if(m&&t.returns&&!U(E)){let w=f&&typeof E=="object"&&E!==null?Object.assign({},f,E):E,j=Y(w,t.returns.type,`${a}()`);if(j)return h&&oe(),j}return h&&oe(),E}catch(E){return h&&oe(),J(E.message||String(E),{path:a,cause:E})}};return Object.defineProperty(y,"name",{value:e.name}),y.__tjs=t,y.__tjs.schema=()=>fe(t),y}function rt(e){let t=new Proxy(e,{construct(r,s,n){return Reflect.construct(r,s,n)},apply(r,s,n){return Reflect.construct(r,n)}});Object.defineProperty(t,"name",{value:e.name});for(let r of Object.getOwnPropertyNames(e))r!=="length"&&r!=="name"&&r!=="prototype"&&Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t}function st(){let e={...K},t=e.maxStackSize??re,r=new Array(t).fill(""),s=0,n=0,i=e.maxErrors??ce,o=new Array(i).fill(null),l=0,f=0,p=0,c=0;function a(g){e={...e,...g}}function y(){return{...e}}function d(g){(e.callStacks||e.debug)&&g&&(r[s]=g,s=(s+1)%t,n<t&&n++)}function k(){(e.callStacks||e.debug)&&n>0&&(s=(s-1+t)%t,n--)}function m(){if(n===0)return[];let g=[],S=(s-n+t)%t;for(let R=0;R<n;R++)g.push(r[(S+R)%t]);return g}function h(){e={...Me},s=0,n=0,l=0,f=0,p=0,c=0}function E(){c++}function w(){c>0&&c--}function j(){return c>0}let N=new Map;function $(g,S,R){N.has(g)||N.set(g,new Map),N.get(g).set(S,R)}function O(g,S){let R=typeof g,C;if(g==null)return;if(R==="string")C="String";else if(R==="number")C="Number";else if(R==="boolean")C="Boolean";else if(Array.isArray(g))C="Array";else if(R==="object")C=g.constructor?.name||"Object";else return;let L=C;for(;L;){let Ie=N.get(L);if(Ie?.has(S))return Ie.get(S);if(R==="object"&&!Array.isArray(g)){if(L=Object.getPrototypeOf(L===C?g:Object.getPrototypeOf(g))?.constructor?.name,L==="Object"||L===C)break}else break}let B=N.get("Object");if(B?.has(S))return B.get(S)}function A(g,S,R){let C=R===null?"null":typeof R,L=e.callStacks||e.debug?m():void 0,B=new Z(`Expected ${S} for '${g}', got ${C}`,g,S,C,L);if(e.trackErrors!==!1&&(o[l]=B,l=(l+1)%i,f<i&&f++,p++),e.logTypeErrors&&console.error(`[TJS TypeError] ${B.message}`),e.throwTypeErrors)throw B;return B}function D(){if(e.trackErrors===!1||f===0)return[];let g=[],S=(l-f+i)%i;for(let R=0;R<f;R++)g.push(o[(S+R)%i]);return g}function T(){let g=D();return l=0,f=0,p=0,g}function b(){return p}function x(g,S){let R={$error:!0,message:g,...S};if((e.callStacks||e.debug)&&n>0){let C=S?.path?[...m(),S.path]:m();R.stack=C}return R}function P(g,S){return g==null?A(`bang.${S}`,"non-null",g):Ae(g)?g:g[S]}return{version:ze,MonadicError:Z,typeError:A,isMonadicError:Ae,bang:P,isError:U,error:x,composeErrors:Ke,typeOf:ne,isNativeType:et,checkType:Y,validateArgs:tt,wrap:nt,wrapClass:rt,compareVersions:Fe,versionsCompatible:Ge,createRuntime:st,configure:a,getConfig:y,pushStack:d,popStack:k,getStack:m,errors:D,clearErrors:T,getErrorCount:b,resetRuntime:h,enterUnsafe:E,exitUnsafe:w,isUnsafeMode:j,validate:qe,infer:ae.infer.bind(ae),Type:v,isRuntimeType:q,Union:we,Generic:ee,Enum:Re,FunctionPredicate:ie,Nullable:$e,Optional:Ee,TArray:je,TString:me,TNumber:ye,TBoolean:ge,TInteger:Te,TPositiveInt:xe,TNonEmptyString:he,TEmail:Se,TUrl:be,TUuid:ke,TPair:Ne,TRecord:Pe,Is:W,IsNot:Ze,Eq:Ce,NotEq:Qe,TypeOf:Xe,tjsEquals:te,registerExtension:$,resolveExtension:O}}var en={version:ze,MonadicError:Z,typeError:Tt,isMonadicError:Ae,isError:U,error:J,composeErrors:Ke,typeOf:ne,isNativeType:et,checkType:Y,validateArgs:tt,wrap:nt,wrapClass:rt,compareVersions:Fe,versionsCompatible:Ge,configure:bt,getConfig:kt,pushStack:We,popStack:oe,getStack:Oe,errors:Ye,clearErrors:$t,getErrorCount:Et,resetRuntime:wt,enterUnsafe:xt,exitUnsafe:ht,isUnsafeMode:St,createRuntime:st,validate:qe,infer:ae.infer.bind(ae),Type:v,isRuntimeType:q,Union:we,Generic:ee,Enum:Re,FunctionPredicate:ie,Nullable:$e,Optional:Ee,TArray:je,TString:me,TNumber:ye,TBoolean:ge,TInteger:Te,TPositiveInt:xe,TNonEmptyString:he,TEmail:Se,TUrl:be,TUuid:ke,Timestamp:Je,LegalDate:Ue,TPair:Ne,TRecord:Pe,Is:W,IsNot:Ze,Eq:Ce,NotEq:Qe,TypeOf:Xe};function it(e){return`
1
+ var ut=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Be=ut((Yt,yt)=>{yt.exports={name:"tjs-lang",version:"0.7.7",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^8.57.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"firebase deploy --only hosting",deploy:"npm run build:demo && npm run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-walk":"^8.3.4","tosijs-schema":"^1.3.0"}}});import u from"typescript";import{validate as qe,s as ae}from"tosijs-schema";function G(e){if(e.nullable)return{anyOf:[G({...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:G(e.items)}:{type:"array"};case"object":if(e.shape){let t={},r=[];for(let[s,n]of Object.entries(e.shape))t[s]=G(n),r.push(s);return{type:"object",properties:t,required:r,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(G)}:{};default:return{}}}function V(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:V(e[0])};let t={},r=[];for(let[s,n]of Object.entries(e))t[s]=V(n),r.push(s);return{type:"object",properties:t,required:r,additionalProperties:!1}}default:return{}}}function fe(e){let t={},r=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=G(o.type):o?.example!==void 0?t[i]=V(o.example):t[i]={},o?.required!==!1&&r.push(i),o?.example!==void 0&&(t[i].examples=[o.example]);let s={type:"object",properties:t,required:r},n;return e.returns&&(e.returns.type?.kind?n=G(e.returns.type):e.returns.example!==void 0&&(n=V(e.returns.example))),{input:s,output:n}}import{validate as de,filter as ct,s as se}from"tosijs-schema";function q(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function ve(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function lt(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function v(e,t,r,s){let n,i,o,l=r,f=s;if(typeof e=="string")if(n=e,typeof t=="function")i=t,l!==void 0&&(o=se.infer(l));else if(t===void 0&&l!==void 0)o=se.infer(l);else if(ve(t))o=t;else if(lt(t))o=t;else if(t!==void 0)l=t,f=l,o=se.infer(l);else throw new Error("Type(description) requires a predicate, schema, or example");else ve(e),o=e,n=pt(o);let p;if(o){let a=o?.schema??o;a&&typeof a=="object"&&Array.isArray(a.examples)&&(p=a.examples)}return l===void 0&&p&&p.length>0&&(l=p[0]),{description:n,check:a=>i?i(a):o?de(a,o):!1,schema:o,predicate:i,example:l,examples:p,default:f,toJSONSchema(){if(o){let a=o?.schema??o;if(a&&typeof a=="object"&&"type"in a)return a}return l!==void 0?V(l):{description:n}},strip(a){return o?ct(a,o):a},__runtimeType:!0}}function pt(e){let t=e?.schema??e;if(t&&typeof t=="object"&&"type"in t){let r=t;switch(r.type){case"string":return r.format?`string (${r.format})`:r.pattern?`string matching ${r.pattern}`:r.minLength!==void 0&&r.maxLength!==void 0?`string (${r.minLength}-${r.maxLength} chars)`:"string";case"number":case"integer":return r.minimum!==void 0&&r.maximum!==void 0?`${r.type} (${r.minimum}-${r.maximum})`:r.minimum!==void 0?`${r.type} >= ${r.minimum}`:r.maximum!==void 0?`${r.type} <= ${r.maximum}`:r.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var me=v("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),ye=v("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),ge=v("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),Te=v("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),xe=v("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`),he=v("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),Se=v("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`),De=e=>{try{return new URL(e),!0}catch{return!1}},be=v("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:De(e)?!0:`"${e}" is not a valid URL`),ke=v("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`),Le=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},_e=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},Je=v("ISO 8601 timestamp",e=>typeof e=="string"&&Le(e)),Ue=v("date (YYYY-MM-DD)",e=>typeof e=="string"&&_e(e));function $e(e){return v(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function Ee(e){return v(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function we(e,t,...r){if(typeof e=="string"&&Array.isArray(t)){let i=e,o=t,l=new Set(o);return{description:i,check:p=>l.has(p),toJSONSchema:()=>({enum:o}),strip:p=>p,__runtimeType:!0,values:o}}let s=[];q(e)&&s.push(e),q(t)&&s.push(t),s.push(...r);let n=s.map(i=>i.description).join(" | ");return v(n,i=>s.some(o=>o.check(i)===!0))}function je(e){return v(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(r=>e.check(r)===!0))}function ft(e){if(q(e))return r=>e.check(r)===!0;if(e&&typeof e=="object"&&"schema"in e)return r=>de(r,e);let t=se.infer(e);return r=>de(r,t)}function ee(e,t,r){let s=[],n=[];for(let o of e)typeof o=="string"?(s.push(o),n.push(void 0)):(s.push(o[0]),n.push(o[1]));let i=(...o)=>{let l=s.map((p,c)=>{let a=c<o.length?o[c]:n[c];return a===void 0?()=>!0:ft(a)}),f=r;return s.forEach((p,c)=>{let a=c<o.length?o[c]:n[c],y="any";q(a)?y=a.description:a!==void 0&&(y=typeof a=="string"?"string":JSON.stringify(a)),f=f.replace(new RegExp(`\\b${p}\\b`,"g"),y)}),v(f,p=>t(p,...l))};return i.params=s,i.description=r,i}var Ne=ee(["T","U"],(e,t,r)=>Array.isArray(e)&&e.length===2&&t(e[0])&&r(e[1]),"Pair<T, U>"),Pe=ee(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function Re(e,t){let r=Object.values(t),s=new Set(r),n=Object.keys(t),i={};for(let[l,f]of Object.entries(t))i[f]=l;return{description:e,check:l=>s.has(l),toJSONSchema:()=>({enum:r}),strip:l=>l,__runtimeType:!0,members:t,names:i,values:r,keys:n}}function dt(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 ie(e,t,r){if(Array.isArray(t)&&r){let s=t,n=[],i=[];for(let l of s)Array.isArray(l)?(n.push(l[0]),i.push(l[1])):(n.push(l),i.push(void 0));let o=((...l)=>{let f=n.map((c,a)=>a<l.length?l[a]:i[a]),p=r(...f);return ie(e,p)});return Object.defineProperties(o,{typeParamNames:{value:n,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),o}return mt(e,t)}function mt(e,t){let r={},s,n="assertReturns";if(typeof t=="function"){let o=t.__tjs;if(o){if(o.params)for(let[l,f]of Object.entries(o.params))r[l]=f?.example??null;o.returns&&(s=o.returns?.example??null),o.safeReturn?n="checkedReturns":o.unsafe?n="assertReturns":n="returns"}}else r=t.params??{},s=t.returns,n=t.returnContract??"assertReturns";return{description:e,params:r,returns:s,returnContract:n,toJSONSchema:()=>({description:e,type:"function"}),strip:o=>o,check:o=>{if(typeof o!="function")return`expected function, got ${o===null?"null":typeof o}`;let l=Object.keys(r).length;if(l>0){let p=o.__tjs;if(p?.params){let c=Object.keys(p.params).length;if(c!==l)return`expected ${l} params, got ${c}`;let a=Object.keys(r),y=Object.keys(p.params);for(let d=0;d<a.length;d++){let k=p.params[y[d]],m=r[a[d]];if(k?.type?.kind&&m!==void 0){let h=dt(m);if(h&&k.type.kind!==h&&k.type.kind!=="any")return`param '${a[d]}' expected ${h}, got ${k.type.kind}`}}}}return!0},__runtimeType:!0}}var gt=Be(),ze=gt.version,te=Symbol.for("tjs.equals");function ue(e){let[t=0,r=0,s=0]=e.split(".").map(Number);return{major:t,minor:r,patch:s}}function Fe(e,t){let r=ue(e),s=ue(t);return r.major!==s.major?r.major<s.major?-1:1:r.minor!==s.minor?r.minor<s.minor?-1:1:r.patch!==s.patch?r.patch<s.patch?-1:1:0}function Ge(e,t){let r=ue(e),s=ue(t);return r.major===s.major}var Z=class e extends Error{path;expected;actual;callStack;reason;constructor(t,r,s,n,i,o){super(t),this.name="MonadicError",this.path=r,this.expected=s,this.actual=n,this.callStack=i,this.reason=o,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function Tt(e,t,r,s){let n=r===null?"null":typeof r,i=K.callStacks||K.debug?Oe():void 0,o=s?`Expected ${t} for '${e}': ${s}`:`Expected ${t} for '${e}', got ${n}`,l=new Z(o,e,t,n,i,s);if(K.trackErrors!==!1){let f=K.maxErrors??ce;He[H]=l,H=(H+1)%f,F<f&&F++,le++}if(K.logTypeErrors&&console.error(`[TJS TypeError] ${l.message}`),K.throwTypeErrors)throw l;return l}function Ae(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var Me={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},K={...Me},re=64,Ve=new Array(re).fill(""),z=0,_=0,ce=64,He=new Array(ce).fill(null),H=0,F=0,le=0,X=0;function xt(){X++}function ht(){X>0&&X--}function St(){return X>0}function bt(e){K={...K,...e}}function kt(){return{...K}}function We(e){if((K.callStacks||K.debug)&&e){let t=K.maxStackSize??re;Ve[z]=e,z=(z+1)%t,_<t&&_++}}function oe(){if((K.callStacks||K.debug)&&_>0){let e=K.maxStackSize??re;z=(z-1+e)%e,_--}}function Oe(){if(_===0)return[];let e=K.maxStackSize??re,t=[],r=(z-_+e)%e;for(let s=0;s<_;s++)t.push(Ve[(r+s)%e]);return t}function Ye(){if(K.trackErrors===!1||F===0)return[];let e=K.maxErrors??ce,t=[],r=(H-F+e)%e;for(let s=0;s<F;s++)t.push(He[(r+s)%e]);return t}function $t(){let e=Ye();return H=0,F=0,le=0,e}function Et(){return le}function wt(){K={...Me},z=0,_=0,H=0,F=0,le=0,X=0}function W(e,t){if(e!==null&&typeof e=="object"&&typeof e[te]=="function")return e[te](t);if(t!==null&&typeof t=="object"&&typeof t[te]=="function")return t[te](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(t);if(t!==null&&typeof t=="object"&&typeof t.Equals=="function")return t.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object")return!1;if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,i]of e)if(!t.has(n)||!W(i,t.get(n)))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((n,i)=>W(n,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let r=Object.keys(e),s=Object.keys(t);return r.length!==s.length?!1:r.every(n=>W(e[n],t[n]))}function Ze(e,t){return!W(e,t)}function Xe(e){return e===null?"null":typeof e}function Ce(e,t){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),!!(e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)}function Qe(e,t){return!Ce(e,t)}function U(e){return e!==null&&typeof e=="object"&&e.$error===!0}function J(e,t){let r={$error:!0,message:e,...t};if((K.callStacks||K.debug)&&_>0){let s=Oe(),n=t?.path?[...s,t.path]:s;r.stack=n}return r}function Ke(e,t){if(e.length===0)return J("Unknown error");if(e.length===1)return e[0];let r=e.map(n=>{if(n.path){let i=n.path.split(".");return i[i.length-1]}return"unknown"}).join(", "),s=`Multiple parameter errors in ${t||"function"}: ${r}`;return J(s,{path:t,errors:e})}function ne(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let t=typeof e;if(t!=="object")return t;let r=e.constructor?.name;return r&&r!=="Object"?r:"object"}function et(e,t){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let r=e;for(;r!==null;){if(r.constructor?.name===t)return!0;r=Object.getPrototypeOf(r)}return!1}function Y(e,t,r){if(U(e))return e;if(typeof t=="object"&&t!==null&&"check"in t){let n=t.check(e);if(n===!0)return null;let i=typeof n=="string"?n:void 0,o=i?`Expected ${t.description} for '${r}': ${i}`:`Expected ${t.description} but got ${ne(e)}`;return J(o,{path:r,expected:t.description,actual:ne(e),reason:i})}let s=ne(e);return t==="any"||t===s||t==="number"&&s==="number"||t==="integer"&&s==="number"&&Number.isInteger(e)||t==="non-negative-integer"&&s==="number"&&Number.isInteger(e)&&e>=0||t==="object"&&s==="object"?null:J(`Expected ${t} but got ${s}`,{path:r,expected:t,actual:s})}function tt(e,t,r){for(let[s,n]of Object.entries(t.params)){let i=e[s];if(U(i))return i;if(n.required&&i===void 0){let l=typeof n.type=="string"?n.type:n.type.description;return J(`Missing required parameter '${s}'`,{path:r?`${r}.${s}`:s,expected:l,actual:"undefined",loc:n.loc})}if(i===void 0)continue;let o=Y(i,n.type,r?`${r}.${s}`:s);if(o)return n.loc&&(o.loc=n.loc),o}return null}function nt(e,t){if(e.__tjs=t,e.__tjs.schema=()=>fe(t),!(!t.polymorphic&&(t.safe||t.safeReturn||K.safety!=="none"&&!t.unsafe||t.returns&&K.safety==="all"&&!t.unsafeReturn)))return e;let s=!!t.returns,n=!!t.unsafe,i=!!t.safe,o=!!t.unsafeReturn,l=!!t.safeReturn,f=t.returns?.defaults,p=Object.entries(t.params),c=p.length,a=e.name||t.name||"anonymous",y=function(...d){if(X>0)return e.apply(this,d);let k=i||!n&&K.safety!=="none",m=s&&(l||!o&&K.safety==="all");if(!k&&!m)return e.apply(this,d);if(d.length>0&&U(d[0]))return d[0];if(k){let E=d.length===1&&typeof d[0]=="object"&&d[0]!==null&&!Array.isArray(d[0]),w=[];if(E){let j=d[0];for(let N=0;N<c;N++){let[$,O]=p[N],A=j[$];if(U(A)){w.push(A);continue}if(O.required&&A===void 0){w.push(J(`Missing required parameter '${$}'`,{path:`${a}.${$}`,expected:typeof O.type=="string"?O.type:O.type?.description||"value",actual:"undefined",loc:O.loc}));continue}if(A!==void 0){let D=Y(A,O.type,`${a}.${$}`);D&&(O.loc&&(D.loc=O.loc),w.push(D))}}}else for(let j=0;j<c;j++){let[N,$]=p[j],O=d[j];if(U(O)){w.push(O);continue}if($.required&&O===void 0){w.push(J(`Missing required parameter '${N}'`,{path:`${a}.${N}`,expected:typeof $.type=="string"?$.type:$.type?.description||"value",actual:"undefined",loc:$.loc}));continue}if(O!==void 0){let A=Y(O,$.type,`${a}.${N}`);A&&($.loc&&(A.loc=$.loc),w.push(A))}}if(w.length>0)return Ke(w,a)}let h=K.callStacks||K.debug;h&&We(a);try{let E=e.apply(this,d);if(m&&t.returns&&!U(E)){let w=f&&typeof E=="object"&&E!==null?Object.assign({},f,E):E,j=Y(w,t.returns.type,`${a}()`);if(j)return h&&oe(),j}return h&&oe(),E}catch(E){return h&&oe(),J(E.message||String(E),{path:a,cause:E})}};return Object.defineProperty(y,"name",{value:e.name}),y.__tjs=t,y.__tjs.schema=()=>fe(t),y}function rt(e){let t=new Proxy(e,{construct(r,s,n){return Reflect.construct(r,s,n)},apply(r,s,n){return Reflect.construct(r,n)}});Object.defineProperty(t,"name",{value:e.name});for(let r of Object.getOwnPropertyNames(e))r!=="length"&&r!=="name"&&r!=="prototype"&&Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t}function st(){let e={...K},t=e.maxStackSize??re,r=new Array(t).fill(""),s=0,n=0,i=e.maxErrors??ce,o=new Array(i).fill(null),l=0,f=0,p=0,c=0;function a(g){e={...e,...g}}function y(){return{...e}}function d(g){(e.callStacks||e.debug)&&g&&(r[s]=g,s=(s+1)%t,n<t&&n++)}function k(){(e.callStacks||e.debug)&&n>0&&(s=(s-1+t)%t,n--)}function m(){if(n===0)return[];let g=[],S=(s-n+t)%t;for(let R=0;R<n;R++)g.push(r[(S+R)%t]);return g}function h(){e={...Me},s=0,n=0,l=0,f=0,p=0,c=0}function E(){c++}function w(){c>0&&c--}function j(){return c>0}let N=new Map;function $(g,S,R){N.has(g)||N.set(g,new Map),N.get(g).set(S,R)}function O(g,S){let R=typeof g,C;if(g==null)return;if(R==="string")C="String";else if(R==="number")C="Number";else if(R==="boolean")C="Boolean";else if(Array.isArray(g))C="Array";else if(R==="object")C=g.constructor?.name||"Object";else return;let L=C;for(;L;){let Ie=N.get(L);if(Ie?.has(S))return Ie.get(S);if(R==="object"&&!Array.isArray(g)){if(L=Object.getPrototypeOf(L===C?g:Object.getPrototypeOf(g))?.constructor?.name,L==="Object"||L===C)break}else break}let B=N.get("Object");if(B?.has(S))return B.get(S)}function A(g,S,R){let C=R===null?"null":typeof R,L=e.callStacks||e.debug?m():void 0,B=new Z(`Expected ${S} for '${g}', got ${C}`,g,S,C,L);if(e.trackErrors!==!1&&(o[l]=B,l=(l+1)%i,f<i&&f++,p++),e.logTypeErrors&&console.error(`[TJS TypeError] ${B.message}`),e.throwTypeErrors)throw B;return B}function D(){if(e.trackErrors===!1||f===0)return[];let g=[],S=(l-f+i)%i;for(let R=0;R<f;R++)g.push(o[(S+R)%i]);return g}function T(){let g=D();return l=0,f=0,p=0,g}function b(){return p}function x(g,S){let R={$error:!0,message:g,...S};if((e.callStacks||e.debug)&&n>0){let C=S?.path?[...m(),S.path]:m();R.stack=C}return R}function P(g,S){return g==null?A(`bang.${S}`,"non-null",g):Ae(g)?g:g[S]}return{version:ze,MonadicError:Z,typeError:A,isMonadicError:Ae,bang:P,isError:U,error:x,composeErrors:Ke,typeOf:ne,isNativeType:et,checkType:Y,validateArgs:tt,wrap:nt,wrapClass:rt,compareVersions:Fe,versionsCompatible:Ge,createRuntime:st,configure:a,getConfig:y,pushStack:d,popStack:k,getStack:m,errors:D,clearErrors:T,getErrorCount:b,resetRuntime:h,enterUnsafe:E,exitUnsafe:w,isUnsafeMode:j,validate:qe,infer:ae.infer.bind(ae),Type:v,isRuntimeType:q,Union:we,Generic:ee,Enum:Re,FunctionPredicate:ie,Nullable:$e,Optional:Ee,TArray:je,TString:me,TNumber:ye,TBoolean:ge,TInteger:Te,TPositiveInt:xe,TNonEmptyString:he,TEmail:Se,TUrl:be,TUuid:ke,TPair:Ne,TRecord:Pe,Is:W,IsNot:Ze,Eq:Ce,NotEq:Qe,TypeOf:Xe,tjsEquals:te,registerExtension:$,resolveExtension:O}}var en={version:ze,MonadicError:Z,typeError:Tt,isMonadicError:Ae,isError:U,error:J,composeErrors:Ke,typeOf:ne,isNativeType:et,checkType:Y,validateArgs:tt,wrap:nt,wrapClass:rt,compareVersions:Fe,versionsCompatible:Ge,configure:bt,getConfig:kt,pushStack:We,popStack:oe,getStack:Oe,errors:Ye,clearErrors:$t,getErrorCount:Et,resetRuntime:wt,enterUnsafe:xt,exitUnsafe:ht,isUnsafeMode:St,createRuntime:st,validate:qe,infer:ae.infer.bind(ae),Type:v,isRuntimeType:q,Union:we,Generic:ee,Enum:Re,FunctionPredicate:ie,Nullable:$e,Optional:Ee,TArray:je,TString:me,TNumber:ye,TBoolean:ge,TInteger:Te,TPositiveInt:xe,TNonEmptyString:he,TEmail:Se,TUrl:be,TUuid:ke,Timestamp:Je,LegalDate:Ue,TPair:Ne,TRecord:Pe,Is:W,IsNot:Ze,Eq:Ce,NotEq:Qe,TypeOf:Xe};function it(e){return`
2
2
  // TJS: callable without new
3
3
  ${e} = new Proxy(${e}, { apply(t, _, a) { return Reflect.construct(t, a) } });
4
4
  `.trim()}var jt=20,at=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 M(e,t,r,s){if(!e)return"undefined";switch(e.kind){case u.SyntaxKind.StringKeyword:return"''";case u.SyntaxKind.NumberKeyword:return"0.0";case u.SyntaxKind.BooleanKeyword:return"false";case u.SyntaxKind.NullKeyword:return"null";case u.SyntaxKind.UndefinedKeyword:return"undefined";case u.SyntaxKind.VoidKeyword:return"undefined";case u.SyntaxKind.AnyKeyword:return"any";case u.SyntaxKind.UnknownKeyword:return"any";case u.SyntaxKind.NeverKeyword:return"null";case u.SyntaxKind.SymbolKeyword:return"Symbol('example')";case u.SyntaxKind.BigIntKeyword:return"0n";case u.SyntaxKind.ObjectKeyword:return"{}";case u.SyntaxKind.ArrayType:{let i=M(e.elementType,t);return i==="any"&&(i="null"),`[${i}]`}case u.SyntaxKind.TypeReference:{let n=e,i=n.typeName.getText();if(i==="Array"&&n.typeArguments?.length)return`[${M(n.typeArguments[0],t,r,s)}]`;if(i==="Promise"||i==="Generator"||i==="AsyncGenerator"||i==="IterableIterator"||i==="AsyncIterableIterator")return n.typeArguments?.length?M(n.typeArguments[0],t,r,s):"undefined";if(i==="Record")return"{}";let o={Map:"new Map()",Set:"new Set()",WeakMap:"new WeakMap()",WeakSet:"new WeakSet()",WeakRef:"new WeakRef({})",Error:"new Error('example')",TypeError:"new TypeError('example')",RangeError:"new RangeError('example')",SyntaxError:"new SyntaxError('example')",ReferenceError:"new ReferenceError('example')",URIError:"new URIError('example')",EvalError:"new EvalError('example')",Date:"new Date()",RegExp:"/example/",ArrayBuffer:"new ArrayBuffer(0)",SharedArrayBuffer:"new SharedArrayBuffer(0)",DataView:"new DataView(new ArrayBuffer(0))",Float32Array:"new Float32Array(0)",Float64Array:"new Float64Array(0)",Int8Array:"new Int8Array(0)",Int16Array:"new Int16Array(0)",Int32Array:"new Int32Array(0)",Uint8Array:"new Uint8Array(0)",Uint16Array:"new Uint16Array(0)",Uint32Array:"new Uint32Array(0)",Uint8ClampedArray:"new Uint8ClampedArray(0)",BigInt64Array:"new BigInt64Array(0)",BigUint64Array:"new BigUint64Array(0)",URL:"new URL('https://example.com')",URLSearchParams:"new URLSearchParams()",Headers:"new Headers()",FormData:"new FormData()",Blob:"new Blob()",File:"new File([], 'example')",Response:"new Response()",Request:"new Request('https://example.com')",AbortController:"new AbortController()",AbortSignal:"AbortSignal.abort()",ReadableStream:"new ReadableStream()",WritableStream:"new WritableStream()",TransformStream:"new TransformStream()",TextEncoder:"new TextEncoder()",TextDecoder:"new TextDecoder()",Promise:"Promise.resolve(null)"};if(i in o)return o[i];if(s?.typeAliases?.has(i)){let l=s.visited??new Set;if(l.has(i))return r?.push(`Circular type reference '${i}' - using 'any'`),"any";l.add(i);let f=s.typeAliases.get(i);return M(f,t,r,{...s,visited:l})}if(s?.interfaces?.has(i)){let l=s.visited??new Set;if(l.has(i))return r?.push(`Circular type reference '${i}' - using 'any'`),"any";l.add(i);let f=s.interfaces.get(i),p=[];for(let c of f.members)if(u.isPropertySignature(c)&&c.name){let a=c.name.getText(s.sourceFile),y=M(c.type,t,r,{...s,visited:l});p.push(`${a}: ${y}`)}return`{ ${p.join(", ")} }`}if(s?.typeParams?.has(i)){let l=s.typeParams.get(i);if(l.constraint)return M(l.constraint,t,r,s);if(l.default)return M(l.default,t,r,s)}return at.has(i)?"{}":/^[A-Z]$/.test(i)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(i)?(r?.push(`Generic type parameter '${i}' converted to 'any' - consider specializing`),"any"):(r?.push(`Unknown type '${i}' converted to 'any' - may need manual review`),"any")}case u.SyntaxKind.TypeLiteral:{let n=e,i=[];for(let o of n.members)if(u.isPropertySignature(o)&&o.name){let l=o.name.getText(),f=M(o.type,t);f==="any"&&(f="null"),i.push(`${l}: ${f}`)}return`{ ${i.join(", ")} }`}case u.SyntaxKind.UnionType:{let n=e,i=a=>a.kind===u.SyntaxKind.NullKeyword||u.isLiteralTypeNode(a)&&a.literal.kind===u.SyntaxKind.NullKeyword,o=a=>a.kind===u.SyntaxKind.UndefinedKeyword||u.isLiteralTypeNode(a)&&a.literal.kind===u.SyntaxKind.UndefinedKeyword,l=n.types.filter(a=>!i(a)&&!o(a)),f=n.types.some(i),p=n.types.some(o);if(l.length===0)return f?"null":"undefined";if(l.length===1&&(f||p)){let a=M(l[0],t,r,s);if(a==="any")return"any";if(f)return`${a} | null`;if(p)return`${a} | undefined`}let c=n.types.map(a=>M(a,t,r,s)).filter((a,y,d)=>d.indexOf(a)===y);return c.some(a=>a==="any")?"any":c.length===1?c[0]:c.length>0?c.some(y=>/[()]/.test(y)||y.startsWith("new "))?"any":c.join(" | "):"undefined"}case u.SyntaxKind.LiteralType:{let n=e;return u.isStringLiteral(n.literal)?`'${n.literal.text}'`:u.isNumericLiteral(n.literal)?n.literal.text:n.literal.kind===u.SyntaxKind.TrueKeyword?"true":n.literal.kind===u.SyntaxKind.FalseKeyword?"false":n.literal.kind===u.SyntaxKind.NullKeyword?"null":"undefined"}case u.SyntaxKind.ParenthesizedType:return M(e.type,t);case u.SyntaxKind.FunctionType:{let n=e,i=[];for(let f of n.parameters){let p=f.name?.getText()||"_";if(p==="this")continue;let c=M(f.type,t,r,s);c==="any"&&(c="null"),i.push(`${p}: ${c}`)}let o=M(n.type,t,r,s);o==="any"&&(o="null");let l=[];return i.length>0&&l.push(`params: { ${i.join(", ")} }`),o!=="undefined"&&l.push(`returns: ${o}`),`FunctionPredicate('function', { ${l.join(", ")} })`}case u.SyntaxKind.TupleType:return`[${e.elements.map(o=>{let l=u.isNamedTupleMember(o)?M(o.type,t):M(o,t);return l==="any"?"null":l}).join(", ")}]`;default:return"undefined"}}function I(e,t){if(!e)return{kind:"any"};let r=t?.depth??0;if(r>jt)return{kind:"any"};switch(t=t?{...t,depth:r+1}:void 0,e.kind){case u.SyntaxKind.StringKeyword:return{kind:"string"};case u.SyntaxKind.NumberKeyword:return{kind:"number"};case u.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case u.SyntaxKind.NullKeyword:return{kind:"null"};case u.SyntaxKind.UndefinedKeyword:case u.SyntaxKind.VoidKeyword:return{kind:"undefined"};case u.SyntaxKind.ArrayType:return{kind:"array",items:I(e.elementType,t)};case u.SyntaxKind.TypeLiteral:{let s=e,n={};for(let i of s.members)if(u.isPropertySignature(i)&&i.name){let o=i.name.getText();n[o]=I(i.type,t)}return{kind:"object",shape:n}}case u.SyntaxKind.UnionType:{let s=e,n=s.types.filter(o=>o.kind!==u.SyntaxKind.NullKeyword&&o.kind!==u.SyntaxKind.UndefinedKeyword),i=s.types.some(o=>o.kind===u.SyntaxKind.NullKeyword);return n.length===1&&i?{...I(n[0],t),nullable:!0}:{kind:"union",members:s.types.map(o=>I(o,t))}}case u.SyntaxKind.IntersectionType:{let s=e,n={};for(let i of s.types){let o=I(i,t);o.kind==="object"&&o.shape&&Object.assign(n,o.shape)}return Object.keys(n).length>0?{kind:"object",shape:n}:{kind:"any"}}case u.SyntaxKind.TupleType:{let s=e,n=[];for(let i of s.elements)u.isNamedTupleMember(i)?n.push(I(i.type,t)):n.push(I(i,t));return{kind:"tuple",elements:n}}case u.SyntaxKind.TypeReference:{let s=e,n=s.typeName.getText();if(n==="Array"&&s.typeArguments?.length)return{kind:"array",items:I(s.typeArguments[0],t)};if(n==="Promise"&&s.typeArguments?.length||(n==="Generator"||n==="AsyncGenerator"||n==="IterableIterator"||n==="AsyncIterableIterator")&&s.typeArguments?.length)return I(s.typeArguments[0],t);if(s.typeArguments?.length){let i=I(s.typeArguments[0],t);if(n==="Partial"||n==="Required"||n==="Readonly")return i;if(n==="Record"&&s.typeArguments.length>=2)return{kind:"object",shape:{"[key]":I(s.typeArguments[1],t)}};if(n==="Pick"||n==="Omit")return i;if(n==="NonNullable")return i.nullable?{...i,nullable:!1}:i;if(["ReturnType","Parameters","ConstructorParameters"].includes(n))return{kind:"any"}}if(t?.typeAliases?.has(n)){if(t.resolvedCache?.has(n))return t.resolvedCache.get(n);let i=t.visited??new Set;if(i.has(n))return{kind:"any"};i.add(n);let o=t.typeAliases.get(n),l=I(o,{...t,visited:i});return t.resolvedCache?.set(n,l),l}if(t?.interfaces?.has(n)){if(t.resolvedCache?.has(n))return t.resolvedCache.get(n);let i=t.visited??new Set;if(i.has(n))return{kind:"any"};i.add(n);let o=t.interfaces.get(n),l={};if(o.heritageClauses){for(let p of o.heritageClauses)if(p.token===u.SyntaxKind.ExtendsKeyword)for(let c of p.types){let a=c.expression.getText(t.sourceFile);if(t.interfaces?.has(a)&&!i.has(a)){let y={kind:u.SyntaxKind.TypeReference,typeName:{getText:()=>a}},d=I(y,{...t,visited:i});d.kind==="object"&&d.shape&&Object.assign(l,d.shape)}}}for(let p of o.members)if(u.isPropertySignature(p)&&p.name){let c=p.name.getText(t.sourceFile);l[c]=I(p.type,{...t,visited:i})}let f={kind:"object",shape:l};return t.resolvedCache?.set(n,f),f}if(t?.typeParams?.has(n)){let i=t.typeParams.get(n);if(i.constraint)return I(i.constraint,t);if(i.default)return I(i.default,t)}return at.has(n)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function Nt(e,t){if(!e.typeParameters||e.typeParameters.length===0)return;let r={};for(let s of e.typeParameters){let n=s.name.getText(),i={};if(s.constraint){let o=M(s.constraint,void 0,t);if(o.startsWith("{"))try{i.constraint=o}catch{i.constraint=o}else i.constraint=o}if(s.default){let o=M(s.default,void 0,t);i.default=o}r[n]=i}return Object.keys(r).length>0?r:void 0}function Pt(e,t,r,s){let n=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return Rt(e,t,r,s);let i=s?.find(p=>p.kind==="example"),o=s?.find(p=>p.kind==="predicate"),l;if(i?.text)l=i.text;else{let p=[];for(let c of e.members)if(u.isPropertySignature(c)&&c.name){let a=c.name.getText(t),y=M(c.type,void 0,r);y==="any"&&(y="null"),p.push(`${a}: ${y}`)}if(p.length===0&&!o)return`Type ${n} {}`;l=p.length>0?`{ ${p.join(", ")} }`:"{}"}let f=[`example: ${l}`];return o?.text&&f.push(o.text),`Type ${n} {