tjs-lang 0.5.4 → 0.6.0

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/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["node:path", "../src/lang/parser.ts", "../src/lang/types.ts", "../src/lang/parser-params.ts", "../src/lang/parser-transforms.ts", "../src/lang/inference.ts", "../src/lang/emitters/ast.ts", "../src/lang/emitters/js.ts", "../src/lang/tests.ts", "../src/lang/emitters/js-tests.ts", "../src/lang/wasm.ts", "../src/lang/emitters/js-wasm.ts", "../src/lang/emitters/from-ts.ts", "../src/lang/runtime.ts", "../src/types/Type.ts", "../src/lang/schema.ts", "../src/lang/metadata-cache.ts", "../node_modules/acorn-walk/dist/walk.mjs", "../src/lang/linter.ts", "../src/lang/docs.ts", "../src/vm/runtime.ts", "../src/builder.ts", "../src/vm/vm.ts", "../src/lang/core.ts", "../src/lang/eval.ts", "../src/lang/index.ts", "../src/vm/atoms/batteries.ts", "../src/vm/atoms/index.ts", "../src/batteries/store.ts", "../src/batteries/llm.ts", "../src/batteries/audit.ts", "../src/batteries/models.ts", "../src/batteries/index.ts", "../src/types/Timestamp.ts", "../src/types/LegalDate.ts"],
3
+ "sources": ["node:path", "../src/lang/parser.ts", "../src/lang/types.ts", "../src/lang/parser-params.ts", "../src/lang/parser-transforms.ts", "../src/lang/inference.ts", "../src/lang/emitters/ast.ts", "../src/lang/emitters/js.ts", "../src/lang/tests.ts", "../src/lang/emitters/js-tests.ts", "../src/lang/wasm.ts", "../src/lang/emitters/js-wasm.ts", "../src/lang/emitters/dts.ts", "../src/lang/emitters/from-ts.ts", "../src/lang/runtime.ts", "../src/types/Type.ts", "../src/lang/schema.ts", "../src/lang/metadata-cache.ts", "../node_modules/acorn-walk/dist/walk.mjs", "../src/lang/linter.ts", "../src/lang/docs.ts", "../src/vm/runtime.ts", "../src/builder.ts", "../src/vm/vm.ts", "../src/lang/core.ts", "../src/lang/eval.ts", "../src/lang/index.ts", "../src/vm/atoms/batteries.ts", "../src/vm/atoms/index.ts", "../src/batteries/store.ts", "../src/batteries/llm.ts", "../src/batteries/audit.ts", "../src/batteries/models.ts", "../src/batteries/index.ts", "../src/types/Timestamp.ts", "../src/types/LegalDate.ts"],
4
4
  "sourcesContent": [
5
5
  "function assertPath(path){if(typeof path!==\"string\")throw TypeError(\"Path must be a string. Received \"+JSON.stringify(path))}function normalizeStringPosix(path,allowAboveRoot){var res=\"\",lastSegmentLength=0,lastSlash=-1,dots=0,code;for(var i=0;i<=path.length;++i){if(i<path.length)code=path.charCodeAt(i);else if(code===47)break;else code=47;if(code===47){if(lastSlash===i-1||dots===1);else if(lastSlash!==i-1&&dots===2){if(res.length<2||lastSegmentLength!==2||res.charCodeAt(res.length-1)!==46||res.charCodeAt(res.length-2)!==46){if(res.length>2){var lastSlashIndex=res.lastIndexOf(\"/\");if(lastSlashIndex!==res.length-1){if(lastSlashIndex===-1)res=\"\",lastSegmentLength=0;else res=res.slice(0,lastSlashIndex),lastSegmentLength=res.length-1-res.lastIndexOf(\"/\");lastSlash=i,dots=0;continue}}else if(res.length===2||res.length===1){res=\"\",lastSegmentLength=0,lastSlash=i,dots=0;continue}}if(allowAboveRoot){if(res.length>0)res+=\"/..\";else res=\"..\";lastSegmentLength=2}}else{if(res.length>0)res+=\"/\"+path.slice(lastSlash+1,i);else res=path.slice(lastSlash+1,i);lastSegmentLength=i-lastSlash-1}lastSlash=i,dots=0}else if(code===46&&dots!==-1)++dots;else dots=-1}return res}function _format(sep,pathObject){var dir=pathObject.dir||pathObject.root,base=pathObject.base||(pathObject.name||\"\")+(pathObject.ext||\"\");if(!dir)return base;if(dir===pathObject.root)return dir+base;return dir+sep+base}function resolve(){var resolvedPath=\"\",resolvedAbsolute=!1,cwd;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path;if(i>=0)path=arguments[i];else{if(cwd===void 0)cwd=process.cwd();path=cwd}if(assertPath(path),path.length===0)continue;resolvedPath=path+\"/\"+resolvedPath,resolvedAbsolute=path.charCodeAt(0)===47}if(resolvedPath=normalizeStringPosix(resolvedPath,!resolvedAbsolute),resolvedAbsolute)if(resolvedPath.length>0)return\"/\"+resolvedPath;else return\"/\";else if(resolvedPath.length>0)return resolvedPath;else return\".\"}function normalize(path){if(assertPath(path),path.length===0)return\".\";var isAbsolute=path.charCodeAt(0)===47,trailingSeparator=path.charCodeAt(path.length-1)===47;if(path=normalizeStringPosix(path,!isAbsolute),path.length===0&&!isAbsolute)path=\".\";if(path.length>0&&trailingSeparator)path+=\"/\";if(isAbsolute)return\"/\"+path;return path}function isAbsolute(path){return assertPath(path),path.length>0&&path.charCodeAt(0)===47}function join(){if(arguments.length===0)return\".\";var joined;for(var i=0;i<arguments.length;++i){var arg=arguments[i];if(assertPath(arg),arg.length>0)if(joined===void 0)joined=arg;else joined+=\"/\"+arg}if(joined===void 0)return\".\";return normalize(joined)}function relative(from,to){if(assertPath(from),assertPath(to),from===to)return\"\";if(from=resolve(from),to=resolve(to),from===to)return\"\";var fromStart=1;for(;fromStart<from.length;++fromStart)if(from.charCodeAt(fromStart)!==47)break;var fromEnd=from.length,fromLen=fromEnd-fromStart,toStart=1;for(;toStart<to.length;++toStart)if(to.charCodeAt(toStart)!==47)break;var toEnd=to.length,toLen=toEnd-toStart,length=fromLen<toLen?fromLen:toLen,lastCommonSep=-1,i=0;for(;i<=length;++i){if(i===length){if(toLen>length){if(to.charCodeAt(toStart+i)===47)return to.slice(toStart+i+1);else if(i===0)return to.slice(toStart+i)}else if(fromLen>length){if(from.charCodeAt(fromStart+i)===47)lastCommonSep=i;else if(i===0)lastCommonSep=0}break}var fromCode=from.charCodeAt(fromStart+i),toCode=to.charCodeAt(toStart+i);if(fromCode!==toCode)break;else if(fromCode===47)lastCommonSep=i}var out=\"\";for(i=fromStart+lastCommonSep+1;i<=fromEnd;++i)if(i===fromEnd||from.charCodeAt(i)===47)if(out.length===0)out+=\"..\";else out+=\"/..\";if(out.length>0)return out+to.slice(toStart+lastCommonSep);else{if(toStart+=lastCommonSep,to.charCodeAt(toStart)===47)++toStart;return to.slice(toStart)}}function _makeLong(path){return path}function dirname(path){if(assertPath(path),path.length===0)return\".\";var code=path.charCodeAt(0),hasRoot=code===47,end=-1,matchedSlash=!0;for(var i=path.length-1;i>=1;--i)if(code=path.charCodeAt(i),code===47){if(!matchedSlash){end=i;break}}else matchedSlash=!1;if(end===-1)return hasRoot?\"/\":\".\";if(hasRoot&&end===1)return\"//\";return path.slice(0,end)}function basename(path,ext){if(ext!==void 0&&typeof ext!==\"string\")throw TypeError('\"ext\" argument must be a string');assertPath(path);var start=0,end=-1,matchedSlash=!0,i;if(ext!==void 0&&ext.length>0&&ext.length<=path.length){if(ext.length===path.length&&ext===path)return\"\";var extIdx=ext.length-1,firstNonSlashEnd=-1;for(i=path.length-1;i>=0;--i){var code=path.charCodeAt(i);if(code===47){if(!matchedSlash){start=i+1;break}}else{if(firstNonSlashEnd===-1)matchedSlash=!1,firstNonSlashEnd=i+1;if(extIdx>=0)if(code===ext.charCodeAt(extIdx)){if(--extIdx===-1)end=i}else extIdx=-1,end=firstNonSlashEnd}}if(start===end)end=firstNonSlashEnd;else if(end===-1)end=path.length;return path.slice(start,end)}else{for(i=path.length-1;i>=0;--i)if(path.charCodeAt(i)===47){if(!matchedSlash){start=i+1;break}}else if(end===-1)matchedSlash=!1,end=i+1;if(end===-1)return\"\";return path.slice(start,end)}}function extname(path){assertPath(path);var startDot=-1,startPart=0,end=-1,matchedSlash=!0,preDotState=0;for(var i=path.length-1;i>=0;--i){var code=path.charCodeAt(i);if(code===47){if(!matchedSlash){startPart=i+1;break}continue}if(end===-1)matchedSlash=!1,end=i+1;if(code===46){if(startDot===-1)startDot=i;else if(preDotState!==1)preDotState=1}else if(startDot!==-1)preDotState=-1}if(startDot===-1||end===-1||preDotState===0||preDotState===1&&startDot===end-1&&startDot===startPart+1)return\"\";return path.slice(startDot,end)}function format(pathObject){if(pathObject===null||typeof pathObject!==\"object\")throw TypeError('The \"pathObject\" argument must be of type Object. Received type '+typeof pathObject);return _format(\"/\",pathObject)}function parse(path){assertPath(path);var ret={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(path.length===0)return ret;var code=path.charCodeAt(0),isAbsolute2=code===47,start;if(isAbsolute2)ret.root=\"/\",start=1;else start=0;var startDot=-1,startPart=0,end=-1,matchedSlash=!0,i=path.length-1,preDotState=0;for(;i>=start;--i){if(code=path.charCodeAt(i),code===47){if(!matchedSlash){startPart=i+1;break}continue}if(end===-1)matchedSlash=!1,end=i+1;if(code===46){if(startDot===-1)startDot=i;else if(preDotState!==1)preDotState=1}else if(startDot!==-1)preDotState=-1}if(startDot===-1||end===-1||preDotState===0||preDotState===1&&startDot===end-1&&startDot===startPart+1){if(end!==-1)if(startPart===0&&isAbsolute2)ret.base=ret.name=path.slice(1,end);else ret.base=ret.name=path.slice(startPart,end)}else{if(startPart===0&&isAbsolute2)ret.name=path.slice(1,startDot),ret.base=path.slice(1,end);else ret.name=path.slice(startPart,startDot),ret.base=path.slice(startPart,end);ret.ext=path.slice(startDot,end)}if(startPart>0)ret.dir=path.slice(0,startPart-1);else if(isAbsolute2)ret.dir=\"/\";return ret}var sep=\"/\",delimiter=\":\",posix=((p)=>(p.posix=p,p))({resolve,normalize,isAbsolute,join,relative,_makeLong,dirname,basename,extname,format,parse,sep,delimiter,win32:null,posix:null});var path_default=posix;export{sep,resolve,relative,posix,parse,normalize,join,isAbsolute,format,extname,dirname,delimiter,path_default as default,basename,_makeLong};",
6
6
  "/**\n * TJS Parser — Orchestration Layer\n *\n * This module contains the main entry points: preprocess() and parse().\n * Transform functions are in parser-transforms.ts, param processing in parser-params.ts.\n */\n\nimport * as acorn from 'acorn'\nimport type { Program, FunctionDeclaration } from 'acorn'\nimport { SyntaxError } from './types'\n\n// Re-export types so external callers don't need to change imports\nexport type {\n ParseOptions,\n WasmBlock,\n TestBlock,\n PreprocessOptions,\n TjsModes,\n} from './parser-types'\n\nimport type {\n ParseOptions,\n WasmBlock,\n TestBlock,\n PreprocessOptions,\n TjsModes,\n} from './parser-types'\n\nimport { transformParenExpressions } from './parser-params'\n\nimport {\n transformTryWithoutCatch,\n extractWasmBlocks,\n transformIsOperators,\n insertAsiProtection,\n transformEqualityToStructural,\n transformTypeDeclarations,\n transformGenericDeclarations,\n transformUnionDeclarations,\n transformEnumDeclarations,\n transformExtendDeclarations,\n transformPolymorphicFunctions,\n transformPolymorphicConstructors,\n wrapClassDeclarations,\n transformBareAssignments,\n extractAndRunTests,\n validateNoDate,\n validateNoEval,\n transformExtensionCalls,\n} from './parser-transforms'\n\n// Re-export transformExtensionCalls for js.ts\nexport { transformExtensionCalls } from './parser-transforms'\n\nexport function preprocess(\n source: string,\n options: PreprocessOptions = {}\n): {\n source: string\n returnType?: string\n returnSafety?: 'safe' | 'unsafe'\n moduleSafety?: 'none' | 'inputs' | 'all'\n tjsModes: TjsModes\n originalSource: string\n requiredParams: Set<string>\n unsafeFunctions: Set<string>\n safeFunctions: Set<string>\n wasmBlocks: WasmBlock[]\n tests: TestBlock[]\n testErrors: string[]\n polymorphicNames: Set<string>\n extensions: Map<string, Set<string>>\n} {\n const originalSource = source\n let moduleSafety: 'none' | 'inputs' | 'all' | undefined\n const requiredParams = new Set<string>()\n const unsafeFunctions = new Set<string>()\n const safeFunctions = new Set<string>()\n\n // TJS modes - all default to false (JS-compatible by default)\n const tjsModes: TjsModes = {\n tjsEquals: false,\n tjsClass: false,\n tjsDate: false,\n tjsNoeval: false,\n tjsStandard: false,\n tjsSafeEval: false,\n }\n\n // Handle module-level safety directive: safety none | safety inputs | safety all\n // Must be at the start of the file (possibly after comments/whitespace)\n const safetyMatch = source.match(\n /^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*safety\\s+(none|inputs|all)\\b/\n )\n if (safetyMatch) {\n moduleSafety = safetyMatch[2] as 'none' | 'inputs' | 'all'\n // Remove the directive from source\n source = source.replace(\n /^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*safety\\s+(none|inputs|all)\\s*/,\n '$1'\n )\n }\n\n // Handle TJS mode directives (can appear in any order after safety)\n // TjsStrict enables all TJS modes\n // Individual modes: TjsEquals, TjsClass, TjsDate, TjsNoeval, TjsStandard, TjsSafeEval\n const directivePattern =\n /^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*(TjsStrict|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsStandard|TjsSafeEval)\\b/\n\n let match\n while ((match = source.match(directivePattern))) {\n const directive = match[2]\n\n if (directive === 'TjsStrict') {\n // Enable all TJS modes\n tjsModes.tjsEquals = true\n tjsModes.tjsClass = true\n tjsModes.tjsDate = true\n tjsModes.tjsNoeval = true\n tjsModes.tjsStandard = true\n } else if (directive === 'TjsEquals') {\n tjsModes.tjsEquals = true\n } else if (directive === 'TjsClass') {\n tjsModes.tjsClass = true\n } else if (directive === 'TjsDate') {\n tjsModes.tjsDate = true\n } else if (directive === 'TjsNoeval') {\n tjsModes.tjsNoeval = true\n } else if (directive === 'TjsStandard') {\n tjsModes.tjsStandard = true\n } else if (directive === 'TjsSafeEval') {\n tjsModes.tjsSafeEval = true\n }\n\n // Remove the directive from source\n source = source.replace(\n new RegExp(\n `^(\\\\s*(?:\\\\/\\\\/[^\\\\n]*\\\\n|\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/\\\\s*)*)\\\\s*${directive}\\\\s*`\n ),\n '$1'\n )\n }\n\n // TjsStandard mode: insert semicolons to prevent ASI footguns\n // Must happen early before other transformations modify line structure\n if (tjsModes.tjsStandard) {\n source = insertAsiProtection(source)\n }\n\n // Transform Is/IsNot infix operators to function calls\n // a Is b -> Is(a, b)\n // a IsNot b -> IsNot(a, b)\n // These are always available for explicit structural equality\n source = transformIsOperators(source)\n\n // Transform == and != to structural equality (Is/IsNot)\n // Only when TjsEquals mode is enabled and not for VM targets\n // VM targets already handle == correctly at runtime\n if (tjsModes.tjsEquals && !options.vmTarget) {\n source = transformEqualityToStructural(source)\n }\n\n // Transform Type, Generic, Union, and Enum declarations\n // Type Foo { ... } -> const Foo = Type(...)\n // Generic Bar<T, U> { ... } -> const Bar = Generic(...)\n // Union Dir 'up' | 'down' -> const Dir = Union(...)\n // Enum Status { Pending, Active, Done } -> const Status = Enum(...)\n source = transformTypeDeclarations(source)\n source = transformGenericDeclarations(source)\n source = transformUnionDeclarations(source)\n source = transformEnumDeclarations(source)\n\n // Transform bare assignments to const declarations\n // Foo = ... -> const Foo = ...\n source = transformBareAssignments(source)\n\n // Unified paren expression transformer\n // Handles: function params, arrow params, return types, safe/unsafe markers\n // Model: open paren can be ( or (? or (!, close can be ) or )-> or )-? or )-!\n const {\n source: transformedSource,\n returnType,\n returnSafety,\n } = transformParenExpressions(source, {\n originalSource,\n requiredParams,\n unsafeFunctions,\n safeFunctions,\n })\n source = transformedSource\n\n // NOTE: unsafe {} blocks removed - they provided no performance benefit because\n // the wrapper decision is made at transpile time. Use (!) on functions instead.\n // See ideas parking lot for potential future approaches.\n\n // Transform extend blocks: extend TypeName { methods } -> __ext_TypeName object\n // Must happen after paren expressions so method params are already transformed\n const extResult = transformExtendDeclarations(source)\n source = extResult.source\n\n // Handle try-without-catch: try { ... } (no catch/finally) -> monadic error handling\n // This is the idiomatic TJS way to convert exceptions to AgentError\n source = transformTryWithoutCatch(source)\n\n // Transform polymorphic functions: multiple declarations with same name -> dispatcher\n // Must happen after param transformation but before class wrapping and test extraction\n const polyResult = transformPolymorphicFunctions(source, requiredParams)\n source = polyResult.source\n\n // Extract WASM blocks: wasm(args) { ... } fallback { ... }\n const wasmBlocks = extractWasmBlocks(source)\n source = wasmBlocks.source\n\n // Extract and run test blocks: test 'desc'? { body }\n // Tests run at transpile time and are stripped from output\n const testResult = extractAndRunTests(source, options.dangerouslySkipTests)\n source = testResult.source\n\n // Transform polymorphic constructors: multiple constructor() -> factory functions\n // Must happen before wrapClassDeclarations (which needs to know about poly ctors)\n const polyCtorResult = transformPolymorphicConstructors(\n source,\n requiredParams\n )\n source = polyCtorResult.source\n\n // Mark $dispatch functions as unsafe (internal Proxy trap params, not user-facing)\n for (const cls of polyCtorResult.polyCtorClasses) {\n unsafeFunctions.add(`${cls}$dispatch`)\n }\n\n // Wrap class declarations to make them callable without `new`\n // Only when TjsClass mode is enabled\n // class Foo { } -> let Foo = class Foo { }; Foo = globalThis.__tjs?.wrapClass?.(Foo) ?? Foo;\n if (tjsModes.tjsClass) {\n source = wrapClassDeclarations(source, polyCtorResult.polyCtorClasses)\n }\n\n // Validate TjsDate mode - check for Date usage\n if (tjsModes.tjsDate) {\n source = validateNoDate(source)\n }\n\n // Validate TjsNoeval mode - check for eval/Function usage\n if (tjsModes.tjsNoeval) {\n source = validateNoEval(source)\n }\n\n // Rewrite extension method calls on known-type receivers\n // Must happen after all other transforms so literals are in final form\n source = transformExtensionCalls(source, extResult.extensions)\n\n return {\n source,\n returnType,\n returnSafety,\n moduleSafety,\n tjsModes,\n originalSource,\n requiredParams,\n unsafeFunctions,\n safeFunctions,\n wasmBlocks: wasmBlocks.blocks,\n tests: testResult.tests,\n testErrors: testResult.errors,\n polymorphicNames: polyResult.polymorphicNames,\n extensions: extResult.extensions,\n }\n}\n\n/**\n * Parse source code into an Acorn AST\n */\nexport function parse(\n source: string,\n options: ParseOptions = {}\n): {\n ast: Program\n returnType?: string\n returnSafety?: 'safe' | 'unsafe'\n moduleSafety?: 'none' | 'inputs' | 'all'\n originalSource: string\n requiredParams: Set<string>\n unsafeFunctions: Set<string>\n safeFunctions: Set<string>\n wasmBlocks: WasmBlock[]\n tests: TestBlock[]\n testErrors: string[]\n} {\n const {\n filename = '<source>',\n colonShorthand = true,\n vmTarget = false,\n } = options\n\n // Preprocess for custom syntax\n const {\n source: processedSource,\n returnType,\n returnSafety,\n moduleSafety,\n originalSource,\n requiredParams,\n unsafeFunctions,\n safeFunctions,\n wasmBlocks,\n tests,\n testErrors,\n } = colonShorthand\n ? preprocess(source, { vmTarget })\n : {\n source,\n returnType: undefined,\n returnSafety: undefined,\n moduleSafety: undefined,\n originalSource: source,\n requiredParams: new Set<string>(),\n unsafeFunctions: new Set<string>(),\n safeFunctions: new Set<string>(),\n wasmBlocks: [] as WasmBlock[],\n tests: [] as TestBlock[],\n testErrors: [] as string[],\n }\n\n try {\n const ast = acorn.parse(processedSource, {\n ecmaVersion: 2022,\n sourceType: 'module',\n locations: true,\n allowReturnOutsideFunction: false,\n })\n\n return {\n ast,\n returnType,\n returnSafety,\n moduleSafety,\n originalSource,\n requiredParams,\n unsafeFunctions,\n safeFunctions,\n wasmBlocks,\n tests,\n testErrors,\n }\n } catch (e: any) {\n // Convert Acorn error to our error type\n const loc = e.loc || { line: 1, column: 0 }\n throw new SyntaxError(\n e.message.replace(/\\s*\\(\\d+:\\d+\\)$/, ''), // Remove acorn's location suffix\n loc,\n originalSource,\n filename\n )\n }\n}\n\n/**\n * Validate that the source contains exactly one function declaration\n */\nexport function validateSingleFunction(\n ast: Program,\n filename?: string\n): FunctionDeclaration {\n // Check for unsupported top-level constructs FIRST\n // This gives better error messages for things like classes\n for (const node of ast.body) {\n if (node.type === 'ImportDeclaration') {\n throw new SyntaxError(\n 'Imports are not supported. All atoms must be registered with the VM.',\n node.loc?.start || { line: 1, column: 0 },\n undefined,\n filename\n )\n }\n\n if (\n node.type === 'ExportNamedDeclaration' ||\n node.type === 'ExportDefaultDeclaration'\n ) {\n throw new SyntaxError(\n 'Exports are not supported. The function is automatically exported.',\n node.loc?.start || { line: 1, column: 0 },\n undefined,\n filename\n )\n }\n\n if (node.type === 'ClassDeclaration') {\n throw new SyntaxError(\n 'Classes are not supported. Agent99 uses functional composition.',\n node.loc?.start || { line: 1, column: 0 },\n undefined,\n filename\n )\n }\n }\n\n const functions = ast.body.filter(\n (node): node is FunctionDeclaration => node.type === 'FunctionDeclaration'\n )\n\n if (functions.length === 0) {\n throw new SyntaxError(\n 'Source must contain a function declaration',\n { line: 1, column: 0 },\n undefined,\n filename\n )\n }\n\n if (functions.length > 1) {\n const second = functions[1]\n throw new SyntaxError(\n 'Only a single function per agent is allowed',\n second.loc?.start || { line: 1, column: 0 },\n undefined,\n filename\n )\n }\n\n return functions[0]\n}\n\n/**\n * Extract TDoc comment from before a function\n *\n * TJS doc comments use /\\*# ... \\*\\/ syntax and preserve full markdown content.\n * Legacy JSDoc (/\\*\\* ... \\*\\/) is supported as a fallback.\n */\nexport function extractTDoc(\n source: string,\n func: FunctionDeclaration\n): {\n description?: string\n params: Record<string, string>\n} {\n const result: { description?: string; params: Record<string, string> } = {\n params: {},\n }\n\n if (!func.loc) return result\n\n const beforeFunc = source.substring(0, func.start)\n\n // First, check for TJS doc comment: /*# ... */\n // This preserves full markdown content\n // Find the LAST /*# ... */ block and verify it immediately precedes the function\n // (only whitespace and line comments allowed between)\n const allDocBlocks = [...beforeFunc.matchAll(/\\/\\*#([\\s\\S]*?)\\*\\//g)]\n if (allDocBlocks.length > 0) {\n const lastBlock = allDocBlocks[allDocBlocks.length - 1]\n const afterBlock = beforeFunc.substring(\n lastBlock.index! + lastBlock[0].length\n )\n\n // Only attach if nothing but whitespace and line comments between doc and function\n if (/^(?:\\s|\\/\\/[^\\n]*)*$/.test(afterBlock)) {\n // Extract content, trim leading/trailing whitespace, preserve internal formatting\n let content = lastBlock[1]\n\n // Remove common leading whitespace (like dedent)\n const lines = content.split('\\n')\n // Find minimum indentation (ignoring empty lines)\n const minIndent = lines\n .filter((line) => line.trim().length > 0)\n .reduce((min, line) => {\n const indent = line.match(/^(\\s*)/)?.[1].length || 0\n return Math.min(min, indent)\n }, Infinity)\n\n // Remove that indentation from all lines\n if (minIndent > 0 && minIndent < Infinity) {\n content = lines.map((line) => line.slice(minIndent)).join('\\n')\n }\n\n result.description = content.trim()\n return result\n }\n }\n\n // Fall back to JSDoc: /** ... */\n const jsdocMatch = beforeFunc.match(/\\/\\*\\*[\\s\\S]*?\\*\\/\\s*$/)\n if (!jsdocMatch) return result\n\n const jsdoc = jsdocMatch[0]\n\n // Extract description (first non-tag content)\n const descMatch = jsdoc.match(/\\/\\*\\*\\s*\\n?\\s*\\*?\\s*([^@\\n][^\\n]*)/m)\n if (descMatch) {\n result.description = descMatch[1].trim()\n }\n\n // Extract @param tags\n const paramRegex = /@param\\s+(?:\\{[^}]+\\}\\s+)?(\\w+)\\s*-?\\s*(.*)/g\n let match\n while ((match = paramRegex.exec(jsdoc)) !== null) {\n result.params[match[1]] = match[2].trim()\n }\n\n return result\n}\n",
@@ -14,7 +14,8 @@
14
14
  "/**\n * TJS Test Execution\n *\n * Handles transpile-time test execution, signature validation, and test utilities.\n */\n\nimport { transformExtensionCalls } from '../parser'\nimport type { TypeDescriptor } from '../types'\nimport type { ExtractedTest, ExtractedMock } from '../tests'\n\nexport interface TestResult {\n /** Test description */\n description: string\n /** Whether the test passed */\n passed: boolean\n /** Error message if failed */\n error?: string\n /** Whether this was an implicit signature test */\n isSignatureTest?: boolean\n /** Source line number (1-indexed) where the test or error occurred */\n line?: number\n /** Source column number (1-indexed) */\n column?: number\n}\n\nfunction fuzzyEqual(a: unknown, b: unknown, epsilon = 1e-9): boolean {\n if (a === b) return true\n if (typeof a === 'number' && typeof b === 'number') {\n // Check if either is non-integer (float)\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n const diff = Math.abs(a - b)\n const maxAbs = Math.max(Math.abs(a), Math.abs(b), 1)\n return diff / maxAbs < epsilon\n }\n }\n return false\n}\n\n/**\n * Deep equality check with fuzzy float comparison\n */\nfunction deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true\n // NaN === NaN is false in JS, but NaN should equal NaN in tests\n if (\n typeof a === 'number' &&\n typeof b === 'number' &&\n Number.isNaN(a) &&\n Number.isNaN(b)\n )\n return true\n if (fuzzyEqual(a, b)) return true\n if (a === null || b === null) return a === b\n if (a === undefined || b === undefined) return a === b\n if (typeof a !== typeof b) return false\n if (typeof a !== 'object') return false\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false\n return a.every((v, i) => deepEqual(v, b[i]))\n }\n\n if (Array.isArray(a) !== Array.isArray(b)) return false\n\n const keysA = Object.keys(a as object)\n const keysB = Object.keys(b as object)\n if (keysA.length !== keysB.length) return false\n return keysA.every((k) => deepEqual((a as any)[k], (b as any)[k]))\n}\n\n/**\n * Check if a value matches an expected type pattern (from example value)\n * Unlike deepEqual, this checks TYPE compatibility, not value equality.\n *\n * Example patterns:\n * 0 matches any number\n * \"\" matches any string\n * true matches any boolean\n * null matches null\n * [] matches any array\n * [0] matches array of numbers\n * {name: \"\", age: 0} matches object with string name and number age\n */\nfunction typeMatches(\n actual: unknown,\n pattern: unknown,\n path = ''\n): { matches: boolean; error?: string } {\n // null pattern matches null\n if (pattern === null) {\n if (actual === null) return { matches: true }\n return {\n matches: false,\n error: `Expected null at '${path}', got ${typeOf(actual)}`,\n }\n }\n\n // undefined pattern matches undefined\n if (pattern === undefined) {\n if (actual === undefined) return { matches: true }\n return {\n matches: false,\n error: `Expected undefined at '${path}', got ${typeOf(actual)}`,\n }\n }\n\n // Primitive types - check type, not value\n if (typeof pattern === 'number') {\n if (typeof actual === 'number') return { matches: true }\n return {\n matches: false,\n error: `Expected number at '${path}', got ${typeOf(actual)}`,\n }\n }\n\n if (typeof pattern === 'string') {\n if (typeof actual === 'string') return { matches: true }\n return {\n matches: false,\n error: `Expected string at '${path}', got ${typeOf(actual)}`,\n }\n }\n\n if (typeof pattern === 'boolean') {\n if (typeof actual === 'boolean') return { matches: true }\n return {\n matches: false,\n error: `Expected boolean at '${path}', got ${typeOf(actual)}`,\n }\n }\n\n // Arrays\n if (Array.isArray(pattern)) {\n if (!Array.isArray(actual)) {\n return {\n matches: false,\n error: `Expected array at '${path}', got ${typeOf(actual)}`,\n }\n }\n // Empty array pattern matches any array\n if (pattern.length === 0) return { matches: true }\n // Non-empty array pattern: check each element against first pattern element\n const elementPattern = pattern[0]\n for (let i = 0; i < actual.length; i++) {\n const result = typeMatches(actual[i], elementPattern, `${path}[${i}]`)\n if (!result.matches) return result\n }\n return { matches: true }\n }\n\n // Objects\n if (typeof pattern === 'object' && pattern !== null) {\n if (\n typeof actual !== 'object' ||\n actual === null ||\n Array.isArray(actual)\n ) {\n return {\n matches: false,\n error: `Expected object at '${path}', got ${typeOf(actual)}`,\n }\n }\n // Check all pattern keys exist and match types\n for (const key of Object.keys(pattern)) {\n const keyPath = path ? `${path}.${key}` : key\n if (!(key in actual)) {\n return { matches: false, error: `Missing property '${keyPath}'` }\n }\n const result = typeMatches(\n (actual as any)[key],\n (pattern as any)[key],\n keyPath\n )\n if (!result.matches) return result\n }\n return { matches: true }\n }\n\n // Fallback: exact equality\n if (actual === pattern) return { matches: true }\n return { matches: false, error: `Type mismatch at '${path}'` }\n}\n\n/**\n * Get a human-readable type description\n */\nfunction typeOf(v: unknown): string {\n if (v === null) return 'null'\n if (v === undefined) return 'undefined'\n if (Array.isArray(v)) return 'array'\n return typeof v\n}\n\n/**\n * Format a value for error messages - uses cleaner object notation\n * Multi-line for objects with 3+ properties\n */\nfunction formatValue(v: unknown, indent = 0): string {\n if (v === null) return 'null'\n if (v === undefined) return 'undefined'\n if (typeof v === 'string') return JSON.stringify(v)\n if (typeof v === 'number') return String(v)\n if (typeof v === 'boolean') return String(v)\n if (Array.isArray(v)) {\n if (v.length === 0) return '[]'\n if (v.length <= 3)\n return `[${v.map((x) => formatValue(x, indent)).join(', ')}]`\n return `[${v\n .slice(0, 3)\n .map((x) => formatValue(x, indent))\n .join(', ')}, ...]`\n }\n if (typeof v === 'object') {\n const entries = Object.entries(v)\n if (entries.length === 0) return '{}'\n\n const formatKey = (k: string) =>\n /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(k) ? k : JSON.stringify(k)\n\n // Single line for 1-2 properties\n if (entries.length <= 2) {\n const formatted = entries\n .map(([k, val]) => `${formatKey(k)}: ${formatValue(val, indent)}`)\n .join(', ')\n return `{${formatted}}`\n }\n\n // Multi-line for 3+ properties\n const pad = ' '.repeat(indent + 1)\n const closePad = ' '.repeat(indent)\n const formatted = entries\n .slice(0, 8)\n .map(\n ([k, val]) => `${pad}${formatKey(k)}: ${formatValue(val, indent + 1)}`\n )\n .join(',\\n')\n const suffix = entries.length > 8 ? `,\\n${pad}...` : ''\n return `{\\n${formatted}${suffix}\\n${closePad}}`\n }\n return String(v)\n}\n\n/**\n * Strip comments from source code\n * Used to avoid matching code patterns inside comments\n */\nfunction stripComments(code: string): string {\n // Replace block comments with equivalent whitespace (preserve line numbers)\n let result = code.replace(/\\/\\*[\\s\\S]*?\\*\\//g, (match) => {\n // Replace with same number of newlines to preserve line numbers\n const newlines = match.split('\\n').length - 1\n return '\\n'.repeat(newlines)\n })\n\n // Replace line comments\n result = result.replace(/\\/\\/[^\\n]*/g, '')\n\n return result\n}\n\n/**\n * Strip import/export syntax for test execution context\n * Tests run in new Function() which doesn't support ES modules\n *\n * Useful for:\n * - Running tests in new Function() context\n * - CLI test runners\n * - Bundler plugins that need to extract module code\n */\nexport function stripModuleSyntax(code: string): string {\n // Remove import statements (entire line)\n let result = code.replace(/^import\\s+.*?from\\s+['\"][^'\"]+['\"];?\\s*$/gm, '')\n result = result.replace(/^import\\s+['\"][^'\"]+['\"];?\\s*$/gm, '')\n\n // Remove 'export ' keyword but keep the declaration\n result = result.replace(/^export\\s+default\\s+/gm, '')\n result = result.replace(/^export\\s+/gm, '')\n\n // Strip top-level await (not inside functions) — incompatible with new Function()\n // Match lines that start with await or \"const/let/var x = await ...\"\n result = result.replace(\n /^(\\s*)((?:const|let|var)\\s+\\w+\\s*=\\s*)?await\\s+.+$/gm,\n '$1/* top-level await removed for test execution */'\n )\n\n return result\n}\n\n/**\n * Strip the __tjs runtime preamble from transpiled code\n * This is needed when injecting resolved imports into a test context\n * that already has its own __tjs stub\n *\n * Useful for:\n * - Combining multiple TJS modules into a single execution context\n * - Test runners that provide their own __tjs runtime\n * - Bundlers that need to deduplicate runtime setup\n */\nexport function stripTjsPreamble(code: string): string {\n // Remove the __tjs runtime setup lines:\n // const __tjs = globalThis.__tjs?.createRuntime?.() ?? globalThis.__tjs;\n // const { Is, IsNot } = __tjs ?? {};\n let result = code.replace(\n /^const __tjs = globalThis\\.__tjs\\?\\.createRuntime\\?\\.\\(\\) \\?\\? globalThis\\.__tjs;\\n?/m,\n ''\n )\n result = result.replace(\n /^const \\{ (?:Is|IsNot|Is, IsNot) \\} = __tjs \\?\\? \\{\\};\\n?/m,\n ''\n )\n return result\n}\n\n/**\n * Build code to inject resolved imports into test execution context\n *\n * Takes a map of module specifier -> compiled code and returns code that\n * makes those exports available in the test scope.\n *\n * For example, if resolvedImports contains:\n * { 'mymath': 'function add(a, b) { return a + b }\\nadd.__tjs = {...}' }\n *\n * This will return code that evaluates that module and makes `add` available.\n */\nfunction buildResolvedImportsCode(\n resolvedImports: Record<string, string>\n): string {\n if (Object.keys(resolvedImports).length === 0) {\n return ''\n }\n\n const lines: string[] = []\n\n for (const [specifier, moduleCode] of Object.entries(resolvedImports)) {\n // Strip module syntax from the imported code too (it may have exports)\n let cleanCode = stripModuleSyntax(moduleCode)\n // Strip __tjs preamble to avoid duplicate declarations\n // (test execution context provides its own __tjs stub)\n cleanCode = stripTjsPreamble(cleanCode)\n\n lines.push(`// Resolved import: ${specifier}`)\n lines.push(cleanCode)\n }\n\n return lines.join('\\n')\n}\n\n/**\n * Parse a return type example that may contain `key = defaultValue` syntax.\n * Transforms `{ value: 0, error = '' }` into valid JS `{ value: 0, error: '' }`\n * and extracts the default values for optional keys.\n */\nfunction parseReturnExample(\n str: string\n): { pattern: unknown; defaults: Record<string, unknown> } | null {\n const defaults: Record<string, unknown> = {}\n\n // Only process objects that might contain = syntax\n const trimmed = str.trim()\n if (!trimmed.startsWith('{') || !trimmed.includes('=')) {\n try {\n return { pattern: new Function(`return ${str}`)(), defaults }\n } catch {\n return null\n }\n }\n\n // Transform top-level `key = value` to `key: value` and track defaults\n // Walk the string respecting nesting depth\n let transformed = ''\n let depth = 0\n let i = 0\n\n while (i < trimmed.length) {\n const ch = trimmed[i]\n\n if (ch === '{' || ch === '[' || ch === '(') {\n depth++\n transformed += ch\n i++\n } else if (ch === '}' || ch === ']' || ch === ')') {\n depth--\n transformed += ch\n i++\n } else if (ch === \"'\" || ch === '\"' || ch === '`') {\n // Skip string literals\n const quote = ch\n transformed += ch\n i++\n while (i < trimmed.length && trimmed[i] !== quote) {\n if (trimmed[i] === '\\\\') {\n transformed += trimmed[i++]\n }\n transformed += trimmed[i++]\n }\n if (i < trimmed.length) {\n transformed += trimmed[i++]\n }\n } else if (depth === 1 && ch === '=') {\n // Top-level `key = value` — look back for the key name\n const beforeEq = transformed.slice(transformed.lastIndexOf('{') + 1)\n const lastSegment = beforeEq.split(',').pop() || ''\n const keyMatch = lastSegment.match(/\\s*(\\w+)\\s*$/)\n if (keyMatch) {\n // Find the value after =\n let j = i + 1\n while (j < trimmed.length && /\\s/.test(trimmed[j])) j++\n\n // Extract value (up to , or } at depth 1)\n let valStr = ''\n let valDepth = 0\n while (j < trimmed.length) {\n const vc = trimmed[j]\n if (vc === '{' || vc === '[' || vc === '(') valDepth++\n else if (vc === '}' || vc === ']' || vc === ')') {\n if (valDepth === 0) break\n valDepth--\n } else if (vc === ',' && valDepth === 0) break\n valStr += vc\n j++\n }\n\n try {\n defaults[keyMatch[1]] = new Function(`return ${valStr.trim()}`)()\n } catch {\n // Can't parse default, skip\n }\n\n // Replace = with : in output\n transformed += ':'\n i++\n continue\n }\n transformed += ch\n i++\n } else {\n transformed += ch\n i++\n }\n }\n\n try {\n return { pattern: new Function(`return ${transformed}`)(), defaults }\n } catch {\n return null\n }\n}\n\n/**\n * Info about a signature test (extracted but not yet executed)\n */\ninterface SignatureTestInfo {\n funcName: string\n args: unknown[]\n expected: unknown\n defaults?: Record<string, unknown>\n line: number\n isAsync?: boolean\n}\n\n/**\n * Extract signature test info from source without executing\n */\nexport function extractSignatureTestInfos(\n originalSource: string\n): SignatureTestInfo[] {\n const infos: SignatureTestInfo[] = []\n\n // Strip comments to avoid matching functions inside doc comments/code examples\n const sourceWithoutComments = stripComments(originalSource)\n\n // Match function declarations with return type marker (-> or -?)\n // Skip -! which means \"don't test\"\n // Pattern: [async] function name(params) -> returnExample {\n const funcRegex = /(async\\s+)?function\\s+(\\w+)\\s*\\(([^)]*)\\)\\s*(-[>?])\\s*/g\n\n let match\n while ((match = funcRegex.exec(sourceWithoutComments)) !== null) {\n const isAsync = !!match[1]\n const funcName = match[2]\n const paramsStr = match[3]\n const returnMarker = match[4]\n\n // Calculate line number from match position in stripped source\n const lineNumber = sourceWithoutComments\n .slice(0, match.index)\n .split('\\n').length\n\n // -! means skip test\n if (returnMarker === '-!') continue\n\n // Extract return example - handle nested braces/brackets\n const afterMarker = sourceWithoutComments.slice(\n match.index + match[0].length\n )\n const returnExample = extractReturnExampleFromSource(afterMarker)\n if (!returnExample) continue\n\n // Extract parameter examples\n const paramExamples = extractParamExamples(paramsStr)\n if (paramsStr.trim() && paramExamples.length === 0) continue\n\n try {\n // Parse expected value (with optional default keys) and args\n const parsed = parseReturnExample(returnExample)\n if (!parsed) continue\n\n const args = paramExamples.map((p) => new Function(`return ${p}`)())\n\n infos.push({\n funcName,\n args,\n expected: parsed.pattern,\n defaults:\n Object.keys(parsed.defaults).length > 0 ? parsed.defaults : undefined,\n line: lineNumber,\n isAsync,\n })\n } catch {\n // Skip if parsing fails - will be reported as error during execution\n }\n }\n\n return infos\n}\n\n/**\n * Run all tests (explicit blocks + signature tests) in a single execution context\n * This executes the module only once, then runs all tests against that context\n */\nexport function runAllTests(\n tests: ExtractedTest[],\n mocks: ExtractedMock[],\n sigTestInfos: SignatureTestInfo[],\n transpiledCode: string,\n resolvedImports: Record<string, string> = {},\n extensions: Map<string, Set<string>> = new Map()\n): TestResult[] {\n const results: TestResult[] = []\n\n // If no tests at all, return empty\n if (tests.length === 0 && sigTestInfos.length === 0) {\n return results\n }\n\n // Detect unresolved imports — imports in source that aren't in resolvedImports\n const importSpecifiers =\n transpiledCode.match(/^import\\s+.*?from\\s+['\"]([^'\"]+)['\"];?\\s*$/gm) || []\n const hasUnresolvedImports =\n importSpecifiers.length > 0 &&\n importSpecifiers.some((imp) => {\n const match = imp.match(/from\\s+['\"]([^'\"]+)['\"]/)\n return match && !(match[1] in resolvedImports)\n })\n\n // Strip import/export for test execution (can't use modules in new Function)\n let executableCode = stripModuleSyntax(transpiledCode)\n // Strip __tjs preamble - test context provides its own stub\n executableCode = stripTjsPreamble(executableCode)\n\n // Build resolved imports code - inject imported module code into execution context\n const importedCode = buildResolvedImportsCode(resolvedImports)\n\n // Build mock setup\n const mockSetup = mocks.map((m) => m.body).join('\\n')\n\n // Build test execution code that runs all tests in sequence\n const testBodies = tests\n .map((t, i) => {\n // Apply extension call rewriting to test body if extensions exist\n const body =\n extensions.size > 0\n ? transformExtensionCalls(t.body, extensions)\n : t.body\n return `\n // Test ${i}: ${t.description}\n try {\n ${body}\n __testResults.push({ idx: ${i}, passed: true });\n } catch (e) {\n __testResults.push({ idx: ${i}, passed: false, error: e.message || String(e) });\n }\n `\n })\n .join('\\n')\n\n // Filter out async functions — can't be tested synchronously at transpile time\n // Users should test async functions with explicit test blocks instead\n const syncSigTestInfos = sigTestInfos.filter((info) => !info.isAsync)\n const asyncSigTestInfos = sigTestInfos.filter((info) => info.isAsync)\n\n // Build signature test execution code\n const sigTestBodies = syncSigTestInfos\n .map(\n (info, i) => `\n // Signature test ${i}: ${info.funcName}\n try {\n let __actual = ${info.funcName}(${info.args\n .map((a) => JSON.stringify(a))\n .join(', ')});\n const __expected = ${JSON.stringify(info.expected)};${\n info.defaults\n ? `\n const __defaults = ${JSON.stringify(info.defaults)};\n if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`\n : ''\n }\n const __typeResult = __typeMatches(__actual, __expected, '${\n info.funcName\n }');\n if (__typeResult.matches) {\n __sigTestResults.push({ idx: ${i}, passed: true });\n } else {\n __sigTestResults.push({ idx: ${i}, passed: false, error: __typeResult.error || 'Type mismatch: got ' + __format(__actual) });\n }\n } catch (e) {\n __sigTestResults.push({ idx: ${i}, passed: false, error: e.message || String(e) });\n }\n `\n )\n .join('\\n')\n\n // TJS stub setup/restore\n const tjsStub = `\n const __saved_tjs = globalThis.__tjs;\n class __MonadicError extends Error { constructor(m,p,e,a,c){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;} }\n const __stub_tjs = { version: '0.0.0', MonadicError: __MonadicError, pushStack: () => {}, popStack: () => {}, getStack: () => [], typeError: (path, expected, value) => new __MonadicError(\\`Type error at \\${path}: expected \\${expected}\\`, path, expected, typeof value), createRuntime: function() { return this; } };\n globalThis.__tjs = __stub_tjs;\n `\n const tjsRestore = `globalThis.__tjs = __saved_tjs;`\n\n // Combined test code - execute module ONCE, then run all tests\n const testCode = `\n ${tjsStub}\n const __testResults = [];\n const __sigTestResults = [];\n try {\n // Test assertions\n function assert(condition, message) {\n if (!condition) throw new Error(message || 'Assertion failed')\n }\n\n function expect(actual) {\n return {\n toBe(expected) {\n if (!__deepEqual(actual, expected)) {\n throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))\n }\n },\n toEqual(expected) {\n if (!__deepEqual(actual, expected)) {\n throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))\n }\n },\n toContain(item) {\n if (!Array.isArray(actual) || !actual.some(function(v) { return __deepEqual(v, item) })) {\n throw new Error('Expected ' + __format(actual) + ' to contain ' + __format(item))\n }\n },\n toBeTruthy() {\n if (!actual) {\n throw new Error('Expected ' + __format(actual) + ' to be truthy')\n }\n },\n toBeFalsy() {\n if (actual) {\n throw new Error('Expected ' + __format(actual) + ' to be falsy')\n }\n },\n toBeNull() {\n if (actual !== null) {\n throw new Error('Expected null but got ' + __format(actual))\n }\n },\n toBeUndefined() {\n if (actual !== undefined) {\n throw new Error('Expected undefined but got ' + __format(actual))\n }\n },\n toBeGreaterThan(n) {\n if (!(actual > n)) {\n throw new Error('Expected ' + __format(actual) + ' to be greater than ' + n)\n }\n },\n toBeLessThan(n) {\n if (!(actual < n)) {\n throw new Error('Expected ' + __format(actual) + ' to be less than ' + n)\n }\n },\n toBeNaN() {\n if (typeof actual !== 'number' || !Number.isNaN(actual)) {\n throw new Error('Expected NaN but got ' + __format(actual))\n }\n }\n }\n }\n\n // Inject resolved imports first (they may be dependencies)\n ${importedCode}\n\n // Execute the module code ONCE\n ${executableCode}\n ${mockSetup}\n\n // Run explicit test blocks\n ${testBodies}\n\n // Run signature tests\n ${sigTestBodies}\n\n } finally {\n ${tjsRestore}\n }\n return { testResults: __testResults, sigTestResults: __sigTestResults };\n `\n\n try {\n // Execute all tests\n const fn = new Function(\n '__deepEqual',\n '__format',\n '__typeMatches',\n testCode\n )\n const { testResults: blockResults, sigTestResults } = fn(\n deepEqual,\n formatValue,\n typeMatches\n )\n\n // Map block test results\n for (const r of blockResults) {\n const test = tests[r.idx]\n // Skip block tests that fail due to unresolved imports\n const isImportError =\n hasUnresolvedImports &&\n !r.passed &&\n r.error &&\n /is not defined$/.test(r.error)\n results.push({\n description: test.description,\n passed: isImportError ? true : r.passed,\n error: isImportError ? undefined : r.error,\n line: test.line,\n })\n }\n\n // Map signature test results\n for (const r of sigTestResults) {\n const info = syncSigTestInfos[r.idx]\n // Skip signature tests that fail due to unresolved imports\n const isImportError =\n hasUnresolvedImports &&\n !r.passed &&\n r.error &&\n /is not defined$/.test(r.error)\n results.push({\n description: `${info.funcName} signature example`,\n passed: isImportError ? true : r.passed,\n error: isImportError ? undefined : r.error,\n isSignatureTest: true,\n line: info.line,\n })\n }\n } catch (e: any) {\n // If module fails due to unresolved imports (ReferenceError from stripped imports),\n // skip tests gracefully rather than marking them as failures\n const isUnresolvedRef = hasUnresolvedImports && e instanceof ReferenceError\n\n for (const test of tests) {\n results.push({\n description: test.description,\n passed: isUnresolvedRef,\n error: isUnresolvedRef\n ? undefined\n : `Module execution failed: ${e.message}`,\n line: test.line,\n })\n }\n for (const info of syncSigTestInfos) {\n results.push({\n description: `${info.funcName} signature example`,\n passed: isUnresolvedRef,\n error: isUnresolvedRef\n ? undefined\n : `Module execution failed: ${e.message}`,\n isSignatureTest: true,\n line: info.line,\n })\n }\n }\n\n // Add skipped results for async signature tests\n for (const info of asyncSigTestInfos) {\n results.push({\n description: `${info.funcName} signature example`,\n passed: true,\n isSignatureTest: true,\n line: info.line,\n })\n }\n\n return results\n}\n\n/**\n * Run extracted test blocks at transpile time\n * @deprecated Use runAllTests instead for single execution context\n */\nfunction runTestBlocks(\n tests: ExtractedTest[],\n mocks: ExtractedMock[],\n transpiledCode: string,\n resolvedImports: Record<string, string> = {}\n): TestResult[] {\n const results: TestResult[] = []\n\n // Strip import/export for test execution (can't use modules in new Function)\n let executableCode = stripModuleSyntax(transpiledCode)\n // Strip __tjs preamble - test context provides its own stub\n executableCode = stripTjsPreamble(executableCode)\n\n // Build resolved imports code - inject imported module code into execution context\n const importedCode = buildResolvedImportsCode(resolvedImports)\n\n // Build execution context with the transpiled function\n const mockSetup = mocks.map((m) => m.body).join('\\n')\n\n for (const test of tests) {\n try {\n // Create a function that runs the test\n // Always provide a clean __tjs stub for isolated test execution\n // Save and restore globalThis.__tjs to prevent pollution\n const tjsStub = `\n const __saved_tjs = globalThis.__tjs;\n class __MonadicError extends Error { constructor(m,p,e,a,c){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;} }\n const __stub_tjs = { version: '0.0.0', MonadicError: __MonadicError, pushStack: () => {}, popStack: () => {}, getStack: () => [], typeError: (path, expected, value) => new __MonadicError(\\`Type error at \\${path}: expected \\${expected}\\`, path, expected, typeof value), createRuntime: function() { return this; } };\n globalThis.__tjs = __stub_tjs;\n `\n const tjsRestore = `globalThis.__tjs = __saved_tjs;`\n const testCode = `\n ${tjsStub}\n try {\n // Inject resolved imports first (they may be dependencies)\n ${importedCode}\n ${executableCode}\n ${mockSetup}\n\n // Test assertions\n function assert(condition, message) {\n if (!condition) throw new Error(message || 'Assertion failed')\n }\n\n function expect(actual) {\n return {\n toBe(expected) {\n if (!__deepEqual(actual, expected)) {\n throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))\n }\n },\n toEqual(expected) {\n if (!__deepEqual(actual, expected)) {\n throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))\n }\n },\n toContain(item) {\n if (!Array.isArray(actual) || !actual.some(function(v) { return __deepEqual(v, item) })) {\n throw new Error('Expected ' + __format(actual) + ' to contain ' + __format(item))\n }\n },\n toBeTruthy() {\n if (!actual) {\n throw new Error('Expected ' + __format(actual) + ' to be truthy')\n }\n },\n toBeFalsy() {\n if (actual) {\n throw new Error('Expected ' + __format(actual) + ' to be falsy')\n }\n },\n toBeNull() {\n if (actual !== null) {\n throw new Error('Expected null but got ' + __format(actual))\n }\n },\n toBeUndefined() {\n if (actual !== undefined) {\n throw new Error('Expected undefined but got ' + __format(actual))\n }\n },\n toBeGreaterThan(n) {\n if (!(actual > n)) {\n throw new Error('Expected ' + __format(actual) + ' to be greater than ' + n)\n }\n },\n toBeLessThan(n) {\n if (!(actual < n)) {\n throw new Error('Expected ' + __format(actual) + ' to be less than ' + n)\n }\n },\n toBeNaN() {\n if (typeof actual !== 'number' || !Number.isNaN(actual)) {\n throw new Error('Expected NaN but got ' + __format(actual))\n }\n }\n }\n }\n\n // Run the test body\n ${test.body}\n } finally {\n ${tjsRestore}\n }\n `\n\n // Execute the test\n const fn = new Function('__deepEqual', '__format', testCode)\n fn(deepEqual, formatValue)\n\n results.push({\n description: test.description,\n passed: true,\n line: test.line,\n })\n } catch (e: any) {\n results.push({\n description: test.description,\n passed: false,\n error: e.message || String(e),\n line: test.line,\n })\n }\n }\n\n return results\n}\n\n/**\n * Evaluate an ObjectExpression AST node to a plain object\n */\nfunction evalObjectExpression(node: any): Record<string, unknown> {\n const result: Record<string, unknown> = {}\n for (const prop of node.properties) {\n if (prop.type === 'Property' && prop.key) {\n const key =\n prop.key.type === 'Identifier' ? prop.key.name : prop.key.value\n if (prop.value.type === 'Literal') {\n result[key] = prop.value.value\n } else if (prop.value.type === 'ObjectExpression') {\n result[key] = evalObjectExpression(prop.value)\n } else if (prop.value.type === 'ArrayExpression') {\n result[key] = evalArrayExpression(prop.value)\n } else {\n throw new Error('Unsupported value type')\n }\n }\n }\n return result\n}\n\n/**\n * Evaluate an ArrayExpression AST node to an array\n */\nfunction evalArrayExpression(node: any): unknown[] {\n const result: unknown[] = []\n for (const elem of node.elements) {\n if (elem.type === 'Literal') {\n result.push(elem.value)\n } else if (elem.type === 'ObjectExpression') {\n result.push(evalObjectExpression(elem))\n } else if (elem.type === 'ArrayExpression') {\n result.push(evalArrayExpression(elem))\n } else {\n throw new Error('Unsupported element type')\n }\n }\n return result\n}\n\n/**\n * Extract and run signature tests for ALL functions with -> return types\n * Parses the original source to find function signatures\n *\n * Current limitations (future work):\n * - Only tests top-level `function` declarations (not arrow functions yet)\n * - Nested functions (inside other functions/blocks) are not excluded yet\n * and will fail if tested since they're not in global scope\n * - Arrow functions like `Foo = (x: 5) -> 10 => {}` not yet supported\n */\nfunction runAllSignatureTests(\n originalSource: string,\n transpiledCode: string,\n resolvedImports: Record<string, string> = {}\n): TestResult[] {\n const results: TestResult[] = []\n\n // Strip comments to avoid matching functions inside doc comments/code examples\n const sourceWithoutComments = stripComments(originalSource)\n\n // Match function declarations with return type marker (-> or -?)\n // Skip -! which means \"don't test\"\n // Pattern: function name(params) -> returnExample {\n const funcRegex = /function\\s+(\\w+)\\s*\\(([^)]*)\\)\\s*(-[>?])\\s*/g\n\n let match\n while ((match = funcRegex.exec(sourceWithoutComments)) !== null) {\n const funcName = match[1]\n const paramsStr = match[2]\n const returnMarker = match[3]\n\n // Calculate line number from match position in stripped source\n const lineNumber = sourceWithoutComments\n .slice(0, match.index)\n .split('\\n').length\n\n // -! means skip test\n if (returnMarker === '-!') continue\n\n // Extract return example - handle nested braces/brackets\n // Use stripped source since match.index is from that\n const afterMarker = sourceWithoutComments.slice(\n match.index + match[0].length\n )\n const returnExample = extractReturnExampleFromSource(afterMarker)\n if (!returnExample) continue\n\n // Extract parameter examples\n const paramExamples = extractParamExamples(paramsStr)\n if (paramsStr.trim() && paramExamples.length === 0) continue\n\n // Run the signature test\n try {\n // Parse expected value (with optional default keys)\n const parsed = parseReturnExample(returnExample)\n if (!parsed) continue\n\n // Parse args\n const args = paramExamples.map((p) => new Function(`return ${p}`)())\n\n const result = runSignatureTest(\n funcName,\n transpiledCode,\n args,\n parsed.pattern,\n resolvedImports,\n Object.keys(parsed.defaults).length > 0 ? parsed.defaults : undefined\n )\n result.line = lineNumber\n results.push(result)\n } catch (e: any) {\n results.push({\n description: `${funcName} signature example`,\n passed: false,\n error: `Failed to parse signature: ${e.message}`,\n isSignatureTest: true,\n line: lineNumber,\n })\n }\n }\n\n return results\n}\n\n/**\n * Extract return type example from source, handling nested braces\n */\nexport function extractReturnExampleFromSource(source: string): string | null {\n let result = ''\n let depth = 0\n let hasContent = false\n\n for (let i = 0; i < source.length; i++) {\n const char = source[i]\n\n if (char === '{' || char === '[' || char === '(') {\n if (char === '{' && depth === 0 && hasContent) {\n // Found the function body opening brace\n break\n }\n depth++\n result += char\n hasContent = true\n } else if (char === '}' || char === ']' || char === ')') {\n depth--\n result += char\n } else if (!/\\s/.test(char)) {\n result += char\n hasContent = true\n } else {\n result += char\n }\n }\n\n const trimmed = result.trim()\n return trimmed || null\n}\n\n/**\n * Extract parameter example values from params string\n */\nfunction extractParamExamples(paramsStr: string): string[] {\n if (!paramsStr.trim()) return []\n\n const examples: string[] = []\n const params = splitParams(paramsStr)\n\n for (const param of params) {\n // Match: name: example or name = example (with optional safety markers)\n // Handle: (? name: example) or (! name: example)\n const match = param.match(/(?:\\(\\s*[?!]\\s*)?(\\w+)\\s*[:=]\\s*(.+?)(?:\\))?$/)\n if (match) {\n examples.push(match[2].trim())\n } else {\n // No example value - can't run signature test\n return []\n }\n }\n\n return examples\n}\n\n/**\n * Split parameter string on commas, respecting nested structures\n */\nfunction splitParams(paramsStr: string): string[] {\n const params: string[] = []\n let current = ''\n let depth = 0\n\n for (const char of paramsStr) {\n if (char === '(' || char === '[' || char === '{') depth++\n else if (char === ')' || char === ']' || char === '}') depth--\n else if (char === ',' && depth === 0) {\n params.push(current.trim())\n current = ''\n continue\n }\n current += char\n }\n\n if (current.trim()) params.push(current.trim())\n return params\n}\n\n/**\n * Run signature example test\n */\nfunction runSignatureTest(\n funcName: string,\n transpiledCode: string,\n args: unknown[],\n expected: unknown,\n resolvedImports: Record<string, string> = {},\n defaults?: Record<string, unknown>\n): TestResult {\n const description = `${funcName} signature example`\n\n // Strip import/export for test execution (can't use modules in new Function)\n let executableCode = stripModuleSyntax(transpiledCode)\n // Strip __tjs preamble - test context provides its own stub\n executableCode = stripTjsPreamble(executableCode)\n\n // Build resolved imports code - inject imported module code into execution context\n const importedCode = buildResolvedImportsCode(resolvedImports)\n\n try {\n // Execute the function with example args\n // Provide a minimal __tjs stub for pushStack/typeError (used by inline validation)\n // Only define if not already in the transpiled code\n // Always provide a clean __tjs stub for isolated test execution\n // Save and restore globalThis.__tjs to prevent pollution\n const tjsStub = `\n const __saved_tjs = globalThis.__tjs;\n class __MonadicError extends Error { constructor(m,p,e,a,c){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;} }\n const __stub_tjs = { version: '0.0.0', MonadicError: __MonadicError, pushStack: () => {}, popStack: () => {}, getStack: () => [], typeError: (path, expected, value) => new __MonadicError(\\`Type error at \\${path}: expected \\${expected}\\`, path, expected, typeof value), createRuntime: function() { return this; } };\n globalThis.__tjs = __stub_tjs;\n `\n const tjsRestore = `globalThis.__tjs = __saved_tjs;`\n const testCode = `\n ${tjsStub}\n try {\n // Inject resolved imports first (they may be dependencies)\n ${importedCode}\n ${executableCode}\n return ${funcName}(${args.map((a) => JSON.stringify(a)).join(', ')})\n } finally {\n ${tjsRestore}\n }\n `\n const fn = new Function(testCode)\n let actual = fn()\n\n // Merge defaults for optional keys before type checking\n if (defaults && typeof actual === 'object' && actual !== null) {\n actual = Object.assign({}, defaults, actual)\n }\n\n // Use type matching, not value equality\n // The expected value is a TYPE PATTERN (example), not the exact expected result\n const result = typeMatches(actual, expected, funcName)\n if (!result.matches) {\n return {\n description,\n passed: false,\n error: result.error || `Type mismatch: got ${formatValue(actual)}`,\n isSignatureTest: true,\n }\n }\n\n return { description, passed: true, isSignatureTest: true }\n } catch (e: any) {\n return {\n description,\n passed: false,\n error: e.message || String(e),\n isSignatureTest: true,\n }\n }\n}\n\n/**\n * Compile WASM blocks and generate bootstrap code that embeds the compiled bytes\n * and instantiates them on load.\n */\n",
15
15
  "/**\n * TJS to WebAssembly Compiler\n *\n * Compiles a subset of TJS to WebAssembly for performance-critical code.\n *\n * Supported features:\n * - Numeric operations (+, -, *, /, %)\n * - Typed arrays (Float32Array, Float64Array, Int32Array, Uint8Array)\n * - For loops with numeric bounds\n * - Math functions (sin, cos, sqrt, abs, floor, ceil, min, max)\n * - Basic conditionals (if/else)\n * - Variable declarations (let)\n *\n * The goal is to enable real-world WASM acceleration for hot paths like\n * audio processing, image manipulation, and physics simulations.\n */\n\nimport * as acorn from 'acorn'\nimport type { WasmBlock } from './parser'\n\n// ============================================================================\n// WASM Binary Encoding Constants\n// ============================================================================\n\n/** WASM value type codes */\nconst Type = {\n i32: 0x7f,\n i64: 0x7e,\n f32: 0x7d,\n f64: 0x7c,\n v128: 0x7b,\n funcref: 0x70,\n externref: 0x6f,\n void: 0x40, // empty block type\n} as const\n\n/** WASM section codes */\nconst Section = {\n custom: 0,\n type: 1,\n import: 2,\n function: 3,\n table: 4,\n memory: 5,\n global: 6,\n export: 7,\n start: 8,\n element: 9,\n code: 10,\n data: 11,\n} as const\n\n/** WASM opcodes */\nconst Op = {\n // Control flow\n unreachable: 0x00,\n nop: 0x01,\n block: 0x02,\n loop: 0x03,\n if: 0x04,\n else: 0x05,\n end: 0x0b,\n br: 0x0c,\n br_if: 0x0d,\n br_table: 0x0e,\n return: 0x0f,\n call: 0x10,\n call_indirect: 0x11,\n\n // Parametric\n drop: 0x1a,\n select: 0x1b,\n\n // Variable access\n local_get: 0x20,\n local_set: 0x21,\n local_tee: 0x22,\n global_get: 0x23,\n global_set: 0x24,\n\n // Memory operations\n i32_load: 0x28,\n i64_load: 0x29,\n f32_load: 0x2a,\n f64_load: 0x2b,\n i32_load8_s: 0x2c,\n i32_load8_u: 0x2d,\n i32_load16_s: 0x2e,\n i32_load16_u: 0x2f,\n i32_store: 0x36,\n i64_store: 0x37,\n f32_store: 0x38,\n f64_store: 0x39,\n i32_store8: 0x3a,\n i32_store16: 0x3b,\n memory_size: 0x3f,\n memory_grow: 0x40,\n\n // Constants\n i32_const: 0x41,\n i64_const: 0x42,\n f32_const: 0x43,\n f64_const: 0x44,\n\n // i32 comparison\n i32_eqz: 0x45,\n i32_eq: 0x46,\n i32_ne: 0x47,\n i32_lt_s: 0x48,\n i32_lt_u: 0x49,\n i32_gt_s: 0x4a,\n i32_gt_u: 0x4b,\n i32_le_s: 0x4c,\n i32_le_u: 0x4d,\n i32_ge_s: 0x4e,\n i32_ge_u: 0x4f,\n\n // i64 comparison\n i64_eqz: 0x50,\n i64_eq: 0x51,\n i64_ne: 0x52,\n i64_lt_s: 0x53,\n i64_lt_u: 0x54,\n i64_gt_s: 0x55,\n i64_gt_u: 0x56,\n i64_le_s: 0x57,\n i64_le_u: 0x58,\n i64_ge_s: 0x59,\n i64_ge_u: 0x5a,\n\n // f32 comparison\n f32_eq: 0x5b,\n f32_ne: 0x5c,\n f32_lt: 0x5d,\n f32_gt: 0x5e,\n f32_le: 0x5f,\n f32_ge: 0x60,\n\n // f64 comparison\n f64_eq: 0x61,\n f64_ne: 0x62,\n f64_lt: 0x63,\n f64_gt: 0x64,\n f64_le: 0x65,\n f64_ge: 0x66,\n\n // i32 arithmetic\n i32_clz: 0x67,\n i32_ctz: 0x68,\n i32_popcnt: 0x69,\n i32_add: 0x6a,\n i32_sub: 0x6b,\n i32_mul: 0x6c,\n i32_div_s: 0x6d,\n i32_div_u: 0x6e,\n i32_rem_s: 0x6f,\n i32_rem_u: 0x70,\n i32_and: 0x71,\n i32_or: 0x72,\n i32_xor: 0x73,\n i32_shl: 0x74,\n i32_shr_s: 0x75,\n i32_shr_u: 0x76,\n i32_rotl: 0x77,\n i32_rotr: 0x78,\n\n // i64 arithmetic\n i64_add: 0x7c,\n i64_sub: 0x7d,\n i64_mul: 0x7e,\n i64_div_s: 0x7f,\n\n // f32 arithmetic\n f32_abs: 0x8b,\n f32_neg: 0x8c,\n f32_ceil: 0x8d,\n f32_floor: 0x8e,\n f32_trunc: 0x8f,\n f32_nearest: 0x90,\n f32_sqrt: 0x91,\n f32_add: 0x92,\n f32_sub: 0x93,\n f32_mul: 0x94,\n f32_div: 0x95,\n f32_min: 0x96,\n f32_max: 0x97,\n f32_copysign: 0x98,\n\n // f64 arithmetic\n f64_abs: 0x99,\n f64_neg: 0x9a,\n f64_ceil: 0x9b,\n f64_floor: 0x9c,\n f64_trunc: 0x9d,\n f64_nearest: 0x9e,\n f64_sqrt: 0x9f,\n f64_add: 0xa0,\n f64_sub: 0xa1,\n f64_mul: 0xa2,\n f64_div: 0xa3,\n f64_min: 0xa4,\n f64_max: 0xa5,\n f64_copysign: 0xa6,\n\n // Conversions\n i32_wrap_i64: 0xa7,\n i32_trunc_f32_s: 0xa8,\n i32_trunc_f32_u: 0xa9,\n i32_trunc_f64_s: 0xaa,\n i32_trunc_f64_u: 0xab,\n i64_extend_i32_s: 0xac,\n i64_extend_i32_u: 0xad,\n f32_convert_i32_s: 0xb2,\n f32_convert_i32_u: 0xb3,\n f32_convert_i64_s: 0xb4,\n f32_demote_f64: 0xb6,\n f64_convert_i32_s: 0xb7,\n f64_convert_i32_u: 0xb8,\n f64_convert_i64_s: 0xb9,\n f64_promote_f32: 0xbb,\n i32_reinterpret_f32: 0xbc,\n f32_reinterpret_i32: 0xbe,\n f64_reinterpret_i64: 0xbf,\n\n // Sign extension\n i32_extend8_s: 0xc0,\n i32_extend16_s: 0xc1,\n} as const\n\n/** Reverse lookup: opcode byte -> instruction name */\nconst OpName: Record<number, string> = Object.fromEntries(\n Object.entries(Op).map(([name, code]) => [code, name.replace(/_/g, '.')])\n)\n\n// ============================================================================\n// SIMD (v128/f32x4) Constants\n// ============================================================================\n\n/** WASM SIMD prefix byte — all SIMD instructions start with this */\nconst SIMD_PREFIX = 0xfd\n\n/** SIMD sub-opcodes (follow the 0xfd prefix, LEB128-encoded) */\nconst SimdOp = {\n // Memory\n v128_load: 0x00,\n v128_store: 0x0b,\n\n // Constants\n v128_const: 0x0c,\n\n // Splat (scalar → all 4 lanes)\n f32x4_splat: 0x13,\n\n // Lane access\n f32x4_extract_lane: 0x1f,\n f32x4_replace_lane: 0x20,\n\n // f32x4 arithmetic\n f32x4_neg: 0xe1,\n f32x4_sqrt: 0xe3,\n f32x4_add: 0xe4,\n f32x4_sub: 0xe5,\n f32x4_mul: 0xe6,\n f32x4_div: 0xe7,\n} as const\n\n/** Reverse lookup for SIMD opcodes */\nconst SimdOpName: Record<number, string> = Object.fromEntries(\n Object.entries(SimdOp).map(([name, code]) => [code, name.replace(/_/g, '.')])\n)\n\n/** Encode a SIMD instruction (0xfd prefix + LEB128 sub-opcode) */\nfunction encodeSIMD(subOp: number): number[] {\n return [SIMD_PREFIX, ...encodeULEB128(subOp)]\n}\n\n/** Encode a SIMD instruction with memarg (align + offset) */\nfunction encodeSIMDMemarg(\n subOp: number,\n align: number,\n offset: number\n): number[] {\n return [\n SIMD_PREFIX,\n ...encodeULEB128(subOp),\n ...encodeULEB128(align),\n ...encodeULEB128(offset),\n ]\n}\n\n/** Emit WAT instruction to context */\nfunction wat(ctx: CompileContext, instruction: string): void {\n ctx.wat.push(' '.repeat(ctx.watIndent) + instruction)\n}\n\n// ============================================================================\n// LEB128 Encoding\n// ============================================================================\n\nfunction encodeULEB128(value: number): number[] {\n const result: number[] = []\n do {\n let byte = value & 0x7f\n value >>>= 7\n if (value !== 0) byte |= 0x80\n result.push(byte)\n } while (value !== 0)\n return result\n}\n\nfunction encodeSLEB128(value: number): number[] {\n const result: number[] = []\n let more = true\n while (more) {\n let byte = value & 0x7f\n value >>= 7\n if (\n (value === 0 && (byte & 0x40) === 0) ||\n (value === -1 && (byte & 0x40) !== 0)\n ) {\n more = false\n } else {\n byte |= 0x80\n }\n result.push(byte)\n }\n return result\n}\n\nfunction encodeF32(value: number): number[] {\n const buffer = new ArrayBuffer(4)\n new Float32Array(buffer)[0] = value\n return [...new Uint8Array(buffer)]\n}\n\nfunction encodeF64(value: number): number[] {\n const buffer = new ArrayBuffer(8)\n new Float64Array(buffer)[0] = value\n return [...new Uint8Array(buffer)]\n}\n\nfunction encodeString(s: string): number[] {\n const bytes = new TextEncoder().encode(s)\n return [...encodeULEB128(bytes.length), ...bytes]\n}\n\nfunction encodeSection(id: number, contents: number[]): number[] {\n return [id, ...encodeULEB128(contents.length), ...contents]\n}\n\nfunction encodeVector(items: number[][]): number[] {\n return [...encodeULEB128(items.length), ...items.flat()]\n}\n\n// ============================================================================\n// Disassembly (for debugging)\n// ============================================================================\n\n/** Decode ULEB128 from bytes, return [value, bytesConsumed] */\nfunction decodeULEB128(bytes: number[], offset: number): [number, number] {\n let result = 0\n let shift = 0\n let i = offset\n while (i < bytes.length) {\n const byte = bytes[i]\n result |= (byte & 0x7f) << shift\n i++\n if ((byte & 0x80) === 0) break\n shift += 7\n }\n return [result, i - offset]\n}\n\n/** Decode f64 from 8 bytes */\nfunction decodeF64(bytes: number[], offset: number): number {\n const buffer = new ArrayBuffer(8)\n const view = new Uint8Array(buffer)\n for (let i = 0; i < 8; i++) view[i] = bytes[offset + i]\n return new Float64Array(buffer)[0]\n}\n\n/** Disassemble function body bytes to WAT-like text */\nfunction disassemble(\n code: number[],\n params: TypedParam[],\n localTypes: WasmValueType[]\n): string {\n const lines: string[] = []\n let indent = 1\n const ind = () => ' '.repeat(indent)\n\n // Function signature\n const paramStr = params\n .map((p, i) => `(param $${p.name} ${p.type})`)\n .join(' ')\n const localStr = localTypes\n .map((t, i) => `(local $L${params.length + i} ${t})`)\n .join(' ')\n lines.push(`(func (export \"compute\") ${paramStr} (result f64)`)\n if (localStr) lines.push(` ${localStr}`)\n\n let i = 0\n while (i < code.length) {\n const op = code[i]\n const name = OpName[op] || `unknown(0x${op.toString(16)})`\n i++\n\n // Handle instructions with immediates\n if (op === Op.local_get || op === Op.local_set || op === Op.local_tee) {\n const [idx, len] = decodeULEB128(code, i)\n i += len\n const paramName =\n idx < params.length ? `$${params[idx].name}` : `$L${idx}`\n lines.push(`${ind()}${name} ${paramName}`)\n } else if (op === Op.br || op === Op.br_if) {\n const [depth, len] = decodeULEB128(code, i)\n i += len\n lines.push(`${ind()}${name} ${depth}`)\n } else if (op === Op.i32_const) {\n const [val, len] = decodeULEB128(code, i)\n i += len\n lines.push(`${ind()}i32.const ${val}`)\n } else if (op === Op.f32_const) {\n const buffer = new ArrayBuffer(4)\n const view = new Uint8Array(buffer)\n for (let j = 0; j < 4; j++) view[j] = code[i + j]\n const val = new Float32Array(buffer)[0]\n i += 4\n lines.push(`${ind()}f32.const ${val}`)\n } else if (op === Op.f64_const) {\n const val = decodeF64(code, i)\n i += 8\n lines.push(`${ind()}f64.const ${val}`)\n } else if (op === Op.block || op === Op.loop) {\n const blockType = code[i]\n i++\n lines.push(\n `${ind()}${name}${\n blockType === Type.void\n ? ''\n : ` (result ${blockType === Type.f64 ? 'f64' : 'i32'})`\n }`\n )\n indent++\n } else if (op === Op.if) {\n const blockType = code[i]\n i++\n lines.push(\n `${ind()}if${\n blockType === Type.void\n ? ''\n : ` (result ${blockType === Type.f64 ? 'f64' : 'i32'})`\n }`\n )\n indent++\n } else if (op === Op.else) {\n indent--\n lines.push(`${ind()}else`)\n indent++\n } else if (op === Op.end) {\n indent = Math.max(1, indent - 1)\n lines.push(`${ind()}end`)\n } else if (\n op === Op.f64_load ||\n op === Op.f64_store ||\n op === Op.f32_load ||\n op === Op.f32_store ||\n op === Op.i32_load ||\n op === Op.i32_store\n ) {\n const [align, len1] = decodeULEB128(code, i)\n i += len1\n const [offset, len2] = decodeULEB128(code, i)\n i += len2\n lines.push(`${ind()}${name}${offset ? ` offset=${offset}` : ''}`)\n } else if (op === SIMD_PREFIX) {\n // SIMD instruction: 0xfd + LEB128 sub-opcode\n const [subOp, subLen] = decodeULEB128(code, i)\n i += subLen\n const simdName =\n SimdOpName[subOp] || `simd.unknown(0x${subOp.toString(16)})`\n if (subOp === SimdOp.v128_load || subOp === SimdOp.v128_store) {\n const [_align, len1] = decodeULEB128(code, i)\n i += len1\n const [offset, len2] = decodeULEB128(code, i)\n i += len2\n lines.push(`${ind()}${simdName}${offset ? ` offset=${offset}` : ''}`)\n } else if (subOp === SimdOp.v128_const) {\n const bytes = code.slice(i, i + 16)\n i += 16\n lines.push(\n `${ind()}v128.const ${bytes\n .map((b) => '0x' + b.toString(16).padStart(2, '0'))\n .join(' ')}`\n )\n } else if (\n subOp === SimdOp.f32x4_extract_lane ||\n subOp === SimdOp.f32x4_replace_lane\n ) {\n const lane = code[i]\n i++\n lines.push(`${ind()}${simdName} ${lane}`)\n } else {\n lines.push(`${ind()}${simdName}`)\n }\n } else {\n lines.push(`${ind()}${name}`)\n }\n }\n\n lines.push(')')\n return lines.join('\\n')\n}\n\n// ============================================================================\n// Type System\n// ============================================================================\n\n/** TJS type that maps to WASM */\ntype WasmValueType = 'i32' | 'i64' | 'f32' | 'f64' | 'v128'\n\n/** Typed array info */\ninterface TypedArrayInfo {\n elementType: WasmValueType\n bytesPerElement: number\n loadOp: number\n storeOp: number\n}\n\nconst TYPED_ARRAYS: Record<string, TypedArrayInfo> = {\n Int8Array: {\n elementType: 'i32',\n bytesPerElement: 1,\n loadOp: Op.i32_load8_s,\n storeOp: Op.i32_store8,\n },\n Uint8Array: {\n elementType: 'i32',\n bytesPerElement: 1,\n loadOp: Op.i32_load8_u,\n storeOp: Op.i32_store8,\n },\n Uint8ClampedArray: {\n elementType: 'i32',\n bytesPerElement: 1,\n loadOp: Op.i32_load8_u,\n storeOp: Op.i32_store8,\n },\n Int16Array: {\n elementType: 'i32',\n bytesPerElement: 2,\n loadOp: Op.i32_load16_s,\n storeOp: Op.i32_store16,\n },\n Uint16Array: {\n elementType: 'i32',\n bytesPerElement: 2,\n loadOp: Op.i32_load16_u,\n storeOp: Op.i32_store16,\n },\n Int32Array: {\n elementType: 'i32',\n bytesPerElement: 4,\n loadOp: Op.i32_load,\n storeOp: Op.i32_store,\n },\n Uint32Array: {\n elementType: 'i32',\n bytesPerElement: 4,\n loadOp: Op.i32_load,\n storeOp: Op.i32_store,\n },\n Float32Array: {\n elementType: 'f32',\n bytesPerElement: 4,\n loadOp: Op.f32_load,\n storeOp: Op.f32_store,\n },\n Float64Array: {\n elementType: 'f64',\n bytesPerElement: 8,\n loadOp: Op.f64_load,\n storeOp: Op.f64_store,\n },\n}\n\n/** Parameter with type annotation */\ninterface TypedParam {\n name: string\n type: WasmValueType\n isArray?: boolean\n arrayType?: string // e.g., \"Float32Array\"\n}\n\n// ============================================================================\n// Compilation Context\n// ============================================================================\n\ninterface CompileContext {\n /** Parameter definitions */\n params: TypedParam[]\n /** Local variable definitions (name -> local index, type) */\n locals: Map<string, { index: number; type: WasmValueType }>\n /** Next available local index */\n nextLocalIndex: number\n /** Local types for the locals section */\n localTypes: WasmValueType[]\n /** Warnings collected during compilation */\n warnings: string[]\n /** Errors collected during compilation */\n errors: string[]\n /** Current loop depth (for break/continue) */\n loopDepth: number\n /** Whether we need to import Math functions */\n needsMathImports: Set<string>\n /** Whether we need memory */\n needsMemory: boolean\n /** Whether the function has a return statement */\n hasReturn: boolean\n /** WAT text representation lines (for debugging) */\n wat: string[]\n /** Current indentation level for WAT */\n watIndent: number\n}\n\nfunction createContext(params: TypedParam[]): CompileContext {\n const ctx: CompileContext = {\n params,\n locals: new Map(),\n nextLocalIndex: params.length,\n localTypes: [],\n warnings: [],\n errors: [],\n loopDepth: 0,\n needsMathImports: new Set(),\n needsMemory: false,\n hasReturn: false,\n wat: [],\n watIndent: 1,\n }\n\n // Add params to locals map\n params.forEach((p, i) => {\n ctx.locals.set(p.name, { index: i, type: p.type })\n })\n\n return ctx\n}\n\nfunction declareLocal(\n ctx: CompileContext,\n name: string,\n type: WasmValueType\n): number {\n if (ctx.locals.has(name)) {\n ctx.errors.push(`Duplicate local declaration: ${name}`)\n return ctx.locals.get(name)!.index\n }\n const index = ctx.nextLocalIndex++\n ctx.locals.set(name, { index, type })\n ctx.localTypes.push(type)\n return index\n}\n\nfunction getLocal(\n ctx: CompileContext,\n name: string\n): { index: number; type: WasmValueType } | undefined {\n return ctx.locals.get(name)\n}\n\n// ============================================================================\n// AST Compilation\n// ============================================================================\n\n/** Compile a statement, return WASM instructions */\nfunction compileStatement(\n node: acorn.Statement,\n ctx: CompileContext\n): number[] {\n switch (node.type) {\n case 'ExpressionStatement': {\n // Expression statement - compile and drop result\n const expr = (node as acorn.ExpressionStatement).expression\n const exprCode = compileExpression(expr, ctx)\n // Drop the result since this is a statement (value not used)\n return [...exprCode, Op.drop]\n }\n\n case 'ReturnStatement': {\n const ret = node as acorn.ReturnStatement\n ctx.hasReturn = true\n if (!ret.argument) {\n // Void return - just return without a value\n return [Op.return]\n }\n const code = compileExpression(ret.argument as acorn.Expression, ctx)\n // Ensure return value is f64 (function always returns f64 if it returns a value)\n const retType = inferExprType(ret.argument as acorn.Expression, ctx)\n if (retType === 'i32') {\n code.push(Op.f64_convert_i32_s)\n } else if (retType === 'f32') {\n code.push(Op.f64_promote_f32)\n }\n code.push(Op.return)\n return code\n }\n\n case 'VariableDeclaration': {\n const decl = node as acorn.VariableDeclaration\n const code: number[] = []\n for (const declarator of decl.declarations) {\n if (declarator.id.type !== 'Identifier') {\n ctx.errors.push('Destructuring not supported in WASM blocks')\n continue\n }\n const name = (declarator.id as acorn.Identifier).name\n // Infer type from initializer or default to f64\n let type: WasmValueType = 'f64'\n if (declarator.init) {\n type = inferExprType(declarator.init as acorn.Expression, ctx)\n }\n const index = declareLocal(ctx, name, type)\n if (declarator.init) {\n code.push(\n ...compileExpression(declarator.init as acorn.Expression, ctx)\n )\n code.push(Op.local_set, ...encodeULEB128(index))\n }\n }\n return code\n }\n\n case 'ForStatement': {\n const forStmt = node as acorn.ForStatement\n return compileForLoop(forStmt, ctx)\n }\n\n case 'IfStatement': {\n const ifStmt = node as acorn.IfStatement\n return compileIf(ifStmt, ctx)\n }\n\n case 'BlockStatement': {\n const block = node as acorn.BlockStatement\n const code: number[] = []\n for (const stmt of block.body) {\n code.push(...compileStatement(stmt, ctx))\n }\n return code\n }\n\n default:\n ctx.errors.push(`Unsupported statement type: ${node.type}`)\n return []\n }\n}\n\n/** Compile a for loop */\nfunction compileForLoop(\n node: acorn.ForStatement,\n ctx: CompileContext\n): number[] {\n const code: number[] = []\n\n // Compile init\n if (node.init) {\n if (node.init.type === 'VariableDeclaration') {\n code.push(...compileStatement(node.init, ctx))\n } else {\n code.push(...compileExpression(node.init as acorn.Expression, ctx))\n }\n }\n\n // block $break\n // loop $continue\n // br_if $break (condition is false)\n // body\n // update\n // br $continue\n // end\n // end\n\n code.push(Op.block, Type.void) // $break block\n code.push(Op.loop, Type.void) // $continue loop\n\n // Test condition - break if false\n if (node.test) {\n code.push(...compileExpression(node.test, ctx))\n code.push(Op.i32_eqz) // invert: break if condition is false\n code.push(Op.br_if, 1) // br to $break (depth 1)\n }\n\n // Body\n ctx.loopDepth++\n if (node.body) {\n code.push(...compileStatement(node.body, ctx))\n }\n ctx.loopDepth--\n\n // Update\n if (node.update) {\n code.push(...compileExpression(node.update, ctx))\n code.push(Op.drop) // discard update expression result\n }\n\n // Continue loop\n code.push(Op.br, 0) // br to $continue (depth 0)\n\n code.push(Op.end) // end loop\n code.push(Op.end) // end block\n\n return code\n}\n\n/** Compile an if statement */\nfunction compileIf(node: acorn.IfStatement, ctx: CompileContext): number[] {\n const code: number[] = []\n\n // Compile condition\n code.push(...compileExpression(node.test, ctx))\n\n // if (result type void since we're not returning a value from if)\n code.push(Op.if, Type.void)\n\n // Consequent\n code.push(...compileStatement(node.consequent, ctx))\n\n // Alternate\n if (node.alternate) {\n code.push(Op.else)\n code.push(...compileStatement(node.alternate, ctx))\n }\n\n code.push(Op.end)\n\n return code\n}\n\n/** Infer the WASM type of an expression */\nfunction inferExprType(\n node: acorn.Expression,\n ctx: CompileContext\n): WasmValueType {\n switch (node.type) {\n case 'Literal': {\n const lit = node as acorn.Literal\n if (typeof lit.value === 'number') {\n // Check if the raw source contains a decimal point (e.g., \"0.0\")\n // This indicates the user wants a float even if the value is an integer\n if (lit.raw && (lit.raw.includes('.') || lit.raw.includes('e'))) {\n return 'f64'\n }\n // Check if it's an integer that fits in i32\n if (\n Number.isInteger(lit.value) &&\n lit.value >= -2147483648 &&\n lit.value <= 2147483647\n ) {\n return 'i32'\n }\n return 'f64'\n }\n return 'f64'\n }\n\n case 'Identifier': {\n const local = getLocal(ctx, (node as acorn.Identifier).name)\n return local?.type ?? 'f64'\n }\n\n case 'BinaryExpression':\n case 'AssignmentExpression': {\n const binExpr = node as acorn.BinaryExpression\n // Comparison operators return i32\n if (\n ['<', '>', '<=', '>=', '==', '!=', '===', '!=='].includes(\n binExpr.operator\n )\n ) {\n return 'i32'\n }\n // Bitwise operators are i32\n if (['|', '&', '^', '<<', '>>', '>>>'].includes(binExpr.operator)) {\n return 'i32'\n }\n // Otherwise infer from operands\n const leftType = inferExprType(binExpr.left as acorn.Expression, ctx)\n const rightType = inferExprType(binExpr.right as acorn.Expression, ctx)\n // v128 operations stay v128\n if (leftType === 'v128' || rightType === 'v128') return 'v128'\n // If either is f64 or f32, result is floating point\n if (leftType === 'f64' || rightType === 'f64') return 'f64'\n if (leftType === 'f32' || rightType === 'f32') return 'f32'\n return 'i32'\n }\n\n case 'UnaryExpression': {\n const unary = node as acorn.UnaryExpression\n if (unary.operator === '!') {\n return 'i32' // boolean result\n }\n // For negation and bitwise not, result type matches argument type\n return inferExprType(unary.argument as acorn.Expression, ctx)\n }\n\n case 'MemberExpression': {\n // Array access - check array type\n const member = node as acorn.MemberExpression\n if (member.object.type === 'Identifier') {\n const local = getLocal(ctx, (member.object as acorn.Identifier).name)\n if (local) {\n const param = ctx.params.find(\n (p) => p.name === (member.object as acorn.Identifier).name\n )\n if (param?.arrayType) {\n const arrayInfo = TYPED_ARRAYS[param.arrayType]\n if (arrayInfo) return arrayInfo.elementType\n }\n }\n }\n return 'f64'\n }\n\n case 'CallExpression': {\n const call = node as acorn.CallExpression\n if (call.callee.type === 'MemberExpression') {\n const callee = call.callee as acorn.MemberExpression\n if (\n callee.object.type === 'Identifier' &&\n (callee.object as acorn.Identifier).name === 'Math'\n ) {\n // Math functions return f64\n return 'f64'\n }\n }\n // SIMD intrinsics\n if (call.callee.type === 'Identifier') {\n const name = (call.callee as acorn.Identifier).name\n if (name === 'f32x4_extract_lane') return 'f32'\n if (name.startsWith('f32x4_') || name === 'v128_load') return 'v128'\n }\n return 'f64'\n }\n\n default:\n return 'f64'\n }\n}\n\n/** Compile an expression, return WASM instructions */\nfunction compileExpression(\n node: acorn.Expression,\n ctx: CompileContext\n): number[] {\n switch (node.type) {\n case 'Literal': {\n const lit = node as acorn.Literal\n if (typeof lit.value === 'number') {\n const type = inferExprType(node, ctx)\n if (type === 'i32') {\n return [Op.i32_const, ...encodeSLEB128(lit.value | 0)]\n } else if (type === 'f32') {\n return [Op.f32_const, ...encodeF32(lit.value)]\n } else {\n return [Op.f64_const, ...encodeF64(lit.value)]\n }\n }\n ctx.errors.push(`Unsupported literal type: ${typeof lit.value}`)\n return [Op.f64_const, ...encodeF64(0)]\n }\n\n case 'Identifier': {\n const name = (node as acorn.Identifier).name\n const local = getLocal(ctx, name)\n if (local) {\n return [Op.local_get, ...encodeULEB128(local.index)]\n }\n ctx.errors.push(`Unknown identifier: ${name}`)\n return [Op.f64_const, ...encodeF64(0)]\n }\n\n case 'BinaryExpression': {\n const bin = node as acorn.BinaryExpression\n return compileBinaryExpr(bin, ctx)\n }\n\n case 'UnaryExpression': {\n const unary = node as acorn.UnaryExpression\n return compileUnaryExpr(unary, ctx)\n }\n\n case 'AssignmentExpression': {\n const assign = node as acorn.AssignmentExpression\n return compileAssignment(assign, ctx)\n }\n\n case 'UpdateExpression': {\n const update = node as acorn.UpdateExpression\n return compileUpdate(update, ctx)\n }\n\n case 'MemberExpression': {\n const member = node as acorn.MemberExpression\n return compileArrayAccess(member, ctx)\n }\n\n case 'CallExpression': {\n const call = node as acorn.CallExpression\n return compileCall(call, ctx)\n }\n\n case 'SequenceExpression': {\n const seq = node as acorn.SequenceExpression\n const code: number[] = []\n for (let i = 0; i < seq.expressions.length; i++) {\n code.push(...compileExpression(seq.expressions[i], ctx))\n // Drop all but last value\n if (i < seq.expressions.length - 1) {\n code.push(Op.drop)\n }\n }\n return code\n }\n\n default:\n ctx.errors.push(`Unsupported expression type: ${node.type}`)\n return [Op.f64_const, ...encodeF64(0)]\n }\n}\n\n/** Compile a binary expression */\nfunction compileBinaryExpr(\n node: acorn.BinaryExpression,\n ctx: CompileContext\n): number[] {\n const left = compileExpression(node.left as acorn.Expression, ctx)\n const right = compileExpression(node.right as acorn.Expression, ctx)\n const resultType = inferExprType(node, ctx)\n\n // Type coercion if needed\n const leftType = inferExprType(node.left as acorn.Expression, ctx)\n const rightType = inferExprType(node.right as acorn.Expression, ctx)\n\n // Determine operand type for the operation\n const isComparison = [\n '<',\n '>',\n '<=',\n '>=',\n '==',\n '===',\n '!=',\n '!==',\n ].includes(node.operator)\n\n // For comparisons and arithmetic, we need operands to match\n // Promote to the \"wider\" type\n let opType: WasmValueType\n if (leftType === 'f64' || rightType === 'f64') {\n opType = 'f64'\n } else if (leftType === 'f32' || rightType === 'f32') {\n opType = 'f32'\n } else {\n opType = 'i32'\n }\n\n // For non-comparison ops, use result type if it's wider\n if (!isComparison && resultType === 'f64') {\n opType = 'f64'\n }\n\n let leftCode = left\n let rightCode = right\n\n // Coerce operands to opType\n if (opType === 'f64') {\n if (leftType === 'i32') {\n leftCode = [...left, Op.f64_convert_i32_s]\n } else if (leftType === 'f32') {\n leftCode = [...left, Op.f64_promote_f32]\n }\n if (rightType === 'i32') {\n rightCode = [...right, Op.f64_convert_i32_s]\n } else if (rightType === 'f32') {\n rightCode = [...right, Op.f64_promote_f32]\n }\n } else if (opType === 'f32') {\n if (leftType === 'i32') {\n leftCode = [...left, Op.f32_convert_i32_s]\n }\n if (rightType === 'i32') {\n rightCode = [...right, Op.f32_convert_i32_s]\n }\n }\n\n const opMap: Record<string, Record<string, number>> = {\n '+': { i32: Op.i32_add, f32: Op.f32_add, f64: Op.f64_add },\n '-': { i32: Op.i32_sub, f32: Op.f32_sub, f64: Op.f64_sub },\n '*': { i32: Op.i32_mul, f32: Op.f32_mul, f64: Op.f64_mul },\n '/': { i32: Op.i32_div_s, f32: Op.f32_div, f64: Op.f64_div },\n '%': { i32: Op.i32_rem_s },\n '<': { i32: Op.i32_lt_s, f32: Op.f32_lt, f64: Op.f64_lt },\n '>': { i32: Op.i32_gt_s, f32: Op.f32_gt, f64: Op.f64_gt },\n '<=': { i32: Op.i32_le_s, f32: Op.f32_le, f64: Op.f64_le },\n '>=': { i32: Op.i32_ge_s, f32: Op.f32_ge, f64: Op.f64_ge },\n '==': { i32: Op.i32_eq, f32: Op.f32_eq, f64: Op.f64_eq },\n '===': { i32: Op.i32_eq, f32: Op.f32_eq, f64: Op.f64_eq },\n '!=': { i32: Op.i32_ne, f32: Op.f32_ne, f64: Op.f64_ne },\n '!==': { i32: Op.i32_ne, f32: Op.f32_ne, f64: Op.f64_ne },\n '|': { i32: Op.i32_or },\n '&': { i32: Op.i32_and },\n '^': { i32: Op.i32_xor },\n '<<': { i32: Op.i32_shl },\n '>>': { i32: Op.i32_shr_s },\n '>>>': { i32: Op.i32_shr_u },\n }\n\n const ops = opMap[node.operator]\n if (!ops) {\n ctx.errors.push(`Unsupported operator: ${node.operator}`)\n return [Op.f64_const, ...encodeF64(0)]\n }\n\n const opcode = ops[opType] ?? ops.f64 ?? ops.i32\n if (opcode === undefined) {\n ctx.errors.push(\n `Operator ${node.operator} not supported for type ${opType}`\n )\n return [Op.f64_const, ...encodeF64(0)]\n }\n\n return [...leftCode, ...rightCode, opcode]\n}\n\n/** Compile a unary expression */\nfunction compileUnaryExpr(\n node: acorn.UnaryExpression,\n ctx: CompileContext\n): number[] {\n const arg = compileExpression(node.argument as acorn.Expression, ctx)\n const type = inferExprType(node.argument as acorn.Expression, ctx)\n\n switch (node.operator) {\n case '-':\n if (type === 'i32') {\n // 0 - x\n return [Op.i32_const, 0, ...arg, Op.i32_sub]\n } else if (type === 'f32') {\n return [...arg, Op.f32_neg]\n } else {\n return [...arg, Op.f64_neg]\n }\n\n case '!':\n // Boolean not: x == 0\n return [...arg, Op.i32_eqz]\n\n case '~':\n // Bitwise not: x ^ -1\n return [...arg, Op.i32_const, ...encodeSLEB128(-1), Op.i32_xor]\n\n default:\n ctx.errors.push(`Unsupported unary operator: ${node.operator}`)\n return arg\n }\n}\n\n/** Compile an assignment expression */\nfunction compileAssignment(\n node: acorn.AssignmentExpression,\n ctx: CompileContext\n): number[] {\n // Handle array element assignment: arr[i] = value\n if (node.left.type === 'MemberExpression') {\n return compileArrayStore(\n node.left as acorn.MemberExpression,\n node.right as acorn.Expression,\n node.operator,\n ctx\n )\n }\n\n // Handle simple variable assignment\n if (node.left.type !== 'Identifier') {\n ctx.errors.push('Assignment target must be identifier or array element')\n return []\n }\n\n const name = (node.left as acorn.Identifier).name\n const local = getLocal(ctx, name)\n if (!local) {\n ctx.errors.push(`Unknown variable: ${name}`)\n return []\n }\n\n const code: number[] = []\n\n if (node.operator === '=') {\n code.push(...compileExpression(node.right as acorn.Expression, ctx))\n // Type coercion if needed\n const valType = inferExprType(node.right as acorn.Expression, ctx)\n if (local.type === 'f64' && valType === 'i32') {\n code.push(Op.f64_convert_i32_s)\n } else if (local.type === 'f64' && valType === 'f32') {\n code.push(Op.f64_promote_f32)\n } else if (local.type === 'i32' && valType === 'f64') {\n code.push(Op.i32_trunc_f64_s)\n } else if (local.type === 'i32' && valType === 'f32') {\n code.push(Op.i32_trunc_f32_s)\n } else if (local.type === 'f32' && valType === 'i32') {\n code.push(Op.f32_convert_i32_s)\n } else if (local.type === 'f32' && valType === 'f64') {\n code.push(Op.f32_demote_f64)\n }\n } else {\n // Compound assignment: +=, -=, etc.\n const valType = inferExprType(node.right as acorn.Expression, ctx)\n\n // Determine operation type - promote to wider type for the operation\n let opType: WasmValueType = local.type\n if (valType === 'f64' || local.type === 'f64') {\n opType = 'f64'\n } else if (valType === 'f32' || local.type === 'f32') {\n opType = 'f32'\n }\n\n // Get left operand and convert to opType if needed\n code.push(Op.local_get, ...encodeULEB128(local.index))\n if (opType === 'f64' && local.type === 'i32') {\n code.push(Op.f64_convert_i32_s)\n } else if (opType === 'f64' && local.type === 'f32') {\n code.push(Op.f64_promote_f32)\n } else if (opType === 'f32' && local.type === 'i32') {\n code.push(Op.f32_convert_i32_s)\n }\n\n // Get right operand and convert to opType if needed\n code.push(...compileExpression(node.right as acorn.Expression, ctx))\n if (opType === 'f64' && valType === 'i32') {\n code.push(Op.f64_convert_i32_s)\n } else if (opType === 'f64' && valType === 'f32') {\n code.push(Op.f64_promote_f32)\n } else if (opType === 'f32' && valType === 'i32') {\n code.push(Op.f32_convert_i32_s)\n }\n\n // Perform operation in opType\n const op = node.operator.slice(0, -1) // Remove '='\n const opMap: Record<string, Record<string, number>> = {\n '+': { i32: Op.i32_add, f32: Op.f32_add, f64: Op.f64_add },\n '-': { i32: Op.i32_sub, f32: Op.f32_sub, f64: Op.f64_sub },\n '*': { i32: Op.i32_mul, f32: Op.f32_mul, f64: Op.f64_mul },\n '/': { i32: Op.i32_div_s, f32: Op.f32_div, f64: Op.f64_div },\n }\n const opcode = opMap[op]?.[opType]\n if (!opcode) {\n ctx.errors.push(`Unsupported compound assignment: ${node.operator}`)\n return []\n }\n code.push(opcode)\n\n // Convert result back to local type if needed\n if (local.type === 'i32' && opType === 'f64') {\n code.push(Op.i32_trunc_f64_s)\n } else if (local.type === 'i32' && opType === 'f32') {\n code.push(Op.i32_trunc_f32_s)\n } else if (local.type === 'f32' && opType === 'f64') {\n code.push(Op.f32_demote_f64)\n }\n }\n\n code.push(Op.local_tee, ...encodeULEB128(local.index)) // tee returns the value\n\n return code\n}\n\n/** Compile an update expression (++, --) */\nfunction compileUpdate(\n node: acorn.UpdateExpression,\n ctx: CompileContext\n): number[] {\n if (node.argument.type !== 'Identifier') {\n ctx.errors.push('Update expression argument must be identifier')\n return []\n }\n\n const name = (node.argument as acorn.Identifier).name\n const local = getLocal(ctx, name)\n if (!local) {\n ctx.errors.push(`Unknown variable: ${name}`)\n return []\n }\n\n const code: number[] = []\n const isI32 = local.type === 'i32'\n\n if (node.prefix) {\n // ++x or --x: modify then return new value\n code.push(Op.local_get, ...encodeULEB128(local.index))\n if (isI32) {\n code.push(Op.i32_const, 1)\n code.push(node.operator === '++' ? Op.i32_add : Op.i32_sub)\n } else {\n code.push(Op.f64_const, ...encodeF64(1))\n code.push(node.operator === '++' ? Op.f64_add : Op.f64_sub)\n }\n code.push(Op.local_tee, ...encodeULEB128(local.index))\n } else {\n // x++ or x--: return old value, then modify\n code.push(Op.local_get, ...encodeULEB128(local.index))\n // Store incremented value\n code.push(Op.local_get, ...encodeULEB128(local.index))\n if (isI32) {\n code.push(Op.i32_const, 1)\n code.push(node.operator === '++' ? Op.i32_add : Op.i32_sub)\n } else {\n code.push(Op.f64_const, ...encodeF64(1))\n code.push(node.operator === '++' ? Op.f64_add : Op.f64_sub)\n }\n code.push(Op.local_set, ...encodeULEB128(local.index))\n }\n\n return code\n}\n\n/** Compile array element access: arr[i] */\nfunction compileArrayAccess(\n node: acorn.MemberExpression,\n ctx: CompileContext\n): number[] {\n if (node.object.type !== 'Identifier') {\n ctx.errors.push('Array access requires identifier')\n return []\n }\n\n const name = (node.object as acorn.Identifier).name\n const param = ctx.params.find((p) => p.name === name)\n\n if (!param?.isArray || !param.arrayType) {\n ctx.errors.push(`${name} is not a typed array parameter`)\n return []\n }\n\n const arrayInfo = TYPED_ARRAYS[param.arrayType]\n if (!arrayInfo) {\n ctx.errors.push(`Unknown array type: ${param.arrayType}`)\n return []\n }\n\n ctx.needsMemory = true\n\n const code: number[] = []\n\n // Get base address (array pointer param)\n const local = getLocal(ctx, name)\n if (!local) {\n ctx.errors.push(`Unknown array: ${name}`)\n return []\n }\n code.push(Op.local_get, ...encodeULEB128(local.index))\n\n // Compute offset: index * bytesPerElement\n if (!node.computed || !node.property) {\n ctx.errors.push('Array access requires computed index')\n return []\n }\n\n const indexCode = compileExpression(node.property as acorn.Expression, ctx)\n const indexType = inferExprType(node.property as acorn.Expression, ctx)\n\n code.push(...indexCode)\n\n // Convert index to i32 if needed\n if (indexType === 'f64') {\n code.push(Op.i32_trunc_f64_s)\n }\n\n // Multiply by bytes per element\n if (arrayInfo.bytesPerElement > 1) {\n code.push(Op.i32_const, ...encodeSLEB128(arrayInfo.bytesPerElement))\n code.push(Op.i32_mul)\n }\n\n // Add base address\n code.push(Op.i32_add)\n\n // Load value (align=0, offset=0)\n code.push(arrayInfo.loadOp, 0, 0)\n\n return code\n}\n\n/** Compile array element store: arr[i] = value */\nfunction compileArrayStore(\n target: acorn.MemberExpression,\n value: acorn.Expression,\n operator: string,\n ctx: CompileContext\n): number[] {\n if (target.object.type !== 'Identifier') {\n ctx.errors.push('Array store requires identifier')\n return []\n }\n\n const name = (target.object as acorn.Identifier).name\n const param = ctx.params.find((p) => p.name === name)\n\n if (!param?.isArray || !param.arrayType) {\n ctx.errors.push(`${name} is not a typed array parameter`)\n return []\n }\n\n const arrayInfo = TYPED_ARRAYS[param.arrayType]\n if (!arrayInfo) {\n ctx.errors.push(`Unknown array type: ${param.arrayType}`)\n return []\n }\n\n ctx.needsMemory = true\n\n const code: number[] = []\n\n // Get local for array pointer\n const local = getLocal(ctx, name)\n if (!local) return []\n\n if (!target.computed || !target.property) {\n ctx.errors.push('Array store requires computed index')\n return []\n }\n\n const indexCode = compileExpression(target.property as acorn.Expression, ctx)\n const indexType = inferExprType(target.property as acorn.Expression, ctx)\n\n // Helper to generate address computation code\n const computeAddress = (): number[] => {\n const addr: number[] = []\n addr.push(Op.local_get, ...encodeULEB128(local.index))\n addr.push(...indexCode)\n if (indexType === 'f64') {\n addr.push(Op.i32_trunc_f64_s)\n }\n if (arrayInfo.bytesPerElement > 1) {\n addr.push(Op.i32_const, ...encodeSLEB128(arrayInfo.bytesPerElement))\n addr.push(Op.i32_mul)\n }\n addr.push(Op.i32_add)\n return addr\n }\n\n // Compile value\n if (operator === '=') {\n code.push(...compileExpression(value, ctx))\n } else {\n // Compound assignment - load current value, compute, store\n // Use a temp local to store address for reuse\n const addrLocal = declareLocal(ctx, `__addr_${ctx.nextLocalIndex}`, 'i32')\n\n // Compute address and save it\n code.push(...computeAddress())\n code.push(Op.local_tee, ...encodeULEB128(addrLocal))\n code.push(arrayInfo.loadOp, 0, 0)\n\n // Compile right side and convert to match array element type\n code.push(...compileExpression(value, ctx))\n const rhsType = inferExprType(value, ctx)\n if (arrayInfo.elementType === 'f32' && rhsType === 'f64') {\n code.push(Op.f32_demote_f64)\n } else if (arrayInfo.elementType === 'f64' && rhsType === 'f32') {\n code.push(Op.f64_promote_f32)\n } else if (arrayInfo.elementType === 'f32' && rhsType === 'i32') {\n code.push(Op.f32_convert_i32_s)\n } else if (arrayInfo.elementType === 'f64' && rhsType === 'i32') {\n code.push(Op.f64_convert_i32_s)\n } else if (arrayInfo.elementType === 'i32' && rhsType === 'f64') {\n code.push(Op.i32_trunc_f64_s)\n } else if (arrayInfo.elementType === 'i32' && rhsType === 'f32') {\n code.push(Op.i32_trunc_f32_s)\n }\n\n const op = operator.slice(0, -1)\n const opMap: Record<string, number> = {\n '+':\n arrayInfo.elementType === 'i32'\n ? Op.i32_add\n : arrayInfo.elementType === 'f32'\n ? Op.f32_add\n : Op.f64_add,\n '-':\n arrayInfo.elementType === 'i32'\n ? Op.i32_sub\n : arrayInfo.elementType === 'f32'\n ? Op.f32_sub\n : Op.f64_sub,\n '*':\n arrayInfo.elementType === 'i32'\n ? Op.i32_mul\n : arrayInfo.elementType === 'f32'\n ? Op.f32_mul\n : Op.f64_mul,\n }\n code.push(opMap[op] ?? Op.f64_add)\n\n // Store: need address then value\n // Swap: store value in temp, get address, get value back\n const valLocal = declareLocal(\n ctx,\n `__val_${ctx.nextLocalIndex}`,\n arrayInfo.elementType\n )\n code.push(Op.local_set, ...encodeULEB128(valLocal))\n code.push(Op.local_get, ...encodeULEB128(addrLocal))\n code.push(Op.local_get, ...encodeULEB128(valLocal))\n code.push(arrayInfo.storeOp, 0, 0)\n\n // Return the stored value\n code.push(Op.local_get, ...encodeULEB128(valLocal))\n return code\n }\n\n // Convert value type if needed\n const valType = inferExprType(value, ctx)\n if (arrayInfo.elementType === 'f32' && valType === 'f64') {\n code.push(Op.f32_demote_f64)\n } else if (arrayInfo.elementType === 'f64' && valType === 'f32') {\n code.push(Op.f64_promote_f32)\n } else if (arrayInfo.elementType === 'i32' && valType === 'f64') {\n code.push(Op.i32_trunc_f64_s)\n }\n\n // Store needs address then value - we have value on top\n // Swap using temp local\n const tempLocal = declareLocal(\n ctx,\n `__tmp_${ctx.nextLocalIndex}`,\n arrayInfo.elementType\n )\n code.push(Op.local_set, ...encodeULEB128(tempLocal))\n\n // Recompute address (simpler than complex stack manipulation)\n code.push(Op.local_get, ...encodeULEB128(local.index))\n code.push(...indexCode)\n if (indexType === 'f64') {\n code.push(Op.i32_trunc_f64_s)\n }\n if (arrayInfo.bytesPerElement > 1) {\n code.push(Op.i32_const, ...encodeSLEB128(arrayInfo.bytesPerElement))\n code.push(Op.i32_mul)\n }\n code.push(Op.i32_add)\n\n code.push(Op.local_get, ...encodeULEB128(tempLocal))\n code.push(arrayInfo.storeOp, 0, 0)\n\n // Return stored value\n code.push(Op.local_get, ...encodeULEB128(tempLocal))\n\n return code\n}\n\n/** Compile a function call */\nfunction compileCall(\n node: acorn.CallExpression,\n ctx: CompileContext\n): number[] {\n // Handle Math.xxx calls\n if (node.callee.type === 'MemberExpression') {\n const callee = node.callee as acorn.MemberExpression\n if (\n callee.object.type === 'Identifier' &&\n (callee.object as acorn.Identifier).name === 'Math' &&\n callee.property.type === 'Identifier'\n ) {\n const method = (callee.property as acorn.Identifier).name\n return compileMathCall(method, node.arguments as acorn.Expression[], ctx)\n }\n }\n\n // Handle SIMD intrinsics: f32x4_xxx(...), v128_load(...)\n if (node.callee.type === 'Identifier') {\n const name = (node.callee as acorn.Identifier).name\n if (name.startsWith('f32x4_') || name.startsWith('v128_')) {\n return compileSIMDCall(name, node.arguments as acorn.Expression[], ctx)\n }\n }\n\n ctx.errors.push(`Unsupported function call: ${node.callee.type}`)\n return [Op.f64_const, ...encodeF64(0)]\n}\n\n/** Compile SIMD intrinsic calls */\nfunction compileSIMDCall(\n name: string,\n args: acorn.Expression[],\n ctx: CompileContext\n): number[] {\n ctx.needsMemory = true\n const code: number[] = []\n\n switch (name) {\n case 'v128_load':\n case 'f32x4_load': {\n // f32x4_load(arrayPtr, byteOffset) → v128\n code.push(...compileExpression(args[0], ctx))\n const ptrType = inferExprType(args[0], ctx)\n if (ptrType === 'f64') code.push(Op.i32_trunc_f64_s)\n code.push(...compileExpression(args[1], ctx))\n const offType = inferExprType(args[1], ctx)\n if (offType === 'f64') code.push(Op.i32_trunc_f64_s)\n else if (offType === 'f32') code.push(Op.i32_trunc_f32_s)\n code.push(Op.i32_add)\n // v128.load align=2 (2^2=4, f32 natural alignment), offset=0\n code.push(...encodeSIMDMemarg(SimdOp.v128_load, 2, 0))\n return code\n }\n\n case 'v128_store':\n case 'f32x4_store': {\n // f32x4_store(arrayPtr, byteOffset, v128value) → void (push dummy for drop)\n code.push(...compileExpression(args[0], ctx))\n const ptrType = inferExprType(args[0], ctx)\n if (ptrType === 'f64') code.push(Op.i32_trunc_f64_s)\n code.push(...compileExpression(args[1], ctx))\n const offType = inferExprType(args[1], ctx)\n if (offType === 'f64') code.push(Op.i32_trunc_f64_s)\n else if (offType === 'f32') code.push(Op.i32_trunc_f32_s)\n code.push(Op.i32_add)\n code.push(...compileExpression(args[2], ctx))\n code.push(...encodeSIMDMemarg(SimdOp.v128_store, 2, 0))\n // v128.store doesn't push a value; push dummy i32 0 so ExpressionStatement's drop works\n code.push(Op.i32_const, 0)\n return code\n }\n\n case 'f32x4_splat': {\n // f32x4_splat(scalar) → v128\n code.push(...compileExpression(args[0], ctx))\n const argType = inferExprType(args[0], ctx)\n if (argType === 'i32') code.push(Op.f32_convert_i32_s)\n else if (argType === 'f64') code.push(Op.f32_demote_f64)\n code.push(...encodeSIMD(SimdOp.f32x4_splat))\n return code\n }\n\n case 'f32x4_extract_lane': {\n // f32x4_extract_lane(vec, laneIndex) → f32\n code.push(...compileExpression(args[0], ctx))\n const lane = (args[1] as acorn.Literal).value as number\n if (!Number.isInteger(lane) || lane < 0 || lane > 3) {\n ctx.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${lane}`)\n return [Op.f32_const, ...encodeF32(0)]\n }\n code.push(SIMD_PREFIX, ...encodeULEB128(SimdOp.f32x4_extract_lane), lane)\n return code\n }\n\n case 'f32x4_replace_lane': {\n // f32x4_replace_lane(vec, laneIndex, scalar) → v128\n code.push(...compileExpression(args[0], ctx))\n const lane = (args[1] as acorn.Literal).value as number\n if (!Number.isInteger(lane) || lane < 0 || lane > 3) {\n ctx.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${lane}`)\n return [Op.f32_const, ...encodeF32(0)]\n }\n code.push(...compileExpression(args[2], ctx))\n const valType = inferExprType(args[2], ctx)\n if (valType === 'i32') code.push(Op.f32_convert_i32_s)\n else if (valType === 'f64') code.push(Op.f32_demote_f64)\n code.push(SIMD_PREFIX, ...encodeULEB128(SimdOp.f32x4_replace_lane), lane)\n return code\n }\n\n case 'f32x4_add':\n case 'f32x4_sub':\n case 'f32x4_mul':\n case 'f32x4_div': {\n // Binary v128 op: f32x4_add(a, b) → v128\n code.push(...compileExpression(args[0], ctx))\n code.push(...compileExpression(args[1], ctx))\n const opMap: Record<string, number> = {\n f32x4_add: SimdOp.f32x4_add,\n f32x4_sub: SimdOp.f32x4_sub,\n f32x4_mul: SimdOp.f32x4_mul,\n f32x4_div: SimdOp.f32x4_div,\n }\n code.push(...encodeSIMD(opMap[name]))\n return code\n }\n\n case 'f32x4_neg':\n case 'f32x4_sqrt': {\n // Unary v128 op: f32x4_neg(a) → v128\n code.push(...compileExpression(args[0], ctx))\n const unaryMap: Record<string, number> = {\n f32x4_neg: SimdOp.f32x4_neg,\n f32x4_sqrt: SimdOp.f32x4_sqrt,\n }\n code.push(...encodeSIMD(unaryMap[name]))\n return code\n }\n\n default:\n ctx.errors.push(`Unknown SIMD intrinsic: ${name}`)\n return [Op.f64_const, ...encodeF64(0)]\n }\n}\n\n/** Compile Math.xxx calls */\nfunction compileMathCall(\n method: string,\n args: acorn.Expression[],\n ctx: CompileContext\n): number[] {\n const code: number[] = []\n\n // Compile arguments\n for (const arg of args) {\n code.push(...compileExpression(arg, ctx))\n // Ensure f64 for math functions\n const type = inferExprType(arg, ctx)\n if (type === 'i32') {\n code.push(Op.f64_convert_i32_s)\n } else if (type === 'f32') {\n code.push(Op.f64_promote_f32)\n }\n }\n\n // Map to WASM ops or imports\n const builtins: Record<string, number> = {\n abs: Op.f64_abs,\n ceil: Op.f64_ceil,\n floor: Op.f64_floor,\n trunc: Op.f64_trunc,\n sqrt: Op.f64_sqrt,\n min: Op.f64_min,\n max: Op.f64_max,\n }\n\n const opcode = builtins[method]\n if (opcode !== undefined) {\n code.push(opcode)\n return code\n }\n\n // Functions that need imports (sin, cos, etc.)\n const needsImport = [\n 'sin',\n 'cos',\n 'tan',\n 'asin',\n 'acos',\n 'atan',\n 'atan2',\n 'exp',\n 'log',\n 'pow',\n ]\n if (needsImport.includes(method)) {\n ctx.needsMathImports.add(method)\n // Will be handled by import section\n // For now, error\n ctx.errors.push(`Math.${method} requires JS import (not yet implemented)`)\n return [Op.f64_const, ...encodeF64(0)]\n }\n\n ctx.errors.push(`Unknown Math method: ${method}`)\n return [Op.f64_const, ...encodeF64(0)]\n}\n\n// ============================================================================\n// Module Building\n// ============================================================================\n\n/** Parse type annotation from capture string like \"arr: Float32Array\" */\nfunction parseTypeAnnotation(capture: string): TypedParam {\n const parts = capture.split(':').map((s) => s.trim())\n const name = parts[0]\n\n if (parts.length === 1) {\n // No annotation - default to f64\n return { name, type: 'f64' }\n }\n\n const typeStr = parts[1]\n\n // Check for typed arrays\n if (TYPED_ARRAYS[typeStr]) {\n return { name, type: 'i32', isArray: true, arrayType: typeStr }\n }\n\n // Check for primitives\n const typeMap: Record<string, WasmValueType> = {\n i32: 'i32',\n i64: 'i64',\n f32: 'f32',\n f64: 'f64',\n number: 'f64',\n int: 'i32',\n }\n\n return { name, type: typeMap[typeStr] ?? 'f64' }\n}\n\n/** Build a complete WASM module */\nfunction buildModule(\n params: TypedParam[],\n bodyCode: number[],\n localTypes: WasmValueType[],\n needsMemory: boolean,\n hasReturn: boolean\n): number[] {\n // Magic number and version\n const header = [0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00]\n\n // Type section: function signature\n const paramWasmTypes = params.map((p) => Type[p.type])\n const returnSpec = hasReturn ? [0x01, Type.f64] : [0x00] // one f64 return OR void\n const typeSection = encodeSection(Section.type, [\n 0x01, // one type\n 0x60, // func type\n ...encodeULEB128(params.length),\n ...paramWasmTypes,\n ...returnSpec,\n ])\n\n // Memory section (if needed)\n const memorySection: number[] = []\n if (needsMemory) {\n // Import memory from JS instead of declaring it\n // This lets us share memory with typed arrays\n }\n\n // Import section for memory\n let importSection: number[] = []\n if (needsMemory) {\n importSection = encodeSection(Section.import, [\n 0x01, // one import\n ...encodeString('env'),\n ...encodeString('memory'),\n 0x02, // memory\n 0x00, // flags: no max\n 0x01, // initial: 1 page (64KB)\n ])\n }\n\n // Function section: function 0 has type 0\n const funcSection = encodeSection(Section.function, [\n 0x01, // one function\n 0x00, // type index 0\n ])\n\n // Export section: export function as \"compute\"\n const exportSection = encodeSection(Section.export, [\n 0x01, // one export\n ...encodeString('compute'),\n 0x00, // export kind: function\n 0x00, // function index 0\n ])\n\n // Code section\n // Encode locals: group by type\n const localGroups: number[][] = []\n if (localTypes.length > 0) {\n let currentType = localTypes[0]\n let count = 1\n for (let i = 1; i < localTypes.length; i++) {\n if (localTypes[i] === currentType) {\n count++\n } else {\n localGroups.push([...encodeULEB128(count), Type[currentType]])\n currentType = localTypes[i]\n count = 1\n }\n }\n localGroups.push([...encodeULEB128(count), Type[currentType]])\n }\n\n const localsEncoded = [\n ...encodeULEB128(localGroups.length),\n ...localGroups.flat(),\n ]\n\n const funcBody = [...localsEncoded, ...bodyCode, Op.end]\n\n const codeSection = encodeSection(Section.code, [\n 0x01, // one function\n ...encodeULEB128(funcBody.length),\n ...funcBody,\n ])\n\n // Assemble module\n const sections = [...header, ...typeSection]\n\n if (importSection.length > 0) {\n sections.push(...importSection)\n }\n\n sections.push(...funcSection, ...exportSection, ...codeSection)\n\n return sections\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/** Compile result */\nexport interface WasmCompileResult {\n /** The compiled WebAssembly module bytes */\n bytes: Uint8Array\n /** Any warnings during compilation */\n warnings: string[]\n /** Whether compilation succeeded */\n success: boolean\n /** Error message if compilation failed */\n error?: string\n /** Whether the module needs imported memory */\n needsMemory?: boolean\n /** WAT text representation (for debugging) */\n wat?: string\n}\n\n/**\n * Compile a WASM block to WebAssembly\n */\nexport function compileToWasm(block: WasmBlock): WasmCompileResult {\n try {\n // Parse type annotations from captures\n const params = block.captures.map(parseTypeAnnotation)\n\n // Parse the body as JavaScript\n let ast: acorn.Program\n try {\n // Wrap in function to allow return statements\n const wrapped = `function __wasm__(${params\n .map((p) => p.name)\n .join(', ')}) { ${block.body} }`\n ast = acorn.parse(wrapped, { ecmaVersion: 2022 }) as acorn.Program\n } catch (e: any) {\n return {\n bytes: new Uint8Array(),\n warnings: [],\n success: false,\n error: `Parse error: ${e.message}`,\n }\n }\n\n // Get the function body\n const funcDecl = ast.body[0] as acorn.FunctionDeclaration\n const body = funcDecl.body.body\n\n // Create compilation context\n const ctx = createContext(params)\n\n // Compile statements\n const code: number[] = []\n for (const stmt of body) {\n code.push(...compileStatement(stmt, ctx))\n }\n\n // Check for errors\n if (ctx.errors.length > 0) {\n return {\n bytes: new Uint8Array(),\n warnings: ctx.warnings,\n success: false,\n error: ctx.errors.join('; '),\n }\n }\n\n // Build the module\n const moduleBytes = buildModule(\n params,\n code,\n ctx.localTypes,\n ctx.needsMemory,\n ctx.hasReturn\n )\n\n // Generate WAT disassembly for debugging\n const watText = disassemble(code, params, ctx.localTypes)\n\n return {\n bytes: new Uint8Array(moduleBytes),\n warnings: ctx.warnings,\n success: true,\n needsMemory: ctx.needsMemory,\n wat: watText,\n }\n } catch (e: any) {\n return {\n bytes: new Uint8Array(),\n warnings: [],\n success: false,\n error: e.message,\n }\n }\n}\n\n/**\n * Instantiate a compiled WASM module\n */\nexport async function instantiateWasm(\n bytes: Uint8Array,\n memory?: WebAssembly.Memory\n): Promise<WebAssembly.Instance> {\n const imports: WebAssembly.Imports = {}\n\n if (memory) {\n imports.env = { memory }\n }\n\n const module = await WebAssembly.compile(bytes)\n return WebAssembly.instantiate(module, imports)\n}\n\n/**\n * Create a callable function from a WASM block with typed array support\n */\nexport async function createWasmFunction(block: WasmBlock): Promise<{\n fn: (...args: any[]) => any\n memory?: WebAssembly.Memory\n success: boolean\n error?: string\n}> {\n const result = compileToWasm(block)\n\n if (!result.success) {\n return { fn: () => 0, success: false, error: result.error }\n }\n\n try {\n let memory: WebAssembly.Memory | undefined\n\n if (result.needsMemory) {\n // Create shared memory for typed arrays (256 pages = 16MB)\n memory = new WebAssembly.Memory({ initial: 256 })\n }\n\n const instance = await instantiateWasm(result.bytes, memory)\n const compute = instance.exports.compute as (...args: number[]) => number\n\n // Wrap to handle typed array arguments\n const params = block.captures.map(parseTypeAnnotation)\n const hasArrays = params.some((p) => p.isArray)\n\n if (!hasArrays) {\n return { fn: compute, memory, success: true }\n }\n\n // Create wrapper that copies typed arrays to/from WASM memory\n const wrappedFn = (...args: any[]) => {\n if (!memory) throw new Error('Memory not initialized')\n\n const memoryView = new Uint8Array(memory.buffer)\n let offset = 0\n const pointers: number[] = []\n\n // Copy input arrays to memory\n for (let i = 0; i < params.length; i++) {\n const param = params[i]\n const arg = args[i]\n\n if (param.isArray && arg instanceof Object && 'buffer' in arg) {\n const typedArray = arg as\n | Float32Array\n | Float64Array\n | Int32Array\n | Uint8Array\n const bytes = new Uint8Array(\n typedArray.buffer,\n typedArray.byteOffset,\n typedArray.byteLength\n )\n memoryView.set(bytes, offset)\n pointers.push(offset)\n offset += bytes.length\n // Align to 8 bytes\n offset = (offset + 15) & ~15\n } else {\n pointers.push(arg as number)\n }\n }\n\n // Call WASM function\n const resultVal = compute(...pointers)\n\n // Copy output arrays back (they're modified in place)\n offset = 0\n for (let i = 0; i < params.length; i++) {\n const param = params[i]\n const arg = args[i]\n\n if (param.isArray && arg instanceof Object && 'buffer' in arg) {\n const typedArray = arg as\n | Float32Array\n | Float64Array\n | Int32Array\n | Uint8Array\n const bytes = new Uint8Array(\n typedArray.buffer,\n typedArray.byteOffset,\n typedArray.byteLength\n )\n bytes.set(memoryView.slice(offset, offset + bytes.length))\n offset += bytes.length\n offset = (offset + 15) & ~15\n }\n }\n\n return resultVal\n }\n\n return { fn: wrappedFn, memory, success: true }\n } catch (e: any) {\n return { fn: () => 0, success: false, error: e.message }\n }\n}\n\n/**\n * Compile and register a WASM block globally\n */\nexport async function registerWasmBlock(block: WasmBlock): Promise<boolean> {\n const result = await createWasmFunction(block)\n\n if (!result.success) {\n console.warn(`WASM compilation failed for ${block.id}:`, result.error)\n return false\n }\n\n // Register globally\n ;(globalThis as any)[block.id] = result.fn\n\n return true\n}\n\n/**\n * Compile all WASM blocks from a preprocessed source\n */\nexport async function compileWasmBlocks(blocks: WasmBlock[]): Promise<{\n compiled: number\n failed: number\n errors: string[]\n}> {\n let compiled = 0\n let failed = 0\n const errors: string[] = []\n\n for (const block of blocks) {\n const success = await registerWasmBlock(block)\n if (success) {\n compiled++\n } else {\n failed++\n errors.push(`Failed to compile ${block.id}`)\n }\n }\n\n return { compiled, failed, errors }\n}\n\n/**\n * Compiled WASM data that can be serialized and passed to an iframe\n */\nexport interface CompiledWasmData {\n id: string\n bytes: number[] // Uint8Array as plain array for JSON serialization\n captures: string[]\n needsMemory: boolean\n}\n\n/**\n * Compile WASM blocks and return serializable data for iframe instantiation\n */\nexport async function compileWasmBlocksForIframe(blocks: WasmBlock[]): Promise<{\n compiled: CompiledWasmData[]\n failed: number\n errors: string[]\n}> {\n const compiled: CompiledWasmData[] = []\n let failed = 0\n const errors: string[] = []\n\n for (const block of blocks) {\n const result = compileToWasm(block)\n if (result.success) {\n compiled.push({\n id: block.id,\n bytes: Array.from(result.bytes),\n captures: block.captures,\n needsMemory: result.needsMemory ?? false,\n })\n } else {\n failed++\n errors.push(`Failed to compile ${block.id}: ${result.error}`)\n }\n }\n\n return { compiled, failed, errors }\n}\n\n/**\n * Generate JavaScript code that instantiates compiled WASM in an iframe\n * This code should be injected into the iframe's script\n */\nexport function generateWasmInstantiationCode(\n compiledBlocks: CompiledWasmData[]\n): string {\n if (compiledBlocks.length === 0) return ''\n\n // Helper function to parse type annotations (same as parseTypeAnnotation)\n const parseTypeCode = `\nfunction __parseWasmType(capture) {\n const match = capture.match(/^(\\\\w+)\\\\s*:\\\\s*(\\\\w+)$/);\n if (!match) return { name: capture, type: 'f64', isArray: false };\n const [, name, typeStr] = match;\n const arrayTypes = { Float32Array: 'f32', Float64Array: 'f64', Int32Array: 'i32', Uint8Array: 'i32' };\n if (arrayTypes[typeStr]) {\n return { name, type: 'i32', isArray: true, arrayType: typeStr };\n }\n const typeMap = { i32: 'i32', i64: 'i64', f32: 'f32', f64: 'f64', number: 'f64', int: 'i32' };\n return { name, type: typeMap[typeStr] || 'f64', isArray: false };\n}\n`\n\n // Helper to create wrapped function\n const wrapperCode = `\nasync function __instantiateWasm(id, bytes, captures, needsMemory) {\n const params = captures.map(__parseWasmType);\n const hasArrays = params.some(p => p.isArray);\n\n let memory;\n if (needsMemory) {\n memory = new WebAssembly.Memory({ initial: 256 });\n }\n\n const importObject = memory ? { env: { memory } } : {};\n const module = await WebAssembly.compile(new Uint8Array(bytes));\n const instance = await WebAssembly.instantiate(module, importObject);\n const compute = instance.exports.compute;\n\n if (!hasArrays) {\n globalThis[id] = compute;\n return;\n }\n\n // Create wrapper that copies typed arrays to/from WASM memory\n globalThis[id] = function(...args) {\n const memoryView = new Uint8Array(memory.buffer);\n let offset = 0;\n const pointers = [];\n\n // Copy input arrays to memory\n for (let i = 0; i < params.length; i++) {\n const param = params[i];\n const arg = args[i];\n\n if (param.isArray && arg && arg.buffer) {\n const bytes = new Uint8Array(arg.buffer, arg.byteOffset, arg.byteLength);\n memoryView.set(bytes, offset);\n pointers.push(offset);\n offset += bytes.length;\n offset = (offset + 15) & ~15; // Align to 16 bytes (SIMD)\n } else {\n pointers.push(arg);\n }\n }\n\n // Call WASM function\n const result = compute(...pointers);\n\n // Copy output arrays back\n offset = 0;\n for (let i = 0; i < params.length; i++) {\n const param = params[i];\n const arg = args[i];\n\n if (param.isArray && arg && arg.buffer) {\n const bytes = new Uint8Array(arg.buffer, arg.byteOffset, arg.byteLength);\n bytes.set(memoryView.slice(offset, offset + bytes.length));\n offset += bytes.length;\n offset = (offset + 15) & ~15;\n }\n }\n\n return result;\n };\n}\n`\n\n // Generate instantiation calls for each block\n const instantiationCalls = compiledBlocks\n .map(\n (block) =>\n `__instantiateWasm(${JSON.stringify(block.id)}, ${JSON.stringify(\n block.bytes\n )}, ${JSON.stringify(block.captures)}, ${block.needsMemory})`\n )\n .join(',\\n ')\n\n return `\n // WASM instantiation helpers\n ${parseTypeCode}\n ${wrapperCode}\n\n // Instantiate all WASM blocks\n await Promise.all([\n ${instantiationCalls}\n ]);\n `\n}\n",
16
16
  "/**\n * TJS WASM Bootstrap Generation\n *\n * Compiles inline WASM blocks and generates JavaScript bootstrap code.\n */\n\nimport { compileToWasm } from '../wasm'\nimport type { WasmBlock } from '../parser'\n\nexport function generateWasmBootstrap(blocks: WasmBlock[]): {\n code: string\n results: {\n id: string\n success: boolean\n error?: string\n byteLength?: number\n }[]\n} {\n const results: {\n id: string\n success: boolean\n error?: string\n byteLength?: number\n }[] = []\n const compiledBlocks: {\n id: string\n base64: string\n captures: string[]\n needsMemory: boolean\n wat: string\n }[] = []\n\n for (const block of blocks) {\n const result = compileToWasm(block)\n if (result.success) {\n // Convert bytes to base64 for embedding\n const base64 = btoa(String.fromCharCode(...result.bytes))\n compiledBlocks.push({\n id: block.id,\n base64,\n captures: block.captures,\n needsMemory: result.needsMemory ?? false,\n wat: result.wat ?? '',\n })\n results.push({\n id: block.id,\n success: true,\n byteLength: result.bytes.length,\n })\n } else {\n results.push({\n id: block.id,\n success: false,\n error: result.error,\n })\n }\n }\n\n if (compiledBlocks.length === 0) {\n return { code: '', results }\n }\n\n // Generate WAT comments for each block\n const watComments = compiledBlocks\n .map((b) => {\n const watLines = b.wat.split('\\n').map((line) => ` * ${line}`)\n return `/**\\n * WASM: ${b.id}\\n${watLines.join('\\n')}\\n */`\n })\n .join('\\n')\n\n // Generate self-contained bootstrap code\n // This runs immediately and sets up globalThis.__tjs_wasm_N functions\n const blockData = compiledBlocks\n .map(\n (b) =>\n `{id:${JSON.stringify(b.id)},b64:${JSON.stringify(\n b.base64\n )},c:${JSON.stringify(b.captures)},m:${b.needsMemory}}`\n )\n .join(',')\n\n // Check if any block needs memory (shared across all blocks)\n const anyNeedsMemory = compiledBlocks.some((b) => b.needsMemory)\n\n const code = `${watComments}\n;(async()=>{\nconst __wasmBlocks=[${blockData}];\nconst __b64ToBytes=s=>{const b=atob(s),a=new Uint8Array(b.length);for(let i=0;i<b.length;i++)a[i]=b.charCodeAt(i);return a};\nconst __parseType=c=>{const m=c.match(/^(\\\\w+)\\\\s*:\\\\s*(\\\\w+)$/);if(!m)return{n:c,t:'f64',a:false};const[,n,ts]=m;const at={Float32Array:'f32',Float64Array:'f64',Int32Array:'i32',Uint8Array:'i32'};if(at[ts])return{n,t:'i32',a:true,at:ts};return{n,t:'f64',a:false}};\n${\n anyNeedsMemory\n ? `const __wasmMem=new WebAssembly.Memory({initial:1024});\nlet __woff=0;\nglobalThis.wasmBuffer=function(Ctor,len){const bytes=len*Ctor.BYTES_PER_ELEMENT;const align=Math.max(Ctor.BYTES_PER_ELEMENT,16);__woff=(__woff+align-1)&~(align-1);const arr=new Ctor(__wasmMem.buffer,__woff,len);__woff+=bytes;return arr};`\n : ''\n}\nfor(const{id,b64,c,m}of __wasmBlocks){\n const bytes=__b64ToBytes(b64);\n const params=c.map(__parseType);\n const hasArrays=params.some(p=>p.a);\n const mem=m?__wasmMem:null;\n const imp=mem?{env:{memory:mem}}:{};\n const inst=await WebAssembly.instantiate(await WebAssembly.compile(bytes),imp);\n const compute=inst.exports.compute;\n if(!hasArrays){globalThis[id]=compute;continue}\n globalThis[id]=function(...args){\n const mv=new Uint8Array(mem.buffer);let off=__woff;const ptrs=[];\n for(let i=0;i<params.length;i++){const p=params[i],a=args[i];\n if(p.a&&a?.buffer){\n if(a.buffer===mem.buffer){ptrs.push(a.byteOffset)}\n else{const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;mv.set(ab,off);ptrs.push(off);off+=ab.length}\n } else ptrs.push(a)}\n const r=compute(...ptrs);off=__woff;\n for(let i=0;i<params.length;i++){const p=params[i],a=args[i];\n if(p.a&&a?.buffer){\n if(a.buffer===mem.buffer) continue;\n const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;ab.set(mv.slice(off,off+ab.length));off+=ab.length}}\n return r};\n}})();\n`.trim()\n\n return { code, results }\n}\n",
17
- "/**\n * TypeScript to TJS Transpiler\n *\n * Converts TypeScript source to TJS (or directly to JS + metadata).\n *\n * Two modes:\n * 1. TS → TJS (for inspection/migration)\n * 2. TS → JS + __tjs metadata (for production)\n *\n * @example\n * ```typescript\n * // Input TypeScript:\n * function greet(name: string, age?: number): string {\n * return `Hello, ${name}!`\n * }\n *\n * // Output TJS:\n * function greet(name: '', age = 0) -> '' {\n * return `Hello, ${name}!`\n * }\n *\n * // Output JS + metadata:\n * function greet(name, age) {\n * return `Hello, ${name}!`\n * }\n * greet.__tjs = {\n * params: { name: { type: 'string', required: true }, age: { type: 'number', required: false } },\n * returns: { type: 'string' }\n * }\n * ```\n */\n\nimport ts from 'typescript'\nimport { emitClassWrapper } from '../runtime'\n\nexport interface FromTSOptions {\n /** Emit TJS intermediate instead of JS + metadata */\n emitTJS?: boolean\n /** Include sourcemap */\n sourceMap?: boolean\n /** Filename for error messages */\n filename?: string\n}\n\nexport interface FromTSResult {\n /** The transpiled code (TJS or JS depending on options) */\n code: string\n /** Function type metadata (only when emitting JS) */\n types?: Record<string, FunctionTypeInfo>\n /** Class type metadata (only when emitting JS) */\n classes?: Record<string, ClassTypeInfo>\n /** Any warnings during transpilation */\n warnings?: string[]\n}\n\nexport interface TypeParamInfo {\n /** Constraint schema (from `extends`) - example-based */\n constraint?: string | Record<string, any>\n /** Default schema (from `= Type`) - example-based */\n default?: string | Record<string, any>\n}\n\nexport interface FunctionTypeInfo {\n name: string\n params: Record<string, ParamTypeInfo>\n returns?: TypeInfo\n description?: string\n /** Generic type parameters with constraints/defaults */\n typeParams?: Record<string, TypeParamInfo>\n}\n\nexport interface ClassTypeInfo {\n name: string\n /** Constructor parameters - also serves as the type shape */\n constructor?: {\n params: Record<string, ParamTypeInfo>\n }\n /** Instance methods */\n methods: Record<string, FunctionTypeInfo>\n /** Static methods */\n staticMethods: Record<string, FunctionTypeInfo>\n /** Generic type parameters */\n typeParams?: Record<string, TypeParamInfo>\n}\n\nexport interface ParamTypeInfo {\n type: TypeInfo\n required: boolean\n default?: any\n description?: string\n}\n\nexport interface TypeInfo {\n kind:\n | 'string'\n | 'number'\n | 'boolean'\n | 'null'\n | 'undefined'\n | 'array'\n | 'tuple'\n | 'object'\n | 'union'\n | 'any'\n items?: TypeInfo\n /** For tuples: element types in order */\n elements?: TypeInfo[]\n shape?: Record<string, TypeInfo>\n members?: TypeInfo[]\n nullable?: boolean\n}\n\n/** Context for type resolution */\ninterface TypeResolutionContext {\n typeAliases?: Map<string, ts.TypeNode>\n interfaces?: Map<string, ts.InterfaceDeclaration>\n sourceFile?: ts.SourceFile\n warnings?: string[]\n /** Track visited types to prevent infinite recursion */\n visited?: Set<string>\n}\n\n/**\n * Convert a TypeScript type node to a TJS example value string\n *\n * @param warnings - Optional array to collect warnings about generic types\n */\nfunction typeToExample(\n type: ts.TypeNode | undefined,\n checker?: ts.TypeChecker,\n warnings?: string[],\n ctx?: TypeResolutionContext\n): string {\n if (!type) return 'undefined'\n\n switch (type.kind) {\n case ts.SyntaxKind.StringKeyword:\n return \"''\"\n case ts.SyntaxKind.NumberKeyword:\n return '0.0'\n case ts.SyntaxKind.BooleanKeyword:\n return 'false'\n case ts.SyntaxKind.NullKeyword:\n return 'null'\n case ts.SyntaxKind.UndefinedKeyword:\n return 'undefined'\n case ts.SyntaxKind.VoidKeyword:\n return 'undefined'\n case ts.SyntaxKind.AnyKeyword:\n // For function params we use 'any', for object props we use 'null'\n return 'any'\n case ts.SyntaxKind.UnknownKeyword:\n return 'any'\n case ts.SyntaxKind.NeverKeyword:\n return 'null'\n\n case ts.SyntaxKind.ArrayType: {\n const arrayType = type as ts.ArrayTypeNode\n let itemExample = typeToExample(arrayType.elementType, checker)\n // 'any' is not a valid literal value - use null for array items\n if (itemExample === 'any') itemExample = 'null'\n return `[${itemExample}]`\n }\n\n case ts.SyntaxKind.TypeReference: {\n const typeRef = type as ts.TypeReferenceNode\n const typeName = typeRef.typeName.getText()\n\n // Handle common generic types\n if (typeName === 'Array' && typeRef.typeArguments?.length) {\n const itemExample = typeToExample(\n typeRef.typeArguments[0],\n checker,\n warnings,\n ctx\n )\n return `[${itemExample}]`\n }\n if (typeName === 'Promise') {\n // Unwrap Promise type\n if (typeRef.typeArguments?.length) {\n return typeToExample(typeRef.typeArguments[0], checker, warnings, ctx)\n }\n return 'undefined'\n }\n if (typeName === 'Record') {\n return '{}'\n }\n if (typeName === 'Map') {\n return 'new Map()'\n }\n if (typeName === 'Set') {\n return 'new Set()'\n }\n\n // Resolve type aliases\n if (ctx?.typeAliases?.has(typeName)) {\n // Prevent infinite recursion\n const visited = ctx.visited ?? new Set<string>()\n if (visited.has(typeName)) {\n warnings?.push(`Circular type reference '${typeName}' - using 'any'`)\n return 'any'\n }\n visited.add(typeName)\n const resolvedType = ctx.typeAliases.get(typeName)!\n return typeToExample(resolvedType, checker, warnings, {\n ...ctx,\n visited,\n })\n }\n\n // Resolve interfaces\n if (ctx?.interfaces?.has(typeName)) {\n // Prevent infinite recursion\n const visited = ctx.visited ?? new Set<string>()\n if (visited.has(typeName)) {\n warnings?.push(`Circular type reference '${typeName}' - using 'any'`)\n return 'any'\n }\n visited.add(typeName)\n const iface = ctx.interfaces.get(typeName)!\n // Build example object from interface members\n const props: string[] = []\n for (const member of iface.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(ctx.sourceFile)\n const propExample = typeToExample(member.type, checker, warnings, {\n ...ctx,\n visited,\n })\n const isOptional = !!member.questionToken\n if (isOptional) {\n props.push(`${propName} = ${propExample}`)\n } else {\n props.push(`${propName}: ${propExample}`)\n }\n }\n }\n return `{ ${props.join(', ')} }`\n }\n\n // Type parameters (generics like T, K, V) - treat as any\n // Single uppercase letter or common generic names\n if (\n /^[A-Z]$/.test(typeName) ||\n ['T', 'K', 'V', 'U', 'TKey', 'TValue', 'TItem', 'TResult'].includes(\n typeName\n )\n ) {\n warnings?.push(\n `Generic type parameter '${typeName}' converted to 'any' - consider specializing`\n )\n return 'any'\n }\n // Unknown type reference - treat as any\n warnings?.push(\n `Unknown type '${typeName}' converted to 'any' - may need manual review`\n )\n return 'any'\n }\n\n case ts.SyntaxKind.TypeLiteral: {\n const typeLiteral = type as ts.TypeLiteralNode\n const props: string[] = []\n for (const member of typeLiteral.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText()\n let propType = typeToExample(member.type, checker)\n // 'any' is not a valid literal value - use null for object properties\n if (propType === 'any') propType = 'null'\n // In object literals, always use : syntax (= is for function params only)\n props.push(`${propName}: ${propType}`)\n }\n }\n return `{ ${props.join(', ')} }`\n }\n\n case ts.SyntaxKind.UnionType: {\n const unionType = type as ts.UnionTypeNode\n\n // Helper to check if a type is null or undefined\n const isNullType = (t: ts.TypeNode) =>\n t.kind === ts.SyntaxKind.NullKeyword ||\n (ts.isLiteralTypeNode(t) &&\n t.literal.kind === ts.SyntaxKind.NullKeyword)\n const isUndefinedType = (t: ts.TypeNode) =>\n t.kind === ts.SyntaxKind.UndefinedKeyword ||\n (ts.isLiteralTypeNode(t) &&\n t.literal.kind === ts.SyntaxKind.UndefinedKeyword)\n\n // Check for nullable: T | null or T | undefined\n const nonNullTypes = unionType.types.filter(\n (t) => !isNullType(t) && !isUndefinedType(t)\n )\n const hasNull = unionType.types.some(isNullType)\n const hasUndefined = unionType.types.some(isUndefinedType)\n\n if (nonNullTypes.length === 1 && (hasNull || hasUndefined)) {\n // Nullable type: T | null -> T | null\n const baseExample = typeToExample(nonNullTypes[0], checker)\n if (hasNull) return `${baseExample} | null`\n if (hasUndefined) return `${baseExample} | undefined`\n }\n\n // General union: use first type as example\n if (unionType.types.length > 0) {\n return typeToExample(unionType.types[0], checker)\n }\n return 'undefined'\n }\n\n case ts.SyntaxKind.LiteralType: {\n const literalType = type as ts.LiteralTypeNode\n if (ts.isStringLiteral(literalType.literal)) {\n return `'${literalType.literal.text}'`\n }\n if (ts.isNumericLiteral(literalType.literal)) {\n return literalType.literal.text\n }\n if (literalType.literal.kind === ts.SyntaxKind.TrueKeyword) {\n return 'true'\n }\n if (literalType.literal.kind === ts.SyntaxKind.FalseKeyword) {\n return 'false'\n }\n if (literalType.literal.kind === ts.SyntaxKind.NullKeyword) {\n return 'null'\n }\n return 'undefined'\n }\n\n case ts.SyntaxKind.ParenthesizedType: {\n const parenType = type as ts.ParenthesizedTypeNode\n return typeToExample(parenType.type, checker)\n }\n\n case ts.SyntaxKind.FunctionType:\n // Functions become undefined (can't really express as example)\n return 'undefined'\n\n case ts.SyntaxKind.TupleType: {\n const tupleType = type as ts.TupleTypeNode\n const elements = tupleType.elements.map((e) => {\n if (ts.isNamedTupleMember(e)) {\n return typeToExample(e.type, checker)\n }\n return typeToExample(e as ts.TypeNode, checker)\n })\n return `[${elements.join(', ')}]`\n }\n\n default:\n return 'undefined'\n }\n}\n\n/**\n * Convert TypeScript type to TypeInfo for metadata\n */\nfunction typeToInfo(\n type: ts.TypeNode | undefined,\n ctx?: TypeResolutionContext\n): TypeInfo {\n if (!type) return { kind: 'any' }\n\n switch (type.kind) {\n case ts.SyntaxKind.StringKeyword:\n return { kind: 'string' }\n case ts.SyntaxKind.NumberKeyword:\n return { kind: 'number' }\n case ts.SyntaxKind.BooleanKeyword:\n return { kind: 'boolean' }\n case ts.SyntaxKind.NullKeyword:\n return { kind: 'null' }\n case ts.SyntaxKind.UndefinedKeyword:\n case ts.SyntaxKind.VoidKeyword:\n return { kind: 'undefined' }\n\n case ts.SyntaxKind.ArrayType: {\n const arrayType = type as ts.ArrayTypeNode\n return { kind: 'array', items: typeToInfo(arrayType.elementType, ctx) }\n }\n\n case ts.SyntaxKind.TypeLiteral: {\n const typeLiteral = type as ts.TypeLiteralNode\n const shape: Record<string, TypeInfo> = {}\n for (const member of typeLiteral.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText()\n shape[propName] = typeToInfo(member.type, ctx)\n }\n }\n return { kind: 'object', shape }\n }\n\n case ts.SyntaxKind.UnionType: {\n const unionType = type as ts.UnionTypeNode\n const nonNullTypes = unionType.types.filter(\n (t) =>\n t.kind !== ts.SyntaxKind.NullKeyword &&\n t.kind !== ts.SyntaxKind.UndefinedKeyword\n )\n const hasNull = unionType.types.some(\n (t) => t.kind === ts.SyntaxKind.NullKeyword\n )\n\n if (nonNullTypes.length === 1 && hasNull) {\n return { ...typeToInfo(nonNullTypes[0], ctx), nullable: true }\n }\n\n return {\n kind: 'union',\n members: unionType.types.map((t) => typeToInfo(t, ctx)),\n }\n }\n\n case ts.SyntaxKind.IntersectionType: {\n const intersectionType = type as ts.IntersectionTypeNode\n // Flatten intersection into merged object shape\n const mergedShape: Record<string, TypeInfo> = {}\n for (const member of intersectionType.types) {\n const memberInfo = typeToInfo(member, ctx)\n if (memberInfo.kind === 'object' && memberInfo.shape) {\n Object.assign(mergedShape, memberInfo.shape)\n }\n }\n if (Object.keys(mergedShape).length > 0) {\n return { kind: 'object', shape: mergedShape }\n }\n // If no object shapes found, treat as any\n return { kind: 'any' }\n }\n\n case ts.SyntaxKind.TupleType: {\n const tupleType = type as ts.TupleTypeNode\n const elements: TypeInfo[] = []\n for (const element of tupleType.elements) {\n // Handle named tuple members: [x: number, y: string]\n if (ts.isNamedTupleMember(element)) {\n elements.push(typeToInfo(element.type, ctx))\n } else {\n elements.push(typeToInfo(element as ts.TypeNode, ctx))\n }\n }\n return { kind: 'tuple', elements }\n }\n\n case ts.SyntaxKind.TypeReference: {\n const typeRef = type as ts.TypeReferenceNode\n const typeName = typeRef.typeName.getText()\n if (typeName === 'Array' && typeRef.typeArguments?.length) {\n return {\n kind: 'array',\n items: typeToInfo(typeRef.typeArguments[0], ctx),\n }\n }\n if (typeName === 'Promise' && typeRef.typeArguments?.length) {\n return typeToInfo(typeRef.typeArguments[0], ctx)\n }\n\n // Handle utility types\n if (typeRef.typeArguments?.length) {\n const innerType = typeToInfo(typeRef.typeArguments[0], ctx)\n\n // Partial<T> - all properties become optional (we just return the shape)\n if (typeName === 'Partial') {\n return innerType\n }\n\n // Required<T> - all properties become required (we just return the shape)\n if (typeName === 'Required') {\n return innerType\n }\n\n // Readonly<T> - same shape, readonly is a compile-time concept\n if (typeName === 'Readonly') {\n return innerType\n }\n\n // Record<K, V> - object with string keys and V values\n if (typeName === 'Record' && typeRef.typeArguments.length >= 2) {\n const valueType = typeToInfo(typeRef.typeArguments[1], ctx)\n // Record is essentially an object with dynamic keys\n return { kind: 'object', shape: { '[key]': valueType } }\n }\n\n // Pick<T, K> and Omit<T, K> - just return the base type for now\n // Full implementation would need to filter properties\n if (typeName === 'Pick' || typeName === 'Omit') {\n return innerType\n }\n\n // NonNullable<T> - remove null/undefined\n if (typeName === 'NonNullable') {\n if (innerType.nullable) {\n return { ...innerType, nullable: false }\n }\n return innerType\n }\n\n // ReturnType<T>, Parameters<T>, etc. - complex, return any\n if (\n ['ReturnType', 'Parameters', 'ConstructorParameters'].includes(\n typeName\n )\n ) {\n return { kind: 'any' }\n }\n }\n\n // Resolve type aliases\n if (ctx?.typeAliases?.has(typeName)) {\n const visited = ctx.visited ?? new Set<string>()\n if (visited.has(typeName)) {\n return { kind: 'any' } // Circular reference\n }\n visited.add(typeName)\n const resolvedType = ctx.typeAliases.get(typeName)!\n return typeToInfo(resolvedType, { ...ctx, visited })\n }\n\n // Resolve interfaces\n if (ctx?.interfaces?.has(typeName)) {\n const visited = ctx.visited ?? new Set<string>()\n if (visited.has(typeName)) {\n return { kind: 'any' } // Circular reference\n }\n visited.add(typeName)\n const iface = ctx.interfaces.get(typeName)!\n const shape: Record<string, TypeInfo> = {}\n\n // Handle extends clauses - merge in base interface properties\n if (iface.heritageClauses) {\n for (const clause of iface.heritageClauses) {\n if (clause.token === ts.SyntaxKind.ExtendsKeyword) {\n for (const baseType of clause.types) {\n const baseName = baseType.expression.getText(ctx.sourceFile)\n // Look up the base interface and recursively resolve it\n if (ctx.interfaces?.has(baseName) && !visited.has(baseName)) {\n // Create a synthetic type reference node to look up the base\n const syntheticRef = {\n kind: ts.SyntaxKind.TypeReference,\n typeName: { getText: () => baseName },\n } as unknown as ts.TypeReferenceNode\n const baseInfo = typeToInfo(syntheticRef, { ...ctx, visited })\n if (baseInfo.kind === 'object' && baseInfo.shape) {\n Object.assign(shape, baseInfo.shape)\n }\n }\n }\n }\n }\n }\n\n // Add own members (may override base)\n for (const member of iface.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(ctx.sourceFile)\n shape[propName] = typeToInfo(member.type, { ...ctx, visited })\n }\n }\n return { kind: 'object', shape }\n }\n\n // Generics and unknown types become 'any'\n return { kind: 'any' }\n }\n\n default:\n return { kind: 'any' }\n }\n}\n\n/**\n * Extract type parameter info (generics) from a function\n */\nfunction extractTypeParams(\n node: ts.FunctionDeclaration | ts.ArrowFunction | ts.FunctionExpression,\n warnings?: string[]\n): Record<string, TypeParamInfo> | undefined {\n if (!node.typeParameters || node.typeParameters.length === 0) {\n return undefined\n }\n\n const typeParams: Record<string, TypeParamInfo> = {}\n\n for (const param of node.typeParameters) {\n const name = param.name.getText()\n const info: TypeParamInfo = {}\n\n // Extract constraint: T extends Foo\n if (param.constraint) {\n const constraintExample = typeToExample(\n param.constraint,\n undefined,\n warnings\n )\n // Try to parse as object/value for richer schema\n if (constraintExample.startsWith('{')) {\n try {\n // This is a rough parse - in production we'd use proper AST\n info.constraint = constraintExample\n } catch {\n info.constraint = constraintExample\n }\n } else {\n info.constraint = constraintExample\n }\n }\n\n // Extract default: T = Foo\n if (param.default) {\n const defaultExample = typeToExample(param.default, undefined, warnings)\n info.default = defaultExample\n }\n\n typeParams[name] = info\n }\n\n return Object.keys(typeParams).length > 0 ? typeParams : undefined\n}\n\n/**\n * Transform a TypeScript function to TJS syntax\n */\n/**\n * Transform a TypeScript interface to TJS Type declaration\n *\n * interface User { name: string; age: number }\n * ->\n * Type User { example: { name: '', age: 0 } }\n */\nfunction transformInterfaceToType(\n node: ts.InterfaceDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string | null {\n const typeName = node.name.getText(sourceFile)\n\n // Check for generics\n if (node.typeParameters && node.typeParameters.length > 0) {\n return transformGenericInterfaceToGeneric(node, sourceFile, warnings)\n }\n\n // Build example object from members\n const props: string[] = []\n for (const member of node.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n let propExample = typeToExample(member.type, undefined, warnings)\n // 'any' is not a valid literal value - use null for object properties\n if (propExample === 'any') propExample = 'null'\n props.push(`${propName}: ${propExample}`)\n }\n }\n\n if (props.length === 0) {\n return `Type ${typeName} {}`\n }\n\n return `Type ${typeName} {\n example: { ${props.join(', ')} }\n}`\n}\n\n/**\n * Transform a generic TypeScript interface to TJS Generic declaration\n *\n * interface Box<T> { value: T }\n * ->\n * Generic Box<T> {\n * description: 'Box'\n * predicate(x, T) { return typeof x === 'object' && x !== null && 'value' in x && T(x.value) }\n * }\n */\nfunction transformGenericInterfaceToGeneric(\n node: ts.InterfaceDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string {\n const typeName = node.name.getText(sourceFile)\n const typeParams: string[] = []\n\n // Extract type parameters with constraints/defaults\n for (const param of node.typeParameters || []) {\n const paramName = param.name.getText(sourceFile)\n if (param.default) {\n const defaultExample = typeToExample(param.default, undefined, warnings)\n typeParams.push(`${paramName} = ${defaultExample}`)\n } else {\n typeParams.push(paramName)\n }\n }\n\n // Build predicate checks for each property that uses a type parameter\n const typeParamNames = (node.typeParameters || []).map((p) =>\n p.name.getText(sourceFile)\n )\n const checks: string[] = [\"typeof x === 'object'\", 'x !== null']\n\n for (const member of node.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n checks.push(`'${propName}' in x`)\n\n // If property type is a type parameter, add check\n if (member.type && ts.isTypeReferenceNode(member.type)) {\n const refName = member.type.typeName.getText(sourceFile)\n if (typeParamNames.includes(refName)) {\n checks.push(`${refName}(x.${propName})`)\n }\n }\n }\n }\n\n const predicateParams = ['x', ...typeParamNames].join(', ')\n\n return `Generic ${typeName}<${typeParams.join(', ')}> {\n description: '${typeName}'\n predicate(${predicateParams}) { return ${checks.join(' && ')} }\n}`\n}\n\n/**\n * Check if a TypeScript union type is a literal union (e.g., 'up' | 'down' | 'left')\n * Returns the literal values if it is, null otherwise\n */\nfunction extractLiteralUnionValues(\n type: ts.TypeNode,\n _sourceFile: ts.SourceFile\n): string[] | null {\n if (!ts.isUnionTypeNode(type)) return null\n\n const values: string[] = []\n for (const member of type.types) {\n if (ts.isLiteralTypeNode(member)) {\n if (ts.isStringLiteral(member.literal)) {\n values.push(`'${member.literal.text}'`)\n } else if (ts.isNumericLiteral(member.literal)) {\n values.push(member.literal.text)\n } else if (member.literal.kind === ts.SyntaxKind.TrueKeyword) {\n values.push('true')\n } else if (member.literal.kind === ts.SyntaxKind.FalseKeyword) {\n values.push('false')\n } else if (member.literal.kind === ts.SyntaxKind.NullKeyword) {\n values.push('null')\n } else {\n // Not a literal we can handle\n return null\n }\n } else if (member.kind === ts.SyntaxKind.NullKeyword) {\n values.push('null')\n } else if (member.kind === ts.SyntaxKind.UndefinedKeyword) {\n values.push('undefined')\n } else {\n // Not a literal union (has complex types)\n return null\n }\n }\n\n return values.length > 0 ? values : null\n}\n\n/**\n * Transform a TypeScript enum to TJS Enum declaration\n *\n * enum Status { Pending, Active, Done }\n * ->\n * Enum Status 'Status' {\n * Pending\n * Active\n * Done\n * }\n *\n * enum Color { Red = 'red', Green = 'green', Blue = 'blue' }\n * ->\n * Enum Color 'Color' {\n * Red = 'red'\n * Green = 'green'\n * Blue = 'blue'\n * }\n */\nfunction transformEnumToTJS(\n node: ts.EnumDeclaration,\n sourceFile: ts.SourceFile,\n _warnings?: string[]\n): string | null {\n const enumName = node.name.getText(sourceFile)\n const members: string[] = []\n\n let nextValue = 0\n for (const member of node.members) {\n const memberName = member.name.getText(sourceFile)\n\n if (member.initializer) {\n // Has explicit value\n if (ts.isStringLiteral(member.initializer)) {\n members.push(` ${memberName} = '${member.initializer.text}'`)\n } else if (ts.isNumericLiteral(member.initializer)) {\n const numValue = parseInt(member.initializer.text, 10)\n members.push(` ${memberName} = ${numValue}`)\n nextValue = numValue + 1\n } else if (\n ts.isPrefixUnaryExpression(member.initializer) &&\n member.initializer.operator === ts.SyntaxKind.MinusToken\n ) {\n // Negative number\n const operand = member.initializer.operand\n if (ts.isNumericLiteral(operand)) {\n const numValue = -parseInt(operand.text, 10)\n members.push(` ${memberName} = ${numValue}`)\n nextValue = numValue + 1\n }\n } else {\n // Expression or other complex initializer - use the text directly\n members.push(\n ` ${memberName} = ${member.initializer.getText(sourceFile)}`\n )\n }\n } else {\n // Auto-increment numeric value\n members.push(` ${memberName} = ${nextValue}`)\n nextValue++\n }\n }\n\n return `Enum ${enumName} '${enumName}' {\n${members.join('\\n')}\n}`\n}\n\n/**\n * Transform a TypeScript type alias to TJS Type declaration\n *\n * type User = { name: string; age: number }\n * ->\n * Type User { example: { name: '', age: 0 } }\n *\n * type Direction = 'up' | 'down' | 'left' | 'right'\n * ->\n * Union Direction 'Direction' 'up' | 'down' | 'left' | 'right'\n */\nfunction transformTypeAliasToType(\n node: ts.TypeAliasDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string | null {\n const typeName = node.name.getText(sourceFile)\n\n // Check for generics\n if (node.typeParameters && node.typeParameters.length > 0) {\n return transformGenericTypeAliasToGeneric(node, sourceFile, warnings)\n }\n\n // Check for literal union type → emit Union syntax\n const literalValues = extractLiteralUnionValues(node.type, sourceFile)\n if (literalValues) {\n return `Union ${typeName} '${typeName}' ${literalValues.join(' | ')}`\n }\n\n const example = typeToExample(node.type, undefined, warnings)\n\n // For simple primitive types, use short form\n if (\n example === \"''\" ||\n example === '0' ||\n example === 'true' ||\n example === 'null'\n ) {\n return `Type ${typeName} ${example}`\n }\n\n return `Type ${typeName} {\n example: ${example}\n}`\n}\n\n/**\n * Transform a generic type alias to TJS Generic declaration\n */\nfunction transformGenericTypeAliasToGeneric(\n node: ts.TypeAliasDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string {\n const typeName = node.name.getText(sourceFile)\n const typeParams: string[] = []\n\n // Extract type parameters\n for (const param of node.typeParameters || []) {\n const paramName = param.name.getText(sourceFile)\n if (param.default) {\n const defaultExample = typeToExample(param.default, undefined, warnings)\n typeParams.push(`${paramName} = ${defaultExample}`)\n } else {\n typeParams.push(paramName)\n }\n }\n\n const typeParamNames = (node.typeParameters || []).map((p) =>\n p.name.getText(sourceFile)\n )\n const predicateParams = ['x', ...typeParamNames].join(', ')\n\n // Simple fallback - more sophisticated analysis could be added\n return `Generic ${typeName}<${typeParams.join(', ')}> {\n description: '${typeName}'\n predicate(${predicateParams}) { return true }\n}`\n}\n\nfunction transformFunctionToTJS(\n node: ts.FunctionDeclaration | ts.ArrowFunction | ts.FunctionExpression,\n sourceFile: ts.SourceFile,\n explicitName?: string,\n warnings?: string[],\n includeLineNumber?: boolean\n): string {\n const params = transformParams(node.parameters, sourceFile, warnings)\n\n // Get line number (1-indexed) for source mapping\n const { line } = sourceFile.getLineAndCharacterOfPosition(\n node.getStart(sourceFile)\n )\n const lineComment = includeLineNumber ? `/* line ${line + 1} */\\n` : ''\n\n const funcName =\n explicitName ||\n (ts.isFunctionDeclaration(node) && node.name\n ? node.name.getText(sourceFile)\n : '')\n const returnExample = node.type\n ? typeToExample(node.type, undefined, warnings)\n : ''\n // Use -! to skip signature tests - TS types are compile-time only,\n // the example values won't necessarily match runtime behavior\n const returnAnnotation =\n returnExample && returnExample !== 'undefined' && returnExample !== 'any'\n ? ` -! ${returnExample}`\n : ''\n\n // Get function body and strip TypeScript syntax using ts.transpileModule\n let body = ''\n if (node.body) {\n const bodyText = ts.isBlock(node.body)\n ? node.body.getText(sourceFile)\n : `{ return ${node.body.getText(sourceFile)} }`\n\n // Use TypeScript's transpiler to strip all type syntax\n const transpiled = ts.transpileModule(bodyText, {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = transpiled.outputText.trim()\n } else {\n body = '{ }'\n }\n\n // Check for async modifier\n const isAsync = node.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.AsyncKeyword\n )\n const asyncPrefix = isAsync ? 'async ' : ''\n\n return `${lineComment}${asyncPrefix}function ${funcName}(${params.join(\n ', '\n )})${returnAnnotation} ${body}`\n}\n\n/**\n * Transform TypeScript class to TJS class\n * Converts TS type annotations to TJS example-based annotations\n */\nfunction transformClassToTJS(\n node: ts.ClassDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string {\n const className = node.name?.getText(sourceFile) || 'Anonymous'\n const extendsClause = node.heritageClauses\n ?.find((h) => h.token === ts.SyntaxKind.ExtendsKeyword)\n ?.types[0]?.getText(sourceFile)\n\n // First pass: collect private field mappings (TS private -> JS #)\n const privateFieldMap = new Map<string, string>()\n for (const member of node.members) {\n if (ts.isPropertyDeclaration(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const isPrivate = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.PrivateKeyword\n )\n if (isPrivate && !propName.startsWith('#')) {\n privateFieldMap.set(propName, `#${propName}`)\n }\n }\n }\n\n // Helper to replace private field references in transpiled code\n const replacePrivateRefs = (code: string): string => {\n let result = code\n for (const [tsName, jsName] of privateFieldMap) {\n // Replace this.propName with this.#propName\n result = result.replace(\n new RegExp(`this\\\\.${tsName}\\\\b`, 'g'),\n `this.${jsName}`\n )\n }\n return result\n }\n\n const members: string[] = []\n\n for (const member of node.members) {\n // Constructor\n if (ts.isConstructorDeclaration(member)) {\n const params = transformParams(member.parameters, sourceFile, warnings)\n let body = '{ }'\n if (member.body) {\n const transpiled = ts.transpileModule(member.body.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = replacePrivateRefs(transpiled.outputText.trim())\n }\n members.push(` constructor(${params.join(', ')}) ${body}`)\n }\n\n // Regular methods\n if (ts.isMethodDeclaration(member) && member.name) {\n const methodName = member.name.getText(sourceFile)\n const isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n const isAsync = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.AsyncKeyword\n )\n\n const params = transformParams(member.parameters, sourceFile, warnings)\n const returnExample = member.type\n ? typeToExample(member.type, undefined, warnings)\n : ''\n // Use -! to skip signature tests for TS-transpiled code\n const returnAnnotation =\n returnExample &&\n returnExample !== 'undefined' &&\n returnExample !== 'any'\n ? ` -! ${returnExample}`\n : ''\n\n let body = '{ }'\n if (member.body) {\n const transpiled = ts.transpileModule(member.body.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = replacePrivateRefs(transpiled.outputText.trim())\n }\n\n const staticPrefix = isStatic ? 'static ' : ''\n const asyncPrefix = isAsync ? 'async ' : ''\n members.push(\n ` ${staticPrefix}${asyncPrefix}${methodName}(${params.join(\n ', '\n )})${returnAnnotation} ${body}`\n )\n }\n\n // Getters\n if (ts.isGetAccessorDeclaration(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const returnExample = member.type\n ? typeToExample(member.type, undefined, warnings)\n : ''\n // Use -! to skip signature tests for TS-transpiled code\n const returnAnnotation =\n returnExample &&\n returnExample !== 'undefined' &&\n returnExample !== 'any'\n ? ` -! ${returnExample}`\n : ''\n\n let body = '{ }'\n if (member.body) {\n const transpiled = ts.transpileModule(member.body.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = replacePrivateRefs(transpiled.outputText.trim())\n }\n\n members.push(` get ${propName}()${returnAnnotation} ${body}`)\n }\n\n // Setters\n if (ts.isSetAccessorDeclaration(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const params = transformParams(member.parameters, sourceFile, warnings)\n\n let body = '{ }'\n if (member.body) {\n const transpiled = ts.transpileModule(member.body.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = replacePrivateRefs(transpiled.outputText.trim())\n }\n\n members.push(` set ${propName}(${params.join(', ')}) ${body}`)\n }\n\n // Properties with initializers (private fields, regular properties)\n if (ts.isPropertyDeclaration(member) && member.name) {\n const origName = member.name.getText(sourceFile)\n const isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n const staticPrefix = isStatic ? 'static ' : ''\n\n // Use mapped name (# for private) or original\n const propName = privateFieldMap.get(origName) || origName\n\n if (member.initializer) {\n const transpiled = ts.transpileModule(\n member.initializer.getText(sourceFile),\n {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n }\n )\n members.push(\n ` ${staticPrefix}${propName} = ${transpiled.outputText.trim()}`\n )\n } else {\n // Property without initializer - just declare it\n members.push(` ${staticPrefix}${propName}`)\n }\n }\n }\n\n const extendsStr = extendsClause ? ` extends ${extendsClause}` : ''\n return `class ${className}${extendsStr} {\\n${members.join('\\n')}\\n}`\n}\n\n/**\n * Helper to transform parameters to TJS format\n */\nfunction transformParams(\n parameters: ts.NodeArray<ts.ParameterDeclaration>,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string[] {\n const params: string[] = []\n\n for (const param of parameters) {\n const name = param.name.getText(sourceFile)\n const isOptional = !!param.questionToken || !!param.initializer\n const typeExample = typeToExample(param.type, undefined, warnings)\n\n if (param.initializer) {\n // Has default value - use it directly\n const defaultText = param.initializer.getText(sourceFile)\n params.push(`${name} = ${defaultText}`)\n } else if (typeExample === 'any' || typeExample === 'undefined') {\n // any/undefined type - no annotation in TJS (bare name means any)\n params.push(name)\n } else if (isOptional) {\n // Optional without default - use union with undefined to preserve\n // three-state semantics (e.g. TS `flag?: boolean` can be true/false/undefined)\n params.push(`${name}: ${typeExample} | undefined`)\n } else {\n // Required - use : for required\n params.push(`${name}: ${typeExample}`)\n }\n }\n\n return params\n}\n\n/**\n * Extract type metadata from a TypeScript function\n */\nfunction extractFunctionMetadata(\n node: ts.FunctionDeclaration | ts.ArrowFunction | ts.FunctionExpression,\n sourceFile: ts.SourceFile,\n warnings?: string[],\n ctx?: TypeResolutionContext\n): FunctionTypeInfo {\n const name =\n ts.isFunctionDeclaration(node) && node.name\n ? node.name.getText(sourceFile)\n : 'anonymous'\n const params: Record<string, ParamTypeInfo> = {}\n\n for (const param of node.parameters) {\n const paramName = param.name.getText(sourceFile)\n const isOptional = !!param.questionToken || !!param.initializer\n\n let defaultValue: any = undefined\n if (param.initializer) {\n // Try to extract literal default value\n const initText = param.initializer.getText(sourceFile)\n try {\n defaultValue = JSON.parse(initText)\n } catch {\n defaultValue = initText\n }\n }\n\n params[paramName] = {\n type: typeToInfo(param.type, ctx),\n required: !isOptional,\n default: defaultValue,\n }\n }\n\n const result: FunctionTypeInfo = {\n name,\n params,\n returns: node.type ? typeToInfo(node.type, ctx) : undefined,\n }\n\n // Extract generic type parameters\n const typeParams = extractTypeParams(node, warnings)\n if (typeParams) {\n result.typeParams = typeParams\n }\n\n return result\n}\n\n/**\n * Extract type metadata from a TypeScript class\n */\nfunction extractClassMetadata(\n node: ts.ClassDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[],\n ctx?: TypeResolutionContext\n): ClassTypeInfo {\n const name = node.name?.getText(sourceFile) || 'anonymous'\n const methods: Record<string, FunctionTypeInfo> = {}\n const staticMethods: Record<string, FunctionTypeInfo> = {}\n let constructorInfo: { params: Record<string, ParamTypeInfo> } | undefined\n\n for (const member of node.members) {\n // Constructor\n if (ts.isConstructorDeclaration(member)) {\n const params: Record<string, ParamTypeInfo> = {}\n for (const param of member.parameters) {\n const paramName = param.name.getText(sourceFile)\n const isOptional = !!param.questionToken || !!param.initializer\n\n let defaultValue: any = undefined\n if (param.initializer) {\n const initText = param.initializer.getText(sourceFile)\n try {\n defaultValue = JSON.parse(initText)\n } catch {\n defaultValue = initText\n }\n }\n\n params[paramName] = {\n type: typeToInfo(param.type, ctx),\n required: !isOptional,\n default: defaultValue,\n }\n }\n constructorInfo = { params }\n }\n\n // Methods (instance and static)\n if (ts.isMethodDeclaration(member) && member.name) {\n const methodName = member.name.getText(sourceFile)\n const isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n\n const params: Record<string, ParamTypeInfo> = {}\n for (const param of member.parameters) {\n const paramName = param.name.getText(sourceFile)\n const isOptional = !!param.questionToken || !!param.initializer\n\n let defaultValue: any = undefined\n if (param.initializer) {\n const initText = param.initializer.getText(sourceFile)\n try {\n defaultValue = JSON.parse(initText)\n } catch {\n defaultValue = initText\n }\n }\n\n params[paramName] = {\n type: typeToInfo(param.type, ctx),\n required: !isOptional,\n default: defaultValue,\n }\n }\n\n const methodInfo: FunctionTypeInfo = {\n name: methodName,\n params,\n returns: member.type ? typeToInfo(member.type, ctx) : undefined,\n }\n\n if (isStatic) {\n staticMethods[methodName] = methodInfo\n } else {\n methods[methodName] = methodInfo\n }\n }\n }\n\n const result: ClassTypeInfo = {\n name,\n methods,\n staticMethods,\n constructor: constructorInfo,\n }\n\n // Extract class-level generic type parameters\n if (node.typeParameters && node.typeParameters.length > 0) {\n const typeParams: Record<string, TypeParamInfo> = {}\n for (const param of node.typeParameters) {\n const paramName = param.name.getText(sourceFile)\n const info: TypeParamInfo = {}\n if (param.constraint) {\n info.constraint = typeToExample(\n param.constraint,\n undefined,\n warnings,\n ctx\n )\n }\n if (param.default) {\n info.default = typeToExample(param.default, undefined, warnings, ctx)\n }\n typeParams[paramName] = info\n }\n result.typeParams = typeParams\n }\n\n return result\n}\n\n/**\n * Transpile TypeScript source to TJS or JS + metadata\n */\n/**\n * Extract embedded test comments from source\n * These use syntax: /*test 'description' { ... }* / (without space before /)\n * They survive TS compilation and should be preserved in TJS output\n */\nfunction extractEmbeddedTestComments(source: string): string[] {\n const tests: string[] = []\n // Match: /*test 'description' { ... }*/ or /*test { ... }*/\n const embeddedRegex =\n /\\/\\*test\\s+(['\"`])([^'\"`]*)\\1\\s*\\{[\\s\\S]*?\\}\\s*\\*\\/|\\/\\*test\\s*\\{[\\s\\S]*?\\}\\s*\\*\\//g\n\n let match\n while ((match = embeddedRegex.exec(source)) !== null) {\n tests.push(match[0])\n }\n return tests\n}\n\n/**\n * Extract top-level TJS doc comments (/*# ... *\\/) from source with position info.\n * These need to be preserved in TJS output in their original positions.\n * Comments inside function bodies are already preserved by the TS transpiler.\n */\nfunction extractDocComments(\n source: string\n): Array<{ content: string; index: number }> {\n const comments: Array<{ content: string; index: number }> = []\n const docRegex = /\\/\\*#[\\s\\S]*?\\*\\//g\n\n // Track brace depth to identify top-level comments\n let braceDepth = 0\n let inString: string | null = null\n\n // Scan source to find brace depths at each position\n const braceDepthAt: number[] = []\n for (let i = 0; i < source.length; i++) {\n const ch = source[i]\n const prev = i > 0 ? source[i - 1] : ''\n\n // Handle string literals\n if (!inString && (ch === '\"' || ch === \"'\" || ch === '`')) {\n inString = ch\n } else if (inString && ch === inString && prev !== '\\\\') {\n inString = null\n }\n\n // Track braces only outside strings\n if (!inString) {\n if (ch === '{') braceDepth++\n if (ch === '}') braceDepth--\n }\n\n braceDepthAt[i] = braceDepth\n }\n\n let match\n while ((match = docRegex.exec(source)) !== null) {\n // Only include comments at top level (brace depth 0)\n if (braceDepthAt[match.index] === 0) {\n comments.push({\n content: match[0],\n index: match.index,\n })\n }\n }\n return comments\n}\n\nexport function fromTS(\n source: string,\n options: FromTSOptions = {}\n): FromTSResult {\n const { emitTJS = false, filename = 'input.ts' } = options\n const warnings: string[] = []\n\n // Extract embedded test comments before TS parsing (they need to be preserved)\n const embeddedTests = extractEmbeddedTestComments(source)\n\n // Extract doc comments (/*# ... */) with position info for TJS output\n const docComments = emitTJS ? extractDocComments(source) : []\n\n // Parse TypeScript\n const sourceFile = ts.createSourceFile(\n filename,\n source,\n ts.ScriptTarget.Latest,\n true\n )\n\n const tjsFunctions: string[] = []\n const seenTypeNames = new Set<string>() // Track emitted type names to avoid duplicates\n const metadata: Record<string, FunctionTypeInfo> = {}\n const classMetadata: Record<string, ClassTypeInfo> = {}\n\n // Track which doc comments have been emitted (by index in docComments array)\n const emittedDocComments = new Set<number>()\n\n // Helper: emit any doc comments that appear before a given source position\n const emitDocCommentsBefore = (pos: number) => {\n for (let i = 0; i < docComments.length; i++) {\n const doc = docComments[i]\n if (!emittedDocComments.has(i) && doc.index < pos) {\n tjsFunctions.push(doc.content)\n emittedDocComments.add(i)\n }\n }\n }\n\n // Build type alias and interface maps first (first pass)\n const typeAliases = new Map<string, ts.TypeNode>()\n const interfaces = new Map<string, ts.InterfaceDeclaration>()\n\n function collectTypes(node: ts.Node) {\n if (ts.isTypeAliasDeclaration(node)) {\n typeAliases.set(node.name.getText(sourceFile), node.type)\n }\n if (ts.isInterfaceDeclaration(node)) {\n interfaces.set(node.name.getText(sourceFile), node)\n }\n ts.forEachChild(node, collectTypes)\n }\n collectTypes(sourceFile)\n\n // Create resolution context\n const resolutionCtx: TypeResolutionContext = {\n typeAliases,\n interfaces,\n sourceFile,\n warnings,\n }\n\n // Walk top-level statements only (don't recurse into function bodies)\n for (const statement of sourceFile.statements) {\n let handled = false\n\n // Emit any doc comments before this statement\n if (emitTJS) {\n emitDocCommentsBefore(statement.getStart(sourceFile))\n }\n\n // Handle: function foo() {}\n if (ts.isFunctionDeclaration(statement) && statement.name) {\n const funcName = statement.name.getText(sourceFile)\n handled = true\n\n if (emitTJS) {\n tjsFunctions.push(\n transformFunctionToTJS(\n statement,\n sourceFile,\n undefined,\n warnings,\n true\n )\n )\n } else {\n metadata[funcName] = extractFunctionMetadata(\n statement,\n sourceFile,\n warnings,\n resolutionCtx\n )\n }\n }\n\n // Handle: const foo = () => {} or const foo = function() {}\n // Also handle: const x = ..., let x = ..., var x = ... (non-function)\n if (ts.isVariableStatement(statement)) {\n let hasFunctionDecl = false\n\n for (const decl of statement.declarationList.declarations) {\n if (\n ts.isIdentifier(decl.name) &&\n decl.initializer &&\n (ts.isArrowFunction(decl.initializer) ||\n ts.isFunctionExpression(decl.initializer))\n ) {\n hasFunctionDecl = true\n const funcName = decl.name.getText(sourceFile)\n const funcNode = decl.initializer\n\n if (emitTJS) {\n tjsFunctions.push(\n transformFunctionToTJS(\n funcNode,\n sourceFile,\n funcName,\n warnings,\n true\n )\n )\n } else {\n const info = extractFunctionMetadata(\n funcNode,\n sourceFile,\n warnings,\n resolutionCtx\n )\n info.name = funcName\n metadata[funcName] = info\n }\n }\n }\n\n // If this variable statement doesn't contain function declarations,\n // transpile and preserve it (strips type annotations)\n if (!hasFunctionDecl && emitTJS) {\n const transpiled = ts.transpileModule(statement.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n tjsFunctions.push(transpiled.outputText.trim())\n }\n\n handled = true\n }\n\n // Handle: interface Foo { ... }\n if (ts.isInterfaceDeclaration(statement)) {\n handled = true\n if (emitTJS) {\n const typeName = statement.name.getText(sourceFile)\n if (!seenTypeNames.has(typeName)) {\n seenTypeNames.add(typeName)\n const typeDecl = transformInterfaceToType(\n statement,\n sourceFile,\n warnings\n )\n if (typeDecl) {\n tjsFunctions.push(typeDecl)\n }\n }\n }\n }\n\n // Handle: type Foo = { ... }\n if (ts.isTypeAliasDeclaration(statement)) {\n handled = true\n if (emitTJS) {\n const typeName = statement.name.getText(sourceFile)\n if (!seenTypeNames.has(typeName)) {\n seenTypeNames.add(typeName)\n const typeDecl = transformTypeAliasToType(\n statement,\n sourceFile,\n warnings\n )\n if (typeDecl) {\n tjsFunctions.push(typeDecl)\n }\n }\n }\n }\n\n // Handle: enum Status { Pending, Active, Done }\n if (ts.isEnumDeclaration(statement)) {\n handled = true\n if (emitTJS) {\n const enumName = statement.name.getText(sourceFile)\n if (!seenTypeNames.has(enumName)) {\n seenTypeNames.add(enumName)\n const enumDecl = transformEnumToTJS(statement, sourceFile, warnings)\n if (enumDecl) {\n tjsFunctions.push(enumDecl)\n }\n }\n }\n }\n\n // Handle: class Foo { ... }\n if (ts.isClassDeclaration(statement) && statement.name) {\n const className = statement.name.getText(sourceFile)\n handled = true\n if (emitTJS) {\n const classDecl = transformClassToTJS(statement, sourceFile, warnings)\n tjsFunctions.push(classDecl)\n } else {\n classMetadata[className] = extractClassMetadata(\n statement,\n sourceFile,\n warnings,\n resolutionCtx\n )\n }\n }\n\n // Handle: import statements (strip type-only imports, keep value imports)\n if (ts.isImportDeclaration(statement)) {\n handled = true\n if (emitTJS) {\n // Check if it's a type-only import\n const isTypeOnly =\n statement.importClause?.isTypeOnly ||\n (statement.importClause?.namedBindings &&\n ts.isNamedImports(statement.importClause.namedBindings) &&\n statement.importClause.namedBindings.elements.every(\n (e) => e.isTypeOnly\n ))\n\n if (!isTypeOnly) {\n // Keep value imports - just strip any type annotations\n const transpiled = ts.transpileModule(statement.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n const trimmed = transpiled.outputText.trim()\n if (trimmed) {\n tjsFunctions.push(trimmed)\n }\n }\n }\n }\n\n // Handle: export statements\n if (ts.isExportDeclaration(statement) || ts.isExportAssignment(statement)) {\n handled = true\n if (emitTJS) {\n const transpiled = ts.transpileModule(statement.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n const trimmed = transpiled.outputText.trim()\n if (trimmed) {\n tjsFunctions.push(trimmed)\n }\n }\n }\n\n // Handle: expression statements (console.log(...), foo(), etc.)\n // and any other unhandled statements\n if (!handled && emitTJS) {\n const transpiled = ts.transpileModule(statement.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n const trimmed = transpiled.outputText.trim()\n if (trimmed) {\n tjsFunctions.push(trimmed)\n }\n }\n }\n\n if (emitTJS) {\n // Emit any remaining doc comments (after all statements)\n emitDocCommentsBefore(Infinity)\n\n // Include source file annotation for error reporting\n const sourceFileName = filename || 'unknown'\n const header = `/* tjs <- ${sourceFileName} */\\n\\n`\n\n // Append embedded test comments (they were extracted from original source)\n const testsSection =\n embeddedTests.length > 0 ? '\\n\\n' + embeddedTests.join('\\n\\n') : ''\n\n return {\n code: header + tjsFunctions.join('\\n\\n') + testsSection,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n }\n\n // For JS output, strip types and add metadata\n const jsOutput = ts.transpileModule(source, {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n\n // Append __tjs metadata for each function\n let code = jsOutput.outputText\n for (const [funcName, info] of Object.entries(metadata)) {\n const metadataObj: Record<string, any> = {\n params: Object.fromEntries(\n Object.entries(info.params).map(([k, v]) => [\n k,\n { type: v.type.kind, required: v.required, default: v.default },\n ])\n ),\n returns: info.returns ? { type: info.returns.kind } : undefined,\n }\n\n // Include type parameters (generics) if present\n if (info.typeParams) {\n metadataObj.typeParams = info.typeParams\n }\n\n const metadataStr = JSON.stringify(metadataObj, null, 2)\n code += `\\n${funcName}.__tjs = ${metadataStr};\\n`\n }\n\n // Append __tjs metadata for each class\n for (const [className, info] of Object.entries(classMetadata)) {\n const metadataObj: Record<string, any> = {\n constructor: info.constructor\n ? {\n params: Object.fromEntries(\n Object.entries(info.constructor.params ?? {}).map(([k, v]) => [\n k,\n { type: v.type.kind, required: v.required, default: v.default },\n ])\n ),\n }\n : undefined,\n methods: Object.fromEntries(\n Object.entries(info.methods ?? {}).map(([name, m]) => [\n name,\n {\n params: Object.fromEntries(\n Object.entries(m.params ?? {}).map(([k, v]) => [\n k,\n { type: v.type.kind, required: v.required },\n ])\n ),\n returns: m.returns ? { type: m.returns.kind } : undefined,\n },\n ])\n ),\n staticMethods: Object.fromEntries(\n Object.entries(info.staticMethods ?? {}).map(([name, m]) => [\n name,\n {\n params: Object.fromEntries(\n Object.entries(m.params ?? {}).map(([k, v]) => [\n k,\n { type: v.type.kind, required: v.required },\n ])\n ),\n returns: m.returns ? { type: m.returns.kind } : undefined,\n },\n ])\n ),\n }\n\n if (info.typeParams) {\n metadataObj.typeParams = info.typeParams\n }\n\n const metadataStr = JSON.stringify(metadataObj, null, 2)\n code += `\\n${className}.__tjs = ${metadataStr};\\n`\n\n // Wrap class to make it callable without `new`\n code += `\\n${emitClassWrapper(className)}\\n`\n }\n\n return {\n code,\n types: metadata,\n classes: Object.keys(classMetadata).length > 0 ? classMetadata : undefined,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n}\n",
17
+ "/**\n * TJS to .d.ts Emitter\n *\n * Generates TypeScript declaration files from TJS transpilation results.\n * Allows TypeScript consumers to use TJS-authored libraries with full\n * type information for functions, and helpful `any`-based stubs for\n * classes, generics, and predicate types.\n *\n * Design principle: emit enough structure for autocomplete/tooltips\n * (parameter names, object shapes) but lean on `any` where TJS types\n * can't be faithfully expressed in TS (predicate types, generics,\n * class instances). This gives developers IDE hints without false\n * lint errors from types that don't fully match.\n *\n * Handles:\n * - Exported functions → full param/return types from TJSTypeInfo\n * - Exported classes → callable function stub with constructor params, returns any\n * - Exported Type declarations → type guard function stubs\n * - Exported Generic declarations → factory function stubs\n * - Re-exports via `export { Name }` syntax\n */\n\nimport type { TypeDescriptor } from '../types'\nimport type { TJSTranspileResult, TJSTypeInfo } from './js'\n\n/**\n * Convert a TypeDescriptor to a TypeScript type string.\n *\n * Maps TJS's example-inferred types to the closest TS equivalents:\n * integer / non-negative-integer → number (TS has no integer type)\n * string / number / boolean / null / undefined / any → themselves\n * array + items → T[]\n * object + shape → { key: Type; ... }\n * union + members → T1 | T2\n * nullable → T | null\n */\nexport function typeDescriptorToTS(td: TypeDescriptor): string {\n let base: string\n\n switch (td.kind) {\n case 'string':\n base = 'string'\n break\n case 'number':\n case 'integer':\n case 'non-negative-integer':\n base = 'number'\n break\n case 'boolean':\n base = 'boolean'\n break\n case 'null':\n return 'null'\n case 'undefined':\n return 'undefined'\n case 'any':\n base = 'any'\n break\n case 'array':\n if (td.items) {\n const inner = typeDescriptorToTS(td.items)\n // Wrap union types in parens for array: (A | B)[]\n base = inner.includes('|') ? `(${inner})[]` : `${inner}[]`\n } else {\n base = 'any[]'\n }\n break\n case 'object':\n if (td.shape && Object.keys(td.shape).length > 0) {\n const fields = Object.entries(td.shape)\n .map(([k, v]) => `${k}: ${typeDescriptorToTS(v)}`)\n .join('; ')\n base = `{ ${fields} }`\n } else {\n base = 'Record<string, any>'\n }\n break\n case 'union':\n if (td.members && td.members.length > 0) {\n return td.members.map(typeDescriptorToTS).join(' | ')\n }\n base = 'any'\n break\n default:\n base = 'any'\n }\n\n if (td.nullable) {\n return `${base} | null`\n }\n return base\n}\n\n/**\n * Generate a function declaration line for .d.ts\n */\nfunction functionDeclToTS(\n name: string,\n info: TJSTypeInfo,\n exported: boolean,\n isDefault: boolean\n): string {\n const params = Object.entries(info.params)\n .map(([pName, p]) => {\n const optional = !p.required\n const tsType = typeDescriptorToTS(p.type)\n return optional ? `${pName}?: ${tsType}` : `${pName}: ${tsType}`\n })\n .join(', ')\n\n const returnType = info.returns ? typeDescriptorToTS(info.returns) : 'any'\n const prefix = exported\n ? isDefault\n ? 'export default function'\n : 'export declare function'\n : 'declare function'\n\n return `${prefix} ${name}(${params}): ${returnType};`\n}\n\nexport interface GenerateDTSOptions {\n /** Module name for ambient declarations (omit for module-mode .d.ts) */\n moduleName?: string\n}\n\n/** Info about a name detected as exported */\ninterface ExportInfo {\n exported: boolean\n isDefault: boolean\n}\n\n/**\n * Detect which top-level names are exported in the source.\n *\n * Returns a map of name → { exported, isDefault }.\n * Scans the original TJS source for export keywords.\n */\nfunction detectExports(source: string): Map<string, ExportInfo> {\n const result = new Map<string, ExportInfo>()\n let m\n\n // export function name / export default function name\n const funcRe = /^[ \\t]*export\\s+(default\\s+)?function\\s+(\\w+)/gm\n while ((m = funcRe.exec(source)) !== null) {\n result.set(m[2], { exported: true, isDefault: !!m[1] })\n }\n\n // export class name / export default class name\n const classRe = /^[ \\t]*export\\s+(default\\s+)?class\\s+(\\w+)/gm\n while ((m = classRe.exec(source)) !== null) {\n result.set(m[2], { exported: true, isDefault: !!m[1] })\n }\n\n // export const/let/var name\n const varRe = /^[ \\t]*export\\s+(default\\s+)?(?:const|let|var)\\s+(\\w+)/gm\n while ((m = varRe.exec(source)) !== null) {\n result.set(m[2], { exported: true, isDefault: !!m[1] })\n }\n\n // export Type Name\n const typeRe = /^[ \\t]*export\\s+Type\\s+(\\w+)/gm\n while ((m = typeRe.exec(source)) !== null) {\n result.set(m[1], { exported: true, isDefault: false })\n }\n\n // export Generic Name<...>\n const genericRe = /^[ \\t]*export\\s+Generic\\s+(\\w+)/gm\n while ((m = genericRe.exec(source)) !== null) {\n result.set(m[1], { exported: true, isDefault: false })\n }\n\n // export { Name, Name2, ... } — re-export form\n const reExportRe = /^[ \\t]*export\\s*\\{([^}]+)\\}/gm\n while ((m = reExportRe.exec(source)) !== null) {\n const names = m[1].split(',').map((s) => s.trim().split(/\\s+as\\s+/))\n for (const parts of names) {\n const exportedName = parts.length > 1 ? parts[1] : parts[0]\n if (exportedName && /^\\w+$/.test(exportedName)) {\n result.set(exportedName, { exported: true, isDefault: false })\n }\n }\n }\n\n return result\n}\n\n/** Info about a class extracted from source */\ninterface ClassInfo {\n name: string\n constructorParams: string // raw param string, e.g. \"x: 0.0, y: 0.0\"\n methods: { name: string; params: string; returnType: string | null }[]\n}\n\n/**\n * Detect class declarations and extract constructor param names/types.\n * Scans original TJS source (before preprocessing).\n */\nfunction detectClasses(source: string): Map<string, ClassInfo> {\n const result = new Map<string, ClassInfo>()\n\n // Find class declarations\n const classRe =\n /^[ \\t]*(?:export\\s+(?:default\\s+)?)?class\\s+(\\w+)(?:\\s+extends\\s+\\w+)?\\s*\\{/gm\n let m\n while ((m = classRe.exec(source)) !== null) {\n const className = m[1]\n const classBodyStart = m.index + m[0].length - 1\n\n // Find matching closing brace\n let depth = 1\n let i = classBodyStart + 1\n while (i < source.length && depth > 0) {\n if (source[i] === '{') depth++\n else if (source[i] === '}') depth--\n i++\n }\n const classBody = source.slice(classBodyStart + 1, i - 1)\n\n // Extract constructor params (handle nested parens/braces in param types)\n const ctorStart = classBody.indexOf('constructor')\n let ctorParams = ''\n if (ctorStart !== -1) {\n const parenStart = classBody.indexOf('(', ctorStart)\n if (parenStart !== -1) {\n let depth = 1\n let j = parenStart + 1\n while (j < classBody.length && depth > 0) {\n if (classBody[j] === '(') depth++\n else if (classBody[j] === ')') depth--\n j++\n }\n ctorParams = classBody.slice(parenStart + 1, j - 1).trim()\n }\n }\n\n // Extract methods (name followed by parens, not constructor/get/set)\n const methods: ClassInfo['methods'] = []\n const methodStartRe = /^\\s+(\\w+)\\s*\\(/gm\n let mm\n while ((mm = methodStartRe.exec(classBody)) !== null) {\n const name = mm[1]\n if (name === 'constructor' || name === 'get' || name === 'set') continue\n\n // Find matching close paren (handles nested braces in params)\n const parenStart = mm.index + mm[0].length - 1\n let depth = 1\n let j = parenStart + 1\n while (j < classBody.length && depth > 0) {\n if (classBody[j] === '(') depth++\n else if (classBody[j] === ')') depth--\n j++\n }\n const params = classBody.slice(parenStart + 1, j - 1).trim()\n\n // Check for return type annotation: -> Type\n const afterParen = classBody.slice(j).match(/^\\s*->\\s*(.+?)\\s*\\{/)\n const returnType = afterParen ? afterParen[1].trim() : null\n\n methods.push({ name, params, returnType })\n }\n\n result.set(className, {\n name: className,\n constructorParams: ctorParams,\n methods,\n })\n }\n\n return result\n}\n\n/**\n * Split a param string on commas, respecting nested braces/brackets.\n * \"x: 0.0, y: { a: 1, b: 2 }\" → [\"x: 0.0\", \"y: { a: 1, b: 2 }\"]\n */\nfunction splitParams(paramStr: string): string[] {\n const result: string[] = []\n let depth = 0\n let current = ''\n for (const ch of paramStr) {\n if (ch === '{' || ch === '[' || ch === '(') depth++\n else if (ch === '}' || ch === ']' || ch === ')') depth--\n\n if (ch === ',' && depth === 0) {\n result.push(current.trim())\n current = ''\n } else {\n current += ch\n }\n }\n if (current.trim()) result.push(current.trim())\n return result\n}\n\n/**\n * Parse a TJS constructor/method param string into TS param declarations.\n * Input: \"x: 0.0, y: 0.0\" or \"name: '', age: 0\"\n * Output: \"x: number, y: number\" or \"name: string, age: number\"\n *\n * Uses `any` for anything we can't confidently parse.\n */\nfunction tjsParamsToTS(paramStr: string): string {\n if (!paramStr.trim()) return ''\n\n return splitParams(paramStr)\n .map((trimmed) => {\n // name: value (required) or name = value (optional)\n const colonMatch = trimmed.match(/^(\\w+)\\s*:\\s*(.+)$/)\n if (colonMatch) {\n const name = colonMatch[1]\n const tsType = inferTSTypeFromExample(colonMatch[2].trim())\n return `${name}: ${tsType}`\n }\n const eqMatch = trimmed.match(/^(\\w+)\\s*=\\s*(.+)$/)\n if (eqMatch) {\n const name = eqMatch[1]\n const tsType = inferTSTypeFromExample(eqMatch[2].trim())\n return `${name}?: ${tsType}`\n }\n // Destructured or complex — fall back to any\n if (trimmed.startsWith('{')) return `options: any`\n return `${trimmed}: any`\n })\n .join(', ')\n}\n\n/** Detect Type declarations and their example values */\nfunction detectTypeDeclarations(source: string): Map<string, string> {\n const result = new Map<string, string>()\n let m\n\n // Type Name = <value> (assignment form)\n const assignRe = /^[ \\t]*(?:export\\s+)?Type\\s+(\\w+)\\s*=\\s*(.+)$/gm\n while ((m = assignRe.exec(source)) !== null) {\n result.set(m[1], m[2].trim())\n }\n\n // Type Name <value> (simple form, not block)\n const simpleRe = /^[ \\t]*(?:export\\s+)?Type\\s+(\\w+)\\s+([^{=].*)$/gm\n while ((m = simpleRe.exec(source)) !== null) {\n if (!result.has(m[1])) {\n result.set(m[1], m[2].trim())\n }\n }\n\n // Block: Type Name { ... example: <value> ... }\n const blockRe =\n /^[ \\t]*(?:export\\s+)?Type\\s+(\\w+)\\s*\\{[^}]*example\\s*:\\s*(.+?)(?:\\n|\\s*[,}])/gm\n while ((m = blockRe.exec(source)) !== null) {\n result.set(m[1], m[2].trim())\n }\n\n return result\n}\n\n/** Detect Generic declarations and their type parameter names */\nfunction detectGenerics(source: string): Map<string, { typeParams: string[] }> {\n const result = new Map<string, { typeParams: string[] }>()\n const re = /^[ \\t]*(?:export\\s+)?Generic\\s+(\\w+)\\s*<([^>]+)>/gm\n let m\n while ((m = re.exec(source)) !== null) {\n const name = m[1]\n const typeParams = m[2].split(',').map((tp) => {\n // Strip defaults: \"U = ''\" → \"U\"\n return tp.trim().split(/\\s*=/)[0].trim()\n })\n result.set(name, { typeParams })\n }\n return result\n}\n\n/**\n * Generate a .d.ts string from TJS transpilation output.\n *\n * @param result - The TJSTranspileResult from tjs()\n * @param source - The original TJS source (needed to detect exports)\n * @param options - Generation options\n * @returns The .d.ts file content as a string\n */\nexport function generateDTS(\n result: TJSTranspileResult,\n source: string,\n options: GenerateDTSOptions = {}\n): string {\n const lines: string[] = []\n const exports = detectExports(source)\n const typeDecls = detectTypeDeclarations(source)\n const classes = detectClasses(source)\n const generics = detectGenerics(source)\n\n // If no exports detected, treat all top-level declarations as exported\n // (CommonJS / script-mode files)\n const hasAnyExport = exports.size > 0\n\n // Track names we've already emitted\n const emitted = new Set<string>()\n\n // Emit function declarations (from transpiler metadata — best type info)\n for (const [name, info] of Object.entries(result.types)) {\n // Skip polymorphic variants (name$0, name$1, etc.)\n if (name.includes('$')) continue\n\n const exportInfo = exports.get(name)\n const isExported = hasAnyExport ? !!exportInfo?.exported : true\n const isDefault = exportInfo?.isDefault ?? false\n\n if (!isExported) continue\n\n if (info.description) {\n lines.push(`/** ${info.description} */`)\n }\n\n lines.push(functionDeclToTS(name, info, true, isDefault))\n emitted.add(name)\n }\n\n // Emit class declarations as callable functions returning any.\n // TJS wraps classes to be callable without `new`, so this matches\n // the actual runtime API. Returning `any` means TS won't fight\n // the developer on instance property access.\n for (const [name, classInfo] of classes) {\n if (emitted.has(name)) continue\n\n const exportInfo = exports.get(name)\n const isExported = hasAnyExport ? !!exportInfo?.exported : true\n if (!isExported) continue\n\n const tsParams = classInfo.constructorParams\n ? tjsParamsToTS(classInfo.constructorParams)\n : ''\n\n // Emit as callable function (matches TJS wrapClass behavior)\n lines.push(`export declare function ${name}(${tsParams}): any;`)\n\n // Also emit as a class with `new` for the rare case someone uses it\n if (tsParams || classInfo.methods.length > 0) {\n lines.push(`export declare class ${name} {`)\n if (classInfo.constructorParams) {\n lines.push(` constructor(${tsParams});`)\n }\n for (const method of classInfo.methods) {\n const mParams = method.params ? tjsParamsToTS(method.params) : ''\n lines.push(` ${method.name}(${mParams}): any;`)\n }\n lines.push(`}`)\n }\n\n emitted.add(name)\n }\n\n // Emit Type declarations as type guard functions.\n // Type('Name', example) returns an object with .check(), .default, etc.\n // For TS consumers, the useful thing is knowing it's a callable type guard.\n for (const [name, exampleStr] of typeDecls) {\n if (emitted.has(name)) continue\n\n const exportInfo = exports.get(name)\n const isExported = hasAnyExport ? !!exportInfo?.exported : true\n if (!isExported) continue\n\n const tsType = inferTSTypeFromExample(exampleStr)\n lines.push(\n `export declare const ${name}: {` +\n ` check(value: any): boolean;` +\n ` default: ${tsType};` +\n ` (value: any): boolean;` +\n ` };`\n )\n emitted.add(name)\n }\n\n // Emit Generic declarations as factory functions.\n // Generic('Box', ['T'], predicate) → callable that creates type guards.\n // In TS terms: a function that takes type args and returns a type guard.\n for (const [name, info] of generics) {\n if (emitted.has(name)) continue\n\n const exportInfo = exports.get(name)\n const isExported = hasAnyExport ? !!exportInfo?.exported : true\n if (!isExported) continue\n\n // Emit as a function that takes any args and returns a type guard object\n // (same shape as Type — .check(), callable, etc.)\n const anyParams = info.typeParams.map((_) => `...args: any[]`)\n lines.push(\n `export declare function ${name}(` +\n `...args: any[]` +\n `): { check(value: any): boolean; (value: any): boolean; };`\n )\n emitted.add(name)\n }\n\n if (options.moduleName) {\n const indented = lines.map((l) => ` ${l}`).join('\\n')\n return `declare module '${options.moduleName}' {\\n${indented}\\n}\\n`\n }\n\n return lines.join('\\n') + '\\n'\n}\n\n/**\n * Best-effort TS type inference from an example value string.\n * Used for Type declarations and constructor params where we only\n * have the raw source text, not a parsed TypeDescriptor.\n */\nfunction inferTSTypeFromExample(example: string): string {\n const s = example.trim()\n\n // Unions first: \"'' | 0 | null\" → \"string | number | null\"\n // Only split on | that's outside quotes/braces/brackets\n if (hasTopLevelPipe(s)) {\n const members = splitOnPipe(s).map((m) => inferTSTypeFromExample(m.trim()))\n return [...new Set(members)].join(' | ')\n }\n\n // String literals\n if (/^['\"]/.test(s)) return 'string'\n\n // Boolean\n if (s === 'true' || s === 'false') return 'boolean'\n\n // Null / undefined\n if (s === 'null') return 'null'\n if (s === 'undefined') return 'undefined'\n\n // Numbers\n if (/^[+-]?\\d+\\.\\d+$/.test(s)) return 'number'\n if (/^[+-]?\\d+$/.test(s)) return 'number'\n\n // Arrays\n if (s.startsWith('[')) return 'any[]'\n\n // Objects\n if (s.startsWith('{')) return 'Record<string, any>'\n\n return 'any'\n}\n\n/** Check if a string has a top-level | (not inside quotes/braces) */\nfunction hasTopLevelPipe(s: string): boolean {\n let depth = 0\n let inStr: string | null = null\n for (const ch of s) {\n if (inStr) {\n if (ch === inStr) inStr = null\n continue\n }\n if (ch === \"'\" || ch === '\"' || ch === '`') {\n inStr = ch\n continue\n }\n if (ch === '{' || ch === '[' || ch === '(') depth++\n else if (ch === '}' || ch === ']' || ch === ')') depth--\n else if (ch === '|' && depth === 0) return true\n }\n return false\n}\n\n/** Split on top-level | characters */\nfunction splitOnPipe(s: string): string[] {\n const result: string[] = []\n let depth = 0\n let inStr: string | null = null\n let current = ''\n for (const ch of s) {\n if (inStr) {\n current += ch\n if (ch === inStr) inStr = null\n continue\n }\n if (ch === \"'\" || ch === '\"' || ch === '`') {\n inStr = ch\n current += ch\n continue\n }\n if (ch === '{' || ch === '[' || ch === '(') depth++\n else if (ch === '}' || ch === ']' || ch === ')') depth--\n\n if (ch === '|' && depth === 0) {\n result.push(current)\n current = ''\n } else {\n current += ch\n }\n }\n if (current) result.push(current)\n return result\n}\n",
18
+ "/**\n * TypeScript to TJS Transpiler\n *\n * Converts TypeScript source to TJS (or directly to JS + metadata).\n *\n * Two modes:\n * 1. TS → TJS (for inspection/migration)\n * 2. TS → JS + __tjs metadata (for production)\n *\n * @example\n * ```typescript\n * // Input TypeScript:\n * function greet(name: string, age?: number): string {\n * return `Hello, ${name}!`\n * }\n *\n * // Output TJS:\n * function greet(name: '', age = 0) -> '' {\n * return `Hello, ${name}!`\n * }\n *\n * // Output JS + metadata:\n * function greet(name, age) {\n * return `Hello, ${name}!`\n * }\n * greet.__tjs = {\n * params: { name: { type: 'string', required: true }, age: { type: 'number', required: false } },\n * returns: { type: 'string' }\n * }\n * ```\n */\n\nimport ts from 'typescript'\nimport { emitClassWrapper } from '../runtime'\n\nexport interface FromTSOptions {\n /** Emit TJS intermediate instead of JS + metadata */\n emitTJS?: boolean\n /** Include sourcemap */\n sourceMap?: boolean\n /** Filename for error messages */\n filename?: string\n}\n\nexport interface FromTSResult {\n /** The transpiled code (TJS or JS depending on options) */\n code: string\n /** Function type metadata (only when emitting JS) */\n types?: Record<string, FunctionTypeInfo>\n /** Class type metadata (only when emitting JS) */\n classes?: Record<string, ClassTypeInfo>\n /** Any warnings during transpilation */\n warnings?: string[]\n}\n\nexport interface TypeParamInfo {\n /** Constraint schema (from `extends`) - example-based */\n constraint?: string | Record<string, any>\n /** Default schema (from `= Type`) - example-based */\n default?: string | Record<string, any>\n}\n\nexport interface FunctionTypeInfo {\n name: string\n params: Record<string, ParamTypeInfo>\n returns?: TypeInfo\n description?: string\n /** Generic type parameters with constraints/defaults */\n typeParams?: Record<string, TypeParamInfo>\n /** Overload signatures (when function has TS overloads) */\n overloads?: FunctionTypeInfo[]\n}\n\nexport interface ClassTypeInfo {\n name: string\n /** Constructor parameters - also serves as the type shape */\n constructor?: {\n params: Record<string, ParamTypeInfo>\n }\n /** Instance methods */\n methods: Record<string, FunctionTypeInfo>\n /** Static methods */\n staticMethods: Record<string, FunctionTypeInfo>\n /** Generic type parameters */\n typeParams?: Record<string, TypeParamInfo>\n}\n\nexport interface ParamTypeInfo {\n type: TypeInfo\n required: boolean\n default?: any\n description?: string\n}\n\nexport interface TypeInfo {\n kind:\n | 'string'\n | 'number'\n | 'boolean'\n | 'null'\n | 'undefined'\n | 'array'\n | 'tuple'\n | 'object'\n | 'union'\n | 'any'\n items?: TypeInfo\n /** For tuples: element types in order */\n elements?: TypeInfo[]\n shape?: Record<string, TypeInfo>\n members?: TypeInfo[]\n nullable?: boolean\n}\n\n/** Context for type resolution */\ninterface TypeResolutionContext {\n typeAliases?: Map<string, ts.TypeNode>\n interfaces?: Map<string, ts.InterfaceDeclaration>\n sourceFile?: ts.SourceFile\n warnings?: string[]\n /** Track visited types to prevent infinite recursion */\n visited?: Set<string>\n}\n\n/**\n * Convert a TypeScript type node to a TJS example value string\n *\n * @param warnings - Optional array to collect warnings about generic types\n */\nfunction typeToExample(\n type: ts.TypeNode | undefined,\n checker?: ts.TypeChecker,\n warnings?: string[],\n ctx?: TypeResolutionContext\n): string {\n if (!type) return 'undefined'\n\n switch (type.kind) {\n case ts.SyntaxKind.StringKeyword:\n return \"''\"\n case ts.SyntaxKind.NumberKeyword:\n return '0.0'\n case ts.SyntaxKind.BooleanKeyword:\n return 'false'\n case ts.SyntaxKind.NullKeyword:\n return 'null'\n case ts.SyntaxKind.UndefinedKeyword:\n return 'undefined'\n case ts.SyntaxKind.VoidKeyword:\n return 'undefined'\n case ts.SyntaxKind.AnyKeyword:\n // For function params we use 'any', for object props we use 'null'\n return 'any'\n case ts.SyntaxKind.UnknownKeyword:\n return 'any'\n case ts.SyntaxKind.NeverKeyword:\n return 'null'\n\n case ts.SyntaxKind.ArrayType: {\n const arrayType = type as ts.ArrayTypeNode\n let itemExample = typeToExample(arrayType.elementType, checker)\n // 'any' is not a valid literal value - use null for array items\n if (itemExample === 'any') itemExample = 'null'\n return `[${itemExample}]`\n }\n\n case ts.SyntaxKind.TypeReference: {\n const typeRef = type as ts.TypeReferenceNode\n const typeName = typeRef.typeName.getText()\n\n // Handle common generic types\n if (typeName === 'Array' && typeRef.typeArguments?.length) {\n const itemExample = typeToExample(\n typeRef.typeArguments[0],\n checker,\n warnings,\n ctx\n )\n return `[${itemExample}]`\n }\n if (typeName === 'Promise') {\n // Unwrap Promise type\n if (typeRef.typeArguments?.length) {\n return typeToExample(typeRef.typeArguments[0], checker, warnings, ctx)\n }\n return 'undefined'\n }\n if (\n typeName === 'Generator' ||\n typeName === 'AsyncGenerator' ||\n typeName === 'IterableIterator' ||\n typeName === 'AsyncIterableIterator'\n ) {\n // Unwrap to yield type (first type argument)\n if (typeRef.typeArguments?.length) {\n return typeToExample(typeRef.typeArguments[0], checker, warnings, ctx)\n }\n return 'undefined'\n }\n if (typeName === 'Record') {\n return '{}'\n }\n if (typeName === 'Map') {\n return 'new Map()'\n }\n if (typeName === 'Set') {\n return 'new Set()'\n }\n\n // Resolve type aliases\n if (ctx?.typeAliases?.has(typeName)) {\n // Prevent infinite recursion\n const visited = ctx.visited ?? new Set<string>()\n if (visited.has(typeName)) {\n warnings?.push(`Circular type reference '${typeName}' - using 'any'`)\n return 'any'\n }\n visited.add(typeName)\n const resolvedType = ctx.typeAliases.get(typeName)!\n return typeToExample(resolvedType, checker, warnings, {\n ...ctx,\n visited,\n })\n }\n\n // Resolve interfaces\n if (ctx?.interfaces?.has(typeName)) {\n // Prevent infinite recursion\n const visited = ctx.visited ?? new Set<string>()\n if (visited.has(typeName)) {\n warnings?.push(`Circular type reference '${typeName}' - using 'any'`)\n return 'any'\n }\n visited.add(typeName)\n const iface = ctx.interfaces.get(typeName)!\n // Build example object from interface members\n const props: string[] = []\n for (const member of iface.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(ctx.sourceFile)\n const propExample = typeToExample(member.type, checker, warnings, {\n ...ctx,\n visited,\n })\n const isOptional = !!member.questionToken\n if (isOptional) {\n props.push(`${propName} = ${propExample}`)\n } else {\n props.push(`${propName}: ${propExample}`)\n }\n }\n }\n return `{ ${props.join(', ')} }`\n }\n\n // Type parameters (generics like T, K, V) - treat as any\n // Single uppercase letter or common generic names\n if (\n /^[A-Z]$/.test(typeName) ||\n ['T', 'K', 'V', 'U', 'TKey', 'TValue', 'TItem', 'TResult'].includes(\n typeName\n )\n ) {\n warnings?.push(\n `Generic type parameter '${typeName}' converted to 'any' - consider specializing`\n )\n return 'any'\n }\n // Unknown type reference - treat as any\n warnings?.push(\n `Unknown type '${typeName}' converted to 'any' - may need manual review`\n )\n return 'any'\n }\n\n case ts.SyntaxKind.TypeLiteral: {\n const typeLiteral = type as ts.TypeLiteralNode\n const props: string[] = []\n for (const member of typeLiteral.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText()\n let propType = typeToExample(member.type, checker)\n // 'any' is not a valid literal value - use null for object properties\n if (propType === 'any') propType = 'null'\n // In object literals, always use : syntax (= is for function params only)\n props.push(`${propName}: ${propType}`)\n }\n }\n return `{ ${props.join(', ')} }`\n }\n\n case ts.SyntaxKind.UnionType: {\n const unionType = type as ts.UnionTypeNode\n\n // Helper to check if a type is null or undefined\n const isNullType = (t: ts.TypeNode) =>\n t.kind === ts.SyntaxKind.NullKeyword ||\n (ts.isLiteralTypeNode(t) &&\n t.literal.kind === ts.SyntaxKind.NullKeyword)\n const isUndefinedType = (t: ts.TypeNode) =>\n t.kind === ts.SyntaxKind.UndefinedKeyword ||\n (ts.isLiteralTypeNode(t) &&\n t.literal.kind === ts.SyntaxKind.UndefinedKeyword)\n\n // Check for nullable: T | null or T | undefined\n const nonNullTypes = unionType.types.filter(\n (t) => !isNullType(t) && !isUndefinedType(t)\n )\n const hasNull = unionType.types.some(isNullType)\n const hasUndefined = unionType.types.some(isUndefinedType)\n\n if (nonNullTypes.length === 1 && (hasNull || hasUndefined)) {\n // Nullable type: T | null -> T | null\n const baseExample = typeToExample(nonNullTypes[0], checker)\n if (hasNull) return `${baseExample} | null`\n if (hasUndefined) return `${baseExample} | undefined`\n }\n\n // General union: use first type as example\n if (unionType.types.length > 0) {\n return typeToExample(unionType.types[0], checker)\n }\n return 'undefined'\n }\n\n case ts.SyntaxKind.LiteralType: {\n const literalType = type as ts.LiteralTypeNode\n if (ts.isStringLiteral(literalType.literal)) {\n return `'${literalType.literal.text}'`\n }\n if (ts.isNumericLiteral(literalType.literal)) {\n return literalType.literal.text\n }\n if (literalType.literal.kind === ts.SyntaxKind.TrueKeyword) {\n return 'true'\n }\n if (literalType.literal.kind === ts.SyntaxKind.FalseKeyword) {\n return 'false'\n }\n if (literalType.literal.kind === ts.SyntaxKind.NullKeyword) {\n return 'null'\n }\n return 'undefined'\n }\n\n case ts.SyntaxKind.ParenthesizedType: {\n const parenType = type as ts.ParenthesizedTypeNode\n return typeToExample(parenType.type, checker)\n }\n\n case ts.SyntaxKind.FunctionType:\n // Functions become undefined (can't really express as example)\n return 'undefined'\n\n case ts.SyntaxKind.TupleType: {\n const tupleType = type as ts.TupleTypeNode\n const elements = tupleType.elements.map((e) => {\n if (ts.isNamedTupleMember(e)) {\n return typeToExample(e.type, checker)\n }\n return typeToExample(e as ts.TypeNode, checker)\n })\n return `[${elements.join(', ')}]`\n }\n\n default:\n return 'undefined'\n }\n}\n\n/**\n * Convert TypeScript type to TypeInfo for metadata\n */\nfunction typeToInfo(\n type: ts.TypeNode | undefined,\n ctx?: TypeResolutionContext\n): TypeInfo {\n if (!type) return { kind: 'any' }\n\n switch (type.kind) {\n case ts.SyntaxKind.StringKeyword:\n return { kind: 'string' }\n case ts.SyntaxKind.NumberKeyword:\n return { kind: 'number' }\n case ts.SyntaxKind.BooleanKeyword:\n return { kind: 'boolean' }\n case ts.SyntaxKind.NullKeyword:\n return { kind: 'null' }\n case ts.SyntaxKind.UndefinedKeyword:\n case ts.SyntaxKind.VoidKeyword:\n return { kind: 'undefined' }\n\n case ts.SyntaxKind.ArrayType: {\n const arrayType = type as ts.ArrayTypeNode\n return { kind: 'array', items: typeToInfo(arrayType.elementType, ctx) }\n }\n\n case ts.SyntaxKind.TypeLiteral: {\n const typeLiteral = type as ts.TypeLiteralNode\n const shape: Record<string, TypeInfo> = {}\n for (const member of typeLiteral.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText()\n shape[propName] = typeToInfo(member.type, ctx)\n }\n }\n return { kind: 'object', shape }\n }\n\n case ts.SyntaxKind.UnionType: {\n const unionType = type as ts.UnionTypeNode\n const nonNullTypes = unionType.types.filter(\n (t) =>\n t.kind !== ts.SyntaxKind.NullKeyword &&\n t.kind !== ts.SyntaxKind.UndefinedKeyword\n )\n const hasNull = unionType.types.some(\n (t) => t.kind === ts.SyntaxKind.NullKeyword\n )\n\n if (nonNullTypes.length === 1 && hasNull) {\n return { ...typeToInfo(nonNullTypes[0], ctx), nullable: true }\n }\n\n return {\n kind: 'union',\n members: unionType.types.map((t) => typeToInfo(t, ctx)),\n }\n }\n\n case ts.SyntaxKind.IntersectionType: {\n const intersectionType = type as ts.IntersectionTypeNode\n // Flatten intersection into merged object shape\n const mergedShape: Record<string, TypeInfo> = {}\n for (const member of intersectionType.types) {\n const memberInfo = typeToInfo(member, ctx)\n if (memberInfo.kind === 'object' && memberInfo.shape) {\n Object.assign(mergedShape, memberInfo.shape)\n }\n }\n if (Object.keys(mergedShape).length > 0) {\n return { kind: 'object', shape: mergedShape }\n }\n // If no object shapes found, treat as any\n return { kind: 'any' }\n }\n\n case ts.SyntaxKind.TupleType: {\n const tupleType = type as ts.TupleTypeNode\n const elements: TypeInfo[] = []\n for (const element of tupleType.elements) {\n // Handle named tuple members: [x: number, y: string]\n if (ts.isNamedTupleMember(element)) {\n elements.push(typeToInfo(element.type, ctx))\n } else {\n elements.push(typeToInfo(element as ts.TypeNode, ctx))\n }\n }\n return { kind: 'tuple', elements }\n }\n\n case ts.SyntaxKind.TypeReference: {\n const typeRef = type as ts.TypeReferenceNode\n const typeName = typeRef.typeName.getText()\n if (typeName === 'Array' && typeRef.typeArguments?.length) {\n return {\n kind: 'array',\n items: typeToInfo(typeRef.typeArguments[0], ctx),\n }\n }\n if (typeName === 'Promise' && typeRef.typeArguments?.length) {\n return typeToInfo(typeRef.typeArguments[0], ctx)\n }\n if (\n (typeName === 'Generator' ||\n typeName === 'AsyncGenerator' ||\n typeName === 'IterableIterator' ||\n typeName === 'AsyncIterableIterator') &&\n typeRef.typeArguments?.length\n ) {\n return typeToInfo(typeRef.typeArguments[0], ctx)\n }\n\n // Handle utility types\n if (typeRef.typeArguments?.length) {\n const innerType = typeToInfo(typeRef.typeArguments[0], ctx)\n\n // Partial<T> - all properties become optional (we just return the shape)\n if (typeName === 'Partial') {\n return innerType\n }\n\n // Required<T> - all properties become required (we just return the shape)\n if (typeName === 'Required') {\n return innerType\n }\n\n // Readonly<T> - same shape, readonly is a compile-time concept\n if (typeName === 'Readonly') {\n return innerType\n }\n\n // Record<K, V> - object with string keys and V values\n if (typeName === 'Record' && typeRef.typeArguments.length >= 2) {\n const valueType = typeToInfo(typeRef.typeArguments[1], ctx)\n // Record is essentially an object with dynamic keys\n return { kind: 'object', shape: { '[key]': valueType } }\n }\n\n // Pick<T, K> and Omit<T, K> - just return the base type for now\n // Full implementation would need to filter properties\n if (typeName === 'Pick' || typeName === 'Omit') {\n return innerType\n }\n\n // NonNullable<T> - remove null/undefined\n if (typeName === 'NonNullable') {\n if (innerType.nullable) {\n return { ...innerType, nullable: false }\n }\n return innerType\n }\n\n // ReturnType<T>, Parameters<T>, etc. - complex, return any\n if (\n ['ReturnType', 'Parameters', 'ConstructorParameters'].includes(\n typeName\n )\n ) {\n return { kind: 'any' }\n }\n }\n\n // Resolve type aliases\n if (ctx?.typeAliases?.has(typeName)) {\n const visited = ctx.visited ?? new Set<string>()\n if (visited.has(typeName)) {\n return { kind: 'any' } // Circular reference\n }\n visited.add(typeName)\n const resolvedType = ctx.typeAliases.get(typeName)!\n return typeToInfo(resolvedType, { ...ctx, visited })\n }\n\n // Resolve interfaces\n if (ctx?.interfaces?.has(typeName)) {\n const visited = ctx.visited ?? new Set<string>()\n if (visited.has(typeName)) {\n return { kind: 'any' } // Circular reference\n }\n visited.add(typeName)\n const iface = ctx.interfaces.get(typeName)!\n const shape: Record<string, TypeInfo> = {}\n\n // Handle extends clauses - merge in base interface properties\n if (iface.heritageClauses) {\n for (const clause of iface.heritageClauses) {\n if (clause.token === ts.SyntaxKind.ExtendsKeyword) {\n for (const baseType of clause.types) {\n const baseName = baseType.expression.getText(ctx.sourceFile)\n // Look up the base interface and recursively resolve it\n if (ctx.interfaces?.has(baseName) && !visited.has(baseName)) {\n // Create a synthetic type reference node to look up the base\n const syntheticRef = {\n kind: ts.SyntaxKind.TypeReference,\n typeName: { getText: () => baseName },\n } as unknown as ts.TypeReferenceNode\n const baseInfo = typeToInfo(syntheticRef, { ...ctx, visited })\n if (baseInfo.kind === 'object' && baseInfo.shape) {\n Object.assign(shape, baseInfo.shape)\n }\n }\n }\n }\n }\n }\n\n // Add own members (may override base)\n for (const member of iface.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(ctx.sourceFile)\n shape[propName] = typeToInfo(member.type, { ...ctx, visited })\n }\n }\n return { kind: 'object', shape }\n }\n\n // Generics and unknown types become 'any'\n return { kind: 'any' }\n }\n\n default:\n return { kind: 'any' }\n }\n}\n\n/**\n * Extract type parameter info (generics) from a function\n */\nfunction extractTypeParams(\n node: ts.FunctionDeclaration | ts.ArrowFunction | ts.FunctionExpression,\n warnings?: string[]\n): Record<string, TypeParamInfo> | undefined {\n if (!node.typeParameters || node.typeParameters.length === 0) {\n return undefined\n }\n\n const typeParams: Record<string, TypeParamInfo> = {}\n\n for (const param of node.typeParameters) {\n const name = param.name.getText()\n const info: TypeParamInfo = {}\n\n // Extract constraint: T extends Foo\n if (param.constraint) {\n const constraintExample = typeToExample(\n param.constraint,\n undefined,\n warnings\n )\n // Try to parse as object/value for richer schema\n if (constraintExample.startsWith('{')) {\n try {\n // This is a rough parse - in production we'd use proper AST\n info.constraint = constraintExample\n } catch {\n info.constraint = constraintExample\n }\n } else {\n info.constraint = constraintExample\n }\n }\n\n // Extract default: T = Foo\n if (param.default) {\n const defaultExample = typeToExample(param.default, undefined, warnings)\n info.default = defaultExample\n }\n\n typeParams[name] = info\n }\n\n return Object.keys(typeParams).length > 0 ? typeParams : undefined\n}\n\n/**\n * Transform a TypeScript function to TJS syntax\n */\n/**\n * Transform a TypeScript interface to TJS Type declaration\n *\n * interface User { name: string; age: number }\n * ->\n * Type User { example: { name: '', age: 0 } }\n */\nfunction transformInterfaceToType(\n node: ts.InterfaceDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string | null {\n const typeName = node.name.getText(sourceFile)\n\n // Check for generics\n if (node.typeParameters && node.typeParameters.length > 0) {\n return transformGenericInterfaceToGeneric(node, sourceFile, warnings)\n }\n\n // Build example object from members\n const props: string[] = []\n for (const member of node.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n let propExample = typeToExample(member.type, undefined, warnings)\n // 'any' is not a valid literal value - use null for object properties\n if (propExample === 'any') propExample = 'null'\n props.push(`${propName}: ${propExample}`)\n }\n }\n\n if (props.length === 0) {\n return `Type ${typeName} {}`\n }\n\n return `Type ${typeName} {\n example: { ${props.join(', ')} }\n}`\n}\n\n/**\n * Transform a generic TypeScript interface to TJS Generic declaration\n *\n * interface Box<T> { value: T }\n * ->\n * Generic Box<T> {\n * description: 'Box'\n * predicate(x, T) { return typeof x === 'object' && x !== null && 'value' in x && T(x.value) }\n * }\n */\nfunction transformGenericInterfaceToGeneric(\n node: ts.InterfaceDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string {\n const typeName = node.name.getText(sourceFile)\n const typeParams: string[] = []\n\n // Extract type parameters with constraints/defaults\n for (const param of node.typeParameters || []) {\n const paramName = param.name.getText(sourceFile)\n if (param.default) {\n const defaultExample = typeToExample(param.default, undefined, warnings)\n typeParams.push(`${paramName} = ${defaultExample}`)\n } else {\n typeParams.push(paramName)\n }\n }\n\n // Build predicate checks for each property that uses a type parameter\n const typeParamNames = (node.typeParameters || []).map((p) =>\n p.name.getText(sourceFile)\n )\n const checks: string[] = [\"typeof x === 'object'\", 'x !== null']\n\n for (const member of node.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n checks.push(`'${propName}' in x`)\n\n // If property type is a type parameter, add check\n if (member.type && ts.isTypeReferenceNode(member.type)) {\n const refName = member.type.typeName.getText(sourceFile)\n if (typeParamNames.includes(refName)) {\n checks.push(`${refName}(x.${propName})`)\n }\n }\n }\n }\n\n const predicateParams = ['x', ...typeParamNames].join(', ')\n\n return `Generic ${typeName}<${typeParams.join(', ')}> {\n description: '${typeName}'\n predicate(${predicateParams}) { return ${checks.join(' && ')} }\n}`\n}\n\n/**\n * Check if a TypeScript union type is a literal union (e.g., 'up' | 'down' | 'left')\n * Returns the literal values if it is, null otherwise\n */\nfunction extractLiteralUnionValues(\n type: ts.TypeNode,\n _sourceFile: ts.SourceFile\n): string[] | null {\n if (!ts.isUnionTypeNode(type)) return null\n\n const values: string[] = []\n for (const member of type.types) {\n if (ts.isLiteralTypeNode(member)) {\n if (ts.isStringLiteral(member.literal)) {\n values.push(`'${member.literal.text}'`)\n } else if (ts.isNumericLiteral(member.literal)) {\n values.push(member.literal.text)\n } else if (member.literal.kind === ts.SyntaxKind.TrueKeyword) {\n values.push('true')\n } else if (member.literal.kind === ts.SyntaxKind.FalseKeyword) {\n values.push('false')\n } else if (member.literal.kind === ts.SyntaxKind.NullKeyword) {\n values.push('null')\n } else {\n // Not a literal we can handle\n return null\n }\n } else if (member.kind === ts.SyntaxKind.NullKeyword) {\n values.push('null')\n } else if (member.kind === ts.SyntaxKind.UndefinedKeyword) {\n values.push('undefined')\n } else {\n // Not a literal union (has complex types)\n return null\n }\n }\n\n return values.length > 0 ? values : null\n}\n\n/**\n * Transform a TypeScript enum to TJS Enum declaration\n *\n * enum Status { Pending, Active, Done }\n * ->\n * Enum Status 'Status' {\n * Pending\n * Active\n * Done\n * }\n *\n * enum Color { Red = 'red', Green = 'green', Blue = 'blue' }\n * ->\n * Enum Color 'Color' {\n * Red = 'red'\n * Green = 'green'\n * Blue = 'blue'\n * }\n */\nfunction transformEnumToTJS(\n node: ts.EnumDeclaration,\n sourceFile: ts.SourceFile,\n _warnings?: string[]\n): string | null {\n const enumName = node.name.getText(sourceFile)\n const members: string[] = []\n\n let nextValue = 0\n for (const member of node.members) {\n const memberName = member.name.getText(sourceFile)\n\n if (member.initializer) {\n // Has explicit value\n if (ts.isStringLiteral(member.initializer)) {\n members.push(` ${memberName} = '${member.initializer.text}'`)\n } else if (ts.isNumericLiteral(member.initializer)) {\n const numValue = parseInt(member.initializer.text, 10)\n members.push(` ${memberName} = ${numValue}`)\n nextValue = numValue + 1\n } else if (\n ts.isPrefixUnaryExpression(member.initializer) &&\n member.initializer.operator === ts.SyntaxKind.MinusToken\n ) {\n // Negative number\n const operand = member.initializer.operand\n if (ts.isNumericLiteral(operand)) {\n const numValue = -parseInt(operand.text, 10)\n members.push(` ${memberName} = ${numValue}`)\n nextValue = numValue + 1\n }\n } else {\n // Expression or other complex initializer - use the text directly\n members.push(\n ` ${memberName} = ${member.initializer.getText(sourceFile)}`\n )\n }\n } else {\n // Auto-increment numeric value\n members.push(` ${memberName} = ${nextValue}`)\n nextValue++\n }\n }\n\n return `Enum ${enumName} '${enumName}' {\n${members.join('\\n')}\n}`\n}\n\n/**\n * Transform a TypeScript type alias to TJS Type declaration\n *\n * type User = { name: string; age: number }\n * ->\n * Type User { example: { name: '', age: 0 } }\n *\n * type Direction = 'up' | 'down' | 'left' | 'right'\n * ->\n * Union Direction 'Direction' 'up' | 'down' | 'left' | 'right'\n */\nfunction transformTypeAliasToType(\n node: ts.TypeAliasDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string | null {\n const typeName = node.name.getText(sourceFile)\n\n // Check for generics\n if (node.typeParameters && node.typeParameters.length > 0) {\n return transformGenericTypeAliasToGeneric(node, sourceFile, warnings)\n }\n\n // Check for literal union type → emit Union syntax\n const literalValues = extractLiteralUnionValues(node.type, sourceFile)\n if (literalValues) {\n return `Union ${typeName} '${typeName}' ${literalValues.join(' | ')}`\n }\n\n const example = typeToExample(node.type, undefined, warnings)\n\n // For simple primitive types, use short form\n if (\n example === \"''\" ||\n example === '0' ||\n example === 'true' ||\n example === 'null'\n ) {\n return `Type ${typeName} ${example}`\n }\n\n return `Type ${typeName} {\n example: ${example}\n}`\n}\n\n/**\n * Transform a generic type alias to TJS Generic declaration\n */\nfunction transformGenericTypeAliasToGeneric(\n node: ts.TypeAliasDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string {\n const typeName = node.name.getText(sourceFile)\n const typeParams: string[] = []\n\n // Extract type parameters\n for (const param of node.typeParameters || []) {\n const paramName = param.name.getText(sourceFile)\n if (param.default) {\n const defaultExample = typeToExample(param.default, undefined, warnings)\n typeParams.push(`${paramName} = ${defaultExample}`)\n } else {\n typeParams.push(paramName)\n }\n }\n\n const typeParamNames = (node.typeParameters || []).map((p) =>\n p.name.getText(sourceFile)\n )\n const predicateParams = ['x', ...typeParamNames].join(', ')\n\n // Simple fallback - more sophisticated analysis could be added\n return `Generic ${typeName}<${typeParams.join(', ')}> {\n description: '${typeName}'\n predicate(${predicateParams}) { return true }\n}`\n}\n\nfunction transformFunctionToTJS(\n node: ts.FunctionDeclaration | ts.ArrowFunction | ts.FunctionExpression,\n sourceFile: ts.SourceFile,\n explicitName?: string,\n warnings?: string[],\n includeLineNumber?: boolean\n): string {\n const degraded: string[] = []\n const params = transformParams(\n node.parameters,\n sourceFile,\n warnings,\n degraded\n )\n\n // Get line number (1-indexed) for source mapping\n const { line } = sourceFile.getLineAndCharacterOfPosition(\n node.getStart(sourceFile)\n )\n const lineComment = includeLineNumber ? `/* line ${line + 1} */\\n` : ''\n\n const funcName =\n explicitName ||\n (ts.isFunctionDeclaration(node) && node.name\n ? node.name.getText(sourceFile)\n : '')\n const returnExample = node.type\n ? typeToExample(node.type, undefined, warnings)\n : ''\n // Use -! to skip signature tests - TS types are compile-time only,\n // the example values won't necessarily match runtime behavior\n const returnAnnotation =\n returnExample && returnExample !== 'undefined' && returnExample !== 'any'\n ? ` -! ${returnExample}`\n : ''\n\n // Track degraded return type\n if (node.type && (returnExample === 'any' || returnExample === 'undefined')) {\n const originalReturn = node.type.getText(sourceFile)\n if (\n originalReturn !== 'any' &&\n originalReturn !== 'unknown' &&\n originalReturn !== 'void'\n ) {\n degraded.push(`return: ${originalReturn}`)\n }\n }\n\n // Get function body and strip TypeScript syntax using ts.transpileModule\n let body = ''\n if (node.body) {\n const bodyText = ts.isBlock(node.body)\n ? node.body.getText(sourceFile)\n : `{ return ${node.body.getText(sourceFile)} }`\n\n // Use TypeScript's transpiler to strip all type syntax\n const transpiled = ts.transpileModule(bodyText, {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = transpiled.outputText.trim()\n } else {\n body = '{ }'\n }\n\n // Check for async and generator modifiers\n const isAsync = node.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.AsyncKeyword\n )\n const isGenerator = !!(node as ts.FunctionDeclaration).asteriskToken\n const asyncPrefix = isAsync ? 'async ' : ''\n const funcKeyword = isGenerator ? 'function* ' : 'function '\n\n // Emit migration comment if any types were degraded\n const degradedComment =\n degraded.length > 0\n ? `/* TODO: TS types degraded — ${degraded.join(', ')} */\\n`\n : ''\n\n return `${lineComment}${degradedComment}${asyncPrefix}${funcKeyword}${funcName}(${params.join(\n ', '\n )})${returnAnnotation} ${body}`\n}\n\n/**\n * Emit a full TJS overload group: the implementation (renamed) + wrapper signatures.\n * Each overload signature becomes a TJS function that delegates to the implementation.\n * TJS polymorphic dispatch merges the wrappers into a dispatcher automatically.\n */\nfunction emitOverloadGroup(\n signatures: ts.FunctionDeclaration[],\n implementation: ts.FunctionDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string[] {\n const funcName = implementation.name?.getText(sourceFile) || ''\n const implName = `_${funcName}_impl`\n const results: string[] = []\n\n // Emit the implementation as a renamed private function\n const implParams = transformParams(\n implementation.parameters,\n sourceFile,\n warnings\n )\n let implBody = '{ }'\n if (implementation.body) {\n const bodyText = implementation.body.getText(sourceFile)\n const transpiled = ts.transpileModule(bodyText, {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n implBody = transpiled.outputText.trim()\n }\n const isAsync = implementation.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.AsyncKeyword\n )\n const isGenerator = !!implementation.asteriskToken\n const asyncPrefix = isAsync ? 'async ' : ''\n const funcKeyword = isGenerator ? 'function* ' : 'function '\n\n results.push(\n `${asyncPrefix}${funcKeyword}${implName}(${implParams.join(\n ', '\n )}) ${implBody}`\n )\n\n // Emit each overload signature as a wrapper that delegates to the implementation\n for (const sig of signatures) {\n const params = transformParams(sig.parameters, sourceFile, warnings)\n const paramNames = sig.parameters.map((p) => p.name.getText(sourceFile))\n const returnExample = sig.type\n ? typeToExample(sig.type, undefined, warnings)\n : ''\n const returnAnnotation =\n returnExample && returnExample !== 'undefined' && returnExample !== 'any'\n ? ` -! ${returnExample}`\n : ''\n\n const { line } = sourceFile.getLineAndCharacterOfPosition(\n sig.getStart(sourceFile)\n )\n const lineComment = `/* line ${line + 1} */\\n`\n const returnKw = isGenerator ? 'yield* ' : 'return '\n\n results.push(\n `${lineComment}${asyncPrefix}${funcKeyword}${funcName}(${params.join(\n ', '\n )})${returnAnnotation} { ${returnKw}${implName}(${paramNames.join(\n ', '\n )}) }`\n )\n }\n\n return results\n}\n\n/**\n * Transform TypeScript class to TJS class\n * Converts TS type annotations to TJS example-based annotations\n */\nfunction transformClassToTJS(\n node: ts.ClassDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string {\n const className = node.name?.getText(sourceFile) || 'Anonymous'\n const extendsClause = node.heritageClauses\n ?.find((h) => h.token === ts.SyntaxKind.ExtendsKeyword)\n ?.types[0]?.getText(sourceFile)\n\n // First pass: collect private field mappings (TS private -> JS #)\n const privateFieldMap = new Map<string, string>()\n for (const member of node.members) {\n if (ts.isPropertyDeclaration(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const isPrivate = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.PrivateKeyword\n )\n if (isPrivate && !propName.startsWith('#')) {\n privateFieldMap.set(propName, `#${propName}`)\n }\n }\n }\n\n // Helper to replace private field references in transpiled code\n const replacePrivateRefs = (code: string): string => {\n let result = code\n for (const [tsName, jsName] of privateFieldMap) {\n // Replace this.propName with this.#propName\n result = result.replace(\n new RegExp(`this\\\\.${tsName}\\\\b`, 'g'),\n `this.${jsName}`\n )\n }\n return result\n }\n\n const members: string[] = []\n\n for (const member of node.members) {\n // Constructor\n if (ts.isConstructorDeclaration(member)) {\n const params = transformParams(member.parameters, sourceFile, warnings)\n let body = '{ }'\n if (member.body) {\n const transpiled = ts.transpileModule(member.body.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = replacePrivateRefs(transpiled.outputText.trim())\n }\n members.push(` constructor(${params.join(', ')}) ${body}`)\n }\n\n // Regular methods\n if (ts.isMethodDeclaration(member) && member.name) {\n const methodName = member.name.getText(sourceFile)\n const isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n const isAsync = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.AsyncKeyword\n )\n\n const params = transformParams(member.parameters, sourceFile, warnings)\n const returnExample = member.type\n ? typeToExample(member.type, undefined, warnings)\n : ''\n // Use -! to skip signature tests for TS-transpiled code\n const returnAnnotation =\n returnExample &&\n returnExample !== 'undefined' &&\n returnExample !== 'any'\n ? ` -! ${returnExample}`\n : ''\n\n let body = '{ }'\n if (member.body) {\n const transpiled = ts.transpileModule(member.body.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = replacePrivateRefs(transpiled.outputText.trim())\n }\n\n const isGenerator = !!member.asteriskToken\n const staticPrefix = isStatic ? 'static ' : ''\n const asyncPrefix = isAsync ? 'async ' : ''\n const generatorStar = isGenerator ? '*' : ''\n members.push(\n ` ${staticPrefix}${asyncPrefix}${generatorStar}${methodName}(${params.join(\n ', '\n )})${returnAnnotation} ${body}`\n )\n }\n\n // Getters\n if (ts.isGetAccessorDeclaration(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const returnExample = member.type\n ? typeToExample(member.type, undefined, warnings)\n : ''\n // Use -! to skip signature tests for TS-transpiled code\n const returnAnnotation =\n returnExample &&\n returnExample !== 'undefined' &&\n returnExample !== 'any'\n ? ` -! ${returnExample}`\n : ''\n\n let body = '{ }'\n if (member.body) {\n const transpiled = ts.transpileModule(member.body.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = replacePrivateRefs(transpiled.outputText.trim())\n }\n\n members.push(` get ${propName}()${returnAnnotation} ${body}`)\n }\n\n // Setters\n if (ts.isSetAccessorDeclaration(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const params = transformParams(member.parameters, sourceFile, warnings)\n\n let body = '{ }'\n if (member.body) {\n const transpiled = ts.transpileModule(member.body.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n body = replacePrivateRefs(transpiled.outputText.trim())\n }\n\n members.push(` set ${propName}(${params.join(', ')}) ${body}`)\n }\n\n // Properties with initializers (private fields, regular properties)\n if (ts.isPropertyDeclaration(member) && member.name) {\n const origName = member.name.getText(sourceFile)\n const isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n const staticPrefix = isStatic ? 'static ' : ''\n\n // Use mapped name (# for private) or original\n const propName = privateFieldMap.get(origName) || origName\n\n if (member.initializer) {\n const transpiled = ts.transpileModule(\n member.initializer.getText(sourceFile),\n {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n }\n )\n members.push(\n ` ${staticPrefix}${propName} = ${transpiled.outputText.trim()}`\n )\n } else {\n // Property without initializer - just declare it\n members.push(` ${staticPrefix}${propName}`)\n }\n }\n }\n\n const extendsStr = extendsClause ? ` extends ${extendsClause}` : ''\n return `class ${className}${extendsStr} {\\n${members.join('\\n')}\\n}`\n}\n\n/**\n * Helper to transform parameters to TJS format\n */\nfunction transformParams(\n parameters: ts.NodeArray<ts.ParameterDeclaration>,\n sourceFile: ts.SourceFile,\n warnings?: string[],\n degraded?: string[]\n): string[] {\n const params: string[] = []\n\n for (const param of parameters) {\n const name = param.name.getText(sourceFile)\n const isOptional = !!param.questionToken || !!param.initializer\n const typeExample = typeToExample(param.type, undefined, warnings)\n\n if (param.initializer) {\n // Has default value - use it directly\n const defaultText = param.initializer.getText(sourceFile)\n params.push(`${name} = ${defaultText}`)\n } else if (typeExample === 'any' || typeExample === 'undefined') {\n // any/undefined type - no annotation in TJS (bare name means any)\n params.push(name)\n // Record original TS type for migration comments\n if (degraded && param.type) {\n const originalType = param.type.getText(sourceFile)\n if (originalType !== 'any' && originalType !== 'unknown') {\n degraded.push(`${name}: ${originalType}`)\n }\n }\n } else if (isOptional) {\n // Optional without default - use union with undefined to preserve\n // three-state semantics (e.g. TS `flag?: boolean` can be true/false/undefined)\n params.push(`${name}: ${typeExample} | undefined`)\n } else {\n // Required - use : for required\n params.push(`${name}: ${typeExample}`)\n }\n }\n\n return params\n}\n\n/**\n * Extract type metadata from a TypeScript function\n */\nfunction extractFunctionMetadata(\n node: ts.FunctionDeclaration | ts.ArrowFunction | ts.FunctionExpression,\n sourceFile: ts.SourceFile,\n warnings?: string[],\n ctx?: TypeResolutionContext\n): FunctionTypeInfo {\n const name =\n ts.isFunctionDeclaration(node) && node.name\n ? node.name.getText(sourceFile)\n : 'anonymous'\n const params: Record<string, ParamTypeInfo> = {}\n\n for (const param of node.parameters) {\n const paramName = param.name.getText(sourceFile)\n const isOptional = !!param.questionToken || !!param.initializer\n\n let defaultValue: any = undefined\n if (param.initializer) {\n // Try to extract literal default value\n const initText = param.initializer.getText(sourceFile)\n try {\n defaultValue = JSON.parse(initText)\n } catch {\n defaultValue = initText\n }\n }\n\n params[paramName] = {\n type: typeToInfo(param.type, ctx),\n required: !isOptional,\n default: defaultValue,\n }\n }\n\n const result: FunctionTypeInfo = {\n name,\n params,\n returns: node.type ? typeToInfo(node.type, ctx) : undefined,\n }\n\n // Extract generic type parameters\n const typeParams = extractTypeParams(node, warnings)\n if (typeParams) {\n result.typeParams = typeParams\n }\n\n return result\n}\n\n/**\n * Extract type metadata from a TypeScript class\n */\nfunction extractClassMetadata(\n node: ts.ClassDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[],\n ctx?: TypeResolutionContext\n): ClassTypeInfo {\n const name = node.name?.getText(sourceFile) || 'anonymous'\n const methods: Record<string, FunctionTypeInfo> = {}\n const staticMethods: Record<string, FunctionTypeInfo> = {}\n let constructorInfo: { params: Record<string, ParamTypeInfo> } | undefined\n\n for (const member of node.members) {\n // Constructor\n if (ts.isConstructorDeclaration(member)) {\n const params: Record<string, ParamTypeInfo> = {}\n for (const param of member.parameters) {\n const paramName = param.name.getText(sourceFile)\n const isOptional = !!param.questionToken || !!param.initializer\n\n let defaultValue: any = undefined\n if (param.initializer) {\n const initText = param.initializer.getText(sourceFile)\n try {\n defaultValue = JSON.parse(initText)\n } catch {\n defaultValue = initText\n }\n }\n\n params[paramName] = {\n type: typeToInfo(param.type, ctx),\n required: !isOptional,\n default: defaultValue,\n }\n }\n constructorInfo = { params }\n }\n\n // Methods (instance and static)\n if (ts.isMethodDeclaration(member) && member.name) {\n const methodName = member.name.getText(sourceFile)\n const isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n\n const params: Record<string, ParamTypeInfo> = {}\n for (const param of member.parameters) {\n const paramName = param.name.getText(sourceFile)\n const isOptional = !!param.questionToken || !!param.initializer\n\n let defaultValue: any = undefined\n if (param.initializer) {\n const initText = param.initializer.getText(sourceFile)\n try {\n defaultValue = JSON.parse(initText)\n } catch {\n defaultValue = initText\n }\n }\n\n params[paramName] = {\n type: typeToInfo(param.type, ctx),\n required: !isOptional,\n default: defaultValue,\n }\n }\n\n const methodInfo: FunctionTypeInfo = {\n name: methodName,\n params,\n returns: member.type ? typeToInfo(member.type, ctx) : undefined,\n }\n\n if (isStatic) {\n staticMethods[methodName] = methodInfo\n } else {\n methods[methodName] = methodInfo\n }\n }\n }\n\n const result: ClassTypeInfo = {\n name,\n methods,\n staticMethods,\n constructor: constructorInfo,\n }\n\n // Extract class-level generic type parameters\n if (node.typeParameters && node.typeParameters.length > 0) {\n const typeParams: Record<string, TypeParamInfo> = {}\n for (const param of node.typeParameters) {\n const paramName = param.name.getText(sourceFile)\n const info: TypeParamInfo = {}\n if (param.constraint) {\n info.constraint = typeToExample(\n param.constraint,\n undefined,\n warnings,\n ctx\n )\n }\n if (param.default) {\n info.default = typeToExample(param.default, undefined, warnings, ctx)\n }\n typeParams[paramName] = info\n }\n result.typeParams = typeParams\n }\n\n return result\n}\n\n/**\n * Transpile TypeScript source to TJS or JS + metadata\n */\n/**\n * Extract embedded test comments from source\n * These use syntax: /*test 'description' { ... }* / (without space before /)\n * They survive TS compilation and should be preserved in TJS output\n */\nfunction extractEmbeddedTestComments(source: string): string[] {\n const tests: string[] = []\n // Match: /*test 'description' { ... }*/ or /*test { ... }*/\n const embeddedRegex =\n /\\/\\*test\\s+(['\"`])([^'\"`]*)\\1\\s*\\{[\\s\\S]*?\\}\\s*\\*\\/|\\/\\*test\\s*\\{[\\s\\S]*?\\}\\s*\\*\\//g\n\n let match\n while ((match = embeddedRegex.exec(source)) !== null) {\n tests.push(match[0])\n }\n return tests\n}\n\n/**\n * Extract top-level TJS doc comments (/*# ... *\\/) from source with position info.\n * These need to be preserved in TJS output in their original positions.\n * Comments inside function bodies are already preserved by the TS transpiler.\n */\nfunction extractDocComments(\n source: string\n): Array<{ content: string; index: number }> {\n const comments: Array<{ content: string; index: number }> = []\n const docRegex = /\\/\\*#[\\s\\S]*?\\*\\//g\n\n // Track brace depth to identify top-level comments\n let braceDepth = 0\n let inString: string | null = null\n\n // Scan source to find brace depths at each position\n const braceDepthAt: number[] = []\n for (let i = 0; i < source.length; i++) {\n const ch = source[i]\n const prev = i > 0 ? source[i - 1] : ''\n\n // Handle string literals\n if (!inString && (ch === '\"' || ch === \"'\" || ch === '`')) {\n inString = ch\n } else if (inString && ch === inString && prev !== '\\\\') {\n inString = null\n }\n\n // Track braces only outside strings\n if (!inString) {\n if (ch === '{') braceDepth++\n if (ch === '}') braceDepth--\n }\n\n braceDepthAt[i] = braceDepth\n }\n\n let match\n while ((match = docRegex.exec(source)) !== null) {\n // Only include comments at top level (brace depth 0)\n if (braceDepthAt[match.index] === 0) {\n comments.push({\n content: match[0],\n index: match.index,\n })\n }\n }\n return comments\n}\n\nexport function fromTS(\n source: string,\n options: FromTSOptions = {}\n): FromTSResult {\n const { emitTJS = false, filename = 'input.ts' } = options\n const warnings: string[] = []\n\n // Extract embedded test comments before TS parsing (they need to be preserved)\n const embeddedTests = extractEmbeddedTestComments(source)\n\n // Extract doc comments (/*# ... */) with position info for TJS output\n const docComments = emitTJS ? extractDocComments(source) : []\n\n // Parse TypeScript\n const sourceFile = ts.createSourceFile(\n filename,\n source,\n ts.ScriptTarget.Latest,\n true\n )\n\n const tjsFunctions: string[] = []\n const seenTypeNames = new Set<string>() // Track emitted type names to avoid duplicates\n const metadata: Record<string, FunctionTypeInfo> = {}\n const classMetadata: Record<string, ClassTypeInfo> = {}\n\n // Track which doc comments have been emitted (by index in docComments array)\n const emittedDocComments = new Set<number>()\n\n // Helper: emit any doc comments that appear before a given source position\n const emitDocCommentsBefore = (pos: number) => {\n for (let i = 0; i < docComments.length; i++) {\n const doc = docComments[i]\n if (!emittedDocComments.has(i) && doc.index < pos) {\n tjsFunctions.push(doc.content)\n emittedDocComments.add(i)\n }\n }\n }\n\n // Build type alias and interface maps first (first pass)\n const typeAliases = new Map<string, ts.TypeNode>()\n const interfaces = new Map<string, ts.InterfaceDeclaration>()\n\n function collectTypes(node: ts.Node) {\n if (ts.isTypeAliasDeclaration(node)) {\n typeAliases.set(node.name.getText(sourceFile), node.type)\n }\n if (ts.isInterfaceDeclaration(node)) {\n const name = node.name.getText(sourceFile)\n const existing = interfaces.get(name)\n if (existing) {\n // Merge members (TS interface merging)\n const merged = ts.factory.updateInterfaceDeclaration(\n existing,\n existing.modifiers,\n existing.name,\n existing.typeParameters,\n existing.heritageClauses,\n [...existing.members, ...node.members]\n )\n interfaces.set(name, merged)\n } else {\n interfaces.set(name, node)\n }\n }\n ts.forEachChild(node, collectTypes)\n }\n collectTypes(sourceFile)\n\n // Create resolution context\n const resolutionCtx: TypeResolutionContext = {\n typeAliases,\n interfaces,\n sourceFile,\n warnings,\n }\n\n // Pre-scan: detect function overload groups\n // In TS, overloads are N bodyless signatures + 1 implementation with body\n const overloadGroups = new Map<\n string,\n {\n signatures: ts.FunctionDeclaration[] // body === undefined\n implementation: ts.FunctionDeclaration | null // has body\n }\n >()\n for (const stmt of sourceFile.statements) {\n if (ts.isFunctionDeclaration(stmt) && stmt.name) {\n const name = stmt.name.getText(sourceFile)\n if (!overloadGroups.has(name)) {\n overloadGroups.set(name, { signatures: [], implementation: null })\n }\n const group = overloadGroups.get(name)!\n if (stmt.body) {\n group.implementation = stmt\n } else {\n group.signatures.push(stmt)\n }\n }\n }\n // Only keep groups that actually have overloads (signatures + implementation)\n for (const [name, group] of overloadGroups) {\n if (group.signatures.length === 0 || !group.implementation) {\n overloadGroups.delete(name)\n }\n }\n\n // Walk top-level statements only (don't recurse into function bodies)\n for (const statement of sourceFile.statements) {\n let handled = false\n\n // Emit any doc comments before this statement\n if (emitTJS) {\n emitDocCommentsBefore(statement.getStart(sourceFile))\n }\n\n // Handle: function foo() {}\n if (ts.isFunctionDeclaration(statement) && statement.name) {\n const funcName = statement.name.getText(sourceFile)\n handled = true\n\n const overloadGroup = overloadGroups.get(funcName)\n\n if (overloadGroup) {\n // This function is part of an overload group\n if (!statement.body) {\n // Skip bodyless signatures — handled when we encounter the implementation\n } else {\n // Implementation: emit the entire overload group\n if (emitTJS) {\n tjsFunctions.push(\n ...emitOverloadGroup(\n overloadGroup.signatures,\n statement,\n sourceFile,\n warnings\n )\n )\n } else {\n const overloads: FunctionTypeInfo[] = []\n for (const sig of overloadGroup.signatures) {\n overloads.push(\n extractFunctionMetadata(\n sig,\n sourceFile,\n warnings,\n resolutionCtx\n )\n )\n }\n const implInfo = extractFunctionMetadata(\n statement,\n sourceFile,\n warnings,\n resolutionCtx\n )\n implInfo.overloads = overloads\n metadata[funcName] = implInfo\n }\n }\n } else {\n // Normal (non-overloaded) function\n if (emitTJS) {\n tjsFunctions.push(\n transformFunctionToTJS(\n statement,\n sourceFile,\n undefined,\n warnings,\n true\n )\n )\n } else {\n metadata[funcName] = extractFunctionMetadata(\n statement,\n sourceFile,\n warnings,\n resolutionCtx\n )\n }\n }\n }\n\n // Handle: const foo = () => {} or const foo = function() {}\n // Also handle: const x = ..., let x = ..., var x = ... (non-function)\n if (ts.isVariableStatement(statement)) {\n let hasFunctionDecl = false\n\n for (const decl of statement.declarationList.declarations) {\n if (\n ts.isIdentifier(decl.name) &&\n decl.initializer &&\n (ts.isArrowFunction(decl.initializer) ||\n ts.isFunctionExpression(decl.initializer))\n ) {\n hasFunctionDecl = true\n const funcName = decl.name.getText(sourceFile)\n const funcNode = decl.initializer\n\n if (emitTJS) {\n tjsFunctions.push(\n transformFunctionToTJS(\n funcNode,\n sourceFile,\n funcName,\n warnings,\n true\n )\n )\n } else {\n const info = extractFunctionMetadata(\n funcNode,\n sourceFile,\n warnings,\n resolutionCtx\n )\n info.name = funcName\n metadata[funcName] = info\n }\n }\n }\n\n // If this variable statement doesn't contain function declarations,\n // transpile and preserve it (strips type annotations)\n if (!hasFunctionDecl && emitTJS) {\n const transpiled = ts.transpileModule(statement.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n tjsFunctions.push(transpiled.outputText.trim())\n }\n\n handled = true\n }\n\n // Handle: interface Foo { ... }\n if (ts.isInterfaceDeclaration(statement)) {\n handled = true\n if (emitTJS) {\n const typeName = statement.name.getText(sourceFile)\n if (!seenTypeNames.has(typeName)) {\n seenTypeNames.add(typeName)\n // Use merged interface (handles declaration merging)\n const merged = interfaces.get(typeName) || statement\n const typeDecl = transformInterfaceToType(\n merged,\n sourceFile,\n warnings\n )\n if (typeDecl) {\n tjsFunctions.push(typeDecl)\n }\n }\n }\n }\n\n // Handle: type Foo = { ... }\n if (ts.isTypeAliasDeclaration(statement)) {\n handled = true\n if (emitTJS) {\n const typeName = statement.name.getText(sourceFile)\n if (!seenTypeNames.has(typeName)) {\n seenTypeNames.add(typeName)\n const typeDecl = transformTypeAliasToType(\n statement,\n sourceFile,\n warnings\n )\n if (typeDecl) {\n tjsFunctions.push(typeDecl)\n }\n }\n }\n }\n\n // Handle: enum Status { Pending, Active, Done }\n if (ts.isEnumDeclaration(statement)) {\n handled = true\n if (emitTJS) {\n const enumName = statement.name.getText(sourceFile)\n if (!seenTypeNames.has(enumName)) {\n seenTypeNames.add(enumName)\n const enumDecl = transformEnumToTJS(statement, sourceFile, warnings)\n if (enumDecl) {\n tjsFunctions.push(enumDecl)\n }\n }\n }\n }\n\n // Handle: class Foo { ... }\n if (ts.isClassDeclaration(statement) && statement.name) {\n const className = statement.name.getText(sourceFile)\n handled = true\n if (emitTJS) {\n const classDecl = transformClassToTJS(statement, sourceFile, warnings)\n tjsFunctions.push(classDecl)\n } else {\n classMetadata[className] = extractClassMetadata(\n statement,\n sourceFile,\n warnings,\n resolutionCtx\n )\n }\n }\n\n // Handle: import statements (strip type-only imports, keep value imports)\n if (ts.isImportDeclaration(statement)) {\n handled = true\n if (emitTJS) {\n // Check if it's a type-only import\n const isTypeOnly =\n statement.importClause?.isTypeOnly ||\n (statement.importClause?.namedBindings &&\n ts.isNamedImports(statement.importClause.namedBindings) &&\n statement.importClause.namedBindings.elements.every(\n (e) => e.isTypeOnly\n ))\n\n if (!isTypeOnly) {\n // Keep value imports - just strip any type annotations\n const transpiled = ts.transpileModule(statement.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n const trimmed = transpiled.outputText.trim()\n if (trimmed) {\n tjsFunctions.push(trimmed)\n }\n }\n }\n }\n\n // Handle: export statements\n if (ts.isExportDeclaration(statement) || ts.isExportAssignment(statement)) {\n handled = true\n if (emitTJS) {\n const transpiled = ts.transpileModule(statement.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n const trimmed = transpiled.outputText.trim()\n if (trimmed) {\n tjsFunctions.push(trimmed)\n }\n }\n }\n\n // Handle: expression statements (console.log(...), foo(), etc.)\n // and any other unhandled statements\n if (!handled && emitTJS) {\n const transpiled = ts.transpileModule(statement.getText(sourceFile), {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n const trimmed = transpiled.outputText.trim()\n if (trimmed) {\n tjsFunctions.push(trimmed)\n }\n }\n }\n\n if (emitTJS) {\n // Emit any remaining doc comments (after all statements)\n emitDocCommentsBefore(Infinity)\n\n // Include source file annotation for error reporting\n const sourceFileName = filename || 'unknown'\n const header = `/* tjs <- ${sourceFileName} */\\n\\n`\n\n // Append embedded test comments (they were extracted from original source)\n const testsSection =\n embeddedTests.length > 0 ? '\\n\\n' + embeddedTests.join('\\n\\n') : ''\n\n return {\n code: header + tjsFunctions.join('\\n\\n') + testsSection,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n }\n\n // For JS output, strip types and add metadata\n const jsOutput = ts.transpileModule(source, {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n\n // Append __tjs metadata for each function\n let code = jsOutput.outputText\n for (const [funcName, info] of Object.entries(metadata)) {\n const metadataObj: Record<string, any> = {\n params: Object.fromEntries(\n Object.entries(info.params).map(([k, v]) => [\n k,\n { type: v.type.kind, required: v.required, default: v.default },\n ])\n ),\n returns: info.returns ? { type: info.returns.kind } : undefined,\n }\n\n // Include type parameters (generics) if present\n if (info.typeParams) {\n metadataObj.typeParams = info.typeParams\n }\n\n const metadataStr = JSON.stringify(metadataObj, null, 2)\n code += `\\n${funcName}.__tjs = ${metadataStr};\\n`\n }\n\n // Append __tjs metadata for each class\n for (const [className, info] of Object.entries(classMetadata)) {\n const metadataObj: Record<string, any> = {\n constructor: info.constructor\n ? {\n params: Object.fromEntries(\n Object.entries(info.constructor.params ?? {}).map(([k, v]) => [\n k,\n { type: v.type.kind, required: v.required, default: v.default },\n ])\n ),\n }\n : undefined,\n methods: Object.fromEntries(\n Object.entries(info.methods ?? {}).map(([name, m]) => [\n name,\n {\n params: Object.fromEntries(\n Object.entries(m.params ?? {}).map(([k, v]) => [\n k,\n { type: v.type.kind, required: v.required },\n ])\n ),\n returns: m.returns ? { type: m.returns.kind } : undefined,\n },\n ])\n ),\n staticMethods: Object.fromEntries(\n Object.entries(info.staticMethods ?? {}).map(([name, m]) => [\n name,\n {\n params: Object.fromEntries(\n Object.entries(m.params ?? {}).map(([k, v]) => [\n k,\n { type: v.type.kind, required: v.required },\n ])\n ),\n returns: m.returns ? { type: m.returns.kind } : undefined,\n },\n ])\n ),\n }\n\n if (info.typeParams) {\n metadataObj.typeParams = info.typeParams\n }\n\n const metadataStr = JSON.stringify(metadataObj, null, 2)\n code += `\\n${className}.__tjs = ${metadataStr};\\n`\n\n // Wrap class to make it callable without `new`\n code += `\\n${emitClassWrapper(className)}\\n`\n }\n\n return {\n code,\n types: metadata,\n classes: Object.keys(classMetadata).length > 0 ? classMetadata : undefined,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n}\n",
18
19
  "/**\n * TJS Runtime\n *\n * Monadic type checking at runtime:\n * - Functions validate inputs against __tjs metadata\n * - If any input is an error, pass it through (no work)\n * - Type mismatches return error objects\n * - Errors propagate through call chains\n *\n * This runtime is attached to globalThis.__tjs and shared across modules.\n */\n\nimport { validate, s } from 'tosijs-schema'\nimport {\n Type,\n isRuntimeType,\n Union,\n Generic,\n Enum,\n Nullable,\n Optional,\n TArray,\n // Built-in types\n TString,\n TNumber,\n TBoolean,\n TInteger,\n TPositiveInt,\n TNonEmptyString,\n TEmail,\n TUrl,\n TUuid,\n Timestamp,\n LegalDate,\n // Built-in generics\n TPair,\n TRecord,\n // Portable predicate helpers (future AJS builtins)\n isValidUrl,\n isValidTimestamp,\n isValidLegalDate,\n} from '../types/Type'\n\n// Re-export Type utilities for consumers\nexport {\n Type,\n isRuntimeType,\n Union,\n Generic,\n Enum,\n Nullable,\n Optional,\n TArray,\n TString,\n TNumber,\n TBoolean,\n TInteger,\n TPositiveInt,\n TNonEmptyString,\n TEmail,\n TUrl,\n TUuid,\n Timestamp,\n LegalDate,\n TPair,\n TRecord,\n isValidUrl,\n isValidTimestamp,\n isValidLegalDate,\n}\n\n// Version from package.json - injected at build time or imported\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pkg = require('../../package.json') as { version: string }\n\nexport const TJS_VERSION: string = pkg.version\n\n/**\n * Well-known symbol for custom equality.\n *\n * Any object can implement `[tjsEquals](other)` to control how `==` / `Is()`\n * compares it. Useful for Proxies that should delegate equality to their target.\n *\n * Priority: tjsEquals symbol → .Equals method → structural comparison\n */\nexport const tjsEquals: unique symbol = Symbol.for('tjs.equals')\n\n/**\n * Parse semver version string into components\n */\nfunction parseVersion(version: string): {\n major: number\n minor: number\n patch: number\n} {\n const [major = 0, minor = 0, patch = 0] = version.split('.').map(Number)\n return { major, minor, patch }\n}\n\n/**\n * Compare two version strings\n * Returns: -1 if a < b, 0 if equal, 1 if a > b\n */\nexport function compareVersions(a: string, b: string): -1 | 0 | 1 {\n const va = parseVersion(a)\n const vb = parseVersion(b)\n\n if (va.major !== vb.major) return va.major < vb.major ? -1 : 1\n if (va.minor !== vb.minor) return va.minor < vb.minor ? -1 : 1\n if (va.patch !== vb.patch) return va.patch < vb.patch ? -1 : 1\n return 0\n}\n\n/**\n * Check if two versions are compatible (same major version)\n */\nexport function versionsCompatible(a: string, b: string): boolean {\n const va = parseVersion(a)\n const vb = parseVersion(b)\n return va.major === vb.major\n}\n\n/**\n * MonadicError - Internal error type for monadic error propagation\n *\n * This extends Error so:\n * 1. It's a real Error with proper stack traces\n * 2. User code can't accidentally process it as data (unlike { $error: true })\n * 3. It flows through function calls via instanceof checks\n *\n * NOT exported to user code - they just see Error instances.\n */\nexport class MonadicError extends Error {\n /** Path where the error occurred, e.g., \"src/file.ts:42:greet.name\" */\n readonly path: string\n /** Expected type */\n readonly expected?: string\n /** Actual type received */\n readonly actual?: string\n /** TJS call stack (only in debug mode) - shows source locations */\n readonly callStack?: string[]\n\n constructor(\n message: string,\n path: string,\n expected?: string,\n actual?: string,\n callStack?: string[]\n ) {\n super(message)\n this.name = 'MonadicError'\n this.path = path\n this.expected = expected\n this.actual = actual\n this.callStack = callStack\n // Maintains proper stack trace in V8 environments\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MonadicError)\n }\n }\n}\n\n/**\n * Create a type error for inline validation\n *\n * Called ONLY when a type check fails - no overhead on happy path.\n * Returns a MonadicError that propagates through the call chain.\n * In debug mode, captures the TJS call stack with source locations.\n *\n * @param path - Location of the error, e.g., \"src/file.ts:42:greet.name\"\n * @param expected - Expected type, e.g., \"string\"\n * @param value - The actual value that failed the check\n */\nexport function typeError(\n path: string,\n expected: string,\n value: unknown\n): MonadicError {\n const actual = value === null ? 'null' : typeof value\n // Capture call stack in debug mode (getStack returns [] if not in debug mode)\n const stack = config.debug ? getStack() : undefined\n return new MonadicError(\n `Expected ${expected} for '${path}', got ${actual}`,\n path,\n expected,\n actual,\n stack\n )\n}\n\n/**\n * Check if a value is a MonadicError (for internal use)\n */\nexport function isMonadicError(value: unknown): value is MonadicError {\n return value instanceof MonadicError\n}\n\n/**\n * Error marker - identifies TJS error objects\n * @deprecated Use MonadicError instead. This interface is kept for backward compatibility.\n */\nexport interface TJSError {\n $error: true\n message: string\n /** Failure location - e.g., \"greet.name\" */\n path?: string\n /** Call stack in debug mode - e.g., [\"main\", \"processUser\", \"greet.name\"] */\n stack?: string[]\n expected?: string\n actual?: string\n cause?: Error | TJSError\n /** Source location for error reporting */\n loc?: { start: number; end: number }\n /** Multiple errors (when composing parameter errors) */\n errors?: TJSError[]\n}\n\n/**\n * Safety levels for runtime validation\n * - 'none': No validation unless explicitly forced with (?) or -?\n * - 'inputs': Validate inputs only (default) - outputs only with explicit -> or -?\n * - 'all': Validate both inputs and outputs unless explicitly skipped with (!) or -!\n */\nexport type SafetyLevel = 'none' | 'inputs' | 'all'\n\n/**\n * Runtime configuration\n */\nexport interface TJSConfig {\n /** Enable debug mode - captures call stacks in errors */\n debug?: boolean\n /** Safety level for validation (default: 'inputs') */\n safety?: SafetyLevel\n /** Require explicit return types (error if -> not specified) */\n requireReturnTypes?: boolean\n /** Maximum call stack size to prevent memory issues (default: 100) */\n maxStackSize?: number\n}\n\n/** Default configuration values */\nconst DEFAULT_CONFIG: TJSConfig = {\n debug: false,\n safety: 'inputs',\n requireReturnTypes: false,\n maxStackSize: 100,\n}\n\n/** Current runtime configuration */\nlet config: TJSConfig = { ...DEFAULT_CONFIG }\n\n/** Current call stack (only tracked in debug mode) */\nconst callStack: string[] = []\n\n/** Unsafe mode depth - when > 0, skip validation in wrap() */\nlet unsafeDepth = 0\n\n/**\n * Enter unsafe mode - disables validation for all wrapped function calls\n * Can be nested (uses depth counter)\n */\nexport function enterUnsafe(): void {\n unsafeDepth++\n}\n\n/**\n * Exit unsafe mode - re-enables validation when depth returns to 0\n */\nexport function exitUnsafe(): void {\n if (unsafeDepth > 0) unsafeDepth--\n}\n\n/**\n * Check if currently in unsafe mode\n */\nexport function isUnsafeMode(): boolean {\n return unsafeDepth > 0\n}\n\n/**\n * Configure TJS runtime\n */\nexport function configure(options: TJSConfig): void {\n config = { ...config, ...options }\n}\n\n/**\n * Get current configuration\n */\nexport function getConfig(): TJSConfig {\n return { ...config }\n}\n\n/**\n * Push a function onto the call stack (debug mode only)\n * Respects maxStackSize to prevent unbounded memory growth\n */\nexport function pushStack(name: string): void {\n if (config.debug && name) {\n callStack.push(name)\n // Enforce max stack size by removing oldest entries\n const maxSize = config.maxStackSize ?? 100\n while (callStack.length > maxSize) {\n callStack.shift()\n }\n }\n}\n\n/**\n * Pop a function from the call stack (debug mode only)\n */\nexport function popStack(): void {\n if (config.debug) {\n callStack.pop()\n }\n}\n\n/**\n * Get current call stack snapshot\n */\nexport function getStack(): string[] {\n return [...callStack]\n}\n\n/**\n * Reset runtime state to defaults\n *\n * Resets: config, callStack, unsafeDepth\n * Use this in test teardown to prevent state leaking between tests.\n */\nexport function resetRuntime(): void {\n config = { ...DEFAULT_CONFIG }\n callStack.length = 0\n unsafeDepth = 0\n}\n\n/**\n * Structural equality - the == that works\n *\n * Rules:\n * 1. If left has [tjsEquals], call left[tjsEquals](right)\n * 2. If right has [tjsEquals], call right[tjsEquals](left)\n * 3. If left has .Equals, call left.Equals(right)\n * 4. If right has .Equals, call right.Equals(left)\n * 5. Arrays/objects: recursive structural comparison\n * 6. Primitives: strict equality (no coercion)\n *\n * Usage: `a Is b` transforms to `Is(a, b)`\n */\nexport function Is(a: unknown, b: unknown): boolean {\n // Check for [tjsEquals] symbol protocol (highest priority)\n if (\n a !== null &&\n typeof a === 'object' &&\n typeof (a as any)[tjsEquals] === 'function'\n ) {\n return (a as any)[tjsEquals](b)\n }\n if (\n b !== null &&\n typeof b === 'object' &&\n typeof (b as any)[tjsEquals] === 'function'\n ) {\n return (b as any)[tjsEquals](a)\n }\n\n // Check for .Equals method (backward compat)\n if (\n a !== null &&\n typeof a === 'object' &&\n typeof (a as any).Equals === 'function'\n ) {\n return (a as any).Equals(b)\n }\n if (\n b !== null &&\n typeof b === 'object' &&\n typeof (b as any).Equals === 'function'\n ) {\n return (b as any).Equals(a)\n }\n\n // Identical references or primitives\n if (a === b) return true\n\n // null and undefined are equal to each other (nullish equality)\n // This preserves the useful JS pattern: x == null checks for both\n if ((a === null || a === undefined) && (b === null || b === undefined)) {\n return true\n }\n\n // If only one is nullish, not equal\n if (a === null || a === undefined || b === null || b === undefined) {\n return false\n }\n\n // Different types - not equal (no coercion)\n if (typeof a !== typeof b) return false\n\n // Primitives that aren't === are not equal\n if (typeof a !== 'object') return false\n\n // Arrays\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false\n return a.every((v, i) => Is(v, b[i]))\n }\n if (Array.isArray(a) !== Array.isArray(b)) return false\n\n // Objects - structural comparison\n const keysA = Object.keys(a as object)\n const keysB = Object.keys(b as object)\n if (keysA.length !== keysB.length) return false\n return keysA.every((k) => Is((a as any)[k], (b as any)[k]))\n}\n\n/**\n * Structural inequality - the != that works\n *\n * Usage: `a IsNot b` transforms to `IsNot(a, b)`\n */\nexport function IsNot(a: unknown, b: unknown): boolean {\n return !Is(a, b)\n}\n\n/**\n * Check if a value is a TJS error\n */\nexport function isError(value: unknown): value is TJSError {\n return (\n value !== null &&\n typeof value === 'object' &&\n (value as any).$error === true\n )\n}\n\n/**\n * Create a TJS error\n * In debug mode, captures the current call stack\n */\nexport function error(\n message: string,\n details?: Partial<Omit<TJSError, '$error' | 'message'>>\n): TJSError {\n const err: TJSError = {\n $error: true,\n message,\n ...details,\n }\n\n // In debug mode, capture the call stack\n if (config.debug && callStack.length > 0) {\n // Add the path to the stack if it exists\n const fullStack = details?.path\n ? [...callStack, details.path]\n : [...callStack]\n err.stack = fullStack\n }\n\n return err\n}\n\n/**\n * Compose multiple errors into a single error\n * Used when multiple parameters have errors\n */\nexport function composeErrors(errors: TJSError[], funcName?: string): TJSError {\n if (errors.length === 0) {\n return error('Unknown error')\n }\n if (errors.length === 1) {\n return errors[0]\n }\n\n // Build a message listing all failed parameters\n const paramNames = errors\n .map((e) => {\n // Extract param name from path (e.g., \"func.paramName\" -> \"paramName\")\n if (e.path) {\n const parts = e.path.split('.')\n return parts[parts.length - 1]\n }\n return 'unknown'\n })\n .join(', ')\n\n const message = `Multiple parameter errors in ${\n funcName || 'function'\n }: ${paramNames}`\n\n return error(message, {\n path: funcName,\n errors,\n })\n}\n\n/**\n * Get the type of a value\n *\n * Enhanced typeof that handles:\n * - null (returns 'null' not 'object')\n * - undefined (returns 'undefined')\n * - arrays (returns 'array' not 'object')\n * - native/platform types (returns constructor name for objects)\n *\n * For objects, returns the constructor name which enables pragmatic\n * native type checking (e.g., 'HTMLElement', 'Buffer', 'Event')\n */\nexport function typeOf(value: unknown): string {\n if (value === null) return 'null'\n if (value === undefined) return 'undefined'\n if (Array.isArray(value)) return 'array'\n\n const t = typeof value\n if (t !== 'object') return t\n\n // For objects, return constructor name for pragmatic native type checking\n // This enables checking for HTMLElement, Buffer, Event, etc.\n const constructorName = (value as object).constructor?.name\n if (constructorName && constructorName !== 'Object') {\n return constructorName\n }\n\n return 'object'\n}\n\n/**\n * Check if a value is an instance of a native/platform type by constructor name\n *\n * This enables pragmatic native type checking without shipping type definitions:\n * - isNativeType(el, 'HTMLElement') - DOM element check\n * - isNativeType(buf, 'Buffer') - Node.js Buffer check\n * - isNativeType(evt, 'Event') - DOM Event check\n * - isNativeType(map, 'Map') - Map instance check\n *\n * @param value - The value to check\n * @param typeName - The constructor name to match (e.g., 'HTMLElement', 'Buffer')\n * @returns true if value's constructor.name matches or is in prototype chain\n */\nexport function isNativeType(value: unknown, typeName: string): boolean {\n if (value === null || value === undefined) return false\n if (typeof value !== 'object' && typeof value !== 'function') return false\n\n // Check constructor name\n let proto = value\n while (proto !== null) {\n const constructorName = (proto as object).constructor?.name\n if (constructorName === typeName) return true\n proto = Object.getPrototypeOf(proto)\n }\n\n return false\n}\n\n/**\n * Check if a value matches an expected type\n *\n * @param value - The value to check\n * @param expected - Either a string type name ('string', 'number', etc.)\n * or a RuntimeType instance with .check() method\n * @param path - Optional path for error messages\n */\nexport function checkType(\n value: unknown,\n expected: string | { check: (v: unknown) => boolean; description: string },\n path?: string\n): TJSError | null {\n // If value is already an error, propagate it\n if (isError(value)) return value\n\n // Handle RuntimeType instances (Type() results)\n if (\n typeof expected === 'object' &&\n expected !== null &&\n 'check' in expected\n ) {\n if (expected.check(value)) return null\n return error(`Expected ${expected.description} but got ${typeOf(value)}`, {\n path,\n expected: expected.description,\n actual: typeOf(value),\n })\n }\n\n const actual = typeOf(value)\n\n // Handle special cases\n if (expected === 'any') return null\n if (expected === actual) return null\n\n // Number accepts both number types\n if (expected === 'number' && actual === 'number') return null\n if (expected === 'integer' && actual === 'number' && Number.isInteger(value))\n return null\n if (\n expected === 'non-negative-integer' &&\n actual === 'number' &&\n Number.isInteger(value) &&\n (value as number) >= 0\n )\n return null\n\n // Object matching (basic)\n if (expected === 'object' && actual === 'object') return null\n\n return error(`Expected ${expected} but got ${actual}`, {\n path,\n expected,\n actual,\n })\n}\n\n/** Type specifier - either a string name or a RuntimeType */\ntype TypeSpec = string | { check: (v: unknown) => boolean; description: string }\n\n/** Parameter metadata with optional location */\ninterface ParamMeta {\n type: TypeSpec\n required: boolean\n default?: unknown\n loc?: { start: number; end: number }\n}\n\n/**\n * Validate function arguments against __tjs metadata\n * Returns first error found, or null if all valid\n */\nexport function validateArgs(\n args: Record<string, unknown>,\n meta: {\n params: Record<string, ParamMeta>\n },\n funcName?: string\n): TJSError | null {\n for (const [name, param] of Object.entries(meta.params)) {\n const value = args[name]\n\n // Check if any arg is already an error - propagate first one\n if (isError(value)) return value\n\n // Check required\n if (param.required && value === undefined) {\n const expectedDesc =\n typeof param.type === 'string' ? param.type : param.type.description\n return error(`Missing required parameter '${name}'`, {\n path: funcName ? `${funcName}.${name}` : name,\n expected: expectedDesc,\n actual: 'undefined',\n loc: param.loc,\n })\n }\n\n // Skip type check for undefined optional params\n if (value === undefined) continue\n\n // Type check\n const typeError = checkType(\n value,\n param.type,\n funcName ? `${funcName}.${name}` : name\n )\n if (typeError) {\n // Add location info if available\n if (param.loc) {\n typeError.loc = param.loc\n }\n return typeError\n }\n }\n\n return null\n}\n\n/**\n * Function metadata with safety flags\n */\nexport interface FunctionMeta {\n params: Record<string, any>\n returns?: { type: any; safe?: boolean; defaults?: Record<string, unknown> }\n /** Function marked with (!) - never validate inputs */\n unsafe?: boolean\n /** Function marked with (?) - always validate inputs */\n safe?: boolean\n /** Return type marked with -! - never validate output */\n unsafeReturn?: boolean\n /** Return type marked with -? - always validate output */\n safeReturn?: boolean\n /** Explicit function name for stack tracking (used when fn.name is empty) */\n name?: string\n /** Polymorphic dispatcher — skip wrapping, dispatch handles validation */\n polymorphic?: boolean\n}\n\n/**\n * Determine if we should validate inputs for this call\n * Reserved for future use with runtime validation modes\n */\nfunction _shouldValidateInputs(meta: FunctionMeta): boolean {\n // Per-function flags take precedence\n if (meta.unsafe) return false\n if (meta.safe) return true\n\n // Block-level override\n if (unsafeDepth > 0) return false\n\n // Global safety level\n return config.safety !== 'none'\n}\n\n/**\n * Determine if we should validate outputs for this call\n * Reserved for future use with runtime validation modes\n */\nfunction _shouldValidateOutputs(meta: FunctionMeta): boolean {\n // No return type declared = no validation\n if (!meta.returns) return false\n\n // Per-function return flags take precedence\n if (meta.unsafeReturn) return false\n if (meta.safeReturn) return true\n\n // Block-level override\n if (unsafeDepth > 0) return false\n\n // Global safety level: 'all' validates outputs, others don't by default\n return config.safety === 'all'\n}\n\n/**\n * Wrap a function with monadic type checking\n *\n * @param fn - The original function\n * @param meta - The __tjs metadata\n * @returns Wrapped function that validates inputs and propagates errors\n */\nexport function wrap<T extends (...args: any[]) => any>(\n fn: T,\n meta: FunctionMeta\n): T {\n // Always attach metadata for introspection/autocomplete\n ;(fn as any).__tjs = meta\n\n // Determine if we need a wrapper at all\n // Polymorphic dispatchers handle their own routing — no wrapping needed\n const needsWrapper =\n !meta.polymorphic && // Has forced safety that requires validation\n (meta.safe ||\n meta.safeReturn ||\n // Global safety requires validation (and not explicitly unsafe)\n (config.safety !== 'none' && !meta.unsafe) ||\n // Has return type that might need validation\n (meta.returns && config.safety === 'all' && !meta.unsafeReturn))\n\n if (!needsWrapper) {\n return fn\n }\n\n // Pre-compute flags at wrap time\n const hasReturns = !!meta.returns\n const metaUnsafe = !!meta.unsafe\n const metaSafe = !!meta.safe\n const metaUnsafeReturn = !!meta.unsafeReturn\n const metaSafeReturn = !!meta.safeReturn\n // Pre-compute return defaults (for `key = value` in return type signatures)\n // NOTE: applying defaults adds an Object.assign per call — may need benchmarking\n const returnDefaults = meta.returns?.defaults\n const paramEntries = Object.entries(meta.params)\n const paramCount = paramEntries.length\n // Use meta.name as fallback when fn.name is empty (anonymous functions)\n const funcName = fn.name || meta.name || 'anonymous'\n\n const wrapped = function (this: any, ...args: Parameters<T>): ReturnType<T> {\n // Fast path: inside unsafe block, skip all validation\n if (unsafeDepth > 0) {\n return fn.apply(this, args)\n }\n\n // Compute validation flags\n const validateInputs = metaSafe || (!metaUnsafe && config.safety !== 'none')\n const validateOutputs =\n hasReturns &&\n (metaSafeReturn || (!metaUnsafeReturn && config.safety === 'all'))\n\n // Fast path: no validation needed\n if (!validateInputs && !validateOutputs) {\n return fn.apply(this, args)\n }\n\n // Fast path: check for error as first arg\n if (args.length > 0 && isError(args[0])) {\n return args[0] as ReturnType<T>\n }\n\n // Input validation\n if (validateInputs) {\n // Detect if single object arg (named params) vs positional\n const isNamedCall =\n args.length === 1 &&\n typeof args[0] === 'object' &&\n args[0] !== null &&\n !Array.isArray(args[0])\n\n // Collect all errors to compose them\n const collectedErrors: TJSError[] = []\n\n // Fast positional validation (avoids object allocation)\n if (!isNamedCall) {\n for (let i = 0; i < paramCount; i++) {\n const [name, param] = paramEntries[i]\n const value = args[i]\n\n // Check for error propagation (passed-in errors)\n if (isError(value)) {\n collectedErrors.push(value)\n continue\n }\n\n // Check required\n if (param.required && value === undefined) {\n collectedErrors.push(\n error(`Missing required parameter '${name}'`, {\n path: `${funcName}.${name}`,\n expected:\n typeof param.type === 'string'\n ? param.type\n : param.type?.description || 'value',\n actual: 'undefined',\n loc: param.loc,\n })\n )\n continue\n }\n\n // Type check (skip undefined optional)\n if (value !== undefined) {\n const typeErr = checkType(value, param.type, `${funcName}.${name}`)\n if (typeErr) {\n if (param.loc) typeErr.loc = param.loc\n collectedErrors.push(typeErr)\n }\n }\n }\n } else {\n // Named args path (slower, but supports object destructuring)\n const namedArgs = args[0] as Record<string, unknown>\n for (let i = 0; i < paramCount; i++) {\n const [name, param] = paramEntries[i]\n const value = namedArgs[name]\n\n if (isError(value)) {\n collectedErrors.push(value)\n continue\n }\n\n if (param.required && value === undefined) {\n collectedErrors.push(\n error(`Missing required parameter '${name}'`, {\n path: `${funcName}.${name}`,\n expected:\n typeof param.type === 'string'\n ? param.type\n : param.type?.description || 'value',\n actual: 'undefined',\n loc: param.loc,\n })\n )\n continue\n }\n\n if (value !== undefined) {\n const typeErr = checkType(value, param.type, `${funcName}.${name}`)\n if (typeErr) {\n if (param.loc) typeErr.loc = param.loc\n collectedErrors.push(typeErr)\n }\n }\n }\n }\n\n // If we collected any errors, compose and return them\n if (collectedErrors.length > 0) {\n return composeErrors(collectedErrors, funcName) as ReturnType<T>\n }\n }\n\n // Push onto call stack in debug mode\n pushStack(funcName)\n\n try {\n // Execute function\n const result = fn.apply(this, args)\n\n // Output validation\n if (validateOutputs && meta.returns && !isError(result)) {\n // Apply return defaults before validation\n const validated =\n returnDefaults && typeof result === 'object' && result !== null\n ? Object.assign({}, returnDefaults, result)\n : result\n const returnError = checkType(\n validated,\n meta.returns.type,\n `${funcName}()`\n )\n if (returnError) {\n popStack()\n return returnError as ReturnType<T>\n }\n }\n\n popStack()\n return result\n } catch (e) {\n popStack()\n // Convert thrown errors to TJS errors\n return error((e as Error).message || String(e), {\n path: funcName,\n cause: e as Error,\n }) as ReturnType<T>\n }\n }\n\n // Preserve function name and metadata\n Object.defineProperty(wrapped, 'name', { value: fn.name })\n ;(wrapped as any).__tjs = meta\n\n return wrapped as T\n}\n\n/**\n * Wrap a class to make it callable without `new`\n *\n * In TJS, classes can be instantiated without the `new` keyword:\n * const obj = MyClass(args) // equivalent to new MyClass(args)\n *\n * This eliminates a common source of errors where developers forget `new`.\n * Using explicit `new` still works but should be flagged by the linter.\n */\nexport function wrapClass<T extends new (...args: any[]) => any>(\n cls: T\n): T & ((...args: ConstructorParameters<T>) => InstanceType<T>) {\n // Use a Proxy to intercept both `new Wrapper()` and `Wrapper()` calls\n const wrapped = new Proxy(cls, {\n // Called when using `new Wrapper(...)`\n construct(target, args, newTarget) {\n return Reflect.construct(target, args, newTarget)\n },\n // Called when using `Wrapper(...)` without new\n apply(target, _thisArg, args) {\n return Reflect.construct(target, args)\n },\n })\n\n // Preserve class name\n Object.defineProperty(wrapped, 'name', { value: cls.name })\n\n // Copy static properties and methods\n for (const key of Object.getOwnPropertyNames(cls)) {\n if (key !== 'length' && key !== 'name' && key !== 'prototype') {\n Object.defineProperty(\n wrapped,\n key,\n Object.getOwnPropertyDescriptor(cls, key)!\n )\n }\n }\n\n return wrapped as T & ((...args: ConstructorParameters<T>) => InstanceType<T>)\n}\n\n// ============================================================================\n// SafeFunction and Eval - moved to ./eval.ts\n// ============================================================================\n//\n// Eval and SafeFunction are in a separate module to keep the runtime lite.\n// Import from 'tjs-lang/eval' when you need dynamic code execution.\n//\n// Runtime (this file): ~5KB gzipped - type checking, Is/IsNot, wrap, etc.\n// Eval module: ~27KB gzipped - adds transpiler + VM for dynamic code\n// ============================================================================\n\n/**\n * Create an isolated TJS runtime instance\n *\n * Each call returns a fresh runtime with its own:\n * - config (debug, safety, etc.)\n * - callStack\n * - unsafeDepth\n *\n * The new instance inherits the current global config at creation time,\n * but subsequent changes are isolated.\n *\n * Use this to prevent state leaking between transpiled modules.\n */\nexport function createRuntime() {\n // Per-instance state - inherit current global config\n let instanceConfig: TJSConfig = { ...config }\n const instanceCallStack: string[] = []\n let instanceUnsafeDepth = 0\n\n // Per-instance stateful functions\n function instanceConfigure(options: TJSConfig): void {\n instanceConfig = { ...instanceConfig, ...options }\n }\n\n function instanceGetConfig(): TJSConfig {\n return { ...instanceConfig }\n }\n\n function instancePushStack(name: string): void {\n if (instanceConfig.debug && name) {\n instanceCallStack.push(name)\n const maxSize = instanceConfig.maxStackSize ?? 100\n while (instanceCallStack.length > maxSize) {\n instanceCallStack.shift()\n }\n }\n }\n\n function instancePopStack(): void {\n if (instanceConfig.debug) {\n instanceCallStack.pop()\n }\n }\n\n function instanceGetStack(): string[] {\n return [...instanceCallStack]\n }\n\n function instanceResetRuntime(): void {\n instanceConfig = { ...DEFAULT_CONFIG }\n instanceCallStack.length = 0\n instanceUnsafeDepth = 0\n }\n\n function instanceEnterUnsafe(): void {\n instanceUnsafeDepth++\n }\n\n function instanceExitUnsafe(): void {\n if (instanceUnsafeDepth > 0) instanceUnsafeDepth--\n }\n\n function instanceIsUnsafeMode(): boolean {\n return instanceUnsafeDepth > 0\n }\n\n // Extension registry: typeName -> methodName -> fn\n const extensionRegistry = new Map<\n string,\n Map<string, (...args: any[]) => any>\n >()\n\n function instanceRegisterExtension(\n typeName: string,\n methodName: string,\n fn: (...args: any[]) => any\n ): void {\n if (!extensionRegistry.has(typeName)) {\n extensionRegistry.set(typeName, new Map())\n }\n extensionRegistry.get(typeName)!.set(methodName, fn)\n }\n\n function instanceResolveExtension(\n value: unknown,\n methodName: string\n ): ((...args: any[]) => any) | undefined {\n // Determine type name from value\n const t = typeof value\n let typeName: string\n if (value === null || value === undefined) return undefined\n if (t === 'string') typeName = 'String'\n else if (t === 'number') typeName = 'Number'\n else if (t === 'boolean') typeName = 'Boolean'\n else if (Array.isArray(value)) typeName = 'Array'\n else if (t === 'object') {\n // Check constructor name for class instances (including DOM classes)\n typeName = (value as any).constructor?.name || 'Object'\n } else {\n return undefined\n }\n\n // Walk prototype chain: HTMLInputElement -> HTMLElement -> Element -> Object\n let current: string | undefined = typeName\n while (current) {\n const methods = extensionRegistry.get(current)\n if (methods?.has(methodName)) {\n return methods.get(methodName)\n }\n // Walk up: try parent class (for DOM/custom class hierarchies)\n if (t === 'object' && !Array.isArray(value)) {\n const proto = Object.getPrototypeOf(\n current === typeName ? value : Object.getPrototypeOf(value)\n )\n current = proto?.constructor?.name\n if (current === 'Object' || current === typeName) break\n } else {\n break\n }\n }\n\n // Fallback: check 'Object' extensions\n const objectMethods = extensionRegistry.get('Object')\n if (objectMethods?.has(methodName)) {\n return objectMethods.get(methodName)\n }\n\n return undefined\n }\n\n function instanceTypeError(\n path: string,\n expected: string,\n value: unknown\n ): MonadicError {\n const actual = value === null ? 'null' : typeof value\n const stack = instanceConfig.debug ? instanceGetStack() : undefined\n return new MonadicError(\n `Expected ${expected} for '${path}', got ${actual}`,\n path,\n expected,\n actual,\n stack\n )\n }\n\n function instanceError(\n message: string,\n details?: Partial<Omit<TJSError, '$error' | 'message'>>\n ): TJSError {\n const err: TJSError = {\n $error: true,\n message,\n ...details,\n }\n if (instanceConfig.debug && instanceCallStack.length > 0) {\n const fullStack = details?.path\n ? [...instanceCallStack, details.path]\n : [...instanceCallStack]\n err.stack = fullStack\n }\n return err\n }\n\n return {\n version: TJS_VERSION,\n // Monadic error handling\n MonadicError,\n typeError: instanceTypeError,\n isMonadicError,\n // Legacy error handling\n isError,\n error: instanceError,\n composeErrors,\n typeOf,\n isNativeType,\n checkType,\n validateArgs,\n wrap,\n wrapClass,\n compareVersions,\n versionsCompatible,\n // Debug mode (instance-specific)\n configure: instanceConfigure,\n getConfig: instanceGetConfig,\n pushStack: instancePushStack,\n popStack: instancePopStack,\n getStack: instanceGetStack,\n resetRuntime: instanceResetRuntime,\n // Unsafe mode (instance-specific)\n enterUnsafe: instanceEnterUnsafe,\n exitUnsafe: instanceExitUnsafe,\n isUnsafeMode: instanceIsUnsafeMode,\n // Type system\n validate,\n infer: s.infer.bind(s),\n Type,\n isRuntimeType,\n Union,\n Generic,\n Enum,\n Nullable,\n Optional,\n TArray,\n TString,\n TNumber,\n TBoolean,\n TInteger,\n TPositiveInt,\n TNonEmptyString,\n TEmail,\n TUrl,\n TUuid,\n TPair,\n TRecord,\n // Structural equality\n Is,\n IsNot,\n tjsEquals,\n // Extensions\n registerExtension: instanceRegisterExtension,\n resolveExtension: instanceResolveExtension,\n }\n}\n\n/** Type for runtime instances */\nexport type TJSRuntime = ReturnType<typeof createRuntime>\n\n/**\n * TJS Runtime object - attached to globalThis.__tjs\n *\n * NOTE: This is a shared global instance. For isolated execution,\n * use createRuntime() instead.\n */\nexport const runtime = {\n version: TJS_VERSION,\n // Monadic error handling (new)\n MonadicError,\n typeError,\n isMonadicError,\n // Legacy error handling (deprecated)\n isError,\n error,\n composeErrors,\n typeOf,\n isNativeType,\n checkType,\n validateArgs,\n wrap,\n wrapClass,\n compareVersions,\n versionsCompatible,\n // Debug mode\n configure,\n getConfig,\n pushStack,\n popStack,\n getStack,\n resetRuntime,\n // Unsafe mode\n enterUnsafe,\n exitUnsafe,\n isUnsafeMode,\n // Factory for isolated instances\n createRuntime,\n // Type system (used by transpiled Type declarations)\n validate,\n infer: s.infer.bind(s),\n Type,\n isRuntimeType,\n Union,\n Generic,\n Enum,\n Nullable,\n Optional,\n TArray,\n // Built-in types\n TString,\n TNumber,\n TBoolean,\n TInteger,\n TPositiveInt,\n TNonEmptyString,\n TEmail,\n TUrl,\n TUuid,\n Timestamp,\n LegalDate,\n TPair,\n TRecord,\n // Structural equality (used by == and != in TJS)\n Is,\n IsNot,\n}\n\n/**\n * Install runtime globally (idempotent, version-checked)\n *\n * Version handling:\n * - Same version: reuse existing (no warning)\n * - Compatible (same major): reuse existing, log info\n * - Incompatible (different major): warn, use newer version\n */\nexport function installRuntime(): typeof runtime {\n const g = globalThis as any\n\n if (g.__tjs) {\n const existingVersion = g.__tjs.version\n\n // Guard against polluted __tjs without proper version\n if (typeof existingVersion !== 'string') {\n g.__tjs = runtime\n return runtime\n }\n\n const comparison = compareVersions(TJS_VERSION, existingVersion)\n\n if (comparison === 0) {\n // Exact same version - just reuse\n return g.__tjs\n }\n\n if (versionsCompatible(TJS_VERSION, existingVersion)) {\n // Same major version - compatible, use newer\n if (comparison > 0) {\n console.info(\n `TJS runtime: upgrading ${existingVersion} → ${TJS_VERSION}`\n )\n g.__tjs = runtime\n } else {\n console.info(\n `TJS runtime: keeping ${existingVersion} (newer than ${TJS_VERSION})`\n )\n }\n } else {\n // Different major version - breaking change potential\n console.warn(\n `TJS runtime version conflict: ${existingVersion} vs ${TJS_VERSION} (major version mismatch)`\n )\n // Use the newer one but warn about potential issues\n if (comparison > 0) {\n console.warn(`Upgrading to ${TJS_VERSION} - check for breaking changes`)\n g.__tjs = runtime\n }\n }\n\n return g.__tjs\n }\n\n g.__tjs = runtime\n return runtime\n}\n\n/**\n * Generate runtime wrapper code for emitted JS\n * Skips wrapping for unsafe functions (marked with !)\n */\nexport function emitRuntimeWrapper(funcName: string): string {\n return `\n// TJS runtime wrapper (skips unsafe functions)\nif (typeof ${funcName}.__tjs === 'object' && !${funcName}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {\n ${funcName} = globalThis.__tjs.wrap(${funcName}, ${funcName}.__tjs)\n}\n`.trim()\n}\n\n/**\n * Generate class wrapper code for emitted JS\n * Makes classes callable without `new` keyword\n * Emits standalone JS - no runtime dependency\n */\nexport function emitClassWrapper(className: string): string {\n return `\n// TJS: callable without new\n${className} = new Proxy(${className}, { apply(t, _, a) { return Reflect.construct(t, a) } });\n`.trim()\n}\n\n/**\n * Questions/Notes:\n *\n * Q1: Should wrap() be automatic or opt-in?\n * Current: Must be explicitly wrapped\n * Could: Auto-wrap all functions with __tjs metadata\n *\n * Q2: Performance overhead of validation?\n * Need benchmarks comparing wrapped vs unwrapped\n * Could have 'production' mode that skips validation\n *\n * Q3: Async function handling?\n * wrap() should detect async and handle Promise returns\n *\n * Q4: Deep object validation?\n * Currently only checks top-level type\n * Could recursively validate object shapes\n */\n",
19
20
  "/**\n * Type() - Runtime type definitions with descriptions and validation\n *\n * Forms:\n * Type(description, predicate) - full form with custom validation\n * Type(description, schema) - schema-based validation\n * Type(schema) - schema only, self-documenting\n *\n * Usage:\n * const ZipCode = Type('5-digit US zip code', (s) => /^\\d{5}$/.test(s))\n * const Email = Type('valid email', s.string.email)\n * const Age = Type(s.number.min(0).max(150))\n *\n * ZipCode.check('12345') // true\n * ZipCode.check('abc') // false\n * ZipCode.description // '5-digit US zip code'\n */\n\nimport { validate, s, type Base } from 'tosijs-schema'\n\n/** JSON Schema object type (simplified) */\ntype JSONSchema = {\n type?: string\n properties?: Record<string, JSONSchema>\n items?: JSONSchema\n required?: string[]\n [key: string]: unknown\n}\n\n/** Schema can be a tosijs-schema builder or a raw JSON Schema object */\ntype Schema = Base<any> | JSONSchema\n\n/** A runtime type with description and validation */\nexport interface RuntimeType<T = unknown> {\n /** Human-readable description of the type */\n readonly description: string\n /** Check if a value matches this type */\n check(value: unknown): value is T\n /** The underlying schema (if schema-based) */\n readonly schema?: Schema\n /** The predicate function (if predicate-based) */\n readonly predicate?: (value: unknown) => boolean\n /** Example value (for documentation and signature testing) */\n readonly example?: T\n /** Multiple example values (from schema metadata, for autocomplete hints) */\n readonly examples?: T[]\n /** Default value (for instantiation) */\n readonly default?: T\n /** Brand for type identification */\n readonly __runtimeType: true\n}\n\n/** Check if a value is a RuntimeType */\nexport function isRuntimeType(value: unknown): value is RuntimeType {\n return (\n value !== null &&\n typeof value === 'object' &&\n '__runtimeType' in value &&\n (value as any).__runtimeType === true\n )\n}\n\n/**\n * Create a runtime type with description and validation\n *\n * @overload Type(description, predicate) - custom validation function\n * @overload Type(description, schema) - schema-based validation\n * @overload Type(schema) - schema only\n */\n/**\n * Check if a value is a tosijs-schema builder (has .schema property)\n */\nfunction isSchemaBuilder(value: unknown): value is Base<any> {\n return (\n value !== null &&\n typeof value === 'object' &&\n 'schema' in value &&\n typeof (value as any).schema === 'object'\n )\n}\n\n/**\n * Check if a value looks like a raw JSON Schema object\n */\nfunction isJSONSchema(value: unknown): value is JSONSchema {\n return (\n value !== null &&\n typeof value === 'object' &&\n 'type' in value &&\n typeof (value as any).type === 'string'\n )\n}\n\nexport function Type<T = unknown>(\n descriptionOrSchema: string | Schema,\n predicateOrSchemaOrExample?:\n | ((value: unknown) => boolean)\n | Schema\n | T\n | undefined,\n exampleArg?: T,\n defaultArg?: T\n): RuntimeType<T> {\n // Parse arguments\n let description: string\n let predicate: ((value: unknown) => boolean) | undefined\n let schema: Schema | undefined\n let example: T | undefined = exampleArg\n let defaultValue: T | undefined = defaultArg\n\n if (typeof descriptionOrSchema === 'string') {\n // Form: Type(description, predicate/schema/example, example?, default?)\n description = descriptionOrSchema\n\n if (typeof predicateOrSchemaOrExample === 'function') {\n // Type(description, predicate, example?, default?)\n predicate = predicateOrSchemaOrExample as (value: unknown) => boolean\n // If we have example, infer schema from it for the type guard in predicate\n if (example !== undefined) {\n schema = s.infer(example)\n }\n } else if (\n predicateOrSchemaOrExample === undefined &&\n example !== undefined\n ) {\n // Type(description, undefined, example, default?) - example provides schema\n schema = s.infer(example)\n } else if (isSchemaBuilder(predicateOrSchemaOrExample)) {\n // Type(description, schemaBuilder)\n schema = predicateOrSchemaOrExample\n } else if (isJSONSchema(predicateOrSchemaOrExample)) {\n // Type(description, jsonSchema)\n schema = predicateOrSchemaOrExample\n } else if (predicateOrSchemaOrExample !== undefined) {\n // Type(description, example) - second arg is the example/default, infer schema\n // This is the simple form: Type('Name', 'Alice')\n example = predicateOrSchemaOrExample as T\n defaultValue = example // In simple form, example IS the default\n schema = s.infer(example)\n } else {\n throw new Error(\n 'Type(description) requires a predicate, schema, or example'\n )\n }\n } else {\n // Form: Type(schema) or Type(schemaBuilder)\n if (isSchemaBuilder(descriptionOrSchema)) {\n schema = descriptionOrSchema\n } else {\n schema = descriptionOrSchema as Schema\n }\n description = schemaToDescription(schema)\n }\n\n // Extract examples from schema metadata (if any)\n let examples: T[] | undefined\n if (schema) {\n const jsonSchema = (schema as any)?.schema ?? schema\n if (\n jsonSchema &&\n typeof jsonSchema === 'object' &&\n Array.isArray((jsonSchema as any).examples)\n ) {\n examples = (jsonSchema as any).examples as T[]\n }\n }\n\n // If no explicit example was provided, use first schema example for autocomplete\n if (example === undefined && examples && examples.length > 0) {\n example = examples[0]\n }\n\n // Build the check function\n const check = (value: unknown): value is T => {\n if (predicate) {\n return predicate(value)\n }\n if (schema) {\n return validate(value, schema)\n }\n return false\n }\n\n return {\n description,\n check,\n schema,\n predicate,\n example,\n examples,\n default: defaultValue,\n __runtimeType: true as const,\n }\n}\n\n/**\n * Generate a description from a schema\n */\nfunction schemaToDescription(schema: Schema): string {\n // tosijs-schema wraps JSON schema in .schema property\n const jsonSchema = (schema as any)?.schema ?? schema\n\n // Handle schema objects with type property\n if (jsonSchema && typeof jsonSchema === 'object' && 'type' in jsonSchema) {\n const s = jsonSchema as any\n switch (s.type) {\n case 'string':\n if (s.format) return `string (${s.format})`\n if (s.pattern) return `string matching ${s.pattern}`\n if (s.minLength !== undefined && s.maxLength !== undefined)\n return `string (${s.minLength}-${s.maxLength} chars)`\n return 'string'\n case 'number':\n case 'integer':\n if (s.minimum !== undefined && s.maximum !== undefined)\n return `${s.type} (${s.minimum}-${s.maximum})`\n if (s.minimum !== undefined) return `${s.type} >= ${s.minimum}`\n if (s.maximum !== undefined) return `${s.type} <= ${s.maximum}`\n return s.type\n case 'boolean':\n return 'boolean'\n case 'array':\n return 'array'\n case 'object':\n return 'object'\n case 'null':\n return 'null'\n }\n }\n\n // Fallback\n return 'value'\n}\n\n// ============================================================================\n// Built-in Types\n// ============================================================================\n\n/** String type */\nexport const TString = Type<string>(\n 'string',\n (v: unknown) => typeof v === 'string'\n)\n\n/** Number type */\nexport const TNumber = Type<number>(\n 'number',\n (v: unknown) => typeof v === 'number'\n)\n\n/** Boolean type */\nexport const TBoolean = Type<boolean>(\n 'boolean',\n (v: unknown) => typeof v === 'boolean'\n)\n\n/** Integer type */\nexport const TInteger = Type<number>(\n 'integer',\n (v: unknown) => typeof v === 'number' && Number.isInteger(v)\n)\n\n/** Positive integer type */\nexport const TPositiveInt = Type<number>(\n 'positive integer',\n (v: unknown) => typeof v === 'number' && Number.isInteger(v) && v > 0\n)\n\n/** Non-empty string type */\nexport const TNonEmptyString = Type<string>(\n 'non-empty string',\n (v: unknown) => typeof v === 'string' && v.length > 0\n)\n\n/** Email type (basic validation) */\nexport const TEmail = Type<string>(\n 'email address',\n (v: unknown) => typeof v === 'string' && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(v)\n)\n\n/**\n * Check if a string is a valid URL (portable helper for predicates)\n * This will become an AJS builtin\n */\nexport const isValidUrl = (v: string): boolean => {\n try {\n new URL(v)\n return true\n } catch {\n return false\n }\n}\n\n/** URL type */\nexport const TUrl = Type<string>(\n 'URL',\n (v: unknown) => typeof v === 'string' && isValidUrl(v)\n)\n\n/** UUID type */\nexport const TUuid = Type<string>(\n 'UUID',\n (v: unknown) =>\n typeof v === 'string' &&\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(v)\n)\n\n/**\n * Check if a string is a valid ISO 8601 timestamp (portable helper for predicates)\n * This will become an AJS builtin\n */\nexport const isValidTimestamp = (v: string): boolean => {\n const d = new Date(v)\n return !isNaN(d.getTime()) && v.includes('T')\n}\n\n/**\n * Check if a string is a valid YYYY-MM-DD date (portable helper for predicates)\n * This will become an AJS builtin\n */\nexport const isValidLegalDate = (v: string): boolean => {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(v)) return false\n const d = new Date(v + 'T00:00:00Z')\n return !isNaN(d.getTime())\n}\n\n/** ISO 8601 timestamp string (e.g., \"2024-01-15T10:30:00Z\") */\nexport const Timestamp = Type<string>(\n 'ISO 8601 timestamp',\n (v: unknown) => typeof v === 'string' && isValidTimestamp(v)\n)\n\n/** Legal date string in YYYY-MM-DD format */\nexport const LegalDate = Type<string>(\n 'date (YYYY-MM-DD)',\n (v: unknown) => typeof v === 'string' && isValidLegalDate(v)\n)\n\n// ============================================================================\n// Type Combinators\n// ============================================================================\n\n/** Create a nullable version of a type */\nexport function Nullable<T>(type: RuntimeType<T>): RuntimeType<T | null> {\n return Type<T | null>(\n `${type.description} or null`,\n (v: unknown) => v === null || type.check(v)\n )\n}\n\n/** Create an optional version of a type (nullable + undefined) */\nexport function Optional<T>(\n type: RuntimeType<T>\n): RuntimeType<T | null | undefined> {\n return Type<T | null | undefined>(\n `${type.description} (optional)`,\n (v: unknown) => v === null || v === undefined || type.check(v)\n )\n}\n\n/**\n * Create a union type\n *\n * Two forms:\n * Union(...types: RuntimeType[]) - combine existing types\n * Union(description, values) - create literal union from values\n *\n * @example\n * // From RuntimeTypes\n * const StringOrNumber = Union(TString, TNumber)\n *\n * // From literal values (used by TJS syntax)\n * const Direction = Union('cardinal direction', ['up', 'down', 'left', 'right'])\n */\nexport function Union<T extends unknown[]>(\n descriptionOrType: string | RuntimeType,\n valuesOrType?: T | RuntimeType,\n ...restTypes: RuntimeType[]\n): RuntimeType {\n // New form: Union(description, values[])\n if (typeof descriptionOrType === 'string' && Array.isArray(valuesOrType)) {\n const description = descriptionOrType\n const values = valuesOrType as unknown[]\n const valueSet = new Set(values)\n\n const result: RuntimeType & { values: unknown[] } = {\n description,\n check: (v: unknown): v is T[number] => valueSet.has(v),\n __runtimeType: true as const,\n values, // Expose values for introspection\n }\n return result\n }\n\n // Old form: Union(...types: RuntimeType[])\n const types: RuntimeType[] = []\n if (isRuntimeType(descriptionOrType)) {\n types.push(descriptionOrType)\n }\n if (isRuntimeType(valuesOrType)) {\n types.push(valuesOrType as RuntimeType)\n }\n types.push(...restTypes)\n\n const description = types.map((t) => t.description).join(' | ')\n return Type(description, (v: unknown) => types.some((t) => t.check(v)))\n}\n\n/** Create an array type */\nexport function TArray<T>(itemType: RuntimeType<T>): RuntimeType<T[]> {\n return Type<T[]>(\n `array of ${itemType.description}`,\n (v: unknown) => Array.isArray(v) && v.every((item) => itemType.check(item))\n )\n}\n\n// ============================================================================\n// Generic Types\n// ============================================================================\n\n/** Type parameter - can be a RuntimeType, schema, or example value */\nexport type TypeParam = RuntimeType | Base<any> | JSONSchema | unknown\n\n/** Generic type factory */\nexport interface GenericType<TParams extends string[] = string[]> {\n /** Instantiate the generic with concrete type arguments */\n (...typeArgs: TypeParam[]): RuntimeType\n /** The type parameter names */\n readonly params: TParams\n /** Description template */\n readonly description: string\n}\n\n/**\n * Convert a type param to a check function\n */\nfunction typeParamToCheck(param: TypeParam): (value: unknown) => boolean {\n if (isRuntimeType(param)) {\n return (v) => param.check(v)\n }\n // Check if it's a schema builder (has .schema property)\n if (param && typeof param === 'object' && 'schema' in param) {\n return (v) => validate(v, param as Base<any>)\n }\n // It's an example value - infer schema using s.infer\n const schema = s.infer(param)\n return (v) => validate(v, schema)\n}\n\n/**\n * Create a generic (parameterized) type factory\n *\n * @param params Array of type parameter names, with optional defaults: ['T', ['U', defaultSchema]]\n * @param predicate Function receiving (value, ...typeChecks) where typeChecks are validation functions\n * @param description Human-readable description template (type params will be substituted)\n *\n * @example\n * // Pair<T, U>\n * const Pair = Generic(\n * ['T', 'U'],\n * (x, checkT, checkU) =>\n * Array.isArray(x) && x.length === 2 && checkT(x[0]) && checkU(x[1]),\n * 'Pair<T, U>'\n * )\n *\n * // Usage: Pair(TString, TNumber) creates a type for [string, number]\n * // Or with examples: Pair('', 0)\n */\nexport function Generic<TParams extends string[]>(\n params: (string | [string, TypeParam])[],\n predicate: (\n value: unknown,\n ...typeChecks: Array<(v: unknown) => boolean>\n ) => boolean,\n description: string\n): GenericType<TParams> {\n // Extract param names and defaults\n const paramNames: string[] = []\n const defaults: (TypeParam | undefined)[] = []\n\n for (const p of params) {\n if (typeof p === 'string') {\n paramNames.push(p)\n defaults.push(undefined)\n } else {\n paramNames.push(p[0])\n defaults.push(p[1])\n }\n }\n\n // The factory function\n const factory = (...typeArgs: TypeParam[]): RuntimeType => {\n // Resolve type arguments, using defaults where not provided\n const checks = paramNames.map((_, i) => {\n const arg = i < typeArgs.length ? typeArgs[i] : defaults[i]\n if (arg === undefined) {\n // No arg and no default - accept anything\n return () => true\n }\n return typeParamToCheck(arg)\n })\n\n // Build description with substituted types\n let desc = description\n paramNames.forEach((name, i) => {\n const arg = i < typeArgs.length ? typeArgs[i] : defaults[i]\n let typeStr = 'any'\n if (isRuntimeType(arg)) {\n typeStr = arg.description\n } else if (arg !== undefined) {\n typeStr = typeof arg === 'string' ? 'string' : JSON.stringify(arg)\n }\n desc = desc.replace(new RegExp(`\\\\b${name}\\\\b`, 'g'), typeStr)\n })\n\n return Type(desc, (value: unknown) => predicate(value, ...checks))\n }\n\n ;(factory as any).params = paramNames as TParams\n ;(factory as any).description = description\n\n return factory as GenericType<TParams>\n}\n\n// ============================================================================\n// Built-in Generic Types\n// ============================================================================\n\n/** Pair<T, U> - 2-element tuple */\nexport const TPair = Generic(\n ['T', 'U'],\n (x, checkT, checkU) =>\n Array.isArray(x) && x.length === 2 && checkT(x[0]) && checkU(x[1]),\n 'Pair<T, U>'\n)\n\n/** Record<V> - object with string keys and values of type V */\nexport const TRecord = Generic(\n ['V'],\n (x, checkV) =>\n typeof x === 'object' &&\n x !== null &&\n !Array.isArray(x) &&\n Object.values(x).every(checkV),\n 'Record<string, V>'\n)\n\n// ============================================================================\n// Enum Types\n// ============================================================================\n\n/** Enum type with bidirectional lookup */\nexport interface EnumType<\n T extends Record<string, string | number> = Record<string, string | number>\n> extends RuntimeType<T[keyof T]> {\n /** The enum members as { Name: value } */\n readonly members: T\n /** Reverse lookup: value -> name */\n readonly names: Record<string | number, string>\n /** Get all valid values */\n readonly values: Array<T[keyof T]>\n /** Get all member names */\n readonly keys: Array<keyof T>\n}\n\n/**\n * Create an enum type with bidirectional lookup\n *\n * @param description Human-readable description\n * @param members Object mapping names to values { Pending: 0, Active: 1 }\n *\n * @example\n * const Status = Enum('task status', { Pending: 0, Active: 1, Done: 2 })\n * Status.check(0) // true\n * Status.check('done') // false\n * Status.members.Pending // 0\n * Status.names[0] // 'Pending'\n * Status.values // [0, 1, 2]\n * Status.keys // ['Pending', 'Active', 'Done']\n *\n * const Color = Enum('CSS color', { Red: 'red', Green: 'green', Blue: 'blue' })\n * Color.check('red') // true\n * Color.members.Red // 'red'\n */\nexport function Enum<T extends Record<string, string | number>>(\n description: string,\n members: T\n): EnumType<T> {\n const values = Object.values(members) as Array<T[keyof T]>\n const valueSet = new Set(values)\n const keys = Object.keys(members) as Array<keyof T>\n\n // Build reverse lookup\n const names: Record<string | number, string> = {}\n for (const [key, value] of Object.entries(members)) {\n names[value] = key\n }\n\n const enumType: EnumType<T> = {\n description,\n check: (v: unknown): v is T[keyof T] => valueSet.has(v as T[keyof T]),\n __runtimeType: true as const,\n members,\n names,\n values,\n keys,\n }\n\n return enumType\n}\n",
20
21
  "/**\n * TJS Schema - Runtime type system for Typed JavaScript\n *\n * Builds on tosijs-schema to provide:\n * - Schema(x) callable for inference by example\n * - Schema.type(x) for \"fixed typeof\" (null returns 'null', not 'object')\n * - All tosijs-schema methods (string, number, object, array, etc.)\n *\n * Usage:\n * Schema('hello') // Schema matching string\n * Schema(42) // Schema matching number (integer)\n * Schema(null) // Schema matching null\n * Schema(undefined) // Schema matching undefined\n * Schema([1, 2, 3]) // Schema matching array of integers\n * Schema({name: 'Anne'}) // Schema matching object with name: string\n *\n * Schema.type(null) // 'null' (not 'object' like typeof)\n * Schema.type(undefined) // 'undefined'\n * Schema.type([]) // 'array' (not 'object' like typeof)\n *\n * Schema.null.validate(x) // true if x is null\n * Schema.undefined.validate(x) // true if x is undefined\n */\n\nimport { s, type Base } from 'tosijs-schema'\n\n/**\n * Get the \"fixed\" type of a value - unlike typeof, correctly handles null and arrays\n */\nfunction getType(value: unknown): string {\n if (value === null) return 'null'\n if (value === undefined) return 'undefined'\n if (Array.isArray(value)) return 'array'\n return typeof value\n}\n\n/**\n * Infer a schema from an example value\n * This wraps tosijs-schema's s.infer() for consistency\n */\nfunction infer(value: unknown): Base<unknown> {\n return s.infer(value)\n}\n\n// The base callable function\nfunction schemaCallable(value: unknown): Base<unknown> {\n return infer(value)\n}\n\n// Add our custom methods\nschemaCallable.type = getType\nschemaCallable.infer = infer\n\n// Create the Schema callable that proxies to s for all other properties\ntype SchemaCallable = {\n (value: unknown): Base<unknown>\n type: (value: unknown) => string\n infer: (value: unknown) => Base<unknown>\n} & typeof s\n\n/**\n * Schema - callable for inference, with all tosijs-schema methods attached\n * Uses a Proxy to delegate property access to tosijs-schema's s object\n */\nexport const Schema: SchemaCallable = new Proxy(schemaCallable as any, {\n get(target, prop) {\n // Our custom methods take precedence\n if (prop === 'type') return getType\n if (prop === 'infer') return infer\n // Delegate everything else to tosijs-schema's s\n return (s as any)[prop]\n },\n apply(target, thisArg, args) {\n // Make it callable - Schema(value) infers schema\n return infer(args[0])\n },\n})\n\n// Re-export useful types from tosijs-schema\nexport type { Base, Infer } from 'tosijs-schema'\n",
@@ -27,7 +28,7 @@
27
28
  "import {\n type Atom,\n type Capabilities,\n type RunResult,\n type RuntimeContext,\n type CostOverride,\n coreAtoms,\n AgentError,\n isProcedureToken,\n resolveProcedureToken,\n} from './runtime'\nimport { TypedBuilder, type BaseNode, type BuilderType } from '../builder'\nimport { validate } from 'tosijs-schema'\nimport { transpile } from '../lang/core'\n\n/** Default timeout multiplier: milliseconds per fuel unit */\nconst FUEL_TO_MS = 10 // 1000 fuel = 10 seconds\n\nexport class AgentVM<M extends Record<string, Atom<any, any>>> {\n readonly atoms: typeof coreAtoms & M\n\n constructor(customAtoms: M = {} as M) {\n this.atoms = { ...coreAtoms, ...customAtoms }\n }\n\n get builder(): BuilderType<typeof coreAtoms & M> {\n return new TypedBuilder(this.atoms) as any\n }\n\n // Typed helper for builder\n get Agent(): BuilderType<typeof coreAtoms & M> {\n return new TypedBuilder(this.atoms) as any\n }\n\n /** @deprecated Use `Agent` instead */\n get A99(): BuilderType<typeof coreAtoms & M> {\n return this.Agent\n }\n\n resolve(op: string) {\n return this.atoms[op]\n }\n\n getTools(filter: 'flow' | 'all' | string[] = 'all') {\n let targetAtoms = Object.values(this.atoms)\n\n if (Array.isArray(filter)) {\n targetAtoms = targetAtoms.filter((a) => filter.includes(a.op))\n } else if (filter === 'flow') {\n const flowOps = [\n 'seq',\n 'if',\n 'while',\n 'return',\n 'try',\n 'varSet',\n 'varGet',\n 'scope',\n ]\n targetAtoms = targetAtoms.filter((a) => flowOps.includes(a.op))\n }\n\n return targetAtoms.map((atom) => ({\n type: 'function',\n function: {\n name: atom.op,\n description: atom.docs,\n parameters: atom.inputSchema?.schema ?? {},\n },\n }))\n }\n\n async run(\n astOrToken: BaseNode | string,\n args: Record<string, any> = {},\n options: {\n fuel?: number\n capabilities?: Capabilities\n trace?: boolean\n timeoutMs?: number // Override automatic timeout (fuel * FUEL_TO_MS)\n signal?: AbortSignal // External abort signal (e.g., from caller)\n costOverrides?: Record<string, CostOverride> // Per-atom fuel cost overrides\n context?: Record<string, any> // Request-scoped metadata (auth, permissions, etc.)\n } = {}\n ): Promise<RunResult> {\n // Resolve string input to AST\n let ast: BaseNode\n if (typeof astOrToken === 'string') {\n if (isProcedureToken(astOrToken)) {\n // Procedure token - lookup stored AST\n ast = resolveProcedureToken(astOrToken) as BaseNode\n } else {\n // AJS source code - transpile to AST\n try {\n ast = transpile(astOrToken).ast as BaseNode\n } catch (e: any) {\n throw new Error(`AJS transpilation failed: ${e.message}`)\n }\n }\n } else {\n ast = astOrToken\n }\n\n const startFuel = options.fuel ?? 1000\n\n // Calculate timeout from fuel budget (generous: 10ms per fuel unit)\n // Can be overridden with explicit timeoutMs option\n const timeoutMs = options.timeoutMs ?? startFuel * FUEL_TO_MS\n\n // Default Capabilities\n const capabilities = options.capabilities ?? {}\n\n // Track warnings\n const warnings: string[] = []\n\n // Default In-Memory Store if none provided (with warning)\n if (!capabilities.store) {\n const memoryStore = new Map<string, any>()\n let warned = false\n capabilities.store = {\n get: async (key) => {\n if (!warned) {\n warned = true\n warnings.push(\n 'Using default in-memory store (not suitable for production)'\n )\n }\n return memoryStore.get(key)\n },\n set: async (key, value) => {\n if (!warned) {\n warned = true\n warnings.push(\n 'Using default in-memory store (not suitable for production)'\n )\n }\n memoryStore.set(key, value)\n },\n }\n }\n\n // Create abort controller for timeout enforcement\n const controller = new AbortController()\n const timeout = setTimeout(() => controller.abort(), timeoutMs)\n\n // Link external signal if provided\n if (options.signal) {\n options.signal.addEventListener('abort', () => controller.abort())\n }\n\n const ctx: RuntimeContext = {\n fuel: { current: startFuel },\n args,\n state: {},\n consts: new Set(),\n capabilities,\n resolver: (op) => this.resolve(op),\n output: undefined,\n signal: controller.signal,\n costOverrides: options.costOverrides,\n context: options.context,\n warnings, // Shared warnings array\n }\n\n if (options.trace) {\n ctx.trace = []\n }\n\n if (ast.op !== 'seq')\n throw new Error(\n \"Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).\"\n )\n\n // Input validation: validate args against the agent's input schema\n const inputSchema = (ast as any).inputSchema\n if (inputSchema && !validate(args, inputSchema)) {\n const error = new AgentError(\n `Input validation failed: args do not match expected schema`,\n 'vm.run'\n )\n return {\n result: error,\n error,\n fuelUsed: 0,\n trace: ctx.trace,\n warnings: warnings.length > 0 ? warnings : undefined,\n }\n }\n\n try {\n // Race execution against timeout\n await Promise.race([\n this.resolve('seq')?.exec(ast, ctx),\n new Promise<never>((_, reject) => {\n controller.signal.addEventListener('abort', () => {\n reject(\n new Error(\n `Execution timeout after ${timeoutMs}ms (fuel: ${startFuel}). Consider increasing fuel or optimizing your agent.`\n )\n )\n })\n // If already aborted, reject immediately\n if (controller.signal.aborted) {\n reject(\n new Error(\n `Execution timeout after ${timeoutMs}ms (fuel: ${startFuel}). Consider increasing fuel or optimizing your agent.`\n )\n )\n }\n }),\n ])\n } catch (e: any) {\n // Convert timeout error to AgentError\n if (\n e.message?.includes('timeout') ||\n e.message?.includes('aborted') ||\n controller.signal.aborted\n ) {\n ctx.error = new AgentError(\n `Execution timeout after ${timeoutMs}ms (fuel: ${startFuel}). Consider increasing fuel or optimizing your agent.`,\n 'vm.run'\n )\n } else {\n // Re-throw non-timeout errors\n throw e\n }\n } finally {\n clearTimeout(timeout)\n }\n\n // If there's an error but no output was set, set the error as output\n if (ctx.error && ctx.output === undefined) {\n ctx.output = ctx.error\n }\n\n // Merge any warnings added via console.warn\n const allWarnings = [...warnings, ...(ctx.warnings ?? [])]\n\n return {\n result: ctx.output,\n error: ctx.error,\n fuelUsed: startFuel - ctx.fuel.current,\n trace: ctx.trace,\n warnings: allWarnings.length > 0 ? allWarnings : undefined,\n }\n }\n}\n",
28
29
  "/**\n * TJS Core - Essential transpiler functions without TypeScript dependency\n *\n * This module provides the core AJS transpilation functions.\n * Import from here (not ./index) to avoid pulling in the TS compiler.\n */\n\nimport type { SeqNode } from '../builder'\nimport type {\n TranspileOptions,\n TranspileResult,\n FunctionSignature,\n TypeDescriptor,\n} from './types'\nimport { parse, validateSingleFunction } from './parser'\nimport { transformFunction } from './emitters/ast'\nimport {\n transpileToJS,\n type TJSTranspileResult,\n type TJSTranspileOptions,\n} from './emitters/js'\n\nexport * from './types'\nexport {\n parse,\n preprocess,\n extractTDoc,\n validateSingleFunction,\n} from './parser'\nexport { transformFunction } from './emitters/ast'\n\n/**\n * Transpile JavaScript source code to Agent99 AST\n */\nexport function transpile(\n source: string,\n options: TranspileOptions = {}\n): TranspileResult {\n const {\n ast: program,\n returnType,\n originalSource,\n requiredParams,\n } = parse(source, {\n filename: options.filename,\n colonShorthand: true,\n vmTarget: true,\n })\n\n const func = validateSingleFunction(program, options.filename)\n\n const { ast, signature, warnings } = transformFunction(\n func,\n originalSource,\n returnType,\n options,\n requiredParams\n )\n\n return {\n ast: ast as SeqNode,\n signature,\n warnings,\n }\n}\n\n/**\n * Transpile AsyncJS source and return just the AST\n */\nexport function ajs(strings: TemplateStringsArray, ...values: any[]): SeqNode\nexport function ajs(source: string): SeqNode\nexport function ajs(\n sourceOrStrings: string | TemplateStringsArray,\n ...values: any[]\n): SeqNode {\n if (typeof sourceOrStrings === 'string') {\n return transpile(sourceOrStrings).ast\n }\n const source = sourceOrStrings.reduce(\n (acc, str, i) =>\n acc + str + (values[i] !== undefined ? String(values[i]) : ''),\n ''\n )\n return transpile(source).ast\n}\n\n/**\n * Create a function with attached signature for introspection\n */\nexport function createAgent(\n source: string,\n vm: { run: (ast: any, args: any, options?: any) => Promise<any> },\n runOptions?: { fuel?: number; capabilities?: any }\n): ((args: Record<string, any>) => Promise<any>) & {\n signature: FunctionSignature\n ast: SeqNode\n} {\n const { ast, signature } = transpile(source)\n\n const agent = async (args: Record<string, any>) => {\n const result = await vm.run(ast, args, runOptions)\n return result.result\n }\n\n ;(agent as any).signature = signature\n ;(agent as any).ast = ast\n\n return agent as any\n}\n\n/**\n * Convert TypeDescriptor to JSON Schema\n */\nfunction typeDescriptorToJsonSchema(type: TypeDescriptor): any {\n switch (type.kind) {\n case 'string':\n return { type: 'string' }\n case 'number':\n return { type: 'number' }\n case 'boolean':\n return { type: 'boolean' }\n case 'null':\n return { type: 'null' }\n case 'array':\n return {\n type: 'array',\n items: type.items ? typeDescriptorToJsonSchema(type.items) : {},\n }\n case 'object':\n if (!type.shape) {\n return { type: 'object' }\n }\n return {\n type: 'object',\n properties: Object.fromEntries(\n Object.entries(type.shape).map(([k, v]) => [\n k,\n typeDescriptorToJsonSchema(v),\n ])\n ),\n }\n case 'union':\n if (!type.members) {\n return {}\n }\n return {\n anyOf: type.members.map(typeDescriptorToJsonSchema),\n }\n case 'any':\n default:\n return {}\n }\n}\n\n/**\n * Get tool definitions from a set of agent functions\n */\nexport function getToolDefinitions(\n agents: Record<string, { signature: FunctionSignature }>\n): Array<{\n type: 'function'\n function: {\n name: string\n description?: string\n parameters: {\n type: 'object'\n properties: Record<string, any>\n required: string[]\n }\n }\n}> {\n return Object.entries(agents).map(([name, agent]) => {\n const sig = agent.signature\n\n const properties: Record<string, any> = {}\n const required: string[] = []\n\n for (const [paramName, param] of Object.entries(sig.parameters)) {\n properties[paramName] = typeDescriptorToJsonSchema(param.type)\n if (param.description) {\n properties[paramName].description = param.description\n }\n if (param.required) {\n required.push(paramName)\n }\n }\n\n return {\n type: 'function' as const,\n function: {\n name,\n description: sig.description,\n parameters: {\n type: 'object' as const,\n properties,\n required,\n },\n },\n }\n })\n}\n\n/**\n * Transpile TJS source to JavaScript with type metadata.\n * Works as both a function and a tagged template literal.\n */\nexport function tjs(\n strings: TemplateStringsArray,\n ...values: any[]\n): TJSTranspileResult\nexport function tjs(\n source: string,\n options?: TJSTranspileOptions\n): TJSTranspileResult\nexport function tjs(\n sourceOrStrings: string | TemplateStringsArray,\n optionsOrFirstValue?: TJSTranspileOptions | any,\n ...restValues: any[]\n): TJSTranspileResult {\n if (typeof sourceOrStrings === 'string') {\n return transpileToJS(\n sourceOrStrings,\n optionsOrFirstValue as TJSTranspileOptions\n )\n }\n // Tagged template literal\n const values =\n optionsOrFirstValue !== undefined\n ? [optionsOrFirstValue, ...restValues]\n : restValues\n const source = sourceOrStrings.reduce(\n (acc, str, i) =>\n acc + str + (values[i] !== undefined ? String(values[i]) : ''),\n ''\n )\n return transpileToJS(source)\n}\n",
29
30
  "/**\n * Safe Eval and SafeFunction - VM-backed dynamic code execution\n *\n * Import this module explicitly when you need to execute code dynamically.\n * This pulls in the AJS transpiler and VM (~50KB gzipped).\n *\n * For static code (pre-transpiled), use the lite runtime instead.\n */\n\nimport { AgentVM } from '../vm/vm'\nimport { transpile } from './core'\n\n// Singleton VM instance (lazy)\nlet _vm: AgentVM<Record<string, never>> | null = null\nconst getVM = () => (_vm ??= new AgentVM())\n\n/**\n * Walk an AST and wrap return values in { __result: value } objects.\n * This lets Eval/SafeFunction return arbitrary values through the VM,\n * which enforces strict object returns for agent composability.\n */\nfunction wrapReturnValues(node: any): void {\n if (!node || typeof node !== 'object') return\n if (Array.isArray(node)) {\n for (const child of node) wrapReturnValues(child)\n return\n }\n if (node.op === 'return' && 'value' in node) {\n node.value = { __result: node.value }\n }\n // Recurse into steps (seq), branches (if/else), etc.\n if (node.steps) wrapReturnValues(node.steps)\n if (node.then) wrapReturnValues(node.then)\n if (node.else) wrapReturnValues(node.else)\n if (node.body) wrapReturnValues(node.body)\n}\n\n/** Capabilities that can be injected into SafeFunction/Eval */\nexport interface SafeCapabilities {\n /** Fetch function for HTTP requests */\n fetch?: typeof globalThis.fetch\n /** Console for logging */\n console?: Pick<typeof console, 'log' | 'warn' | 'error'>\n /** Additional capabilities to expose */\n [key: string]: unknown\n}\n\n/** Options for Eval */\nexport interface EvalOptions {\n /** Code to evaluate (expression or statements with return) */\n code: string\n /** Context variables available to the code */\n context?: Record<string, unknown>\n /** Fuel budget (default: 1000) */\n fuel?: number\n /** Timeout in milliseconds (default: fuel * 10) */\n timeoutMs?: number\n /** Capabilities to inject (fetch, console, etc.) */\n capabilities?: SafeCapabilities\n}\n\n/**\n * Safely evaluate code in a sandboxed VM with fuel metering\n */\nexport async function Eval(options: EvalOptions): Promise<{\n result: unknown\n fuelUsed: number\n error?: { message: string }\n}> {\n const {\n code,\n context = {},\n fuel = 1000,\n timeoutMs,\n capabilities = {},\n } = options\n\n const vm = getVM()\n\n // Wrap code in a function - detect if it's an expression or has return\n const hasReturn = /\\breturn\\b/.test(code)\n const wrappedCode = hasReturn\n ? `function __eval() { ${code} }`\n : `function __eval() { return (${code}) }`\n\n try {\n const { ast } = transpile(wrappedCode)\n\n // Box return values in objects for VM strict-return compliance.\n // Walk AST and wrap each { op: 'return', value } into\n // { op: 'return', value: { __result: originalValue } }\n wrapReturnValues(ast)\n\n const vmResult = await vm.run(ast, context, {\n fuel,\n timeoutMs,\n capabilities,\n })\n\n // Unwrap the boxed result\n const raw = vmResult.result\n const result =\n raw && typeof raw === 'object' && '__result' in raw ? raw.__result : raw\n\n return {\n result,\n fuelUsed: vmResult.fuelUsed,\n error: vmResult.error\n ? { message: vmResult.error.message || String(vmResult.error) }\n : undefined,\n }\n } catch (err: any) {\n return {\n result: undefined,\n fuelUsed: fuel,\n error: { message: err.message || String(err) },\n }\n }\n}\n\n/** Options for SafeFunction */\nexport interface SafeFunctionOptions {\n /** Function body code */\n body: string\n /** Parameter names (in order) */\n params?: string[]\n /** Fuel budget per invocation (default: 1000) */\n fuel?: number\n /** Timeout in milliseconds (default: fuel * 10) */\n timeoutMs?: number\n /** Capabilities to inject (fetch, console, etc.) */\n capabilities?: SafeCapabilities\n}\n\n/**\n * Create a reusable sandboxed function with fuel metering\n */\nexport async function SafeFunction(options: SafeFunctionOptions): Promise<\n (...args: unknown[]) => Promise<{\n result: unknown\n fuelUsed: number\n error?: { message: string }\n }>\n> {\n const {\n body,\n params = [],\n fuel = 1000,\n timeoutMs,\n capabilities = {},\n } = options\n\n const vm = getVM()\n\n // Build function source with parameters\n const paramList = params.join(', ')\n const source = `function __safeFn(${paramList}) { ${body} }`\n\n // Pre-compile the AST (done once at creation time)\n const { ast } = transpile(source)\n\n // Box return values for VM strict-return compliance\n wrapReturnValues(ast)\n\n // Return a function that runs the pre-compiled AST\n return async (...args: unknown[]) => {\n const context: Record<string, unknown> = {}\n for (let i = 0; i < params.length; i++) {\n context[params[i]] = args[i]\n }\n\n try {\n const vmResult = await vm.run(ast, context, {\n fuel,\n timeoutMs,\n capabilities,\n })\n\n // Unwrap the boxed result\n const raw = vmResult.result\n const result =\n raw && typeof raw === 'object' && '__result' in raw ? raw.__result : raw\n\n return {\n result,\n fuelUsed: vmResult.fuelUsed,\n error: vmResult.error\n ? { message: vmResult.error.message || String(vmResult.error) }\n : undefined,\n }\n } catch (err: any) {\n return {\n result: undefined,\n fuelUsed: fuel,\n error: { message: err.message || String(err) },\n }\n }\n }\n}\n",
30
- "/**\n * AsyncJS Transpiler\n *\n * Transforms AsyncJS (\"Better JavaScript\") into tjs-lang AST.\n *\n * @example\n * ```typescript\n * import { ajs, transpile } from 'tjs-lang'\n *\n * // Simple function\n * const ast = ajs(`\n * function greet({ name }) {\n * let msg = template({ tmpl: 'Hello {{name}}', vars: { name } })\n * return { msg }\n * }\n * `)\n *\n * // Execute\n * const vm = new AgentVM()\n * await vm.run(ast, { name: 'World' })\n * ```\n */\n\nimport type { SeqNode } from '../builder'\nimport type {\n TranspileOptions,\n TranspileResult,\n FunctionSignature,\n} from './types'\nimport { parse, validateSingleFunction } from './parser'\nimport { transformFunction } from './emitters/ast'\n\nexport * from './types'\nexport { parse, preprocess, extractTDoc } from './parser'\nexport { transformFunction } from './emitters/ast'\nexport {\n transpileToJS,\n stripModuleSyntax,\n stripTjsPreamble,\n type TJSTranspileOptions,\n type TJSTranspileResult,\n type TJSTypeInfo,\n} from './emitters/js'\nexport {\n fromTS,\n type FromTSOptions,\n type FromTSResult,\n} from './emitters/from-ts'\nexport * from './inference'\nexport { Schema } from './schema'\nexport { MetadataCache, getGlobalCache, setGlobalCache } from './metadata-cache'\nexport {\n lint,\n type LintResult,\n type LintDiagnostic,\n type LintOptions,\n} from './linter'\nexport {\n generateDocs,\n generateDocsMarkdown,\n type DocResult,\n type DocItem,\n type FunctionTypeInfo,\n type ParamTypeInfo,\n} from './docs'\nexport {\n extractTests,\n assertFunction,\n expectFunction,\n testUtils,\n type ExtractedTest,\n type ExtractedMock,\n type TestExtractionResult,\n} from './tests'\nexport {\n runtime,\n installRuntime,\n isError,\n error,\n typeOf,\n checkType,\n validateArgs,\n wrap,\n emitRuntimeWrapper,\n TJS_VERSION,\n type TJSError,\n} from './runtime'\nexport {\n compileToWasm,\n instantiateWasm,\n registerWasmBlock,\n compileWasmBlocks,\n type WasmCompileResult,\n} from './wasm'\nexport type { WasmBlock } from './parser'\nexport {\n Eval,\n SafeFunction,\n type EvalOptions,\n type SafeFunctionOptions,\n} from './eval'\n// Note: MetadataCache, getGlobalCache, setGlobalCache already exported above\nexport {\n hashSource,\n hashSourceSync,\n type CacheEntry,\n type CachedTranspileResult,\n type CachedTJSResult,\n type CacheStats,\n} from './metadata-cache'\n\n// Re-import for local use in this file\nimport { MetadataCache, getGlobalCache } from './metadata-cache'\n\n/**\n * Transpile JavaScript source code to Agent99 AST\n *\n * @param source - JavaScript source code containing a single function\n * @param options - Transpilation options\n * @returns The AST, signature, and any warnings\n *\n * @example\n * ```typescript\n * const result = transpile(`\n * function search(query: 'string', limit = 10) {\n * let results = storeSearch({ query, limit })\n * return { results }\n * }\n * `)\n *\n * console.log(result.signature)\n * // {\n * // name: 'search',\n * // parameters: {\n * // query: { type: 'string', required: true },\n * // limit: { type: 'number', required: false, default: 10 }\n * // }\n * // }\n * ```\n */\nexport function transpile(\n source: string,\n options: TranspileOptions = {}\n): TranspileResult {\n // Parse the source\n // vmTarget: true because AJS runs in the VM which handles == correctly\n const {\n ast: program,\n returnType,\n originalSource,\n requiredParams,\n } = parse(source, {\n filename: options.filename,\n colonShorthand: true,\n vmTarget: true,\n })\n\n // Validate structure\n const func = validateSingleFunction(program, options.filename)\n\n // Transform to Agent99 AST\n const { ast, signature, warnings } = transformFunction(\n func,\n originalSource,\n returnType,\n options,\n requiredParams\n )\n\n return {\n ast: ast as SeqNode,\n signature,\n warnings,\n }\n}\n\n/**\n * Transpile AsyncJS source and return just the AST.\n * Works as both a function and a tagged template literal.\n *\n * @example\n * ```typescript\n * // As a function\n * const ast = ajs(`\n * function agent({ topic }) {\n * let results = search({ query: topic })\n * return { results }\n * }\n * `)\n *\n * // As a tagged template literal\n * const ast2 = ajs`\n * function greet({ name }) {\n * let msg = template({ tmpl: 'Hello {{name}}', vars: { name } })\n * return { msg }\n * }\n * `\n * ```\n */\nexport function ajs(strings: TemplateStringsArray, ...values: any[]): SeqNode\nexport function ajs(source: string): SeqNode\nexport function ajs(\n sourceOrStrings: string | TemplateStringsArray,\n ...values: any[]\n): SeqNode {\n if (typeof sourceOrStrings === 'string') {\n return transpile(sourceOrStrings).ast\n }\n // Tagged template literal\n const source = sourceOrStrings.reduce(\n (acc, str, i) =>\n acc + str + (values[i] !== undefined ? String(values[i]) : ''),\n ''\n )\n return transpile(source).ast\n}\n\n/**\n * Transpile TJS source to JavaScript with type metadata.\n * Works as both a function and a tagged template literal.\n *\n * @example\n * ```typescript\n * // As a function\n * const result = tjs(`\n * function greet(name: 'world') -> '' {\n * return \\`Hello, \\${name}!\\`\n * }\n * `)\n * console.log(result.code)\n * // function greet(name = 'world') { return \\`Hello, \\${name}!\\` }\n * // greet.__tjs = { params: { name: { type: 'string', required: true } }, returns: { type: 'string' } }\n *\n * // As a tagged template literal\n * const result2 = tjs`\n * function add(a: 0, b: 0) -> 0 {\n * return a + b\n * }\n * `\n * ```\n */\nimport {\n transpileToJS,\n type TJSTranspileResult,\n type TJSTranspileOptions,\n} from './emitters/js'\n\nexport function tjs(\n strings: TemplateStringsArray,\n ...values: any[]\n): TJSTranspileResult\nexport function tjs(\n source: string,\n options?: TJSTranspileOptions\n): TJSTranspileResult\nexport function tjs(\n sourceOrStrings: string | TemplateStringsArray,\n optionsOrFirstValue?: TJSTranspileOptions | any,\n ...restValues: any[]\n): TJSTranspileResult {\n if (typeof sourceOrStrings === 'string') {\n return transpileToJS(\n sourceOrStrings,\n optionsOrFirstValue as TJSTranspileOptions\n )\n }\n // Tagged template literal\n const values =\n optionsOrFirstValue !== undefined\n ? [optionsOrFirstValue, ...restValues]\n : restValues\n const source = sourceOrStrings.reduce(\n (acc, str, i) =>\n acc + str + (values[i] !== undefined ? String(values[i]) : ''),\n ''\n )\n return transpileToJS(source)\n}\n\n// ============================================================================\n// Cached transpilation functions\n// ============================================================================\n\n/**\n * Transpile with caching support\n *\n * Uses IndexedDB to cache transpilation results. On cache hit,\n * returns immediately without re-parsing. Particularly useful for\n * playground editors and development workflows.\n *\n * @example\n * ```typescript\n * const cache = new MetadataCache()\n * await cache.open()\n *\n * // First call: parses and caches\n * const result1 = await transpileWithCache(source, {}, cache)\n *\n * // Second call: returns from cache\n * const result2 = await transpileWithCache(source, {}, cache)\n * ```\n */\nexport async function transpileWithCache(\n source: string,\n options: TranspileOptions = {},\n cache?: MetadataCache\n): Promise<TranspileResult> {\n const effectiveCache = cache ?? (await getGlobalCache())\n\n // Try cache first\n const cached = await effectiveCache.getTranspile(source)\n if (cached) {\n return {\n ast: cached.ast,\n signature: cached.signature,\n warnings: cached.warnings,\n }\n }\n\n // Cache miss - transpile\n const result = transpile(source, options)\n\n // Store in cache (don't await - fire and forget)\n effectiveCache.setTranspile(source, {\n ast: result.ast,\n signature: result.signature,\n warnings: result.warnings,\n })\n\n return result\n}\n\n/**\n * Transpile TJS to JavaScript with caching support\n *\n * @example\n * ```typescript\n * const cache = new MetadataCache()\n * await cache.open()\n *\n * // First call: transpiles and caches\n * const result1 = await tjsWithCache(source, {}, cache)\n *\n * // Second call: returns from cache\n * const result2 = await tjsWithCache(source, {}, cache)\n * ```\n */\nexport async function tjsWithCache(\n source: string,\n options: import('./emitters/js').TJSTranspileOptions = {},\n cache?: MetadataCache\n): Promise<import('./emitters/js').TJSTranspileResult> {\n const effectiveCache = cache ?? (await getGlobalCache())\n\n // Try cache first\n const cached = await effectiveCache.getTJS(source)\n if (cached) {\n return {\n code: cached.code,\n types: cached.types,\n metadata: cached.types, // alias\n testRunner: cached.testRunner,\n testCount: cached.testCount,\n warnings: cached.warnings,\n }\n }\n\n // Cache miss - transpile\n const result = transpileToJS(source, options)\n\n // Store in cache (don't await - fire and forget)\n effectiveCache.setTJS(source, {\n code: result.code,\n types: result.types,\n testRunner: result.testRunner,\n testCount: result.testCount,\n warnings: result.warnings,\n })\n\n return result\n}\n\n/**\n * Create a function with attached signature for introspection\n *\n * This wraps the transpiled AST in a callable that includes\n * the .signature property for self-documentation.\n *\n * @example\n * ```typescript\n * const search = createAgent(`\n * function search(query: 'string', limit = 10) {\n * let results = storeSearch({ query, limit })\n * return { results }\n * }\n * `, vm)\n *\n * // Introspect\n * console.log(search.signature.parameters)\n *\n * // Execute\n * const result = await search({ query: 'hello' })\n * ```\n */\nexport function createAgent(\n source: string,\n vm: { run: (ast: any, args: any, options?: any) => Promise<any> },\n runOptions?: { fuel?: number; capabilities?: any }\n): ((args: Record<string, any>) => Promise<any>) & {\n signature: FunctionSignature\n ast: SeqNode\n} {\n const { ast, signature } = transpile(source)\n\n const agent = async (args: Record<string, any>) => {\n const result = await vm.run(ast, args, runOptions)\n return result.result\n }\n\n // Attach metadata\n ;(agent as any).signature = signature\n ;(agent as any).ast = ast\n\n return agent as any\n}\n\n/**\n * Get tool definitions from a set of agent functions\n *\n * This converts function signatures to OpenAI-compatible tool definitions.\n *\n * @example\n * ```typescript\n * const search = createAgent(searchSource, vm)\n * const summarize = createAgent(summarizeSource, vm)\n *\n * const tools = getToolDefinitions({ search, summarize })\n * // Ready to pass to LLM API\n * ```\n */\nexport function getToolDefinitions(\n agents: Record<string, { signature: FunctionSignature }>\n): Array<{\n type: 'function'\n function: {\n name: string\n description?: string\n parameters: {\n type: 'object'\n properties: Record<string, any>\n required: string[]\n }\n }\n}> {\n return Object.entries(agents).map(([name, agent]) => {\n const sig = agent.signature\n\n const properties: Record<string, any> = {}\n const required: string[] = []\n\n for (const [paramName, param] of Object.entries(sig.parameters)) {\n properties[paramName] = typeDescriptorToJsonSchema(param.type)\n if (param.description) {\n properties[paramName].description = param.description\n }\n if (param.required) {\n required.push(paramName)\n }\n }\n\n return {\n type: 'function' as const,\n function: {\n name: sig.name || name,\n description: sig.description,\n parameters: {\n type: 'object' as const,\n properties,\n required,\n },\n },\n }\n })\n}\n\n/**\n * Convert TypeDescriptor to JSON Schema\n */\nfunction typeDescriptorToJsonSchema(\n type: import('./types').TypeDescriptor\n): any {\n switch (type.kind) {\n case 'string':\n return { type: 'string' }\n case 'number':\n return { type: 'number' }\n case 'boolean':\n return { type: 'boolean' }\n case 'null':\n return { type: 'null' }\n case 'array':\n return {\n type: 'array',\n items: type.items ? typeDescriptorToJsonSchema(type.items) : {},\n }\n case 'object':\n if (!type.shape) {\n return { type: 'object' }\n }\n return {\n type: 'object',\n properties: Object.fromEntries(\n Object.entries(type.shape).map(([k, v]) => [\n k,\n typeDescriptorToJsonSchema(v),\n ])\n ),\n }\n case 'union':\n if (!type.members) {\n return {}\n }\n return {\n anyOf: type.members.map(typeDescriptorToJsonSchema),\n }\n case 'any':\n default:\n return {}\n }\n}\n",
31
+ "/**\n * AsyncJS Transpiler\n *\n * Transforms AsyncJS (\"Better JavaScript\") into tjs-lang AST.\n *\n * @example\n * ```typescript\n * import { ajs, transpile } from 'tjs-lang'\n *\n * // Simple function\n * const ast = ajs(`\n * function greet({ name }) {\n * let msg = template({ tmpl: 'Hello {{name}}', vars: { name } })\n * return { msg }\n * }\n * `)\n *\n * // Execute\n * const vm = new AgentVM()\n * await vm.run(ast, { name: 'World' })\n * ```\n */\n\nimport type { SeqNode } from '../builder'\nimport type {\n TranspileOptions,\n TranspileResult,\n FunctionSignature,\n} from './types'\nimport { parse, validateSingleFunction } from './parser'\nimport { transformFunction } from './emitters/ast'\n\nexport * from './types'\nexport { parse, preprocess, extractTDoc } from './parser'\nexport { transformFunction } from './emitters/ast'\nexport {\n transpileToJS,\n stripModuleSyntax,\n stripTjsPreamble,\n type TJSTranspileOptions,\n type TJSTranspileResult,\n type TJSTypeInfo,\n} from './emitters/js'\nexport {\n generateDTS,\n typeDescriptorToTS,\n type GenerateDTSOptions,\n} from './emitters/dts'\nexport {\n fromTS,\n type FromTSOptions,\n type FromTSResult,\n} from './emitters/from-ts'\nexport * from './inference'\nexport { Schema } from './schema'\nexport { MetadataCache, getGlobalCache, setGlobalCache } from './metadata-cache'\nexport {\n lint,\n type LintResult,\n type LintDiagnostic,\n type LintOptions,\n} from './linter'\nexport {\n generateDocs,\n generateDocsMarkdown,\n type DocResult,\n type DocItem,\n type FunctionTypeInfo,\n type ParamTypeInfo,\n} from './docs'\nexport {\n extractTests,\n assertFunction,\n expectFunction,\n testUtils,\n type ExtractedTest,\n type ExtractedMock,\n type TestExtractionResult,\n} from './tests'\nexport {\n runtime,\n installRuntime,\n isError,\n error,\n typeOf,\n checkType,\n validateArgs,\n wrap,\n emitRuntimeWrapper,\n TJS_VERSION,\n type TJSError,\n} from './runtime'\nexport {\n compileToWasm,\n instantiateWasm,\n registerWasmBlock,\n compileWasmBlocks,\n type WasmCompileResult,\n} from './wasm'\nexport type { WasmBlock } from './parser'\nexport {\n Eval,\n SafeFunction,\n type EvalOptions,\n type SafeFunctionOptions,\n} from './eval'\n// Note: MetadataCache, getGlobalCache, setGlobalCache already exported above\nexport {\n hashSource,\n hashSourceSync,\n type CacheEntry,\n type CachedTranspileResult,\n type CachedTJSResult,\n type CacheStats,\n} from './metadata-cache'\n\n// Re-import for local use in this file\nimport { MetadataCache, getGlobalCache } from './metadata-cache'\n\n/**\n * Transpile JavaScript source code to Agent99 AST\n *\n * @param source - JavaScript source code containing a single function\n * @param options - Transpilation options\n * @returns The AST, signature, and any warnings\n *\n * @example\n * ```typescript\n * const result = transpile(`\n * function search(query: 'string', limit = 10) {\n * let results = storeSearch({ query, limit })\n * return { results }\n * }\n * `)\n *\n * console.log(result.signature)\n * // {\n * // name: 'search',\n * // parameters: {\n * // query: { type: 'string', required: true },\n * // limit: { type: 'number', required: false, default: 10 }\n * // }\n * // }\n * ```\n */\nexport function transpile(\n source: string,\n options: TranspileOptions = {}\n): TranspileResult {\n // Parse the source\n // vmTarget: true because AJS runs in the VM which handles == correctly\n const {\n ast: program,\n returnType,\n originalSource,\n requiredParams,\n } = parse(source, {\n filename: options.filename,\n colonShorthand: true,\n vmTarget: true,\n })\n\n // Validate structure\n const func = validateSingleFunction(program, options.filename)\n\n // Transform to Agent99 AST\n const { ast, signature, warnings } = transformFunction(\n func,\n originalSource,\n returnType,\n options,\n requiredParams\n )\n\n return {\n ast: ast as SeqNode,\n signature,\n warnings,\n }\n}\n\n/**\n * Transpile AsyncJS source and return just the AST.\n * Works as both a function and a tagged template literal.\n *\n * @example\n * ```typescript\n * // As a function\n * const ast = ajs(`\n * function agent({ topic }) {\n * let results = search({ query: topic })\n * return { results }\n * }\n * `)\n *\n * // As a tagged template literal\n * const ast2 = ajs`\n * function greet({ name }) {\n * let msg = template({ tmpl: 'Hello {{name}}', vars: { name } })\n * return { msg }\n * }\n * `\n * ```\n */\nexport function ajs(strings: TemplateStringsArray, ...values: any[]): SeqNode\nexport function ajs(source: string): SeqNode\nexport function ajs(\n sourceOrStrings: string | TemplateStringsArray,\n ...values: any[]\n): SeqNode {\n if (typeof sourceOrStrings === 'string') {\n return transpile(sourceOrStrings).ast\n }\n // Tagged template literal\n const source = sourceOrStrings.reduce(\n (acc, str, i) =>\n acc + str + (values[i] !== undefined ? String(values[i]) : ''),\n ''\n )\n return transpile(source).ast\n}\n\n/**\n * Transpile TJS source to JavaScript with type metadata.\n * Works as both a function and a tagged template literal.\n *\n * @example\n * ```typescript\n * // As a function\n * const result = tjs(`\n * function greet(name: 'world') -> '' {\n * return \\`Hello, \\${name}!\\`\n * }\n * `)\n * console.log(result.code)\n * // function greet(name = 'world') { return \\`Hello, \\${name}!\\` }\n * // greet.__tjs = { params: { name: { type: 'string', required: true } }, returns: { type: 'string' } }\n *\n * // As a tagged template literal\n * const result2 = tjs`\n * function add(a: 0, b: 0) -> 0 {\n * return a + b\n * }\n * `\n * ```\n */\nimport {\n transpileToJS,\n type TJSTranspileResult,\n type TJSTranspileOptions,\n} from './emitters/js'\n\nexport function tjs(\n strings: TemplateStringsArray,\n ...values: any[]\n): TJSTranspileResult\nexport function tjs(\n source: string,\n options?: TJSTranspileOptions\n): TJSTranspileResult\nexport function tjs(\n sourceOrStrings: string | TemplateStringsArray,\n optionsOrFirstValue?: TJSTranspileOptions | any,\n ...restValues: any[]\n): TJSTranspileResult {\n if (typeof sourceOrStrings === 'string') {\n return transpileToJS(\n sourceOrStrings,\n optionsOrFirstValue as TJSTranspileOptions\n )\n }\n // Tagged template literal\n const values =\n optionsOrFirstValue !== undefined\n ? [optionsOrFirstValue, ...restValues]\n : restValues\n const source = sourceOrStrings.reduce(\n (acc, str, i) =>\n acc + str + (values[i] !== undefined ? String(values[i]) : ''),\n ''\n )\n return transpileToJS(source)\n}\n\n// ============================================================================\n// Cached transpilation functions\n// ============================================================================\n\n/**\n * Transpile with caching support\n *\n * Uses IndexedDB to cache transpilation results. On cache hit,\n * returns immediately without re-parsing. Particularly useful for\n * playground editors and development workflows.\n *\n * @example\n * ```typescript\n * const cache = new MetadataCache()\n * await cache.open()\n *\n * // First call: parses and caches\n * const result1 = await transpileWithCache(source, {}, cache)\n *\n * // Second call: returns from cache\n * const result2 = await transpileWithCache(source, {}, cache)\n * ```\n */\nexport async function transpileWithCache(\n source: string,\n options: TranspileOptions = {},\n cache?: MetadataCache\n): Promise<TranspileResult> {\n const effectiveCache = cache ?? (await getGlobalCache())\n\n // Try cache first\n const cached = await effectiveCache.getTranspile(source)\n if (cached) {\n return {\n ast: cached.ast,\n signature: cached.signature,\n warnings: cached.warnings,\n }\n }\n\n // Cache miss - transpile\n const result = transpile(source, options)\n\n // Store in cache (don't await - fire and forget)\n effectiveCache.setTranspile(source, {\n ast: result.ast,\n signature: result.signature,\n warnings: result.warnings,\n })\n\n return result\n}\n\n/**\n * Transpile TJS to JavaScript with caching support\n *\n * @example\n * ```typescript\n * const cache = new MetadataCache()\n * await cache.open()\n *\n * // First call: transpiles and caches\n * const result1 = await tjsWithCache(source, {}, cache)\n *\n * // Second call: returns from cache\n * const result2 = await tjsWithCache(source, {}, cache)\n * ```\n */\nexport async function tjsWithCache(\n source: string,\n options: import('./emitters/js').TJSTranspileOptions = {},\n cache?: MetadataCache\n): Promise<import('./emitters/js').TJSTranspileResult> {\n const effectiveCache = cache ?? (await getGlobalCache())\n\n // Try cache first\n const cached = await effectiveCache.getTJS(source)\n if (cached) {\n return {\n code: cached.code,\n types: cached.types,\n metadata: cached.types, // alias\n testRunner: cached.testRunner,\n testCount: cached.testCount,\n warnings: cached.warnings,\n }\n }\n\n // Cache miss - transpile\n const result = transpileToJS(source, options)\n\n // Store in cache (don't await - fire and forget)\n effectiveCache.setTJS(source, {\n code: result.code,\n types: result.types,\n testRunner: result.testRunner,\n testCount: result.testCount,\n warnings: result.warnings,\n })\n\n return result\n}\n\n/**\n * Create a function with attached signature for introspection\n *\n * This wraps the transpiled AST in a callable that includes\n * the .signature property for self-documentation.\n *\n * @example\n * ```typescript\n * const search = createAgent(`\n * function search(query: 'string', limit = 10) {\n * let results = storeSearch({ query, limit })\n * return { results }\n * }\n * `, vm)\n *\n * // Introspect\n * console.log(search.signature.parameters)\n *\n * // Execute\n * const result = await search({ query: 'hello' })\n * ```\n */\nexport function createAgent(\n source: string,\n vm: { run: (ast: any, args: any, options?: any) => Promise<any> },\n runOptions?: { fuel?: number; capabilities?: any }\n): ((args: Record<string, any>) => Promise<any>) & {\n signature: FunctionSignature\n ast: SeqNode\n} {\n const { ast, signature } = transpile(source)\n\n const agent = async (args: Record<string, any>) => {\n const result = await vm.run(ast, args, runOptions)\n return result.result\n }\n\n // Attach metadata\n ;(agent as any).signature = signature\n ;(agent as any).ast = ast\n\n return agent as any\n}\n\n/**\n * Get tool definitions from a set of agent functions\n *\n * This converts function signatures to OpenAI-compatible tool definitions.\n *\n * @example\n * ```typescript\n * const search = createAgent(searchSource, vm)\n * const summarize = createAgent(summarizeSource, vm)\n *\n * const tools = getToolDefinitions({ search, summarize })\n * // Ready to pass to LLM API\n * ```\n */\nexport function getToolDefinitions(\n agents: Record<string, { signature: FunctionSignature }>\n): Array<{\n type: 'function'\n function: {\n name: string\n description?: string\n parameters: {\n type: 'object'\n properties: Record<string, any>\n required: string[]\n }\n }\n}> {\n return Object.entries(agents).map(([name, agent]) => {\n const sig = agent.signature\n\n const properties: Record<string, any> = {}\n const required: string[] = []\n\n for (const [paramName, param] of Object.entries(sig.parameters)) {\n properties[paramName] = typeDescriptorToJsonSchema(param.type)\n if (param.description) {\n properties[paramName].description = param.description\n }\n if (param.required) {\n required.push(paramName)\n }\n }\n\n return {\n type: 'function' as const,\n function: {\n name: sig.name || name,\n description: sig.description,\n parameters: {\n type: 'object' as const,\n properties,\n required,\n },\n },\n }\n })\n}\n\n/**\n * Convert TypeDescriptor to JSON Schema\n */\nfunction typeDescriptorToJsonSchema(\n type: import('./types').TypeDescriptor\n): any {\n switch (type.kind) {\n case 'string':\n return { type: 'string' }\n case 'number':\n return { type: 'number' }\n case 'boolean':\n return { type: 'boolean' }\n case 'null':\n return { type: 'null' }\n case 'array':\n return {\n type: 'array',\n items: type.items ? typeDescriptorToJsonSchema(type.items) : {},\n }\n case 'object':\n if (!type.shape) {\n return { type: 'object' }\n }\n return {\n type: 'object',\n properties: Object.fromEntries(\n Object.entries(type.shape).map(([k, v]) => [\n k,\n typeDescriptorToJsonSchema(v),\n ])\n ),\n }\n case 'union':\n if (!type.members) {\n return {}\n }\n return {\n anyOf: type.members.map(typeDescriptorToJsonSchema),\n }\n case 'any':\n default:\n return {}\n }\n}\n",
31
32
  "import { s } from 'tosijs-schema'\nimport { defineAtom, resolveValue } from '../runtime'\n\n// --- Interfaces ---\n\ninterface VectorBattery {\n embed(text: string): Promise<number[]>\n}\n\ninterface StoreBattery {\n createCollection(\n name: string,\n schema?: any,\n dimension?: number\n ): Promise<void>\n vectorAdd(collection: string, doc: any): Promise<void>\n vectorSearch(\n collection: string,\n vector: number[],\n k?: number,\n filter?: any\n ): Promise<any[]>\n}\n\ninterface LLMBattery {\n predict(\n system: string,\n user: string,\n tools?: any[],\n responseFormat?: any\n ): Promise<any>\n}\n\n// --- Atoms ---\n\n// store.vectorize\nexport const storeVectorize = defineAtom(\n 'storeVectorize',\n s.object({\n text: s.string,\n model: s.string.optional,\n }),\n s.array(s.number),\n async ({ text }, ctx) => {\n const vectorCap = ctx.capabilities.vector as VectorBattery\n if (!vectorCap)\n throw new Error(\n \"Capability 'vector' missing. Ensure vector battery is loaded.\"\n )\n\n const resolvedText = resolveValue(text, ctx)\n return vectorCap.embed(resolvedText)\n },\n { docs: 'Generate embeddings using vector battery', cost: 20 }\n)\n\n// store.createCollection\nexport const storeCreateCollection = defineAtom(\n 'storeCreateCollection',\n s.object({\n collection: s.string,\n dimension: s.number.optional,\n }),\n undefined,\n async ({ collection, dimension }, ctx) => {\n const storeCap = ctx.capabilities.store as unknown as StoreBattery\n if (!storeCap?.createCollection)\n throw new Error(\n \"Capability 'store' missing or does not support createCollection.\"\n )\n\n const resolvedColl = resolveValue(collection, ctx)\n const resolvedDim = resolveValue(dimension, ctx)\n\n return storeCap.createCollection(resolvedColl, undefined, resolvedDim)\n },\n { docs: 'Create a vector store collection', cost: 5 }\n)\n\n// store.vectorAdd\nexport const storeVectorAdd = defineAtom(\n 'storeVectorAdd',\n s.object({\n collection: s.string,\n doc: s.any,\n }),\n undefined,\n async ({ collection, doc }, ctx) => {\n const storeCap = ctx.capabilities.store as unknown as StoreBattery\n if (!storeCap?.vectorAdd)\n throw new Error(\n \"Capability 'store' missing or does not support vectorAdd.\"\n )\n\n const resolvedColl = resolveValue(collection, ctx)\n const resolvedDoc = resolveValue(doc, ctx)\n\n return storeCap.vectorAdd(resolvedColl, resolvedDoc)\n },\n { docs: 'Add a document to a vector store collection', cost: 5 }\n)\n\n// store.search (Vector Search)\nexport const storeSearch = defineAtom(\n 'storeSearch',\n s.object({\n collection: s.string,\n queryVector: s.array(s.number),\n k: s.number.optional,\n filter: s.record(s.any).optional,\n }),\n s.array(s.any),\n async ({ collection, queryVector, k, filter }, ctx) => {\n const storeCap = ctx.capabilities.store as unknown as StoreBattery\n if (!storeCap?.vectorSearch)\n throw new Error(\n \"Capability 'store' missing or does not support vectorSearch.\"\n )\n\n const resolvedColl = resolveValue(collection, ctx)\n const resolvedVec = resolveValue(queryVector, ctx)\n const resolvedK = resolveValue(k, ctx) ?? 5\n const resolvedFilter = resolveValue(filter, ctx)\n\n return storeCap.vectorSearch(\n resolvedColl,\n resolvedVec,\n resolvedK,\n resolvedFilter\n )\n },\n {\n docs: 'Search vector store',\n cost: (input, ctx) => 5 + (resolveValue(input.k, ctx) ?? 5),\n }\n)\n\n// llm.predict (Enhanced with system prompt support for battery)\nexport const llmPredictBattery = defineAtom(\n 'llmPredictBattery',\n s.object({\n system: s.string.optional,\n user: s.string,\n tools: s.array(s.any).optional,\n responseFormat: s.any.optional,\n }),\n s.object({\n role: s.string.optional,\n content: s.string.optional,\n tool_calls: s.array(s.any).optional,\n }),\n async ({ system, user, tools, responseFormat }, ctx) => {\n const llmCap = ctx.capabilities.llmBattery as unknown as LLMBattery\n if (!llmCap?.predict)\n throw new Error(\"Capability 'llmBattery' missing or invalid.\")\n\n const resolvedSystem =\n resolveValue(system, ctx) ?? 'You are a helpful agent.'\n const resolvedUser = resolveValue(user, ctx)\n const resolvedTools = resolveValue(tools, ctx)\n const resolvedFormat = resolveValue(responseFormat, ctx)\n\n return llmCap.predict(\n resolvedSystem,\n resolvedUser,\n resolvedTools,\n resolvedFormat\n )\n },\n { docs: 'Generate completion using LLM battery', cost: 100 }\n)\n\n// Vision battery interface (multimodal)\ninterface VisionBattery {\n predict(\n system: string,\n user: { text: string; images?: string[] },\n tools?: any[],\n responseFormat?: any\n ): Promise<any>\n}\n\n// llm.vision - Analyze images using a vision-capable model\nexport const llmVision = defineAtom(\n 'llmVision',\n s.object({\n system: s.string.optional,\n prompt: s.string,\n images: s.array(s.string), // URLs or data URIs (data:image/...;base64,...)\n responseFormat: s.any.optional,\n }),\n s.object({\n role: s.string.optional,\n content: s.string.optional,\n tool_calls: s.array(s.any).optional,\n }),\n async ({ system, prompt, images, responseFormat }, ctx) => {\n const llmCap = ctx.capabilities.llmBattery as unknown as VisionBattery\n if (!llmCap?.predict)\n throw new Error(\"Capability 'llmBattery' missing or invalid.\")\n\n const resolvedSystem =\n resolveValue(system, ctx) ??\n 'You analyze images accurately and concisely.'\n const resolvedPrompt = resolveValue(prompt, ctx)\n const resolvedImages = resolveValue(images, ctx) ?? []\n const resolvedFormat = resolveValue(responseFormat, ctx)\n\n return llmCap.predict(\n resolvedSystem,\n { text: resolvedPrompt, images: resolvedImages },\n undefined,\n resolvedFormat\n )\n },\n { docs: 'Analyze images using a vision model', timeoutMs: 120000, cost: 150 }\n)\n",
32
33
  "import {\n storeCreateCollection,\n storeSearch,\n storeVectorAdd,\n storeVectorize,\n llmPredictBattery,\n llmVision,\n} from './batteries'\nimport { coreAtoms } from '../runtime'\n\nexport const batteryAtoms = {\n storeCreateCollection,\n storeSearch,\n storeVectorAdd,\n storeVectorize,\n llmPredictBattery,\n llmVision,\n}\n\nexport { coreAtoms }\n",
33
34
  "/**\n * Store Capability Battery\n * Provides Key-Value storage and lightweight in-memory Vector Search.\n */\n\nexport interface StoreCapability {\n get(key: string): Promise<any>\n set(key: string, val: any): Promise<void>\n createCollection(\n name: string,\n schema?: any,\n dimension?: number\n ): Promise<void>\n vectorAdd(collection: string, doc: any): Promise<void>\n vectorSearch(collection: string, vector: number[], k?: number): Promise<any[]>\n}\n\n// In-memory KV store fallback\nconst kvStore = new Map<string, any>()\n// In-memory Vector store fallback\nconst collections = new Map<string, any[]>()\n\nexport function cosineSimilarity(vecA: number[], vecB: number[]): number {\n if (vecA.length !== vecB.length) {\n throw new Error('Vectors must have the same length for cosine similarity.')\n }\n let dotProduct = 0\n let magA = 0\n let magB = 0\n for (let i = 0; i < vecA.length; i++) {\n dotProduct += vecA[i] * vecB[i]\n magA += vecA[i] * vecA[i]\n magB += vecB[i] * vecB[i]\n }\n magA = Math.sqrt(magA)\n magB = Math.sqrt(magB)\n if (magA === 0 || magB === 0) {\n return 0\n }\n return dotProduct / (magA * magB)\n}\n\nexport function getStoreCapability(): StoreCapability {\n return {\n async get(key: string) {\n return kvStore.get(key)\n },\n\n async set(key: string, val: any) {\n kvStore.set(key, val)\n },\n\n async createCollection(name: string, _schema?: any, _dimension?: number) {\n if (collections.has(name)) {\n console.warn(`Collection '${name}' already exists. Overwriting.`)\n }\n collections.set(name, [])\n },\n\n async vectorAdd(collection: string, doc: any) {\n const db = collections.get(collection)\n if (!db)\n throw new Error(\n `Collection '${collection}' not found. Create it first.`\n )\n if (!doc.embedding || !Array.isArray(doc.embedding)) {\n throw new Error(\n \"Document must have an 'embedding' property that is an array of numbers.\"\n )\n }\n db.push(doc)\n },\n\n async vectorSearch(collection: string, vector: number[], k = 5) {\n const db = collections.get(collection)\n if (!db)\n throw new Error(\n `Collection '${collection}' not found. Create it first.`\n )\n\n const scoredDocs = db.map((doc) => ({\n doc,\n score: cosineSimilarity(vector, doc.embedding),\n }))\n\n scoredDocs.sort((a, b) => b.score - a.score)\n\n return scoredDocs.slice(0, k).map((item) => item.doc)\n },\n }\n}\n",
@@ -38,7 +39,7 @@
38
39
  "/**\n * Timestamp - Pure functions for ISO 8601 timestamp strings\n *\n * No Date warts:\n * - Months are 1-based (January = 1)\n * - All functions are pure (string in, string out)\n * - No mutable objects\n * - UTC by default, explicit timezone for display\n */\n\n/**\n * ISO 8601 timestamp string type\n * e.g., \"2024-01-15T10:30:00.000Z\"\n */\nexport type TimestampString = string\n\n/**\n * Validate that a string is a valid ISO 8601 timestamp\n */\nexport function isValid(ts: string): ts is TimestampString {\n if (typeof ts !== 'string') return false\n const d = new Date(ts)\n return !isNaN(d.getTime()) && ts.includes('T')\n}\n\n/**\n * Get the current timestamp as ISO string\n */\nexport function now(): TimestampString {\n return new Date().toISOString()\n}\n\n/**\n * Create a timestamp from components\n * IMPORTANT: month is 1-based (1 = January, 12 = December)\n */\nexport function from(\n year: number,\n month: number,\n day: number,\n hour = 0,\n minute = 0,\n second = 0,\n ms = 0\n): TimestampString {\n // Convert 1-based month to 0-based for Date\n const d = new Date(Date.UTC(year, month - 1, day, hour, minute, second, ms))\n return d.toISOString()\n}\n\n/**\n * Parse a flexible date string into ISO timestamp\n * Handles various formats and normalizes to UTC\n */\nexport function parse(input: string): TimestampString {\n const d = new Date(input)\n if (isNaN(d.getTime())) {\n throw new Error(`Invalid date string: ${input}`)\n }\n return d.toISOString()\n}\n\n/**\n * Try to parse a date string, returning null on failure\n */\nexport function tryParse(input: string): TimestampString | null {\n try {\n return parse(input)\n } catch {\n return null\n }\n}\n\n// ============================================================================\n// Arithmetic\n// ============================================================================\n\n/**\n * Add milliseconds to a timestamp\n */\nexport function addMilliseconds(\n ts: TimestampString,\n ms: number\n): TimestampString {\n const d = new Date(ts)\n d.setTime(d.getTime() + ms)\n return d.toISOString()\n}\n\n/**\n * Add seconds to a timestamp\n */\nexport function addSeconds(\n ts: TimestampString,\n seconds: number\n): TimestampString {\n return addMilliseconds(ts, seconds * 1000)\n}\n\n/**\n * Add minutes to a timestamp\n */\nexport function addMinutes(\n ts: TimestampString,\n minutes: number\n): TimestampString {\n return addMilliseconds(ts, minutes * 60 * 1000)\n}\n\n/**\n * Add hours to a timestamp\n */\nexport function addHours(ts: TimestampString, hours: number): TimestampString {\n return addMilliseconds(ts, hours * 60 * 60 * 1000)\n}\n\n/**\n * Add days to a timestamp\n */\nexport function addDays(ts: TimestampString, days: number): TimestampString {\n return addMilliseconds(ts, days * 24 * 60 * 60 * 1000)\n}\n\n/**\n * Add weeks to a timestamp\n */\nexport function addWeeks(ts: TimestampString, weeks: number): TimestampString {\n return addDays(ts, weeks * 7)\n}\n\n/**\n * Add months to a timestamp\n * Handles month overflow correctly (e.g., Jan 31 + 1 month = Feb 28/29)\n */\nexport function addMonths(\n ts: TimestampString,\n months: number\n): TimestampString {\n const d = new Date(ts)\n const targetMonth = d.getUTCMonth() + months\n d.setUTCMonth(targetMonth)\n\n // Handle overflow (e.g., Jan 31 + 1 month shouldn't become Mar 3)\n // If the day changed, we overflowed - go back to last day of target month\n if (d.getUTCMonth() !== ((targetMonth % 12) + 12) % 12) {\n d.setUTCDate(0) // Last day of previous month\n }\n\n return d.toISOString()\n}\n\n/**\n * Add years to a timestamp\n * Handles leap years correctly (Feb 29 + 1 year = Feb 28)\n */\nexport function addYears(ts: TimestampString, years: number): TimestampString {\n const d = new Date(ts)\n const originalDay = d.getUTCDate()\n d.setUTCFullYear(d.getUTCFullYear() + years)\n\n // Handle Feb 29 -> Feb 28 in non-leap years\n if (d.getUTCDate() !== originalDay) {\n d.setUTCDate(0) // Last day of previous month\n }\n\n return d.toISOString()\n}\n\n// ============================================================================\n// Difference\n// ============================================================================\n\n/**\n * Get the difference between two timestamps in milliseconds\n * Returns a - b (positive if a is after b)\n */\nexport function diff(a: TimestampString, b: TimestampString): number {\n return new Date(a).getTime() - new Date(b).getTime()\n}\n\n/**\n * Get the difference in seconds\n */\nexport function diffSeconds(a: TimestampString, b: TimestampString): number {\n return Math.floor(diff(a, b) / 1000)\n}\n\n/**\n * Get the difference in minutes\n */\nexport function diffMinutes(a: TimestampString, b: TimestampString): number {\n return Math.floor(diff(a, b) / (60 * 1000))\n}\n\n/**\n * Get the difference in hours\n */\nexport function diffHours(a: TimestampString, b: TimestampString): number {\n return Math.floor(diff(a, b) / (60 * 60 * 1000))\n}\n\n/**\n * Get the difference in days\n */\nexport function diffDays(a: TimestampString, b: TimestampString): number {\n return Math.floor(diff(a, b) / (24 * 60 * 60 * 1000))\n}\n\n// ============================================================================\n// Extractors (all return 1-based month)\n// ============================================================================\n\n/**\n * Get the year component\n */\nexport function year(ts: TimestampString): number {\n return new Date(ts).getUTCFullYear()\n}\n\n/**\n * Get the month component (1-based: 1 = January, 12 = December)\n */\nexport function month(ts: TimestampString): number {\n return new Date(ts).getUTCMonth() + 1\n}\n\n/**\n * Get the day of month component (1-31)\n */\nexport function day(ts: TimestampString): number {\n return new Date(ts).getUTCDate()\n}\n\n/**\n * Get the hour component (0-23)\n */\nexport function hour(ts: TimestampString): number {\n return new Date(ts).getUTCHours()\n}\n\n/**\n * Get the minute component (0-59)\n */\nexport function minute(ts: TimestampString): number {\n return new Date(ts).getUTCMinutes()\n}\n\n/**\n * Get the second component (0-59)\n */\nexport function second(ts: TimestampString): number {\n return new Date(ts).getUTCSeconds()\n}\n\n/**\n * Get the millisecond component (0-999)\n */\nexport function millisecond(ts: TimestampString): number {\n return new Date(ts).getUTCMilliseconds()\n}\n\n/**\n * Get the day of week (1 = Monday, 7 = Sunday) - ISO 8601 convention\n */\nexport function dayOfWeek(ts: TimestampString): number {\n const d = new Date(ts).getUTCDay()\n return d === 0 ? 7 : d // Convert Sunday from 0 to 7\n}\n\n// ============================================================================\n// Formatting\n// ============================================================================\n\n/**\n * Format a timestamp for local display\n * Uses Intl.DateTimeFormat for timezone-aware formatting\n */\nexport function toLocal(\n ts: TimestampString,\n timezone?: string,\n options?: Intl.DateTimeFormatOptions\n): string {\n const d = new Date(ts)\n const formatOptions: Intl.DateTimeFormatOptions = {\n timeZone: timezone,\n ...options,\n }\n return new Intl.DateTimeFormat(undefined, formatOptions).format(d)\n}\n\n/**\n * Format as a readable date/time string\n */\nexport function format(ts: TimestampString, timezone?: string): string {\n return toLocal(ts, timezone, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n })\n}\n\n/**\n * Format as date only (no time)\n */\nexport function formatDate(ts: TimestampString, timezone?: string): string {\n return toLocal(ts, timezone, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n })\n}\n\n/**\n * Format as time only (no date)\n */\nexport function formatTime(ts: TimestampString, timezone?: string): string {\n return toLocal(ts, timezone, {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n })\n}\n\n/**\n * Extract just the date portion as YYYY-MM-DD (LegalDate format)\n */\nexport function toDate(ts: TimestampString): string {\n return ts.slice(0, 10)\n}\n\n// ============================================================================\n// Comparison\n// ============================================================================\n\n/**\n * Check if a is before b\n */\nexport function isBefore(a: TimestampString, b: TimestampString): boolean {\n return diff(a, b) < 0\n}\n\n/**\n * Check if a is after b\n */\nexport function isAfter(a: TimestampString, b: TimestampString): boolean {\n return diff(a, b) > 0\n}\n\n/**\n * Check if two timestamps are equal\n */\nexport function isEqual(a: TimestampString, b: TimestampString): boolean {\n return diff(a, b) === 0\n}\n\n/**\n * Get the earlier of two timestamps\n */\nexport function min(a: TimestampString, b: TimestampString): TimestampString {\n return isBefore(a, b) ? a : b\n}\n\n/**\n * Get the later of two timestamps\n */\nexport function max(a: TimestampString, b: TimestampString): TimestampString {\n return isAfter(a, b) ? a : b\n}\n\n// ============================================================================\n// Boundaries\n// ============================================================================\n\n/**\n * Get the start of the day (00:00:00.000 UTC)\n */\nexport function startOfDay(ts: TimestampString): TimestampString {\n return from(year(ts), month(ts), day(ts))\n}\n\n/**\n * Get the end of the day (23:59:59.999 UTC)\n */\nexport function endOfDay(ts: TimestampString): TimestampString {\n return from(year(ts), month(ts), day(ts), 23, 59, 59, 999)\n}\n\n/**\n * Get the start of the month\n */\nexport function startOfMonth(ts: TimestampString): TimestampString {\n return from(year(ts), month(ts), 1)\n}\n\n/**\n * Get the end of the month\n */\nexport function endOfMonth(ts: TimestampString): TimestampString {\n const d = new Date(ts)\n d.setUTCMonth(d.getUTCMonth() + 1, 0) // Day 0 of next month = last day of this month\n d.setUTCHours(23, 59, 59, 999)\n return d.toISOString()\n}\n\n/**\n * Get the start of the year\n */\nexport function startOfYear(ts: TimestampString): TimestampString {\n return from(year(ts), 1, 1)\n}\n\n/**\n * Get the end of the year\n */\nexport function endOfYear(ts: TimestampString): TimestampString {\n return from(year(ts), 12, 31, 23, 59, 59, 999)\n}\n\n// ============================================================================\n// Default export as namespace\n// ============================================================================\n\nexport const Timestamp = {\n isValid,\n now,\n from,\n parse,\n tryParse,\n // Arithmetic\n addMilliseconds,\n addSeconds,\n addMinutes,\n addHours,\n addDays,\n addWeeks,\n addMonths,\n addYears,\n // Difference\n diff,\n diffSeconds,\n diffMinutes,\n diffHours,\n diffDays,\n // Extractors\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond,\n dayOfWeek,\n // Formatting\n toLocal,\n format,\n formatDate,\n formatTime,\n toDate,\n // Comparison\n isBefore,\n isAfter,\n isEqual,\n min,\n max,\n // Boundaries\n startOfDay,\n endOfDay,\n startOfMonth,\n endOfMonth,\n startOfYear,\n endOfYear,\n}\n\nexport default Timestamp\n",
39
40
  "/**\n * LegalDate - Pure functions for YYYY-MM-DD date strings\n *\n * A \"legal date\" is a calendar date without time - the kind you see on\n * contracts, birth certificates, and legal documents. It represents a\n * civil date, not a point in time.\n *\n * No Date warts:\n * - Months are 1-based (January = 1)\n * - All functions are pure (string in, string out)\n * - No mutable objects\n * - No timezone confusion (it's just a date)\n */\n\nimport { Timestamp } from './Timestamp'\n\n/**\n * Legal date string type: YYYY-MM-DD\n * e.g., \"2024-01-15\"\n */\nexport type LegalDateString = string\n\n/**\n * Validate that a string is a valid YYYY-MM-DD date\n */\nexport function isValid(date: string): date is LegalDateString {\n if (typeof date !== 'string') return false\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(date)) return false\n\n // Parse components\n const y = parseInt(date.slice(0, 4), 10)\n const m = parseInt(date.slice(5, 7), 10)\n const d = parseInt(date.slice(8, 10), 10)\n\n // Validate ranges\n if (m < 1 || m > 12) return false\n if (d < 1) return false\n\n // Check day against actual days in month\n const daysInM = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n const maxDay =\n m === 2 && ((y % 4 === 0 && y % 100 !== 0) || y % 400 === 0)\n ? 29\n : daysInM[m - 1]\n\n return d <= maxDay\n}\n\n/**\n * Get today's date as YYYY-MM-DD (in UTC)\n */\nexport function today(): LegalDateString {\n return Timestamp.toDate(Timestamp.now())\n}\n\n/**\n * Get today's date in a specific timezone\n */\nexport function todayIn(timezone: string): LegalDateString {\n const now = new Date()\n const formatter = new Intl.DateTimeFormat('en-CA', {\n timeZone: timezone,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n })\n return formatter.format(now)\n}\n\n/**\n * Create a date from components\n * IMPORTANT: month is 1-based (1 = January, 12 = December)\n */\nexport function from(\n year: number,\n month: number,\n day: number\n): LegalDateString {\n const y = String(year).padStart(4, '0')\n const m = String(month).padStart(2, '0')\n const d = String(day).padStart(2, '0')\n const result = `${y}-${m}-${d}`\n\n // Validate it's a real date\n if (!isValid(result)) {\n throw new Error(`Invalid date: ${year}-${month}-${day}`)\n }\n\n return result\n}\n\n/**\n * Parse a flexible date string into YYYY-MM-DD format\n */\nexport function parse(input: string): LegalDateString {\n // If already in correct format, validate and return\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(input)) {\n if (!isValid(input)) {\n throw new Error(`Invalid date: ${input}`)\n }\n return input\n }\n\n // Otherwise, try to parse it\n const d = new Date(input)\n if (isNaN(d.getTime())) {\n throw new Error(`Invalid date string: ${input}`)\n }\n\n // Extract date components in UTC\n const year = d.getUTCFullYear()\n const month = d.getUTCMonth() + 1\n const day = d.getUTCDate()\n\n return from(year, month, day)\n}\n\n/**\n * Try to parse a date string, returning null on failure\n */\nexport function tryParse(input: string): LegalDateString | null {\n try {\n return parse(input)\n } catch {\n return null\n }\n}\n\n// ============================================================================\n// Arithmetic\n// ============================================================================\n\n/**\n * Add days to a date\n */\nexport function addDays(date: LegalDateString, days: number): LegalDateString {\n const ts = toTimestamp(date)\n return Timestamp.toDate(Timestamp.addDays(ts, days))\n}\n\n/**\n * Add weeks to a date\n */\nexport function addWeeks(\n date: LegalDateString,\n weeks: number\n): LegalDateString {\n return addDays(date, weeks * 7)\n}\n\n/**\n * Add months to a date\n * Handles month overflow correctly (e.g., Jan 31 + 1 month = Feb 28/29)\n */\nexport function addMonths(\n date: LegalDateString,\n months: number\n): LegalDateString {\n const y = year(date)\n const m = month(date)\n const d = day(date)\n\n // Calculate target month\n const totalMonths = y * 12 + (m - 1) + months\n const targetYear = Math.floor(totalMonths / 12)\n const targetMonth = (totalMonths % 12) + 1\n\n // Get last day of target month\n const lastDay = daysInMonth(targetYear, targetMonth)\n const targetDay = Math.min(d, lastDay)\n\n return from(targetYear, targetMonth, targetDay)\n}\n\n/**\n * Add years to a date\n * Handles leap years correctly (Feb 29 + 1 year = Feb 28)\n */\nexport function addYears(\n date: LegalDateString,\n years: number\n): LegalDateString {\n const y = year(date)\n const m = month(date)\n const d = day(date)\n\n const targetYear = y + years\n const lastDay = daysInMonth(targetYear, m)\n const targetDay = Math.min(d, lastDay)\n\n return from(targetYear, m, targetDay)\n}\n\n// ============================================================================\n// Difference\n// ============================================================================\n\n/**\n * Get the difference between two dates in days\n * Returns a - b (positive if a is after b)\n */\nexport function diff(a: LegalDateString, b: LegalDateString): number {\n const msPerDay = 24 * 60 * 60 * 1000\n const aMs = new Date(a + 'T00:00:00Z').getTime()\n const bMs = new Date(b + 'T00:00:00Z').getTime()\n return Math.round((aMs - bMs) / msPerDay)\n}\n\n/**\n * Get the difference in complete months\n */\nexport function diffMonths(a: LegalDateString, b: LegalDateString): number {\n const aYear = year(a)\n const aMonth = month(a)\n const bYear = year(b)\n const bMonth = month(b)\n\n return (aYear - bYear) * 12 + (aMonth - bMonth)\n}\n\n/**\n * Get the difference in complete years\n */\nexport function diffYears(a: LegalDateString, b: LegalDateString): number {\n return year(a) - year(b)\n}\n\n// ============================================================================\n// Extractors (all return 1-based month)\n// ============================================================================\n\n/**\n * Get the year component\n */\nexport function year(date: LegalDateString): number {\n return parseInt(date.slice(0, 4), 10)\n}\n\n/**\n * Get the month component (1-based: 1 = January, 12 = December)\n */\nexport function month(date: LegalDateString): number {\n return parseInt(date.slice(5, 7), 10)\n}\n\n/**\n * Get the day of month component (1-31)\n */\nexport function day(date: LegalDateString): number {\n return parseInt(date.slice(8, 10), 10)\n}\n\n/**\n * Get the day of week (1 = Monday, 7 = Sunday) - ISO 8601 convention\n */\nexport function dayOfWeek(date: LegalDateString): number {\n const d = new Date(date + 'T00:00:00Z').getUTCDay()\n return d === 0 ? 7 : d // Convert Sunday from 0 to 7\n}\n\n/**\n * Get the ISO week number (1-53)\n */\nexport function weekOfYear(date: LegalDateString): number {\n const d = new Date(date + 'T00:00:00Z')\n const dayNum = d.getUTCDay() || 7\n d.setUTCDate(d.getUTCDate() + 4 - dayNum)\n const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7)\n}\n\n/**\n * Get the day of year (1-366)\n */\nexport function dayOfYear(date: LegalDateString): number {\n const start = from(year(date), 1, 1)\n return diff(date, start) + 1\n}\n\n/**\n * Get the quarter (1-4)\n */\nexport function quarter(date: LegalDateString): number {\n return Math.ceil(month(date) / 3)\n}\n\n// ============================================================================\n// Utilities\n// ============================================================================\n\n/**\n * Check if a year is a leap year\n */\nexport function isLeapYear(y: number): boolean {\n return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0\n}\n\n/**\n * Get the number of days in a month\n * Month is 1-based (1 = January)\n */\nexport function daysInMonth(y: number, m: number): number {\n const days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n if (m === 2 && isLeapYear(y)) return 29\n return days[m - 1]\n}\n\n/**\n * Get the number of days in a year\n */\nexport function daysInYear(y: number): number {\n return isLeapYear(y) ? 366 : 365\n}\n\n// ============================================================================\n// Conversion\n// ============================================================================\n\n/**\n * Convert to ISO timestamp (midnight UTC)\n */\nexport function toTimestamp(date: LegalDateString): string {\n return date + 'T00:00:00.000Z'\n}\n\n/**\n * Convert to Unix timestamp (seconds since epoch, midnight UTC)\n */\nexport function toUnix(date: LegalDateString): number {\n return Math.floor(new Date(date + 'T00:00:00Z').getTime() / 1000)\n}\n\n/**\n * Create from Unix timestamp (seconds since epoch)\n */\nexport function fromUnix(unix: number): LegalDateString {\n const d = new Date(unix * 1000)\n return from(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate())\n}\n\n// ============================================================================\n// Formatting\n// ============================================================================\n\n/**\n * Format a date for display\n */\nexport function format(\n date: LegalDateString,\n options?: Intl.DateTimeFormatOptions\n): string {\n const d = new Date(date + 'T00:00:00Z')\n const formatOptions: Intl.DateTimeFormatOptions = {\n timeZone: 'UTC',\n ...options,\n }\n return new Intl.DateTimeFormat(undefined, formatOptions).format(d)\n}\n\n/**\n * Format as a readable date string\n */\nexport function formatLong(date: LegalDateString): string {\n return format(date, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n}\n\n/**\n * Format as a short date string\n */\nexport function formatShort(date: LegalDateString): string {\n return format(date, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n })\n}\n\n// ============================================================================\n// Comparison\n// ============================================================================\n\n/**\n * Check if a is before b\n */\nexport function isBefore(a: LegalDateString, b: LegalDateString): boolean {\n return a < b\n}\n\n/**\n * Check if a is after b\n */\nexport function isAfter(a: LegalDateString, b: LegalDateString): boolean {\n return a > b\n}\n\n/**\n * Check if two dates are equal\n */\nexport function isEqual(a: LegalDateString, b: LegalDateString): boolean {\n return a === b\n}\n\n/**\n * Get the earlier of two dates\n */\nexport function min(a: LegalDateString, b: LegalDateString): LegalDateString {\n return a < b ? a : b\n}\n\n/**\n * Get the later of two dates\n */\nexport function max(a: LegalDateString, b: LegalDateString): LegalDateString {\n return a > b ? a : b\n}\n\n/**\n * Check if a date is between two other dates (inclusive)\n */\nexport function isBetween(\n date: LegalDateString,\n start: LegalDateString,\n end: LegalDateString\n): boolean {\n return date >= start && date <= end\n}\n\n// ============================================================================\n// Boundaries\n// ============================================================================\n\n/**\n * Get the first day of the month\n */\nexport function startOfMonth(date: LegalDateString): LegalDateString {\n return from(year(date), month(date), 1)\n}\n\n/**\n * Get the last day of the month\n */\nexport function endOfMonth(date: LegalDateString): LegalDateString {\n const y = year(date)\n const m = month(date)\n return from(y, m, daysInMonth(y, m))\n}\n\n/**\n * Get the first day of the quarter\n */\nexport function startOfQuarter(date: LegalDateString): LegalDateString {\n const q = quarter(date)\n const m = (q - 1) * 3 + 1\n return from(year(date), m, 1)\n}\n\n/**\n * Get the last day of the quarter\n */\nexport function endOfQuarter(date: LegalDateString): LegalDateString {\n const q = quarter(date)\n const m = q * 3\n return from(year(date), m, daysInMonth(year(date), m))\n}\n\n/**\n * Get the first day of the year\n */\nexport function startOfYear(date: LegalDateString): LegalDateString {\n return from(year(date), 1, 1)\n}\n\n/**\n * Get the last day of the year\n */\nexport function endOfYear(date: LegalDateString): LegalDateString {\n return from(year(date), 12, 31)\n}\n\n/**\n * Get the first day of the week (Monday)\n */\nexport function startOfWeek(date: LegalDateString): LegalDateString {\n const dow = dayOfWeek(date)\n return addDays(date, -(dow - 1))\n}\n\n/**\n * Get the last day of the week (Sunday)\n */\nexport function endOfWeek(date: LegalDateString): LegalDateString {\n const dow = dayOfWeek(date)\n return addDays(date, 7 - dow)\n}\n\n// ============================================================================\n// Default export as namespace\n// ============================================================================\n\nexport const LegalDate = {\n isValid,\n today,\n todayIn,\n from,\n parse,\n tryParse,\n // Arithmetic\n addDays,\n addWeeks,\n addMonths,\n addYears,\n // Difference\n diff,\n diffMonths,\n diffYears,\n // Extractors\n year,\n month,\n day,\n dayOfWeek,\n weekOfYear,\n dayOfYear,\n quarter,\n // Utilities\n isLeapYear,\n daysInMonth,\n daysInYear,\n // Conversion\n toTimestamp,\n toUnix,\n fromUnix,\n // Formatting\n format,\n formatLong,\n formatShort,\n // Comparison\n isBefore,\n isAfter,\n isEqual,\n min,\n max,\n isBetween,\n // Boundaries\n startOfMonth,\n endOfMonth,\n startOfQuarter,\n endOfQuarter,\n startOfYear,\n endOfYear,\n startOfWeek,\n endOfWeek,\n}\n\nexport default LegalDate\n"
40
41
  ],
41
- "mappings": "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ACA,MACA,QACA,KACA,SACA,OACA,QACA,WACA,SACA,WACA,MACA,QACA,MACA,MACA,OACA,OACA,QACA,OACA,YACA,SACA,aACA,KACA,KACA,MACA,QACA,UACA,QACA,QACA,QACA,QACA,UACA,QACA,SACA,SACA,UACA,OACA,KACA,SACA,MACA,MACA,QAEA,UACA,OACA,QACA,SACA,SACA,SACA,UACA,OACA,OACA,UACA,MACA,MACA,UACA,UACA,eACA,eACA,YACA,aACA,aACA,aACA,cACA,cACA,gBACA,iBACA,cACA,WACA,QACA,YACA,aACA,SACA,OACA,MACA,QACA,UACA,QACA,SACA,MACA,SACA,SACA,UACA,OACA,YACA,UACA,WACA,aACA,SACA,WACA,WACA,MACA,QACA,WACA,WACA,aACA,YACA,YACA,OACA,YACF,CAAC,EAGK,EAAqB,CAAC,EAC5B,QAAW,KAAM,EACf,GAAI,CAAC,EAAS,IAAI,CAAE,GAAK,CAAC,EAAS,IAAI,CAAE,GAAK,CAAC,GAAgB,CAAE,EAC/D,EAAS,KAAK,CAAE,EAIpB,OAAO,EAAS,KAAK,EAavB,SAAS,EAAiB,CACxB,EACA,EACA,EACoB,CAGpB,IAAM,EAAc,EAAO,MAAM,EAAG,CAAc,EAI5C,EAAc,uDACd,EAAQ,EAAY,MAAM,CAAW,EAE3C,GAAI,CAAC,EAAO,CAEV,IAAM,EACJ,kFACI,EAAa,EAAY,MAAM,CAAY,EACjD,GAAI,CAAC,EAAY,OACjB,OAAO,GAAsB,EAAW,GAAI,CAAS,EAGvD,OAAO,GAAsB,EAAM,GAAI,CAAS,EAMlD,SAAS,EAAqB,CAC5B,EACA,EACoB,CAEpB,IAAM,EAAS,EAAU,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,EAEvD,QAAW,KAAS,EAAQ,CAK1B,IAAM,EAAa,EAAM,MACvB,IAAI,OAAO,IAAI,kCAA0C,CAC3D,EACA,GAAI,EACF,OAAO,EAAW,GAIpB,IAAM,EAAc,EAAM,MACxB,IAAI,OACF,IAAI,0GACN,CACF,EACA,GAAI,EACF,OAAO,EAAY,GAIvB,OAYK,SAAS,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",
42
- "debugId": "49BE6EDDFE3D539964756E2164756E21",
42
+ "mappings": "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ACA,MACA,QACA,KACA,SACA,OACA,QACA,WACA,SACA,WACA,MACA,QACA,MACA,MACA,OACA,OACA,QACA,OACA,YACA,SACA,aACA,KACA,KACA,MACA,QACA,UACA,QACA,QACA,QACA,QACA,UACA,QACA,SACA,SACA,UACA,OACA,KACA,SACA,MACA,MACA,QAEA,UACA,OACA,QACA,SACA,SACA,SACA,UACA,OACA,OACA,UACA,MACA,MACA,UACA,UACA,eACA,eACA,YACA,aACA,aACA,aACA,cACA,cACA,gBACA,iBACA,cACA,WACA,QACA,YACA,aACA,SACA,OACA,MACA,QACA,UACA,QACA,SACA,MACA,SACA,SACA,UACA,OACA,YACA,UACA,WACA,aACA,SACA,WACA,WACA,MACA,QACA,WACA,WACA,aACA,YACA,YACA,OACA,YACF,CAAC,EAGK,EAAqB,CAAC,EAC5B,QAAW,KAAM,EACf,GAAI,CAAC,EAAS,IAAI,CAAE,GAAK,CAAC,EAAS,IAAI,CAAE,GAAK,CAAC,GAAgB,CAAE,EAC/D,EAAS,KAAK,CAAE,EAIpB,OAAO,EAAS,KAAK,EAavB,SAAS,EAAiB,CACxB,EACA,EACA,EACoB,CAGpB,IAAM,EAAc,EAAO,MAAM,EAAG,CAAc,EAI5C,EAAc,uDACd,EAAQ,EAAY,MAAM,CAAW,EAE3C,GAAI,CAAC,EAAO,CAEV,IAAM,EACJ,kFACI,EAAa,EAAY,MAAM,CAAY,EACjD,GAAI,CAAC,EAAY,OACjB,OAAO,GAAsB,EAAW,GAAI,CAAS,EAGvD,OAAO,GAAsB,EAAM,GAAI,CAAS,EAMlD,SAAS,EAAqB,CAC5B,EACA,EACoB,CAEpB,IAAM,EAAS,EAAU,MAAM,GAAG,EAAE,IAAI,CAAC,IAAM,EAAE,KAAK,CAAC,EAEvD,QAAW,KAAS,EAAQ,CAK1B,IAAM,EAAa,EAAM,MACvB,IAAI,OAAO,IAAI,kCAA0C,CAC3D,EACA,GAAI,EACF,OAAO,EAAW,GAIpB,IAAM,EAAc,EAAM,MACxB,IAAI,OACF,IAAI,0GACN,CACF,EACA,GAAI,EACF,OAAO,EAAY,GAIvB,OAYK,SAAS,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",
43
+ "debugId": "165187DC4FDC9E3964756E2164756E21",
43
44
  "names": []
44
45
  }