tjs-lang 0.8.2 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +5 -2
- package/demo/autocomplete.test.ts +37 -0
- package/demo/docs.json +701 -11
- package/demo/src/autocomplete.ts +40 -2
- package/demo/src/introspection-bridge.ts +140 -0
- package/demo/src/introspection-doc.test.ts +63 -0
- package/demo/src/playground-shared.ts +53 -0
- package/demo/src/tjs-playground.ts +21 -0
- package/dist/experiments/predicates/css.predicates.d.ts +13 -0
- package/dist/experiments/predicates/verify.d.ts +39 -0
- package/dist/index.js +101 -97
- package/dist/index.js.map +4 -4
- package/dist/src/lang/index.d.ts +2 -0
- package/dist/src/lang/predicate-schema.d.ts +39 -0
- package/dist/src/lang/predicate.d.ts +103 -0
- package/dist/src/lang/transpiler.d.ts +2 -0
- package/dist/src/vm/runtime.d.ts +22 -0
- package/dist/tjs-eval.js +29 -29
- package/dist/tjs-eval.js.map +3 -3
- package/dist/tjs-from-ts.js +1 -1
- package/dist/tjs-from-ts.js.map +2 -2
- package/dist/tjs-lang.js +86 -82
- package/dist/tjs-lang.js.map +4 -4
- package/dist/tjs-vm.js +45 -45
- package/dist/tjs-vm.js.map +3 -3
- package/editors/codemirror/ajs-language.ts +130 -44
- package/editors/codemirror/completion-source.test.ts +114 -0
- package/editors/introspect-value.test.ts +61 -0
- package/editors/introspect-value.ts +86 -0
- package/editors/scope-symbols.test.ts +113 -0
- package/editors/scope-symbols.ts +173 -0
- package/package.json +2 -1
- package/src/lang/index.ts +22 -0
- package/src/lang/predicate-schema.test.ts +97 -0
- package/src/lang/predicate-schema.ts +168 -0
- package/src/lang/predicate.test.ts +184 -0
- package/src/lang/predicate.ts +550 -0
- package/src/lang/runtime.test.ts +46 -0
- package/src/lang/suggest.test.ts +84 -0
- package/src/lang/transpiler.ts +26 -0
- package/src/runtime.test.ts +6 -6
- package/src/vm/atom-effects.test.ts +72 -0
- package/src/vm/atoms/batteries.ts +12 -0
- package/src/vm/equality.test.ts +59 -0
- package/src/vm/runtime.ts +77 -59
package/dist/tjs-from-ts.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var lt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Be=lt((Xt,Tt)=>{Tt.exports={name:"tjs-lang",version:"0.8.2",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"]}},exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md","llms.txt"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-walk":"^8.3.4","tosijs-schema":"^1.3.0"}}});import u from"typescript";import{validate as qe,s as ae}from"tosijs-schema";function V(e){if(e.nullable)return{anyOf:[V({...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:V(e.items)}:{type:"array"};case"object":if(e.shape){let t={},r=[];for(let[s,n]of Object.entries(e.shape))t[s]=V(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(V)}:{};default:return{}}}function H(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:H(e[0])};let t={},r=[];for(let[s,n]of Object.entries(e))t[s]=H(n),r.push(s);return{type:"object",properties:t,required:r,additionalProperties:!1}}default:return{}}}function fe(e){let t={},r=[];for(let[o,i]of Object.entries(e.params))i?.type?.kind?t[o]=V(i.type):i?.example!==void 0?t[o]=H(i.example):t[o]={},i?.required!==!1&&r.push(o),i?.example!==void 0&&(t[o].examples=[i.example]);let s={type:"object",properties:t,required:r},n;return e.returns&&(e.returns.type?.kind?n=V(e.returns.type):e.returns.example!==void 0&&(n=H(e.returns.example))),{input:s,output:n}}import{validate as de,filter as pt,s as se}from"tosijs-schema";function z(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 ft(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function v(e,t,r,s){let n,o,i,l=r,f=s;if(typeof e=="string")if(n=e,typeof t=="function")o=t,l!==void 0&&(i=se.infer(l));else if(t===void 0&&l!==void 0)i=se.infer(l);else if(ve(t))i=t;else if(ft(t))i=t;else if(t!==void 0)l=t,f=l,i=se.infer(l);else throw new Error("Type(description) requires a predicate, schema, or example");else ve(e),i=e,n=dt(i);let p;if(i){let a=i?.schema??i;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=>o?o(a):i?de(a,i):!1,schema:i,predicate:o,example:l,examples:p,default:f,toJSONSchema(){if(i){let a=i?.schema??i;if(a&&typeof a=="object"&&"type"in a)return a}return l!==void 0?H(l):{description:n}},strip(a){return i?pt(a,i):a},__runtimeType:!0}}function dt(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 o=e,i=t,l=new Set(i);return{description:o,check:p=>l.has(p),toJSONSchema:()=>({enum:i}),strip:p=>p,__runtimeType:!0,values:i}}let s=[];z(e)&&s.push(e),z(t)&&s.push(t),s.push(...r);let n=s.map(o=>o.description).join(" | ");return v(n,o=>s.some(i=>i.check(o)===!0))}function je(e){return v(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(r=>e.check(r)===!0))}function mt(e){if(z(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 i of e)typeof i=="string"?(s.push(i),n.push(void 0)):(s.push(i[0]),n.push(i[1]));let o=(...i)=>{let l=s.map((p,c)=>{let a=c<i.length?i[c]:n[c];return a===void 0?()=>!0:mt(a)}),f=r;return s.forEach((p,c)=>{let a=c<i.length?i[c]:n[c],y="any";z(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 o.params=s,o.description=r,o}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),o={};for(let[l,f]of Object.entries(t))o[f]=l;return{description:e,check:l=>s.has(l),toJSONSchema:()=>({enum:r}),strip:l=>l,__runtimeType:!0,members:t,names:o,values:r,keys:n}}function yt(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=[],o=[];for(let l of s)Array.isArray(l)?(n.push(l[0]),o.push(l[1])):(n.push(l),o.push(void 0));let i=((...l)=>{let f=n.map((c,a)=>a<l.length?l[a]:o[a]),p=r(...f);return ie(e,p)});return Object.defineProperties(i,{typeParamNames:{value:n,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),i}return gt(e,t)}function gt(e,t){let r={},s,n="assertReturns";if(typeof t=="function"){let i=t.__tjs;if(i){if(i.params)for(let[l,f]of Object.entries(i.params))r[l]=f?.example??null;i.returns&&(s=i.returns?.example??null),i.safeReturn?n="checkedReturns":i.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:i=>i,check:i=>{if(typeof i!="function")return`expected function, got ${i===null?"null":typeof i}`;let l=Object.keys(r).length;if(l>0){let p=i.__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=yt(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 xt=Be(),ze=xt.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 B=class e extends Error{path;expected;actual;callStack;reason;constructor(t,r,s,n,o,i){super(t),this.name="MonadicError",this.path=r,this.expected=s,this.actual=n,this.callStack=o,this.reason=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function ht(e,t,r,s){let n=r===null?"null":typeof r,o=K.callStacks||K.debug?Oe():void 0,i=s?`Expected ${t} for '${e}': ${s}`:`Expected ${t} for '${e}', got ${n}`,l=new B(i,e,t,n,o,s);if(K.trackErrors!==!1){let f=K.maxErrors??ce;He[W]=l,W=(W+1)%f,G<f&&G++,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(""),F=0,_=0,ce=64,He=new Array(ce).fill(null),W=0,G=0,le=0,X=0;function St(){X++}function bt(){X>0&&X--}function kt(){return X>0}function $t(e){K={...K,...e}}function Et(){return{...K}}function We(e){if((K.callStacks||K.debug)&&e){let t=K.maxStackSize??re;Ve[F]=e,F=(F+1)%t,_<t&&_++}}function oe(){if((K.callStacks||K.debug)&&_>0){let e=K.maxStackSize??re;F=(F-1+e)%e,_--}}function Oe(){if(_===0)return[];let e=K.maxStackSize??re,t=[],r=(F-_+e)%e;for(let s=0;s<_;s++)t.push(Ve[(r+s)%e]);return t}function Ye(){if(K.trackErrors===!1||G===0)return[];let e=K.maxErrors??ce,t=[],r=(W-G+e)%e;for(let s=0;s<G;s++)t.push(He[(r+s)%e]);return t}function wt(){let e=Ye();return W=0,G=0,le=0,e}function jt(){return le}function Nt(){K={...Me},F=0,_=0,W=0,G=0,le=0,X=0}function Y(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,o]of e)if(!t.has(n)||!Y(o,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,o)=>Y(n,t[o]));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=>Y(e[n],t[n]))}function Ze(e,t){return!Y(e,t)}function Xe(e){return e===null?"null":typeof e}function Qe(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!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 et(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 o=n.path.split(".");return o[o.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 tt(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 Z(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 o=typeof n=="string"?n:void 0,i=o?`Expected ${t.description} for '${r}': ${o}`:`Expected ${t.description} but got ${ne(e)}`;return J(i,{path:r,expected:t.description,actual:ne(e),reason:o})}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 nt(e,t,r,s){if(typeof e!="function")return e;let n=e.__tjs;if(!n||!n.params)return e;let o=Object.entries(n.params);for(let i=0;i<t.length;i++){let l=t[i];if(l==="any")continue;let f=o[i];if(!f)continue;let p=f[1]?.type?.kind;if(!(!p||p==="any")&&p!==l)return new B(`Expected (...arg${i}: ${l}, ...) for '${s}', but callback declares arg${i} as ${p}`,`${s}(arg${i})`,l,p)}if(r!=="any"&&n.returns){let i=n.returns.type?.kind??n.returns.kind;if(i&&i!=="any"&&i!==r)return new B(`Expected callback returning ${r} for '${s}', but callback returns ${i}`,`${s}(return)`,r,i)}return e}function rt(e,t,r){for(let[s,n]of Object.entries(t.params)){let o=e[s];if(U(o))return o;if(n.required&&o===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(o===void 0)continue;let i=Z(o,n.type,r?`${r}.${s}`:s);if(i)return n.loc&&(i.loc=n.loc),i}return null}function st(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,o=!!t.safe,i=!!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=o||!n&&K.safety!=="none",m=s&&(l||!i&&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=Z(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=Z(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=Z(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 it(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 ot(){let e={...K},t=e.maxStackSize??re,r=new Array(t).fill(""),s=0,n=0,o=e.maxErrors??ce,i=new Array(o).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 q=N.get("Object");if(q?.has(S))return q.get(S)}function A(g,S,R){let C=R===null?"null":typeof R,L=e.callStacks||e.debug?m():void 0,q=new B(`Expected ${S} for '${g}', got ${C}`,g,S,C,L);if(e.trackErrors!==!1&&(i[l]=q,l=(l+1)%o,f<o&&f++,p++),e.logTypeErrors&&console.error(`[TJS TypeError] ${q.message}`),e.throwTypeErrors)throw q;return q}function D(){if(e.trackErrors===!1||f===0)return[];let g=[],S=(l-f+o)%o;for(let R=0;R<f;R++)g.push(i[(S+R)%o]);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:B,typeError:A,isMonadicError:Ae,bang:P,isError:U,error:x,composeErrors:Ke,typeOf:ne,isNativeType:tt,checkType:Z,validateArgs:rt,wrap:st,checkFnShape:nt,wrapClass:it,compareVersions:Fe,versionsCompatible:Ge,createRuntime:ot,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:z,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:Y,IsNot:Ze,Eq:Ce,NotEq:et,TypeOf:Xe,toBool:Qe,tjsEquals:te,registerExtension:$,resolveExtension:O}}var nn={version:ze,MonadicError:B,typeError:ht,isMonadicError:Ae,isError:U,error:J,composeErrors:Ke,typeOf:ne,isNativeType:tt,checkType:Z,validateArgs:rt,wrap:st,checkFnShape:nt,wrapClass:it,compareVersions:Fe,versionsCompatible:Ge,configure:$t,getConfig:Et,pushStack:We,popStack:oe,getStack:Oe,errors:Ye,clearErrors:wt,getErrorCount:jt,resetRuntime:Nt,enterUnsafe:St,exitUnsafe:bt,isUnsafeMode:kt,createRuntime:ot,validate:qe,infer:ae.infer.bind(ae),Type:v,isRuntimeType:z,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:Y,IsNot:Ze,Eq:Ce,NotEq:et,TypeOf:Xe,toBool:Qe};function at(e){return`
|
|
1
|
+
var lt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Be=lt((Xt,Tt)=>{Tt.exports={name:"tjs-lang",version:"0.8.4",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"]}},exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md","llms.txt"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-loose":"^8.5.2","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 V(e){if(e.nullable)return{anyOf:[V({...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:V(e.items)}:{type:"array"};case"object":if(e.shape){let t={},r=[];for(let[s,n]of Object.entries(e.shape))t[s]=V(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(V)}:{};default:return{}}}function H(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:H(e[0])};let t={},r=[];for(let[s,n]of Object.entries(e))t[s]=H(n),r.push(s);return{type:"object",properties:t,required:r,additionalProperties:!1}}default:return{}}}function fe(e){let t={},r=[];for(let[o,i]of Object.entries(e.params))i?.type?.kind?t[o]=V(i.type):i?.example!==void 0?t[o]=H(i.example):t[o]={},i?.required!==!1&&r.push(o),i?.example!==void 0&&(t[o].examples=[i.example]);let s={type:"object",properties:t,required:r},n;return e.returns&&(e.returns.type?.kind?n=V(e.returns.type):e.returns.example!==void 0&&(n=H(e.returns.example))),{input:s,output:n}}import{validate as de,filter as pt,s as se}from"tosijs-schema";function z(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 ft(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function v(e,t,r,s){let n,o,i,l=r,f=s;if(typeof e=="string")if(n=e,typeof t=="function")o=t,l!==void 0&&(i=se.infer(l));else if(t===void 0&&l!==void 0)i=se.infer(l);else if(ve(t))i=t;else if(ft(t))i=t;else if(t!==void 0)l=t,f=l,i=se.infer(l);else throw new Error("Type(description) requires a predicate, schema, or example");else ve(e),i=e,n=dt(i);let p;if(i){let a=i?.schema??i;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=>o?o(a):i?de(a,i):!1,schema:i,predicate:o,example:l,examples:p,default:f,toJSONSchema(){if(i){let a=i?.schema??i;if(a&&typeof a=="object"&&"type"in a)return a}return l!==void 0?H(l):{description:n}},strip(a){return i?pt(a,i):a},__runtimeType:!0}}function dt(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 o=e,i=t,l=new Set(i);return{description:o,check:p=>l.has(p),toJSONSchema:()=>({enum:i}),strip:p=>p,__runtimeType:!0,values:i}}let s=[];z(e)&&s.push(e),z(t)&&s.push(t),s.push(...r);let n=s.map(o=>o.description).join(" | ");return v(n,o=>s.some(i=>i.check(o)===!0))}function je(e){return v(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(r=>e.check(r)===!0))}function mt(e){if(z(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 i of e)typeof i=="string"?(s.push(i),n.push(void 0)):(s.push(i[0]),n.push(i[1]));let o=(...i)=>{let l=s.map((p,c)=>{let a=c<i.length?i[c]:n[c];return a===void 0?()=>!0:mt(a)}),f=r;return s.forEach((p,c)=>{let a=c<i.length?i[c]:n[c],y="any";z(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 o.params=s,o.description=r,o}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),o={};for(let[l,f]of Object.entries(t))o[f]=l;return{description:e,check:l=>s.has(l),toJSONSchema:()=>({enum:r}),strip:l=>l,__runtimeType:!0,members:t,names:o,values:r,keys:n}}function yt(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=[],o=[];for(let l of s)Array.isArray(l)?(n.push(l[0]),o.push(l[1])):(n.push(l),o.push(void 0));let i=((...l)=>{let f=n.map((c,a)=>a<l.length?l[a]:o[a]),p=r(...f);return ie(e,p)});return Object.defineProperties(i,{typeParamNames:{value:n,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),i}return gt(e,t)}function gt(e,t){let r={},s,n="assertReturns";if(typeof t=="function"){let i=t.__tjs;if(i){if(i.params)for(let[l,f]of Object.entries(i.params))r[l]=f?.example??null;i.returns&&(s=i.returns?.example??null),i.safeReturn?n="checkedReturns":i.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:i=>i,check:i=>{if(typeof i!="function")return`expected function, got ${i===null?"null":typeof i}`;let l=Object.keys(r).length;if(l>0){let p=i.__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=yt(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 xt=Be(),ze=xt.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 B=class e extends Error{path;expected;actual;callStack;reason;constructor(t,r,s,n,o,i){super(t),this.name="MonadicError",this.path=r,this.expected=s,this.actual=n,this.callStack=o,this.reason=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function ht(e,t,r,s){let n=r===null?"null":typeof r,o=K.callStacks||K.debug?Oe():void 0,i=s?`Expected ${t} for '${e}': ${s}`:`Expected ${t} for '${e}', got ${n}`,l=new B(i,e,t,n,o,s);if(K.trackErrors!==!1){let f=K.maxErrors??ce;He[W]=l,W=(W+1)%f,G<f&&G++,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(""),F=0,_=0,ce=64,He=new Array(ce).fill(null),W=0,G=0,le=0,X=0;function St(){X++}function bt(){X>0&&X--}function kt(){return X>0}function $t(e){K={...K,...e}}function Et(){return{...K}}function We(e){if((K.callStacks||K.debug)&&e){let t=K.maxStackSize??re;Ve[F]=e,F=(F+1)%t,_<t&&_++}}function oe(){if((K.callStacks||K.debug)&&_>0){let e=K.maxStackSize??re;F=(F-1+e)%e,_--}}function Oe(){if(_===0)return[];let e=K.maxStackSize??re,t=[],r=(F-_+e)%e;for(let s=0;s<_;s++)t.push(Ve[(r+s)%e]);return t}function Ye(){if(K.trackErrors===!1||G===0)return[];let e=K.maxErrors??ce,t=[],r=(W-G+e)%e;for(let s=0;s<G;s++)t.push(He[(r+s)%e]);return t}function wt(){let e=Ye();return W=0,G=0,le=0,e}function jt(){return le}function Nt(){K={...Me},F=0,_=0,W=0,G=0,le=0,X=0}function Y(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,o]of e)if(!t.has(n)||!Y(o,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,o)=>Y(n,t[o]));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=>Y(e[n],t[n]))}function Ze(e,t){return!Y(e,t)}function Xe(e){return e===null?"null":typeof e}function Qe(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!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 et(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 o=n.path.split(".");return o[o.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 tt(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 Z(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 o=typeof n=="string"?n:void 0,i=o?`Expected ${t.description} for '${r}': ${o}`:`Expected ${t.description} but got ${ne(e)}`;return J(i,{path:r,expected:t.description,actual:ne(e),reason:o})}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 nt(e,t,r,s){if(typeof e!="function")return e;let n=e.__tjs;if(!n||!n.params)return e;let o=Object.entries(n.params);for(let i=0;i<t.length;i++){let l=t[i];if(l==="any")continue;let f=o[i];if(!f)continue;let p=f[1]?.type?.kind;if(!(!p||p==="any")&&p!==l)return new B(`Expected (...arg${i}: ${l}, ...) for '${s}', but callback declares arg${i} as ${p}`,`${s}(arg${i})`,l,p)}if(r!=="any"&&n.returns){let i=n.returns.type?.kind??n.returns.kind;if(i&&i!=="any"&&i!==r)return new B(`Expected callback returning ${r} for '${s}', but callback returns ${i}`,`${s}(return)`,r,i)}return e}function rt(e,t,r){for(let[s,n]of Object.entries(t.params)){let o=e[s];if(U(o))return o;if(n.required&&o===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(o===void 0)continue;let i=Z(o,n.type,r?`${r}.${s}`:s);if(i)return n.loc&&(i.loc=n.loc),i}return null}function st(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,o=!!t.safe,i=!!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=o||!n&&K.safety!=="none",m=s&&(l||!i&&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=Z(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=Z(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=Z(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 it(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 ot(){let e={...K},t=e.maxStackSize??re,r=new Array(t).fill(""),s=0,n=0,o=e.maxErrors??ce,i=new Array(o).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 q=N.get("Object");if(q?.has(S))return q.get(S)}function A(g,S,R){let C=R===null?"null":typeof R,L=e.callStacks||e.debug?m():void 0,q=new B(`Expected ${S} for '${g}', got ${C}`,g,S,C,L);if(e.trackErrors!==!1&&(i[l]=q,l=(l+1)%o,f<o&&f++,p++),e.logTypeErrors&&console.error(`[TJS TypeError] ${q.message}`),e.throwTypeErrors)throw q;return q}function D(){if(e.trackErrors===!1||f===0)return[];let g=[],S=(l-f+o)%o;for(let R=0;R<f;R++)g.push(i[(S+R)%o]);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:B,typeError:A,isMonadicError:Ae,bang:P,isError:U,error:x,composeErrors:Ke,typeOf:ne,isNativeType:tt,checkType:Z,validateArgs:rt,wrap:st,checkFnShape:nt,wrapClass:it,compareVersions:Fe,versionsCompatible:Ge,createRuntime:ot,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:z,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:Y,IsNot:Ze,Eq:Ce,NotEq:et,TypeOf:Xe,toBool:Qe,tjsEquals:te,registerExtension:$,resolveExtension:O}}var nn={version:ze,MonadicError:B,typeError:ht,isMonadicError:Ae,isError:U,error:J,composeErrors:Ke,typeOf:ne,isNativeType:tt,checkType:Z,validateArgs:rt,wrap:st,checkFnShape:nt,wrapClass:it,compareVersions:Fe,versionsCompatible:Ge,configure:$t,getConfig:Et,pushStack:We,popStack:oe,getStack:Oe,errors:Ye,clearErrors:wt,getErrorCount:jt,resetRuntime:Nt,enterUnsafe:St,exitUnsafe:bt,isUnsafeMode:kt,createRuntime:ot,validate:qe,infer:ae.infer.bind(ae),Type:v,isRuntimeType:z,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:Y,IsNot:Ze,Eq:Ce,NotEq:et,TypeOf:Xe,toBool:Qe};function at(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 Pt=20,ct=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 o=M(e.elementType,t);return o==="any"&&(o="null"),`[${o}]`}case u.SyntaxKind.TypeReference:{let n=e,o=n.typeName.getText();if(o==="Array"&&n.typeArguments?.length)return`[${M(n.typeArguments[0],t,r,s)}]`;if(o==="Promise"||o==="Generator"||o==="AsyncGenerator"||o==="IterableIterator"||o==="AsyncIterableIterator")return n.typeArguments?.length?M(n.typeArguments[0],t,r,s):"undefined";if(o==="Record")return"{}";let i={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(o in i)return i[o];if(s?.typeAliases?.has(o)){let l=s.visited??new Set;if(l.has(o))return r?.push(`Circular type reference '${o}' - using 'any'`),"any";l.add(o);let f=s.typeAliases.get(o);return M(f,t,r,{...s,visited:l})}if(s?.interfaces?.has(o)){let l=s.visited??new Set;if(l.has(o))return r?.push(`Circular type reference '${o}' - using 'any'`),"any";l.add(o);let f=s.interfaces.get(o),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(o)){let l=s.typeParams.get(o);if(l.constraint)return M(l.constraint,t,r,s);if(l.default)return M(l.default,t,r,s)}return ct.has(o)?"{}":/^[A-Z]$/.test(o)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(o)?(r?.push(`Generic type parameter '${o}' converted to 'any' - consider specializing`),"any"):(r?.push(`Unknown type '${o}' converted to 'any' - may need manual review`),"any")}case u.SyntaxKind.TypeLiteral:{let n=e,o=[];for(let i of n.members)if(u.isPropertySignature(i)&&i.name){let l=i.name.getText(),f=M(i.type,t);f==="any"&&(f="null"),o.push(`${l}: ${f}`)}return`{ ${o.join(", ")} }`}case u.SyntaxKind.UnionType:{let n=e,o=a=>a.kind===u.SyntaxKind.NullKeyword||u.isLiteralTypeNode(a)&&a.literal.kind===u.SyntaxKind.NullKeyword,i=a=>a.kind===u.SyntaxKind.UndefinedKeyword||u.isLiteralTypeNode(a)&&a.literal.kind===u.SyntaxKind.UndefinedKeyword,l=n.types.filter(a=>!o(a)&&!i(a)),f=n.types.some(o),p=n.types.some(i);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,o=[];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"),o.push(`${p}: ${c}`)}let i=M(n.type,t,r,s);i==="any"&&(i="null");let l=[];return o.length>0&&l.push(`params: { ${o.join(", ")} }`),i!=="undefined"&&l.push(`returns: ${i}`),`FunctionPredicate('function', { ${l.join(", ")} })`}case u.SyntaxKind.TupleType:return`[${e.elements.map(i=>{let l=u.isNamedTupleMember(i)?M(i.type,t):M(i,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>Pt)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 o of s.members)if(u.isPropertySignature(o)&&o.name){let i=o.name.getText();n[i]=I(o.type,t)}return{kind:"object",shape:n}}case u.SyntaxKind.UnionType:{let s=e,n=s.types.filter(i=>i.kind!==u.SyntaxKind.NullKeyword&&i.kind!==u.SyntaxKind.UndefinedKeyword),o=s.types.some(i=>i.kind===u.SyntaxKind.NullKeyword);return n.length===1&&o?{...I(n[0],t),nullable:!0}:{kind:"union",members:s.types.map(i=>I(i,t))}}case u.SyntaxKind.IntersectionType:{let s=e,n={};for(let o of s.types){let i=I(o,t);i.kind==="object"&&i.shape&&Object.assign(n,i.shape)}return Object.keys(n).length>0?{kind:"object",shape:n}:{kind:"any"}}case u.SyntaxKind.TupleType:{let s=e,n=[];for(let o of s.elements)u.isNamedTupleMember(o)?n.push(I(o.type,t)):n.push(I(o,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 o=I(s.typeArguments[0],t);if(n==="Partial"||n==="Required"||n==="Readonly")return o;if(n==="Record"&&s.typeArguments.length>=2)return{kind:"object",shape:{"[key]":I(s.typeArguments[1],t)}};if(n==="Pick"||n==="Omit")return o;if(n==="NonNullable")return o.nullable?{...o,nullable:!1}:o;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 o=t.visited??new Set;if(o.has(n))return{kind:"any"};o.add(n);let i=t.typeAliases.get(n),l=I(i,{...t,visited:o});return t.resolvedCache?.set(n,l),l}if(t?.interfaces?.has(n)){if(t.resolvedCache?.has(n))return t.resolvedCache.get(n);let o=t.visited??new Set;if(o.has(n))return{kind:"any"};o.add(n);let i=t.interfaces.get(n),l={};if(i.heritageClauses){for(let p of i.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)&&!o.has(a)){let y={kind:u.SyntaxKind.TypeReference,typeName:{getText:()=>a}},d=I(y,{...t,visited:o});d.kind==="object"&&d.shape&&Object.assign(l,d.shape)}}}for(let p of i.members)if(u.isPropertySignature(p)&&p.name){let c=p.name.getText(t.sourceFile);l[c]=I(p.type,{...t,visited:o})}let f={kind:"object",shape:l};return t.resolvedCache?.set(n,f),f}if(t?.typeParams?.has(n)){let o=t.typeParams.get(n);if(o.constraint)return I(o.constraint,t);if(o.default)return I(o.default,t)}return ct.has(n)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function Rt(e,t){if(!e.typeParameters||e.typeParameters.length===0)return;let r={};for(let s of e.typeParameters){let n=s.name.getText(),o={};if(s.constraint){let i=M(s.constraint,void 0,t);if(i.startsWith("{"))try{o.constraint=i}catch{o.constraint=i}else o.constraint=i}if(s.default){let i=M(s.default,void 0,t);o.default=i}r[n]=o}return Object.keys(r).length>0?r:void 0}function At(e,t,r,s){let n=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return Mt(e,t,r,s);let o=s?.find(p=>p.kind==="example"),i=s?.find(p=>p.kind==="predicate"),l;if(o?.text)l=o.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&&!i)return`Type ${n} {}`;l=p.length>0?`{ ${p.join(", ")} }`:"{}"}let f=[`example: ${l}`];return i?.text&&f.push(i.text),`Type ${n} {
|