tjs-lang 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +7 -1
- package/dist/index.js +111 -107
- package/dist/index.js.map +3 -3
- package/dist/src/lang/emitters/js-wasm.d.ts +2 -0
- package/dist/src/lang/parser-types.d.ts +7 -0
- package/dist/tjs-browser-from-ts.js +1 -1
- package/dist/tjs-browser-from-ts.js.map +1 -1
- package/dist/tjs-browser.js +93 -89
- package/dist/tjs-browser.js.map +3 -3
- package/dist/tjs-eval.js +14 -14
- package/dist/tjs-eval.js.map +2 -2
- package/dist/tjs-from-ts.js +1 -1
- package/dist/tjs-from-ts.js.map +1 -1
- package/dist/tjs-lang.js +94 -90
- package/dist/tjs-lang.js.map +3 -3
- package/dist/tjs-runtime.js +1 -1
- package/dist/tjs-runtime.js.map +1 -1
- package/dist/tjs-vm.js +2 -2
- package/dist/tjs-vm.js.map +2 -2
- package/docs/type-system-north-star.md +100 -0
- package/package.json +1 -1
- package/src/lang/emitters/js-wasm.ts +8 -4
- package/src/lang/emitters/js.ts +36 -11
- package/src/lang/parser-transforms.ts +4 -1
- package/src/lang/parser-types.ts +7 -0
- package/src/lang/parser.ts +9 -1
- package/src/lang/predicate-report.test.ts +24 -0
- package/src/lang/wasm-fallback-warning.test.ts +50 -0
- package/src/lang/wasm-intdiv-lint.test.ts +45 -0
- package/src/lang/wasm-ready.test.ts +94 -0
- package/src/lang/wasm-simd-ops.test.ts +84 -0
- package/src/lang/wasm.ts +61 -2
|
@@ -176,6 +176,13 @@ export interface TjsModes {
|
|
|
176
176
|
tjsNoVar: boolean;
|
|
177
177
|
/** TjsSafeAssign: let declarations need an initializer or `: example` annotation; literal undefined/null/void 0 assigned to typed lets is flagged */
|
|
178
178
|
tjsSafeAssign: boolean;
|
|
179
|
+
/**
|
|
180
|
+
* TjsStrict: the author explicitly opted into strict semantics (via the
|
|
181
|
+
* `TjsStrict` directive). Distinct from "all modes on" (native TJS's default) —
|
|
182
|
+
* only `true` when the directive is present. Escalates soft diagnostics (e.g. an
|
|
183
|
+
* unverifiable `Type`/`Generic` predicate) from a warning to a transpile error.
|
|
184
|
+
*/
|
|
185
|
+
tjsStrict: boolean;
|
|
179
186
|
}
|
|
180
187
|
/**
|
|
181
188
|
* Extension info for a single extend block
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var wt=Object.defineProperty;var Y=(e,t)=>()=>(e&&(t=e(e=0)),t);var Nt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Pt=(e,t)=>{for(var n in t)wt(e,n,{get:t[n],enumerable:!0})};function Be(){let e=globalThis[At];if(!e)throw new Error("TypeScript not loaded. Use fromTS() from tjs-lang/browser/from-ts, which lazy-loads the compiler before transpiling.");return e}var At,Ot,l,qe=Y(()=>{"use strict";At="__TJS_TS__";Ot=new Proxy({},{get:(e,t)=>Be()[t],has:(e,t)=>t in Be()}),l=Ot});function U(e,t,n){let s=t?.schema||t,r=typeof n=="function"?n:n?.onError,o=typeof n=="object"?n?.strict??n?.fullScan??!1:!1,i=[],u=p=>(r&&r(i.join(".")||"root",p),!1),f=(p,a)=>{if(a.anyOf){for(let d of a.anyOf)if(U(p,d))return!0;return u("Union mismatch")}if(a.const!==void 0)return p===a.const||u("Const mismatch");if(p===null){let d=a.type==="null"&&!a["x-tjs-undefined"],m=Array.isArray(a.type)&&a.type.includes("null");return d||m||!a.type||u("Expected value, got null")}if(p===void 0){let d=a.type==="null"&&a["x-tjs-undefined"],m=Array.isArray(a.type)&&a.type.includes("null");return d||m||!a.type||u("Expected value, got undefined")}let c=Array.isArray(a.type)?a.type[0]:a.type;if(a.enum&&!a.enum.includes(p))return u("Enum mismatch");if(c==="integer"){if(typeof p!="number"||!Number.isInteger(p))return u("Expected integer")}else if(c==="array"){if(!Array.isArray(p))return u("Expected array")}else if(c==="object"){if(typeof p!="object"||Array.isArray(p))return u("Expected object")}else if(c&&typeof p!==c)return u(`Expected ${c}`);if(a.$predicate&&Ge&&!Ge(a.$predicate,p))return u("Predicate mismatch");if(typeof p=="number"){if(!Number.isFinite(p))return u("Expected finite number");if(a.minimum!==void 0&&p<a.minimum)return u("Value < min");if(a.maximum!==void 0&&p>a.maximum)return u("Value > max");if(a.multipleOf!==void 0){let d=Math.abs(p%a.multipleOf),m=1e-10;if(d>1e-10&&Math.abs(d-Math.abs(a.multipleOf))>1e-10)return u("Value not step")}}if(typeof p=="string"){if(a.minLength!==void 0&&p.length<a.minLength)return u("Len < min");if(a.maxLength!==void 0&&p.length>a.maxLength)return u("Len > max");if(a.pattern&&!new RegExp(a.pattern,a.format==="emoji"?"u":"").test(p))return u("Pattern mismatch");if(a.format&&Ve[a.format]&&!Ve[a.format](p))return u("Format invalid")}if(c==="object"){let d=a.minProperties!==void 0,m=o&&a.maxProperties!==void 0;if(d||m){let h=0;for(let y in p)Object.prototype.hasOwnProperty.call(p,y)&&h++;if(d&&h<a.minProperties)return u("Too few props");if(m&&h>a.maxProperties)return u("Too many props")}if(a.required){for(let h of a.required)if(!(h in p))return u(`Missing ${h}`)}if(a.properties){for(let h in a.properties)if(h in p){i.push(h);let y=f(p[h],a.properties[h]);if(i.pop(),!y)return!1}}if(a.additionalProperties){let h=[];for(let k in p)a.properties&&k in a.properties||h.push(k);let y=h.length,x=o||y<=ce?1:Math.floor(y/ce);for(let k=0;k<y;k+=x){let j=x>1&&k>y-1-x?y-1:k,w=h[j];i.push(w);let N=f(p[w],a.additionalProperties);if(i.pop(),!N)return!1;if(j===y-1)break}}return!0}if(c==="array"&&a.items){let d=p.length;if(a.minItems!==void 0&&d<a.minItems)return u("Array too short");if(a.maxItems!==void 0&&d>a.maxItems)return u("Array too long");if(Array.isArray(a.items)){for(let h=0;h<a.items.length;h++){if(i.push(String(h)),!f(p[h],a.items[h]))return i.pop(),!1;i.pop()}return!0}let m=o||d<=ce?1:Math.floor(d/ce);for(let h=0;h<d;h+=m){let y=m>1&&h>d-1-m?d-1:h;i.push(String(y));let x=f(p[y],a.items);if(i.pop(),!x)return!1;if(y===d-1)break}return!0}return!0};return f(e,s)}function ze(e,t,n){let s=t?.schema||t,r=typeof n=="function"?n:n?.onError,o=typeof n=="object"?n?.strict??n?.fullScan??!1:!1;if(!(typeof n=="object"&&n?.skipValidation)){let i="",u="";if(!U(e,s,{onError:(f,p)=>{i||(i=f,u=p),r&&r(f,p)},fullScan:o}))return Error(`${i}: ${u}`)}return le(e,s)}function le(e,t){if(e==null)return e;let n=t.type;if(n==="object"&&t.properties&&typeof e=="object"&&!Array.isArray(e)){let s={};for(let r of Object.keys(t.properties))r in e&&(s[r]=le(e[r],t.properties[r]));return s}return n==="array"&&Array.isArray(e)&&t.items?Array.isArray(t.items)?e.slice(0,t.items.length).map((s,r)=>le(s,t.items[r])):e.map(s=>le(s,t.items)):e}var E,Ge,Te,J,ce,Ve,he=Y(()=>{E=e=>({schema:e,_type:null,validate:(t,n)=>U(t,e,n),get optional(){return E({...e,type:Array.isArray(e.type)?[...e.type,"null"]:[e.type,"null"]})},title:t=>E({...e,title:t}),describe:t=>E({...e,description:t}),default:t=>E({...e,default:t}),meta:t=>E({...t,...e,...t}),min:t=>{let n=e.type==="string"?"minLength":e.type==="array"?"minItems":e.type==="object"?"minProperties":"minimum";return E({...e,[n]:t})},max:t=>{let n=e.type==="string"?"maxLength":e.type==="array"?"maxItems":e.type==="object"?"maxProperties":"maximum";return E({...e,[n]:t})},pattern:t=>E({...e,pattern:typeof t=="string"?t:t.source}),get email(){return E({...e,format:"email"})},get uuid(){return E({...e,format:"uuid"})},get ipv4(){return E({...e,format:"ipv4"})},get url(){return E({...e,format:"uri"})},get datetime(){return E({...e,format:"date-time"})},get emoji(){return E({...e,pattern:"^\\p{Extended_Pictographic}+$",format:"emoji"})},get int(){return E({...e,type:"integer"})},step:t=>E({...e,multipleOf:t})}),Ge=null,Te={get email(){return E({type:"string",format:"email"})},get uuid(){return E({type:"string",format:"uuid"})},get ipv4(){return E({type:"string",format:"ipv4"})},get url(){return E({type:"string",format:"uri"})},get datetime(){return E({type:"string",format:"date-time"})},get emoji(){return E({type:"string",pattern:"^\\p{Extended_Pictographic}+$",format:"emoji"})},get null(){return E({type:"null"})},get undefined(){return E({type:"null","x-tjs-undefined":!0})},get any(){return E({})},pattern:e=>E({type:"string",pattern:typeof e=="string"?e:e.source}),union:e=>E({anyOf:e.map(t=>t.schema)}),enum:e=>E({type:typeof e[0],enum:e}),const:e=>E({const:e}),array:e=>E({type:"array",items:e.schema}),tuple:e=>E({type:"array",items:e.map(t=>t.schema),minItems:e.length,maxItems:e.length}),object:e=>{let t={},n=[];for(let s in e)t[s]=e[s].schema,(!Array.isArray(t[s].type)||!t[s].type.includes("null"))&&n.push(s);return E({type:"object",properties:t,required:n,additionalProperties:!1})},record:e=>E({type:"object",additionalProperties:e.schema}),infer:e=>{if(e===null)return E({type:"null"});if(e===void 0)return E({type:"null","x-tjs-undefined":!0});let t=typeof e;if(t==="string")return E({type:"string"});if(t==="number")return E({type:Number.isInteger(e)?"integer":"number"});if(t==="boolean")return E({type:"boolean"});if(Array.isArray(e))return e.length===0?E({type:"array"}):E({type:"array",items:Te.infer(e[0]).schema});if(t==="object"){let n={},s=[];for(let r in e)n[r]=Te.infer(e[r]).schema,s.push(r);return E({type:"object",properties:n,required:s,additionalProperties:!1})}return E({})}},J=new Proxy(Te,{get(e,t){if(t in e)return e[t];if(t==="string"||t==="number"||t==="boolean"||t==="integer"){let n=E({type:t});return e[t]=n,n}}}),ce=97,Ve={email:e=>/^\S+@\S+\.\S+$/.test(e),uuid:e=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e),uri:e=>{try{return new URL(e),!0}catch{return!1}},ipv4:e=>/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e),"date-time":e=>!isNaN(Date.parse(e)),emoji:e=>new RegExp("\\p{Extended_Pictographic}","u").test(e)}});function X(e){if(e.nullable)return{anyOf:[X({...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:X(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[s,r]of Object.entries(e.shape))t[s]=X(r),n.push(s);return{type:"object",properties:t,required:n,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(X)}:{};default:return{}}}function Z(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:Z(e[0])};let t={},n=[];for(let[s,r]of Object.entries(e))t[s]=Z(r),n.push(s);return{type:"object",properties:t,required:n,additionalProperties:!1}}default:return{}}}function xe(e){let t={},n=[];for(let[o,i]of Object.entries(e.params))i?.type?.kind?t[o]=X(i.type):i?.example!==void 0?t[o]=Z(i.example):t[o]={},i?.required!==!1&&n.push(o),i?.example!==void 0&&(t[o].examples=[i.example]);let s={type:"object",properties:t,required:n},r;return e.returns&&(e.returns.type?.kind?r=X(e.returns.type):e.returns.example!==void 0&&(r=Z(e.returns.example))),{input:s,output:r}}var be=Y(()=>{"use strict"});function z(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function He(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function Rt(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function L(e,t,n,s){let r,o,i,u=n,f=s;if(typeof e=="string")if(r=e,typeof t=="function")o=t,u!==void 0&&(i=J.infer(u));else if(t===void 0&&u!==void 0)i=J.infer(u);else if(He(t))i=t;else if(Rt(t))i=t;else if(t!==void 0)u=t,f=u,i=J.infer(u);else throw new Error("Type(description) requires a predicate, schema, or example");else He(e),i=e,r=Mt(i);let p;if(i){let c=i?.schema??i;c&&typeof c=="object"&&Array.isArray(c.examples)&&(p=c.examples)}return u===void 0&&p&&p.length>0&&(u=p[0]),{description:r,check:c=>o?o(c):i?U(c,i):!1,schema:i,predicate:o,example:u,examples:p,default:f,toJSONSchema(){if(i){let c=i?.schema??i;if(c&&typeof c=="object"&&"type"in c)return c}return u!==void 0?Z(u):{description:r}},strip(c){return i?ze(c,i):c},__runtimeType:!0}}function Mt(e){let t=e?.schema??e;if(t&&typeof t=="object"&&"type"in t){let n=t;switch(n.type){case"string":return n.format?`string (${n.format})`:n.pattern?`string matching ${n.pattern}`:n.minLength!==void 0&&n.maxLength!==void 0?`string (${n.minLength}-${n.maxLength} chars)`:"string";case"number":case"integer":return n.minimum!==void 0&&n.maximum!==void 0?`${n.type} (${n.minimum}-${n.maximum})`:n.minimum!==void 0?`${n.type} >= ${n.minimum}`:n.maximum!==void 0?`${n.type} <= ${n.maximum}`:n.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}function Oe(e){return L(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function Re(e){return L(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function Me(e,t,...n){if(typeof e=="string"&&Array.isArray(t)){let o=e,i=t,u=new Set(i);return{description:o,check:p=>u.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(...n);let r=s.map(o=>o.description).join(" | ");return L(r,o=>s.some(i=>i.check(o)===!0))}function ve(e){return L(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function vt(e){if(z(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>U(n,e);let t=J.infer(e);return n=>U(n,t)}function se(e,t,n){let s=[],r=[];for(let i of e)typeof i=="string"?(s.push(i),r.push(void 0)):(s.push(i[0]),r.push(i[1]));let o=(...i)=>{let u=s.map((p,a)=>{let c=a<i.length?i[a]:r[a];return c===void 0?()=>!0:vt(c)}),f=n;return s.forEach((p,a)=>{let c=a<i.length?i[a]:r[a],d="any";z(c)?d=c.description:c!==void 0&&(d=typeof c=="string"?"string":JSON.stringify(c)),f=f.replace(new RegExp(`\\b${p}\\b`,"g"),d)}),L(f,p=>t(p,...u))};return o.params=s,o.description=n,o}function Ie(e,t){let n=Object.values(t),s=new Set(n),r=Object.keys(t),o={};for(let[u,f]of Object.entries(t))o[f]=u;return{description:e,check:u=>s.has(u),toJSONSchema:()=>({enum:n}),strip:u=>u,__runtimeType:!0,members:t,names:o,values:n,keys:r}}function Ct(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 pe(e,t,n){if(Array.isArray(t)&&n){let s=t,r=[],o=[];for(let u of s)Array.isArray(u)?(r.push(u[0]),o.push(u[1])):(r.push(u),o.push(void 0));let i=((...u)=>{let f=r.map((a,c)=>c<u.length?u[c]:o[c]),p=n(...f);return pe(e,p)});return Object.defineProperties(i,{typeParamNames:{value:r,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),i}return Kt(e,t)}function Kt(e,t){let n={},s,r="assertReturns";if(typeof t=="function"){let i=t.__tjs;if(i){if(i.params)for(let[u,f]of Object.entries(i.params))n[u]=f?.example??null;i.returns&&(s=i.returns?.example??null),i.safeReturn?r="checkedReturns":i.unsafe?r="assertReturns":r="returns"}}else n=t.params??{},s=t.returns,r=t.returnContract??"assertReturns";return{description:e,params:n,returns:s,returnContract:r,toJSONSchema:()=>({description:e,type:"function"}),strip:i=>i,check:i=>{if(typeof i!="function")return`expected function, got ${i===null?"null":typeof i}`;let u=Object.keys(n).length;if(u>0){let p=i.__tjs;if(p?.params){let a=Object.keys(p.params).length;if(a!==u)return`expected ${u} params, got ${a}`;let c=Object.keys(n),d=Object.keys(p.params);for(let m=0;m<c.length;m++){let h=p.params[d[m]],y=n[c[m]];if(h?.type?.kind&&y!==void 0){let x=Ct(y);if(x&&h.type.kind!==x&&h.type.kind!=="any")return`param '${c[m]}' expected ${x}, got ${h.type.kind}`}}}}return!0},__runtimeType:!0}}var Se,ke,$e,Ee,je,we,Ne,We,Pe,Ae,Ye,Xe,Ze,Qe,Ce,Ke,et=Y(()=>{"use strict";he();be();Se=L("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),ke=L("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),$e=L("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),Ee=L("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),je=L("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`),we=L("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),Ne=L("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`),We=e=>{try{return new URL(e),!0}catch{return!1}},Pe=L("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:We(e)?!0:`"${e}" is not a valid URL`),Ae=L("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`),Ye=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},Xe=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},Ze=L("ISO 8601 timestamp",e=>typeof e=="string"&&Ye(e)),Qe=L("date (YYYY-MM-DD)",e=>typeof e=="string"&&Xe(e));Ce=se(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),Ke=se(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>")});var tt=Nt(($n,It)=>{It.exports={name:"tjs-lang",version:"0.9.0",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],browser:["./dist/src/lang/browser.d.ts"],"browser/from-ts":["./dist/src/lang/browser-from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"],css:["./dist/src/css/index.d.ts"],schema:["./dist/src/schema/index.d.ts"],runtime:["./dist/src/lang/runtime.d.ts"]}},exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./browser":{types:"./dist/src/lang/browser.d.ts",default:"./dist/tjs-browser.js"},"./browser/from-ts":{types:"./dist/src/lang/browser-from-ts.d.ts",default:"./dist/tjs-browser-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.js"},"./css":{bun:"./src/css/index.ts",types:"./dist/src/css/index.d.ts",default:"./dist/tjs-css.js"},"./schema":{bun:"./src/schema/index.ts",types:"./dist/src/schema/index.d.ts",default:"./dist/tjs-schema.js"},"./runtime":{bun:"./src/lang/runtime.ts",types:"./dist/src/lang/runtime.d.ts",default:"./dist/tjs-runtime.js"},"./bun-plugin":{bun:"./src/bun-plugin/tjs-plugin.ts"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md","llms.txt"],sideEffects:["./src/schema/index.ts","./dist/tjs-schema.js"],repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","build:editors":"bun scripts/build-editors.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && bun run build:editors && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-loose":"^8.5.2","acorn-walk":"^8.3.4","tosijs-schema":"^1.4.0"}}});function me(e){let[t=0,n=0,s=0]=e.split(".").map(Number);return{major:t,minor:n,patch:s}}function rt(e,t){let n=me(e),s=me(t);return n.major!==s.major?n.major<s.major?-1:1:n.minor!==s.minor?n.minor<s.minor?-1:1:n.patch!==s.patch?n.patch<s.patch?-1:1:0}function st(e,t){let n=me(e),s=me(t);return n.major===s.major}function Dt(e,t,n,s){let r=n===null?"null":typeof n,o=K.callStacks||K.debug?_e():void 0,i=s?`Expected ${t} for '${e}': ${s}`:`Expected ${t} for '${e}', got ${r}`,u=new G(i,e,t,r,o,s);if(K.trackErrors!==!1){let f=K.maxErrors??de;ot[Q]=u,Q=(Q+1)%f,W<f&&W++,ye++}if(K.logTypeErrors&&console.error(`[TJS TypeError] ${u.message}`),K.throwTypeErrors)throw u;return u}function Le(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}function _t(){ne++}function Jt(){ne>0&&ne--}function Ut(){return ne>0}function Ft(e){K={...K,...e}}function Bt(){return{...K}}function at(e){if((K.callStacks||K.debug)&&e){let t=K.maxStackSize??ae;it[H]=e,H=(H+1)%t,F<t&&F++}}function fe(){if((K.callStacks||K.debug)&&F>0){let e=K.maxStackSize??ae;H=(H-1+e)%e,F--}}function _e(){if(F===0)return[];let e=K.maxStackSize??ae,t=[],n=(H-F+e)%e;for(let s=0;s<F;s++)t.push(it[(n+s)%e]);return t}function ut(){if(K.trackErrors===!1||W===0)return[];let e=K.maxErrors??de,t=[],n=(Q-W+e)%e;for(let s=0;s<W;s++)t.push(ot[(n+s)%e]);return t}function qt(){let e=ut();return Q=0,W=0,ye=0,e}function Gt(){return ye}function Vt(){K={...De},H=0,F=0,Q=0,W=0,ye=0,ne=0}function ee(e,t){if(e!==null&&typeof e=="object"&&typeof e[ie]=="function")return e[ie](t);if(t!==null&&typeof t=="object"&&typeof t[ie]=="function")return t[ie](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 r of e)if(!t.has(r))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[r,o]of e)if(!t.has(r)||!ee(o,t.get(r)))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((r,o)=>ee(r,t[o]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),s=Object.keys(t);return n.length!==s.length?!1:n.every(r=>ee(e[r],t[r]))}function ct(e,t){return!ee(e,t)}function lt(e){return e===null?"null":typeof e}function pt(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function Je(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 ft(e,t){return!Je(e,t)}function q(e){return e!==null&&typeof e=="object"&&e.$error===!0}function B(e,t){let n={$error:!0,message:e,...t};if((K.callStacks||K.debug)&&F>0){let s=_e(),r=t?.path?[...s,t.path]:s;n.stack=r}return n}function Ue(e,t){if(e.length===0)return B("Unknown error");if(e.length===1)return e[0];let n=e.map(r=>{if(r.path){let o=r.path.split(".");return o[o.length-1]}return"unknown"}).join(", "),s=`Multiple parameter errors in ${t||"function"}: ${n}`;return B(s,{path:t,errors:e})}function oe(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let t=typeof e;if(t!=="object")return t;let n=e.constructor?.name;return n&&n!=="Object"?n:"object"}function mt(e,t){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let n=e;for(;n!==null;){if(n.constructor?.name===t)return!0;n=Object.getPrototypeOf(n)}return!1}function te(e,t,n){if(q(e))return e;if(typeof t=="object"&&t!==null&&"check"in t){let r=t.check(e);if(r===!0)return null;let o=typeof r=="string"?r:void 0,i=o?`Expected ${t.description} for '${n}': ${o}`:`Expected ${t.description} but got ${oe(e)}`;return B(i,{path:n,expected:t.description,actual:oe(e),reason:o})}let s=oe(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:B(`Expected ${t} but got ${s}`,{path:n,expected:t,actual:s})}function dt(e,t,n,s){if(typeof e!="function")return e;let r=e.__tjs;if(!r||!r.params)return e;let o=Object.entries(r.params);for(let i=0;i<t.length;i++){let u=t[i];if(u==="any")continue;let f=o[i];if(!f)continue;let p=f[1]?.type?.kind;if(!(!p||p==="any")&&p!==u)return new G(`Expected (...arg${i}: ${u}, ...) for '${s}', but callback declares arg${i} as ${p}`,`${s}(arg${i})`,u,p)}if(n!=="any"&&r.returns){let i=r.returns.type?.kind??r.returns.kind;if(i&&i!=="any"&&i!==n)return new G(`Expected callback returning ${n} for '${s}', but callback returns ${i}`,`${s}(return)`,n,i)}return e}function yt(e,t,n){for(let[s,r]of Object.entries(t.params)){let o=e[s];if(q(o))return o;if(r.required&&o===void 0){let u=typeof r.type=="string"?r.type:r.type.description;return B(`Missing required parameter '${s}'`,{path:n?`${n}.${s}`:s,expected:u,actual:"undefined",loc:r.loc})}if(o===void 0)continue;let i=te(o,r.type,n?`${n}.${s}`:s);if(i)return r.loc&&(i.loc=r.loc),i}return null}function gt(e,t){if(e.__tjs=t,e.__tjs.schema=()=>xe(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,r=!!t.unsafe,o=!!t.safe,i=!!t.unsafeReturn,u=!!t.safeReturn,f=t.returns?.defaults,p=Object.entries(t.params),a=p.length,c=e.name||t.name||"anonymous",d=function(...m){if(ne>0)return e.apply(this,m);let h=o||!r&&K.safety!=="none",y=s&&(u||!i&&K.safety==="all");if(!h&&!y)return e.apply(this,m);if(m.length>0&&q(m[0]))return m[0];if(h){let k=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),j=[];if(k){let w=m[0];for(let N=0;N<a;N++){let[P,v]=p[N],M=w[P];if(q(M)){j.push(M);continue}if(v.required&&M===void 0){j.push(B(`Missing required parameter '${P}'`,{path:`${c}.${P}`,expected:typeof v.type=="string"?v.type:v.type?.description||"value",actual:"undefined",loc:v.loc}));continue}if(M!==void 0){let D=te(M,v.type,`${c}.${P}`);D&&(v.loc&&(D.loc=v.loc),j.push(D))}}}else for(let w=0;w<a;w++){let[N,P]=p[w],v=m[w];if(q(v)){j.push(v);continue}if(P.required&&v===void 0){j.push(B(`Missing required parameter '${N}'`,{path:`${c}.${N}`,expected:typeof P.type=="string"?P.type:P.type?.description||"value",actual:"undefined",loc:P.loc}));continue}if(v!==void 0){let M=te(v,P.type,`${c}.${N}`);M&&(P.loc&&(M.loc=P.loc),j.push(M))}}if(j.length>0)return Ue(j,c)}let x=K.callStacks||K.debug;x&&at(c);try{let k=e.apply(this,m);if(y&&t.returns&&!q(k)){let j=f&&typeof k=="object"&&k!==null?Object.assign({},f,k):k,w=te(j,t.returns.type,`${c}()`);if(w)return x&&fe(),w}return x&&fe(),k}catch(k){return x&&fe(),B(k.message||String(k),{path:c,cause:k})}};return Object.defineProperty(d,"name",{value:e.name}),d.__tjs=t,d.__tjs.schema=()=>xe(t),d}function Tt(e){let t=new Proxy(e,{construct(n,s,r){return Reflect.construct(n,s,r)},apply(n,s,r){return Reflect.construct(n,r)}});Object.defineProperty(t,"name",{value:e.name});for(let n of Object.getOwnPropertyNames(e))n!=="length"&&n!=="name"&&n!=="prototype"&&Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n));return t}function ht(){let e={...K},t=e.maxStackSize??ae,n=new Array(t).fill(""),s=0,r=0,o=e.maxErrors??de,i=new Array(o).fill(null),u=0,f=0,p=0,a=0;function c(g){e={...e,...g}}function d(){return{...e}}function m(g){(e.callStacks||e.debug)&&g&&(n[s]=g,s=(s+1)%t,r<t&&r++)}function h(){(e.callStacks||e.debug)&&r>0&&(s=(s-1+t)%t,r--)}function y(){if(r===0)return[];let g=[],S=(s-r+t)%t;for(let R=0;R<r;R++)g.push(n[(S+R)%t]);return g}function x(){e={...De},s=0,r=0,u=0,f=0,p=0,a=0}function k(){a++}function j(){a>0&&a--}function w(){return a>0}let N=new Map;function P(g,S,R){N.has(g)||N.set(g,new Map),N.get(g).set(S,R)}function v(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 _=C;for(;_;){let Fe=N.get(_);if(Fe?.has(S))return Fe.get(S);if(R==="object"&&!Array.isArray(g)){if(_=Object.getPrototypeOf(_===C?g:Object.getPrototypeOf(g))?.constructor?.name,_==="Object"||_===C)break}else break}let V=N.get("Object");if(V?.has(S))return V.get(S)}function M(g,S,R){let C=R===null?"null":typeof R,_=e.callStacks||e.debug?y():void 0,V=new G(`Expected ${S} for '${g}', got ${C}`,g,S,C,_);if(e.trackErrors!==!1&&(i[u]=V,u=(u+1)%o,f<o&&f++,p++),e.logTypeErrors&&console.error(`[TJS TypeError] ${V.message}`),e.throwTypeErrors)throw V;return V}function D(){if(e.trackErrors===!1||f===0)return[];let g=[],S=(u-f+o)%o;for(let R=0;R<f;R++)g.push(i[(S+R)%o]);return g}function T(){let g=D();return u=0,f=0,p=0,g}function $(){return p}function b(g,S){let R={$error:!0,message:g,...S};if((e.callStacks||e.debug)&&r>0){let C=S?.path?[...y(),S.path]:y();R.stack=C}return R}function O(g,S){return g==null?M(`bang.${S}`,"non-null",g):Le(g)?g:g[S]}return{version:nt,MonadicError:G,typeError:M,isMonadicError:Le,bang:O,isError:q,error:b,composeErrors:Ue,typeOf:oe,isNativeType:mt,checkType:te,validateArgs:yt,wrap:gt,checkFnShape:dt,wrapClass:Tt,compareVersions:rt,versionsCompatible:st,createRuntime:ht,configure:c,getConfig:d,pushStack:m,popStack:h,getStack:y,errors:D,clearErrors:T,getErrorCount:$,resetRuntime:x,enterUnsafe:k,exitUnsafe:j,isUnsafeMode:w,validate:U,infer:J.infer.bind(J),Type:L,isRuntimeType:z,Union:Me,Generic:se,Enum:Ie,FunctionPredicate:pe,Nullable:Oe,Optional:Re,TArray:ve,TString:Se,TNumber:ke,TBoolean:$e,TInteger:Ee,TPositiveInt:je,TNonEmptyString:we,TEmail:Ne,TUrl:Pe,TUuid:Ae,TPair:Ce,TRecord:Ke,Is:ee,IsNot:ct,Eq:Je,NotEq:ft,TypeOf:lt,toBool:pt,tjsEquals:ie,registerExtension:P,resolveExtension:v}}function xt(e){return`
|
|
1
|
+
var wt=Object.defineProperty;var Y=(e,t)=>()=>(e&&(t=e(e=0)),t);var Nt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Pt=(e,t)=>{for(var n in t)wt(e,n,{get:t[n],enumerable:!0})};function Be(){let e=globalThis[At];if(!e)throw new Error("TypeScript not loaded. Use fromTS() from tjs-lang/browser/from-ts, which lazy-loads the compiler before transpiling.");return e}var At,Ot,l,qe=Y(()=>{"use strict";At="__TJS_TS__";Ot=new Proxy({},{get:(e,t)=>Be()[t],has:(e,t)=>t in Be()}),l=Ot});function U(e,t,n){let s=t?.schema||t,r=typeof n=="function"?n:n?.onError,o=typeof n=="object"?n?.strict??n?.fullScan??!1:!1,i=[],u=p=>(r&&r(i.join(".")||"root",p),!1),f=(p,a)=>{if(a.anyOf){for(let d of a.anyOf)if(U(p,d))return!0;return u("Union mismatch")}if(a.const!==void 0)return p===a.const||u("Const mismatch");if(p===null){let d=a.type==="null"&&!a["x-tjs-undefined"],m=Array.isArray(a.type)&&a.type.includes("null");return d||m||!a.type||u("Expected value, got null")}if(p===void 0){let d=a.type==="null"&&a["x-tjs-undefined"],m=Array.isArray(a.type)&&a.type.includes("null");return d||m||!a.type||u("Expected value, got undefined")}let c=Array.isArray(a.type)?a.type[0]:a.type;if(a.enum&&!a.enum.includes(p))return u("Enum mismatch");if(c==="integer"){if(typeof p!="number"||!Number.isInteger(p))return u("Expected integer")}else if(c==="array"){if(!Array.isArray(p))return u("Expected array")}else if(c==="object"){if(typeof p!="object"||Array.isArray(p))return u("Expected object")}else if(c&&typeof p!==c)return u(`Expected ${c}`);if(a.$predicate&&Ge&&!Ge(a.$predicate,p))return u("Predicate mismatch");if(typeof p=="number"){if(!Number.isFinite(p))return u("Expected finite number");if(a.minimum!==void 0&&p<a.minimum)return u("Value < min");if(a.maximum!==void 0&&p>a.maximum)return u("Value > max");if(a.multipleOf!==void 0){let d=Math.abs(p%a.multipleOf),m=1e-10;if(d>1e-10&&Math.abs(d-Math.abs(a.multipleOf))>1e-10)return u("Value not step")}}if(typeof p=="string"){if(a.minLength!==void 0&&p.length<a.minLength)return u("Len < min");if(a.maxLength!==void 0&&p.length>a.maxLength)return u("Len > max");if(a.pattern&&!new RegExp(a.pattern,a.format==="emoji"?"u":"").test(p))return u("Pattern mismatch");if(a.format&&Ve[a.format]&&!Ve[a.format](p))return u("Format invalid")}if(c==="object"){let d=a.minProperties!==void 0,m=o&&a.maxProperties!==void 0;if(d||m){let h=0;for(let y in p)Object.prototype.hasOwnProperty.call(p,y)&&h++;if(d&&h<a.minProperties)return u("Too few props");if(m&&h>a.maxProperties)return u("Too many props")}if(a.required){for(let h of a.required)if(!(h in p))return u(`Missing ${h}`)}if(a.properties){for(let h in a.properties)if(h in p){i.push(h);let y=f(p[h],a.properties[h]);if(i.pop(),!y)return!1}}if(a.additionalProperties){let h=[];for(let k in p)a.properties&&k in a.properties||h.push(k);let y=h.length,x=o||y<=ce?1:Math.floor(y/ce);for(let k=0;k<y;k+=x){let j=x>1&&k>y-1-x?y-1:k,w=h[j];i.push(w);let N=f(p[w],a.additionalProperties);if(i.pop(),!N)return!1;if(j===y-1)break}}return!0}if(c==="array"&&a.items){let d=p.length;if(a.minItems!==void 0&&d<a.minItems)return u("Array too short");if(a.maxItems!==void 0&&d>a.maxItems)return u("Array too long");if(Array.isArray(a.items)){for(let h=0;h<a.items.length;h++){if(i.push(String(h)),!f(p[h],a.items[h]))return i.pop(),!1;i.pop()}return!0}let m=o||d<=ce?1:Math.floor(d/ce);for(let h=0;h<d;h+=m){let y=m>1&&h>d-1-m?d-1:h;i.push(String(y));let x=f(p[y],a.items);if(i.pop(),!x)return!1;if(y===d-1)break}return!0}return!0};return f(e,s)}function ze(e,t,n){let s=t?.schema||t,r=typeof n=="function"?n:n?.onError,o=typeof n=="object"?n?.strict??n?.fullScan??!1:!1;if(!(typeof n=="object"&&n?.skipValidation)){let i="",u="";if(!U(e,s,{onError:(f,p)=>{i||(i=f,u=p),r&&r(f,p)},fullScan:o}))return Error(`${i}: ${u}`)}return le(e,s)}function le(e,t){if(e==null)return e;let n=t.type;if(n==="object"&&t.properties&&typeof e=="object"&&!Array.isArray(e)){let s={};for(let r of Object.keys(t.properties))r in e&&(s[r]=le(e[r],t.properties[r]));return s}return n==="array"&&Array.isArray(e)&&t.items?Array.isArray(t.items)?e.slice(0,t.items.length).map((s,r)=>le(s,t.items[r])):e.map(s=>le(s,t.items)):e}var E,Ge,Te,J,ce,Ve,he=Y(()=>{E=e=>({schema:e,_type:null,validate:(t,n)=>U(t,e,n),get optional(){return E({...e,type:Array.isArray(e.type)?[...e.type,"null"]:[e.type,"null"]})},title:t=>E({...e,title:t}),describe:t=>E({...e,description:t}),default:t=>E({...e,default:t}),meta:t=>E({...t,...e,...t}),min:t=>{let n=e.type==="string"?"minLength":e.type==="array"?"minItems":e.type==="object"?"minProperties":"minimum";return E({...e,[n]:t})},max:t=>{let n=e.type==="string"?"maxLength":e.type==="array"?"maxItems":e.type==="object"?"maxProperties":"maximum";return E({...e,[n]:t})},pattern:t=>E({...e,pattern:typeof t=="string"?t:t.source}),get email(){return E({...e,format:"email"})},get uuid(){return E({...e,format:"uuid"})},get ipv4(){return E({...e,format:"ipv4"})},get url(){return E({...e,format:"uri"})},get datetime(){return E({...e,format:"date-time"})},get emoji(){return E({...e,pattern:"^\\p{Extended_Pictographic}+$",format:"emoji"})},get int(){return E({...e,type:"integer"})},step:t=>E({...e,multipleOf:t})}),Ge=null,Te={get email(){return E({type:"string",format:"email"})},get uuid(){return E({type:"string",format:"uuid"})},get ipv4(){return E({type:"string",format:"ipv4"})},get url(){return E({type:"string",format:"uri"})},get datetime(){return E({type:"string",format:"date-time"})},get emoji(){return E({type:"string",pattern:"^\\p{Extended_Pictographic}+$",format:"emoji"})},get null(){return E({type:"null"})},get undefined(){return E({type:"null","x-tjs-undefined":!0})},get any(){return E({})},pattern:e=>E({type:"string",pattern:typeof e=="string"?e:e.source}),union:e=>E({anyOf:e.map(t=>t.schema)}),enum:e=>E({type:typeof e[0],enum:e}),const:e=>E({const:e}),array:e=>E({type:"array",items:e.schema}),tuple:e=>E({type:"array",items:e.map(t=>t.schema),minItems:e.length,maxItems:e.length}),object:e=>{let t={},n=[];for(let s in e)t[s]=e[s].schema,(!Array.isArray(t[s].type)||!t[s].type.includes("null"))&&n.push(s);return E({type:"object",properties:t,required:n,additionalProperties:!1})},record:e=>E({type:"object",additionalProperties:e.schema}),infer:e=>{if(e===null)return E({type:"null"});if(e===void 0)return E({type:"null","x-tjs-undefined":!0});let t=typeof e;if(t==="string")return E({type:"string"});if(t==="number")return E({type:Number.isInteger(e)?"integer":"number"});if(t==="boolean")return E({type:"boolean"});if(Array.isArray(e))return e.length===0?E({type:"array"}):E({type:"array",items:Te.infer(e[0]).schema});if(t==="object"){let n={},s=[];for(let r in e)n[r]=Te.infer(e[r]).schema,s.push(r);return E({type:"object",properties:n,required:s,additionalProperties:!1})}return E({})}},J=new Proxy(Te,{get(e,t){if(t in e)return e[t];if(t==="string"||t==="number"||t==="boolean"||t==="integer"){let n=E({type:t});return e[t]=n,n}}}),ce=97,Ve={email:e=>/^\S+@\S+\.\S+$/.test(e),uuid:e=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e),uri:e=>{try{return new URL(e),!0}catch{return!1}},ipv4:e=>/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e),"date-time":e=>!isNaN(Date.parse(e)),emoji:e=>new RegExp("\\p{Extended_Pictographic}","u").test(e)}});function X(e){if(e.nullable)return{anyOf:[X({...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:X(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[s,r]of Object.entries(e.shape))t[s]=X(r),n.push(s);return{type:"object",properties:t,required:n,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(X)}:{};default:return{}}}function Z(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:Z(e[0])};let t={},n=[];for(let[s,r]of Object.entries(e))t[s]=Z(r),n.push(s);return{type:"object",properties:t,required:n,additionalProperties:!1}}default:return{}}}function xe(e){let t={},n=[];for(let[o,i]of Object.entries(e.params))i?.type?.kind?t[o]=X(i.type):i?.example!==void 0?t[o]=Z(i.example):t[o]={},i?.required!==!1&&n.push(o),i?.example!==void 0&&(t[o].examples=[i.example]);let s={type:"object",properties:t,required:n},r;return e.returns&&(e.returns.type?.kind?r=X(e.returns.type):e.returns.example!==void 0&&(r=Z(e.returns.example))),{input:s,output:r}}var be=Y(()=>{"use strict"});function z(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function He(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function Rt(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function L(e,t,n,s){let r,o,i,u=n,f=s;if(typeof e=="string")if(r=e,typeof t=="function")o=t,u!==void 0&&(i=J.infer(u));else if(t===void 0&&u!==void 0)i=J.infer(u);else if(He(t))i=t;else if(Rt(t))i=t;else if(t!==void 0)u=t,f=u,i=J.infer(u);else throw new Error("Type(description) requires a predicate, schema, or example");else He(e),i=e,r=Mt(i);let p;if(i){let c=i?.schema??i;c&&typeof c=="object"&&Array.isArray(c.examples)&&(p=c.examples)}return u===void 0&&p&&p.length>0&&(u=p[0]),{description:r,check:c=>o?o(c):i?U(c,i):!1,schema:i,predicate:o,example:u,examples:p,default:f,toJSONSchema(){if(i){let c=i?.schema??i;if(c&&typeof c=="object"&&"type"in c)return c}return u!==void 0?Z(u):{description:r}},strip(c){return i?ze(c,i):c},__runtimeType:!0}}function Mt(e){let t=e?.schema??e;if(t&&typeof t=="object"&&"type"in t){let n=t;switch(n.type){case"string":return n.format?`string (${n.format})`:n.pattern?`string matching ${n.pattern}`:n.minLength!==void 0&&n.maxLength!==void 0?`string (${n.minLength}-${n.maxLength} chars)`:"string";case"number":case"integer":return n.minimum!==void 0&&n.maximum!==void 0?`${n.type} (${n.minimum}-${n.maximum})`:n.minimum!==void 0?`${n.type} >= ${n.minimum}`:n.maximum!==void 0?`${n.type} <= ${n.maximum}`:n.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}function Oe(e){return L(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function Re(e){return L(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function Me(e,t,...n){if(typeof e=="string"&&Array.isArray(t)){let o=e,i=t,u=new Set(i);return{description:o,check:p=>u.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(...n);let r=s.map(o=>o.description).join(" | ");return L(r,o=>s.some(i=>i.check(o)===!0))}function ve(e){return L(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function vt(e){if(z(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>U(n,e);let t=J.infer(e);return n=>U(n,t)}function se(e,t,n){let s=[],r=[];for(let i of e)typeof i=="string"?(s.push(i),r.push(void 0)):(s.push(i[0]),r.push(i[1]));let o=(...i)=>{let u=s.map((p,a)=>{let c=a<i.length?i[a]:r[a];return c===void 0?()=>!0:vt(c)}),f=n;return s.forEach((p,a)=>{let c=a<i.length?i[a]:r[a],d="any";z(c)?d=c.description:c!==void 0&&(d=typeof c=="string"?"string":JSON.stringify(c)),f=f.replace(new RegExp(`\\b${p}\\b`,"g"),d)}),L(f,p=>t(p,...u))};return o.params=s,o.description=n,o}function Ie(e,t){let n=Object.values(t),s=new Set(n),r=Object.keys(t),o={};for(let[u,f]of Object.entries(t))o[f]=u;return{description:e,check:u=>s.has(u),toJSONSchema:()=>({enum:n}),strip:u=>u,__runtimeType:!0,members:t,names:o,values:n,keys:r}}function Ct(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 pe(e,t,n){if(Array.isArray(t)&&n){let s=t,r=[],o=[];for(let u of s)Array.isArray(u)?(r.push(u[0]),o.push(u[1])):(r.push(u),o.push(void 0));let i=((...u)=>{let f=r.map((a,c)=>c<u.length?u[c]:o[c]),p=n(...f);return pe(e,p)});return Object.defineProperties(i,{typeParamNames:{value:r,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),i}return Kt(e,t)}function Kt(e,t){let n={},s,r="assertReturns";if(typeof t=="function"){let i=t.__tjs;if(i){if(i.params)for(let[u,f]of Object.entries(i.params))n[u]=f?.example??null;i.returns&&(s=i.returns?.example??null),i.safeReturn?r="checkedReturns":i.unsafe?r="assertReturns":r="returns"}}else n=t.params??{},s=t.returns,r=t.returnContract??"assertReturns";return{description:e,params:n,returns:s,returnContract:r,toJSONSchema:()=>({description:e,type:"function"}),strip:i=>i,check:i=>{if(typeof i!="function")return`expected function, got ${i===null?"null":typeof i}`;let u=Object.keys(n).length;if(u>0){let p=i.__tjs;if(p?.params){let a=Object.keys(p.params).length;if(a!==u)return`expected ${u} params, got ${a}`;let c=Object.keys(n),d=Object.keys(p.params);for(let m=0;m<c.length;m++){let h=p.params[d[m]],y=n[c[m]];if(h?.type?.kind&&y!==void 0){let x=Ct(y);if(x&&h.type.kind!==x&&h.type.kind!=="any")return`param '${c[m]}' expected ${x}, got ${h.type.kind}`}}}}return!0},__runtimeType:!0}}var Se,ke,$e,Ee,je,we,Ne,We,Pe,Ae,Ye,Xe,Ze,Qe,Ce,Ke,et=Y(()=>{"use strict";he();be();Se=L("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),ke=L("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),$e=L("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),Ee=L("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),je=L("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`),we=L("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),Ne=L("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`),We=e=>{try{return new URL(e),!0}catch{return!1}},Pe=L("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:We(e)?!0:`"${e}" is not a valid URL`),Ae=L("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`),Ye=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},Xe=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},Ze=L("ISO 8601 timestamp",e=>typeof e=="string"&&Ye(e)),Qe=L("date (YYYY-MM-DD)",e=>typeof e=="string"&&Xe(e));Ce=se(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),Ke=se(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>")});var tt=Nt(($n,It)=>{It.exports={name:"tjs-lang",version:"0.9.1",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],browser:["./dist/src/lang/browser.d.ts"],"browser/from-ts":["./dist/src/lang/browser-from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"],css:["./dist/src/css/index.d.ts"],schema:["./dist/src/schema/index.d.ts"],runtime:["./dist/src/lang/runtime.d.ts"]}},exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./browser":{types:"./dist/src/lang/browser.d.ts",default:"./dist/tjs-browser.js"},"./browser/from-ts":{types:"./dist/src/lang/browser-from-ts.d.ts",default:"./dist/tjs-browser-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.js"},"./css":{bun:"./src/css/index.ts",types:"./dist/src/css/index.d.ts",default:"./dist/tjs-css.js"},"./schema":{bun:"./src/schema/index.ts",types:"./dist/src/schema/index.d.ts",default:"./dist/tjs-schema.js"},"./runtime":{bun:"./src/lang/runtime.ts",types:"./dist/src/lang/runtime.d.ts",default:"./dist/tjs-runtime.js"},"./bun-plugin":{bun:"./src/bun-plugin/tjs-plugin.ts"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md","llms.txt"],sideEffects:["./src/schema/index.ts","./dist/tjs-schema.js"],repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","build:editors":"bun scripts/build-editors.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && bun run build:editors && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-loose":"^8.5.2","acorn-walk":"^8.3.4","tosijs-schema":"^1.4.0"}}});function me(e){let[t=0,n=0,s=0]=e.split(".").map(Number);return{major:t,minor:n,patch:s}}function rt(e,t){let n=me(e),s=me(t);return n.major!==s.major?n.major<s.major?-1:1:n.minor!==s.minor?n.minor<s.minor?-1:1:n.patch!==s.patch?n.patch<s.patch?-1:1:0}function st(e,t){let n=me(e),s=me(t);return n.major===s.major}function Dt(e,t,n,s){let r=n===null?"null":typeof n,o=K.callStacks||K.debug?_e():void 0,i=s?`Expected ${t} for '${e}': ${s}`:`Expected ${t} for '${e}', got ${r}`,u=new G(i,e,t,r,o,s);if(K.trackErrors!==!1){let f=K.maxErrors??de;ot[Q]=u,Q=(Q+1)%f,W<f&&W++,ye++}if(K.logTypeErrors&&console.error(`[TJS TypeError] ${u.message}`),K.throwTypeErrors)throw u;return u}function Le(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}function _t(){ne++}function Jt(){ne>0&&ne--}function Ut(){return ne>0}function Ft(e){K={...K,...e}}function Bt(){return{...K}}function at(e){if((K.callStacks||K.debug)&&e){let t=K.maxStackSize??ae;it[H]=e,H=(H+1)%t,F<t&&F++}}function fe(){if((K.callStacks||K.debug)&&F>0){let e=K.maxStackSize??ae;H=(H-1+e)%e,F--}}function _e(){if(F===0)return[];let e=K.maxStackSize??ae,t=[],n=(H-F+e)%e;for(let s=0;s<F;s++)t.push(it[(n+s)%e]);return t}function ut(){if(K.trackErrors===!1||W===0)return[];let e=K.maxErrors??de,t=[],n=(Q-W+e)%e;for(let s=0;s<W;s++)t.push(ot[(n+s)%e]);return t}function qt(){let e=ut();return Q=0,W=0,ye=0,e}function Gt(){return ye}function Vt(){K={...De},H=0,F=0,Q=0,W=0,ye=0,ne=0}function ee(e,t){if(e!==null&&typeof e=="object"&&typeof e[ie]=="function")return e[ie](t);if(t!==null&&typeof t=="object"&&typeof t[ie]=="function")return t[ie](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 r of e)if(!t.has(r))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[r,o]of e)if(!t.has(r)||!ee(o,t.get(r)))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((r,o)=>ee(r,t[o]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),s=Object.keys(t);return n.length!==s.length?!1:n.every(r=>ee(e[r],t[r]))}function ct(e,t){return!ee(e,t)}function lt(e){return e===null?"null":typeof e}function pt(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function Je(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 ft(e,t){return!Je(e,t)}function q(e){return e!==null&&typeof e=="object"&&e.$error===!0}function B(e,t){let n={$error:!0,message:e,...t};if((K.callStacks||K.debug)&&F>0){let s=_e(),r=t?.path?[...s,t.path]:s;n.stack=r}return n}function Ue(e,t){if(e.length===0)return B("Unknown error");if(e.length===1)return e[0];let n=e.map(r=>{if(r.path){let o=r.path.split(".");return o[o.length-1]}return"unknown"}).join(", "),s=`Multiple parameter errors in ${t||"function"}: ${n}`;return B(s,{path:t,errors:e})}function oe(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let t=typeof e;if(t!=="object")return t;let n=e.constructor?.name;return n&&n!=="Object"?n:"object"}function mt(e,t){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let n=e;for(;n!==null;){if(n.constructor?.name===t)return!0;n=Object.getPrototypeOf(n)}return!1}function te(e,t,n){if(q(e))return e;if(typeof t=="object"&&t!==null&&"check"in t){let r=t.check(e);if(r===!0)return null;let o=typeof r=="string"?r:void 0,i=o?`Expected ${t.description} for '${n}': ${o}`:`Expected ${t.description} but got ${oe(e)}`;return B(i,{path:n,expected:t.description,actual:oe(e),reason:o})}let s=oe(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:B(`Expected ${t} but got ${s}`,{path:n,expected:t,actual:s})}function dt(e,t,n,s){if(typeof e!="function")return e;let r=e.__tjs;if(!r||!r.params)return e;let o=Object.entries(r.params);for(let i=0;i<t.length;i++){let u=t[i];if(u==="any")continue;let f=o[i];if(!f)continue;let p=f[1]?.type?.kind;if(!(!p||p==="any")&&p!==u)return new G(`Expected (...arg${i}: ${u}, ...) for '${s}', but callback declares arg${i} as ${p}`,`${s}(arg${i})`,u,p)}if(n!=="any"&&r.returns){let i=r.returns.type?.kind??r.returns.kind;if(i&&i!=="any"&&i!==n)return new G(`Expected callback returning ${n} for '${s}', but callback returns ${i}`,`${s}(return)`,n,i)}return e}function yt(e,t,n){for(let[s,r]of Object.entries(t.params)){let o=e[s];if(q(o))return o;if(r.required&&o===void 0){let u=typeof r.type=="string"?r.type:r.type.description;return B(`Missing required parameter '${s}'`,{path:n?`${n}.${s}`:s,expected:u,actual:"undefined",loc:r.loc})}if(o===void 0)continue;let i=te(o,r.type,n?`${n}.${s}`:s);if(i)return r.loc&&(i.loc=r.loc),i}return null}function gt(e,t){if(e.__tjs=t,e.__tjs.schema=()=>xe(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,r=!!t.unsafe,o=!!t.safe,i=!!t.unsafeReturn,u=!!t.safeReturn,f=t.returns?.defaults,p=Object.entries(t.params),a=p.length,c=e.name||t.name||"anonymous",d=function(...m){if(ne>0)return e.apply(this,m);let h=o||!r&&K.safety!=="none",y=s&&(u||!i&&K.safety==="all");if(!h&&!y)return e.apply(this,m);if(m.length>0&&q(m[0]))return m[0];if(h){let k=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),j=[];if(k){let w=m[0];for(let N=0;N<a;N++){let[P,v]=p[N],M=w[P];if(q(M)){j.push(M);continue}if(v.required&&M===void 0){j.push(B(`Missing required parameter '${P}'`,{path:`${c}.${P}`,expected:typeof v.type=="string"?v.type:v.type?.description||"value",actual:"undefined",loc:v.loc}));continue}if(M!==void 0){let D=te(M,v.type,`${c}.${P}`);D&&(v.loc&&(D.loc=v.loc),j.push(D))}}}else for(let w=0;w<a;w++){let[N,P]=p[w],v=m[w];if(q(v)){j.push(v);continue}if(P.required&&v===void 0){j.push(B(`Missing required parameter '${N}'`,{path:`${c}.${N}`,expected:typeof P.type=="string"?P.type:P.type?.description||"value",actual:"undefined",loc:P.loc}));continue}if(v!==void 0){let M=te(v,P.type,`${c}.${N}`);M&&(P.loc&&(M.loc=P.loc),j.push(M))}}if(j.length>0)return Ue(j,c)}let x=K.callStacks||K.debug;x&&at(c);try{let k=e.apply(this,m);if(y&&t.returns&&!q(k)){let j=f&&typeof k=="object"&&k!==null?Object.assign({},f,k):k,w=te(j,t.returns.type,`${c}()`);if(w)return x&&fe(),w}return x&&fe(),k}catch(k){return x&&fe(),B(k.message||String(k),{path:c,cause:k})}};return Object.defineProperty(d,"name",{value:e.name}),d.__tjs=t,d.__tjs.schema=()=>xe(t),d}function Tt(e){let t=new Proxy(e,{construct(n,s,r){return Reflect.construct(n,s,r)},apply(n,s,r){return Reflect.construct(n,r)}});Object.defineProperty(t,"name",{value:e.name});for(let n of Object.getOwnPropertyNames(e))n!=="length"&&n!=="name"&&n!=="prototype"&&Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n));return t}function ht(){let e={...K},t=e.maxStackSize??ae,n=new Array(t).fill(""),s=0,r=0,o=e.maxErrors??de,i=new Array(o).fill(null),u=0,f=0,p=0,a=0;function c(g){e={...e,...g}}function d(){return{...e}}function m(g){(e.callStacks||e.debug)&&g&&(n[s]=g,s=(s+1)%t,r<t&&r++)}function h(){(e.callStacks||e.debug)&&r>0&&(s=(s-1+t)%t,r--)}function y(){if(r===0)return[];let g=[],S=(s-r+t)%t;for(let R=0;R<r;R++)g.push(n[(S+R)%t]);return g}function x(){e={...De},s=0,r=0,u=0,f=0,p=0,a=0}function k(){a++}function j(){a>0&&a--}function w(){return a>0}let N=new Map;function P(g,S,R){N.has(g)||N.set(g,new Map),N.get(g).set(S,R)}function v(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 _=C;for(;_;){let Fe=N.get(_);if(Fe?.has(S))return Fe.get(S);if(R==="object"&&!Array.isArray(g)){if(_=Object.getPrototypeOf(_===C?g:Object.getPrototypeOf(g))?.constructor?.name,_==="Object"||_===C)break}else break}let V=N.get("Object");if(V?.has(S))return V.get(S)}function M(g,S,R){let C=R===null?"null":typeof R,_=e.callStacks||e.debug?y():void 0,V=new G(`Expected ${S} for '${g}', got ${C}`,g,S,C,_);if(e.trackErrors!==!1&&(i[u]=V,u=(u+1)%o,f<o&&f++,p++),e.logTypeErrors&&console.error(`[TJS TypeError] ${V.message}`),e.throwTypeErrors)throw V;return V}function D(){if(e.trackErrors===!1||f===0)return[];let g=[],S=(u-f+o)%o;for(let R=0;R<f;R++)g.push(i[(S+R)%o]);return g}function T(){let g=D();return u=0,f=0,p=0,g}function $(){return p}function b(g,S){let R={$error:!0,message:g,...S};if((e.callStacks||e.debug)&&r>0){let C=S?.path?[...y(),S.path]:y();R.stack=C}return R}function O(g,S){return g==null?M(`bang.${S}`,"non-null",g):Le(g)?g:g[S]}return{version:nt,MonadicError:G,typeError:M,isMonadicError:Le,bang:O,isError:q,error:b,composeErrors:Ue,typeOf:oe,isNativeType:mt,checkType:te,validateArgs:yt,wrap:gt,checkFnShape:dt,wrapClass:Tt,compareVersions:rt,versionsCompatible:st,createRuntime:ht,configure:c,getConfig:d,pushStack:m,popStack:h,getStack:y,errors:D,clearErrors:T,getErrorCount:$,resetRuntime:x,enterUnsafe:k,exitUnsafe:j,isUnsafeMode:w,validate:U,infer:J.infer.bind(J),Type:L,isRuntimeType:z,Union:Me,Generic:se,Enum:Ie,FunctionPredicate:pe,Nullable:Oe,Optional:Re,TArray:ve,TString:Se,TNumber:ke,TBoolean:$e,TInteger:Ee,TPositiveInt:je,TNonEmptyString:we,TEmail:Ne,TUrl:Pe,TUuid:Ae,TPair:Ce,TRecord:Ke,Is:ee,IsNot:ct,Eq:Je,NotEq:ft,TypeOf:lt,toBool:pt,tjsEquals:ie,registerExtension:P,resolveExtension:v}}function xt(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 Lt,nt,ie,G,De,K,ae,it,H,F,de,ot,Q,W,ye,ne,Nn,bt=Y(()=>{"use strict";he();be();et();Lt=tt(),nt=Lt.version,ie=Symbol.for("tjs.equals");G=class e extends Error{path;expected;actual;callStack;reason;constructor(t,n,s,r,o,i){super(t),this.name="MonadicError",this.path=n,this.expected=s,this.actual=r,this.callStack=o,this.reason=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};De={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},K={...De},ae=64,it=new Array(ae).fill(""),H=0,F=0,de=64,ot=new Array(de).fill(null),Q=0,W=0,ye=0,ne=0;Nn={version:nt,MonadicError:G,typeError:Dt,isMonadicError:Le,isError:q,error:B,composeErrors:Ue,typeOf:oe,isNativeType:mt,checkType:te,validateArgs:yt,wrap:gt,checkFnShape:dt,wrapClass:Tt,compareVersions:rt,versionsCompatible:st,configure:Ft,getConfig:Bt,pushStack:at,popStack:fe,getStack:_e,errors:ut,clearErrors:qt,getErrorCount:Gt,resetRuntime:Vt,enterUnsafe:_t,exitUnsafe:Jt,isUnsafeMode:Ut,createRuntime:ht,validate:U,infer:J.infer.bind(J),Type:L,isRuntimeType:z,Union:Me,Generic:se,Enum:Ie,FunctionPredicate:pe,Nullable:Oe,Optional:Re,TArray:ve,TString:Se,TNumber:ke,TBoolean:$e,TInteger:Ee,TPositiveInt:je,TNonEmptyString:we,TEmail:Ne,TUrl:Pe,TUuid:Ae,Timestamp:Ze,LegalDate:Qe,TPair:Ce,TRecord:Ke,Is:ee,IsNot:ct,Eq:Je,NotEq:ft,TypeOf:lt,toBool:pt}});var $t={};Pt($t,{fromTS:()=>fn});function A(e,t,n,s){if(!e)return"undefined";switch(e.kind){case l.SyntaxKind.StringKeyword:return"''";case l.SyntaxKind.NumberKeyword:return"0.0";case l.SyntaxKind.BooleanKeyword:return"false";case l.SyntaxKind.NullKeyword:return"null";case l.SyntaxKind.UndefinedKeyword:return"undefined";case l.SyntaxKind.VoidKeyword:return"undefined";case l.SyntaxKind.AnyKeyword:return"any";case l.SyntaxKind.UnknownKeyword:return"any";case l.SyntaxKind.NeverKeyword:return"null";case l.SyntaxKind.SymbolKeyword:return"Symbol('example')";case l.SyntaxKind.BigIntKeyword:return"0n";case l.SyntaxKind.ObjectKeyword:return"{}";case l.SyntaxKind.ArrayType:{let o=A(e.elementType,t);return o==="any"&&(o="null"),`[${o}]`}case l.SyntaxKind.TypeReference:{let r=e,o=r.typeName.getText();if(o==="Array"&&r.typeArguments?.length)return`[${A(r.typeArguments[0],t,n,s)}]`;if(o==="Promise"||o==="Generator"||o==="AsyncGenerator"||o==="IterableIterator"||o==="AsyncIterableIterator")return r.typeArguments?.length?A(r.typeArguments[0],t,n,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 u=s.visited??new Set;if(u.has(o))return n?.push(`Circular type reference '${o}' - using 'any'`),"any";u.add(o);let f=s.typeAliases.get(o);return A(f,t,n,{...s,visited:u})}if(s?.interfaces?.has(o)){let u=s.visited??new Set;if(u.has(o))return n?.push(`Circular type reference '${o}' - using 'any'`),"any";u.add(o);let f=s.interfaces.get(o),p=[];for(let a of f.members)if(l.isPropertySignature(a)&&a.name){let c=a.name.getText(s.sourceFile),d=A(a.type,t,n,{...s,visited:u});p.push(`${c}: ${d}`)}return`{ ${p.join(", ")} }`}if(s?.typeParams?.has(o)){let u=s.typeParams.get(o);if(u.constraint)return A(u.constraint,t,n,s);if(u.default)return A(u.default,t,n,s)}return kt.has(o)?"{}":/^[A-Z]$/.test(o)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(o)?(n?.push(`Generic type parameter '${o}' converted to 'any' - consider specializing`),"any"):(n?.push(`Unknown type '${o}' converted to 'any' - may need manual review`),"any")}case l.SyntaxKind.TypeLiteral:{let r=e,o=[];for(let i of r.members)if(l.isPropertySignature(i)&&i.name){let u=i.name.getText(),f=A(i.type,t);f==="any"&&(f="null"),o.push(`${u}: ${f}`)}return`{ ${o.join(", ")} }`}case l.SyntaxKind.UnionType:{let r=e,o=c=>c.kind===l.SyntaxKind.NullKeyword||l.isLiteralTypeNode(c)&&c.literal.kind===l.SyntaxKind.NullKeyword,i=c=>c.kind===l.SyntaxKind.UndefinedKeyword||l.isLiteralTypeNode(c)&&c.literal.kind===l.SyntaxKind.UndefinedKeyword,u=r.types.filter(c=>!o(c)&&!i(c)),f=r.types.some(o),p=r.types.some(i);if(u.length===0)return f?"null":"undefined";if(u.length===1&&(f||p)){let c=A(u[0],t,n,s);if(c==="any")return"any";if(f)return`${c} | null`;if(p)return`${c} | undefined`}let a=r.types.map(c=>A(c,t,n,s)).filter((c,d,m)=>m.indexOf(c)===d);return a.some(c=>c==="any")?"any":a.length===1?a[0]:a.length>0?a.some(d=>/[()]/.test(d)||d.startsWith("new "))?"any":a.join(" | "):"undefined"}case l.SyntaxKind.LiteralType:{let r=e;return l.isStringLiteral(r.literal)?`'${r.literal.text}'`:l.isNumericLiteral(r.literal)?r.literal.text:r.literal.kind===l.SyntaxKind.TrueKeyword?"true":r.literal.kind===l.SyntaxKind.FalseKeyword?"false":r.literal.kind===l.SyntaxKind.NullKeyword?"null":"undefined"}case l.SyntaxKind.ParenthesizedType:return A(e.type,t);case l.SyntaxKind.FunctionType:{let r=e,o=[];for(let f of r.parameters){let p=f.name?.getText()||"_";if(p==="this")continue;let a=A(f.type,t,n,s);a==="any"&&(a="null"),o.push(`${p}: ${a}`)}let i=A(r.type,t,n,s);i==="any"&&(i="null");let u=[];return o.length>0&&u.push(`params: { ${o.join(", ")} }`),i!=="undefined"&&u.push(`returns: ${i}`),`FunctionPredicate('function', { ${u.join(", ")} })`}case l.SyntaxKind.TupleType:return`[${e.elements.map(i=>{let u=l.isNamedTupleMember(i)?A(i.type,t):A(i,t);return u==="any"?"null":u}).join(", ")}]`;default:return"undefined"}}function I(e,t){if(!e)return{kind:"any"};let n=t?.depth??0;if(n>zt)return{kind:"any"};switch(t=t?{...t,depth:n+1}:void 0,e.kind){case l.SyntaxKind.StringKeyword:return{kind:"string"};case l.SyntaxKind.NumberKeyword:return{kind:"number"};case l.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case l.SyntaxKind.NullKeyword:return{kind:"null"};case l.SyntaxKind.UndefinedKeyword:case l.SyntaxKind.VoidKeyword:return{kind:"undefined"};case l.SyntaxKind.ArrayType:return{kind:"array",items:I(e.elementType,t)};case l.SyntaxKind.TypeLiteral:{let s=e,r={};for(let o of s.members)if(l.isPropertySignature(o)&&o.name){let i=o.name.getText();r[i]=I(o.type,t)}return{kind:"object",shape:r}}case l.SyntaxKind.UnionType:{let s=e,r=s.types.filter(i=>i.kind!==l.SyntaxKind.NullKeyword&&i.kind!==l.SyntaxKind.UndefinedKeyword),o=s.types.some(i=>i.kind===l.SyntaxKind.NullKeyword);return r.length===1&&o?{...I(r[0],t),nullable:!0}:{kind:"union",members:s.types.map(i=>I(i,t))}}case l.SyntaxKind.IntersectionType:{let s=e,r={};for(let o of s.types){let i=I(o,t);i.kind==="object"&&i.shape&&Object.assign(r,i.shape)}return Object.keys(r).length>0?{kind:"object",shape:r}:{kind:"any"}}case l.SyntaxKind.TupleType:{let s=e,r=[];for(let o of s.elements)l.isNamedTupleMember(o)?r.push(I(o.type,t)):r.push(I(o,t));return{kind:"tuple",elements:r}}case l.SyntaxKind.TypeReference:{let s=e,r=s.typeName.getText();if(r==="Array"&&s.typeArguments?.length)return{kind:"array",items:I(s.typeArguments[0],t)};if(r==="Promise"&&s.typeArguments?.length||(r==="Generator"||r==="AsyncGenerator"||r==="IterableIterator"||r==="AsyncIterableIterator")&&s.typeArguments?.length)return I(s.typeArguments[0],t);if(s.typeArguments?.length){let o=I(s.typeArguments[0],t);if(r==="Partial"||r==="Required"||r==="Readonly")return o;if(r==="Record"&&s.typeArguments.length>=2)return{kind:"object",shape:{"[key]":I(s.typeArguments[1],t)}};if(r==="Pick"||r==="Omit")return o;if(r==="NonNullable")return o.nullable?{...o,nullable:!1}:o;if(["ReturnType","Parameters","ConstructorParameters"].includes(r))return{kind:"any"}}if(t?.typeAliases?.has(r)){if(t.resolvedCache?.has(r))return t.resolvedCache.get(r);let o=t.visited??new Set;if(o.has(r))return{kind:"any"};o.add(r);let i=t.typeAliases.get(r),u=I(i,{...t,visited:o});return t.resolvedCache?.set(r,u),u}if(t?.interfaces?.has(r)){if(t.resolvedCache?.has(r))return t.resolvedCache.get(r);let o=t.visited??new Set;if(o.has(r))return{kind:"any"};o.add(r);let i=t.interfaces.get(r),u={};if(i.heritageClauses){for(let p of i.heritageClauses)if(p.token===l.SyntaxKind.ExtendsKeyword)for(let a of p.types){let c=a.expression.getText(t.sourceFile);if(t.interfaces?.has(c)&&!o.has(c)){let d={kind:l.SyntaxKind.TypeReference,typeName:{getText:()=>c}},m=I(d,{...t,visited:o});m.kind==="object"&&m.shape&&Object.assign(u,m.shape)}}}for(let p of i.members)if(l.isPropertySignature(p)&&p.name){let a=p.name.getText(t.sourceFile);u[a]=I(p.type,{...t,visited:o})}let f={kind:"object",shape:u};return t.resolvedCache?.set(r,f),f}if(t?.typeParams?.has(r)){let o=t.typeParams.get(r);if(o.constraint)return I(o.constraint,t);if(o.default)return I(o.default,t)}return kt.has(r)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function Ht(e,t){if(!e.typeParameters||e.typeParameters.length===0)return;let n={};for(let s of e.typeParameters){let r=s.name.getText(),o={};if(s.constraint){let i=A(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=A(s.default,void 0,t);o.default=i}n[r]=o}return Object.keys(n).length>0?n:void 0}function Wt(e,t,n,s){let r=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return Yt(e,t,n,s);let o=s?.find(p=>p.kind==="example"),i=s?.find(p=>p.kind==="predicate"),u;if(o?.text)u=o.text;else{let p=[];for(let a of e.members)if(l.isPropertySignature(a)&&a.name){let c=a.name.getText(t),d=A(a.type,void 0,n);d==="any"&&(d="null"),p.push(`${c}: ${d}`)}if(p.length===0&&!i)return`Type ${r} {}`;u=p.length>0?`{ ${p.join(", ")} }`:"{}"}let f=[`example: ${u}`];return i?.text&&f.push(i.text),`Type ${r} {
|