tjs-lang 0.6.39 → 0.6.42
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 +87 -82
- package/dist/index.js.map +4 -4
- package/dist/tjs-full.js +87 -82
- package/dist/tjs-full.js.map +4 -4
- package/package.json +1 -1
- package/src/cli/tjs.ts +1 -1
- package/src/lang/emitters/dts.ts +123 -20
- package/src/lang/emitters/from-ts.ts +50 -7
package/dist/tjs-full.js.map
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"/**\n * TJS Test Execution\n *\n * Handles transpile-time test execution, signature validation, and test utilities.\n */\n\nimport { transformExtensionCalls } from '../parser'\nimport { installRuntime } from '../runtime'\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 only (used by -? runtime validation)\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, Eq, NotEq } = __tjs ?? {};\n let result = code.replace(\n /^const __tjs = globalThis\\.__tjs\\?\\.createRuntime\\?\\.\\(\\) \\?\\? globalThis\\.__tjs;\\n?/m,\n ''\n )\n result = result.replace(/^const \\{ [\\w, ]+ \\} = __tjs \\?\\? \\{\\};\\n?/m, '')\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 const cleanCode = stripModuleSyntax(moduleCode)\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 const executableCode = stripModuleSyntax(transpiledCode)\n // Strip __tjs preamble - test context provides its own stub\n // Real runtime installed via installRuntime() — preamble finds it via globalThis.__tjs\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 if (__deepEqual(__actual, __expected)) {\n __sigTestResults.push({ idx: ${i}, passed: true });\n } else {\n __sigTestResults.push({ idx: ${i}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\\\'${\n info.funcName\n }\\\\', 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 // Install real TJS runtime for test execution\n installRuntime()\n\n const tjsStub = `\n const __saved_tjs = globalThis.__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 const executableCode = stripModuleSyntax(transpiledCode)\n // Strip __tjs preamble - test context provides its own stub\n // Real runtime installed via installRuntime() — preamble finds it via globalThis.__tjs\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 const trimmed = param.trim()\n\n // Rest parameter: ...name: [examples] — spread the array elements as individual args\n const restMatch = trimmed.match(/^\\.\\.\\.(\\w+)\\s*[:=]\\s*(\\[.+\\])$/)\n if (restMatch) {\n try {\n const arr = new Function(`return ${restMatch[2]}`)()\n if (Array.isArray(arr)) {\n for (const el of arr) {\n examples.push(JSON.stringify(el))\n }\n }\n } catch {\n // Can't parse — skip rest param examples\n }\n continue\n }\n\n // Bare rest param without type: ...name — skip (no example to use)\n if (trimmed.startsWith('...')) continue\n\n // Match: name: example or name = example (with optional safety markers)\n // Handle: (? name: example) or (! name: example)\n const match = trimmed.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 const executableCode = stripModuleSyntax(transpiledCode)\n // Strip __tjs preamble - test context provides its own stub\n // Real runtime installed via installRuntime() — preamble finds it via globalThis.__tjs\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 // Signature tests check exact values — the example is a test case\n if (!deepEqual(actual, expected)) {\n return {\n description,\n passed: false,\n error: `Expected ${formatValue(\n expected\n )} at '${funcName}', 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",
|
|
17
17
|
"/**\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",
|
|
18
18
|
"/**\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",
|
|
19
|
-
"/**\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 FunctionPredicate Name\n const fpRe = /^[ \\t]*export\\s+FunctionPredicate\\s+(\\w+)/gm\n while ((m = fpRe.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 FunctionPredicate declaration */\ninterface FunctionPredicateInfo {\n params: { name: string; example: string }[]\n returns?: string\n typeParams?: string[]\n}\n\n/** Detect FunctionPredicate declarations and extract their param/return specs */\nfunction detectFunctionPredicates(\n source: string\n): Map<string, FunctionPredicateInfo> {\n const result = new Map<string, FunctionPredicateInfo>()\n\n // Block form: FunctionPredicate Name { ... } or FunctionPredicate Name<T> { ... }\n const blockRe =\n /^[ \\t]*(?:export\\s+)?FunctionPredicate\\s+(\\w+)\\s*(?:<([^>]+)>)?\\s*\\{/gm\n let m\n while ((m = blockRe.exec(source)) !== null) {\n const name = m[1]\n const typeParamsRaw = m[2] // undefined if no <...>\n const blockStart = m.index + m[0].length - 1\n\n // Find matching closing brace\n let depth = 1\n let i = blockStart + 1\n while (i < source.length && depth > 0) {\n if (source[i] === '{') depth++\n else if (source[i] === '}') depth--\n i++\n }\n const body = source.slice(blockStart + 1, i - 1)\n\n // Parse type params if present\n let typeParams: string[] | undefined\n if (typeParamsRaw) {\n typeParams = typeParamsRaw.split(',').map((tp) => tp.trim())\n }\n\n // Extract params object: params: { key: value, ... }\n const params: FunctionPredicateInfo['params'] = []\n const paramsMatch = body.match(/params\\s*:\\s*\\{([^}]*)\\}/)\n if (paramsMatch) {\n const paramsStr = paramsMatch[1]\n const paramEntries = splitParams(paramsStr)\n for (const entry of paramEntries) {\n const kv = entry.match(/^(\\w+)\\s*:\\s*(.+)$/)\n if (kv) {\n params.push({ name: kv[1], example: kv[2].trim() })\n }\n }\n }\n\n // Extract returns value\n let returns: string | undefined\n const returnsMatch = body.match(/returns\\s*:\\s*(.+?)(?:\\n|$)/)\n if (returnsMatch) {\n returns = returnsMatch[1].trim()\n }\n\n result.set(name, { params, returns, typeParams })\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 at class body level (brace depth 0 within classBody)\n // Must skip method implementations to avoid matching if(), for(), etc.\n const methods: ClassInfo['methods'] = []\n {\n let pos = 0\n let bodyDepth = 0\n\n while (pos < classBody.length) {\n const ch = classBody[pos]\n\n // Track brace depth — only look for methods at depth 0\n if (ch === '{') {\n bodyDepth++\n pos++\n continue\n }\n if (ch === '}') {\n bodyDepth--\n pos++\n continue\n }\n\n // Only match method declarations at class body level (depth 0)\n if (bodyDepth === 0) {\n const methodMatch = classBody.slice(pos).match(/^(\\w+)\\s*\\(/)\n if (methodMatch) {\n const name = methodMatch[1]\n if (name === 'constructor' || name === 'get' || name === 'set') {\n // Skip past the keyword to avoid re-matching a suffix\n pos += name.length\n continue\n } else {\n // Find matching close paren\n const parenStart = pos + methodMatch[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 pos = j\n continue\n }\n }\n }\n\n pos++\n }\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/** Info about a Generic declaration */\ninterface GenericInfo {\n typeParams: string[]\n /** Raw TypeScript content from `declaration { ... }` block, if present */\n declaration?: string\n}\n\n/** Detect Generic declarations, their type params, and optional declaration blocks */\nfunction detectGenerics(source: string): Map<string, GenericInfo> {\n const result = new Map<string, GenericInfo>()\n const re = /^[ \\t]*(?:export\\s+)?Generic\\s+(\\w+)\\s*<([^>]+)>\\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 return tp.trim().split(/\\s*=/)[0].trim()\n })\n\n // Find the full Generic block body via brace matching\n const blockStart = m.index + m[0].length - 1\n let depth = 1\n let i = blockStart + 1\n while (i < source.length && depth > 0) {\n if (source[i] === '{') depth++\n else if (source[i] === '}') depth--\n i++\n }\n const blockBody = source.slice(blockStart + 1, i - 1)\n\n // Look for declaration { ... } within the block body\n let declaration: string | undefined\n const declMatch = blockBody.match(/\\bdeclaration\\s*\\{/)\n if (declMatch && declMatch.index !== undefined) {\n const declStart = declMatch.index + declMatch[0].length - 1\n let dDepth = 1\n let j = declStart + 1\n while (j < blockBody.length && dDepth > 0) {\n if (blockBody[j] === '{') dDepth++\n else if (blockBody[j] === '}') dDepth--\n j++\n }\n declaration = blockBody.slice(declStart + 1, j - 1).trim()\n }\n\n result.set(name, { typeParams, declaration })\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.\n // If a declaration block is present, emit a proper TS interface.\n // Otherwise, emit an any-based factory stub.\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 const typeParamStr =\n info.typeParams.length > 0 ? `<${info.typeParams.join(', ')}>` : ''\n\n if (info.declaration) {\n // Emit a proper TypeScript interface from the declaration block\n const declLines = info.declaration\n .split('\\n')\n .map((l) => l.trim())\n .filter((l) => l.length > 0)\n .map((l) => ` ${l}`)\n .join('\\n')\n lines.push(`export interface ${name}${typeParamStr} {\\n${declLines}\\n}`)\n } else {\n // No declaration block — emit any-based factory stub\n lines.push(\n `export declare function ${name}(` +\n `...args: any[]` +\n `): { check(value: any): boolean; (value: any): boolean; };`\n )\n }\n emitted.add(name)\n }\n\n // Emit FunctionPredicate declarations as TS function types.\n // FunctionPredicate Callback { params: { x: 0 } returns: '' }\n // → export type Callback = (x: number) => string;\n const funcPreds = detectFunctionPredicates(source)\n for (const [name, fpInfo] of funcPreds) {\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 // Collect type param names for passthrough (don't convert T to any)\n const tpNames = new Set(\n fpInfo.typeParams?.map((tp) => tp.split('=')[0].trim()) ?? []\n )\n const typeParamStr = fpInfo.typeParams\n ? `<${fpInfo.typeParams.join(', ')}>`\n : ''\n\n const tsParams = fpInfo.params\n .map((p) => {\n const tsType = tpNames.has(p.example)\n ? p.example\n : inferTSTypeFromExample(p.example)\n return `${p.name}: ${tsType}`\n })\n .join(', ')\n const tsReturn =\n fpInfo.returns !== undefined\n ? tpNames.has(fpInfo.returns)\n ? fpInfo.returns\n : inferTSTypeFromExample(fpInfo.returns)\n : 'void'\n lines.push(\n `export type ${name}${typeParamStr} = (${tsParams}) => ${tsReturn};`\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",
|
|
20
|
-
"/**\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 /** Type parameter constraints and defaults from enclosing generic function/class */\n typeParams?: Map<string, { constraint?: ts.TypeNode; default?: ts.TypeNode }>\n}\n\n/**\n * DOM interface types — not constructible but common in TS signatures.\n * Map to {} (opaque object) so params stay annotated and required\n * rather than degrading to bare names.\n */\nconst domInterfaceTypes = new Set([\n // Events\n 'Event',\n 'CustomEvent',\n 'MouseEvent',\n 'KeyboardEvent',\n 'PointerEvent',\n 'TouchEvent',\n 'FocusEvent',\n 'InputEvent',\n 'CompositionEvent',\n 'WheelEvent',\n 'DragEvent',\n 'AnimationEvent',\n 'TransitionEvent',\n 'ClipboardEvent',\n 'UIEvent',\n 'ProgressEvent',\n 'ErrorEvent',\n 'MessageEvent',\n 'PopStateEvent',\n 'HashChangeEvent',\n 'PageTransitionEvent',\n 'StorageEvent',\n 'BeforeUnloadEvent',\n 'SubmitEvent',\n // Event targets / misc\n 'EventTarget',\n 'EventListener',\n // Nodes\n 'Node',\n 'Element',\n 'HTMLElement',\n 'SVGElement',\n 'Document',\n 'DocumentFragment',\n 'ShadowRoot',\n 'Text',\n 'Comment',\n 'Attr',\n // Specific HTML elements\n 'HTMLInputElement',\n 'HTMLTextAreaElement',\n 'HTMLSelectElement',\n 'HTMLButtonElement',\n 'HTMLFormElement',\n 'HTMLAnchorElement',\n 'HTMLImageElement',\n 'HTMLVideoElement',\n 'HTMLAudioElement',\n 'HTMLCanvasElement',\n 'HTMLDivElement',\n 'HTMLSpanElement',\n 'HTMLParagraphElement',\n 'HTMLTableElement',\n 'HTMLTemplateElement',\n 'HTMLSlotElement',\n 'HTMLDialogElement',\n 'HTMLDetailsElement',\n 'HTMLLabelElement',\n 'HTMLOptionElement',\n 'HTMLIFrameElement',\n 'HTMLScriptElement',\n 'HTMLStyleElement',\n 'HTMLLinkElement',\n 'HTMLMetaElement',\n 'HTMLHeadElement',\n 'HTMLBodyElement',\n 'HTMLMediaElement',\n // SVG elements\n 'SVGSVGElement',\n 'SVGPathElement',\n 'SVGGElement',\n 'SVGCircleElement',\n 'SVGRectElement',\n 'SVGTextElement',\n 'SVGLineElement',\n 'SVGPolygonElement',\n // Collections / lists\n 'NodeList',\n 'HTMLCollection',\n 'NamedNodeMap',\n 'DOMTokenList',\n 'DOMStringMap',\n 'CSSStyleDeclaration',\n 'DOMRect',\n 'DOMRectReadOnly',\n 'DOMPoint',\n 'DOMMatrix',\n // Ranges / selection\n 'Range',\n 'Selection',\n 'StaticRange',\n // Observers\n 'MutationObserver',\n 'MutationRecord',\n 'IntersectionObserver',\n 'IntersectionObserverEntry',\n 'ResizeObserver',\n 'ResizeObserverEntry',\n 'PerformanceObserver',\n 'PerformanceEntry',\n // Window / global\n 'Window',\n 'Location',\n 'History',\n 'Navigator',\n 'Screen',\n 'Storage',\n // Canvas / media\n 'CanvasRenderingContext2D',\n 'WebGLRenderingContext',\n 'WebGL2RenderingContext',\n 'OffscreenCanvas',\n 'ImageData',\n 'ImageBitmap',\n 'MediaStream',\n 'MediaRecorder',\n 'AudioContext',\n 'AudioNode',\n 'AudioBuffer',\n // Workers / messaging\n 'Worker',\n 'SharedWorker',\n 'ServiceWorker',\n 'ServiceWorkerRegistration',\n 'BroadcastChannel',\n 'MessageChannel',\n 'MessagePort',\n // Other Web APIs\n 'WebSocket',\n 'XMLHttpRequest',\n 'FileReader',\n 'FileList',\n 'DataTransfer',\n 'Crypto',\n 'SubtleCrypto',\n 'CryptoKey',\n 'Geolocation',\n 'Notification',\n 'PermissionStatus',\n 'MediaQueryList',\n 'TreeWalker',\n 'NodeIterator',\n 'ClipboardItem',\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 case ts.SyntaxKind.SymbolKeyword:\n return \"Symbol('example')\"\n case ts.SyntaxKind.BigIntKeyword:\n return '0n'\n case ts.SyntaxKind.ObjectKeyword:\n return '{}'\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\n // Built-in constructible types — valid JS expressions as examples\n const builtinExamples: Record<string, string> = {\n // Collections\n Map: 'new Map()',\n Set: 'new Set()',\n WeakMap: 'new WeakMap()',\n WeakSet: 'new WeakSet()',\n WeakRef: 'new WeakRef({})',\n // Errors\n Error: \"new Error('example')\",\n TypeError: \"new TypeError('example')\",\n RangeError: \"new RangeError('example')\",\n SyntaxError: \"new SyntaxError('example')\",\n ReferenceError: \"new ReferenceError('example')\",\n URIError: \"new URIError('example')\",\n EvalError: \"new EvalError('example')\",\n // Date/Regex\n Date: 'new Date()',\n RegExp: '/example/',\n // Binary / WASM\n ArrayBuffer: 'new ArrayBuffer(0)',\n SharedArrayBuffer: 'new SharedArrayBuffer(0)',\n DataView: 'new DataView(new ArrayBuffer(0))',\n Float32Array: 'new Float32Array(0)',\n Float64Array: 'new Float64Array(0)',\n Int8Array: 'new Int8Array(0)',\n Int16Array: 'new Int16Array(0)',\n Int32Array: 'new Int32Array(0)',\n Uint8Array: 'new Uint8Array(0)',\n Uint16Array: 'new Uint16Array(0)',\n Uint32Array: 'new Uint32Array(0)',\n Uint8ClampedArray: 'new Uint8ClampedArray(0)',\n BigInt64Array: 'new BigInt64Array(0)',\n BigUint64Array: 'new BigUint64Array(0)',\n // Web APIs (constructible)\n URL: \"new URL('https://example.com')\",\n URLSearchParams: 'new URLSearchParams()',\n Headers: 'new Headers()',\n FormData: 'new FormData()',\n Blob: 'new Blob()',\n File: \"new File([], 'example')\",\n Response: 'new Response()',\n Request: \"new Request('https://example.com')\",\n AbortController: 'new AbortController()',\n AbortSignal: 'AbortSignal.abort()',\n // Streams\n ReadableStream: 'new ReadableStream()',\n WritableStream: 'new WritableStream()',\n TransformStream: 'new TransformStream()',\n // Structured data\n TextEncoder: 'new TextEncoder()',\n TextDecoder: 'new TextDecoder()',\n // Promises\n Promise: 'Promise.resolve(null)',\n }\n\n if (typeName in builtinExamples) {\n return builtinExamples[typeName]\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 // Always use : for object shape properties — = is only valid\n // in destructuring patterns, not in object literal examples\n props.push(`${propName}: ${propExample}`)\n }\n }\n return `{ ${props.join(', ')} }`\n }\n\n // Type parameters (generics like T, K, V)\n // Check if we have constraint or default info from enclosing context\n if (ctx?.typeParams?.has(typeName)) {\n const tp = ctx.typeParams.get(typeName)!\n if (tp.constraint) {\n return typeToExample(tp.constraint, checker, warnings, ctx)\n }\n if (tp.default) {\n return typeToExample(tp.default, checker, warnings, ctx)\n }\n // No constraint or default — fall through to 'any'\n }\n\n // DOM interface types — opaque objects, keep params annotated\n if (domInterfaceTypes.has(typeName)) {\n return '{}'\n }\n\n // Single uppercase letter or common generic names — treat as any\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 // All null/undefined — just return the simplest form\n if (nonNullTypes.length === 0) {\n if (hasNull) return 'null'\n return 'undefined'\n }\n\n if (nonNullTypes.length === 1 && (hasNull || hasUndefined)) {\n // Nullable type: T | null -> T | null\n const baseExample = typeToExample(\n nonNullTypes[0],\n checker,\n warnings,\n ctx\n )\n // any | null/undefined is just any — don't emit 'any | null'\n if (baseExample === 'any') return 'any'\n if (hasNull) return `${baseExample} | null`\n if (hasUndefined) return `${baseExample} | undefined`\n }\n\n // General union: if any member can't be expressed (any), degrade\n // the whole union to any — don't silently drop members\n const examples = unionType.types\n .map((t) => typeToExample(t, checker, warnings, ctx))\n .filter((e, i, arr) => arr.indexOf(e) === i) // deduplicate\n if (examples.some((e) => e === 'any')) return 'any'\n if (examples.length === 1) return examples[0]\n if (examples.length > 0) {\n // Check if any member is a complex expression (function call, new, etc.)\n // that would make | ambiguous as JS bitwise OR\n const hasComplexMember = examples.some(\n (e) => /[()]/.test(e) || e.startsWith('new ')\n )\n if (hasComplexMember) return 'any'\n return examples.join(' | ')\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 // Convert to inline FunctionPredicate expression\n const funcType = type as ts.FunctionTypeNode\n const fpParams: string[] = []\n for (const param of funcType.parameters) {\n const name = param.name?.getText() || '_'\n if (name === 'this') continue\n let paramExample = typeToExample(param.type, checker, warnings, ctx)\n if (paramExample === 'any') paramExample = 'null'\n fpParams.push(`${name}: ${paramExample}`)\n }\n let fpReturn = typeToExample(funcType.type, checker, warnings, ctx)\n if (fpReturn === 'any') fpReturn = 'null'\n const spec: string[] = []\n if (fpParams.length > 0) spec.push(`params: { ${fpParams.join(', ')} }`)\n if (fpReturn !== 'undefined') spec.push(`returns: ${fpReturn}`)\n return `FunctionPredicate('function', { ${spec.join(', ')} })`\n }\n\n case ts.SyntaxKind.TupleType: {\n const tupleType = type as ts.TupleTypeNode\n const elements = tupleType.elements.map((e) => {\n const example = ts.isNamedTupleMember(e)\n ? typeToExample(e.type, checker)\n : typeToExample(e as ts.TypeNode, checker)\n // 'any' is not a valid literal value\n return example === 'any' ? 'null' : example\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 // Check type parameter constraints/defaults from enclosing context\n if (ctx?.typeParams?.has(typeName)) {\n const tp = ctx.typeParams.get(typeName)!\n if (tp.constraint) {\n return typeToInfo(tp.constraint, ctx)\n }\n if (tp.default) {\n return typeToInfo(tp.default, ctx)\n }\n }\n\n // DOM interface types — opaque objects\n if (domInterfaceTypes.has(typeName)) {\n return { kind: 'object' }\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 annotations?: TjsAnnotation[]\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(\n node,\n sourceFile,\n warnings,\n annotations\n )\n }\n\n // Use @tjs example if provided, otherwise build from members\n const exampleAnnotation = annotations?.find((a) => a.kind === 'example')\n const predicateAnnotation = annotations?.find((a) => a.kind === 'predicate')\n\n let example: string\n if (exampleAnnotation?.text) {\n example = exampleAnnotation.text\n } else {\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 if (propExample === 'any') propExample = 'null'\n props.push(`${propName}: ${propExample}`)\n }\n }\n if (props.length === 0 && !predicateAnnotation) {\n return `Type ${typeName} {}`\n }\n example = props.length > 0 ? `{ ${props.join(', ')} }` : '{}'\n }\n\n const parts = [`example: ${example}`]\n if (predicateAnnotation?.text) {\n parts.push(predicateAnnotation.text)\n }\n\n return `Type ${typeName} {\\n ${parts.join('\\n ')}\\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 annotations?: TjsAnnotation[]\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 // Use @tjs predicate if provided, otherwise auto-generate\n const predicateAnnotation = annotations?.find((a) => a.kind === 'predicate')\n const declarationAnnotation = annotations?.find(\n (a) => a.kind === 'declaration'\n )\n\n let predicateLine: string\n if (predicateAnnotation?.text) {\n predicateLine = predicateAnnotation.text\n } else {\n // Build predicate checks from interface members\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 const isComputed = propName.startsWith('[') && propName.endsWith(']')\n const symbolName = isComputed ? propName.slice(1, -1) : null\n\n if (isComputed) {\n checks.push(`${symbolName} in x`)\n } else {\n checks.push(`'${propName}' in x`)\n }\n\n if (member.type && ts.isTypeReferenceNode(member.type)) {\n const refName = member.type.typeName.getText(sourceFile)\n if (typeParamNames.includes(refName)) {\n if (isComputed) {\n checks.push(`${refName}(x[${symbolName}])`)\n } else {\n checks.push(`${refName}(x.${propName})`)\n }\n }\n }\n }\n }\n\n const predicateParams = ['x', ...typeParamNames].join(', ')\n predicateLine = `predicate(${predicateParams}) { return ${checks.join(\n ' && '\n )} }`\n }\n\n const parts = [`description: '${typeName}'`, predicateLine]\n if (declarationAnnotation?.text) {\n parts.push(`declaration ${declarationAnnotation.text}`)\n }\n\n return `Generic ${typeName}<${typeParams.join(', ')}> {\\n ${parts.join(\n '\\n '\n )}\\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 annotations?: TjsAnnotation[]\n): string | null {\n const typeName = node.name.getText(sourceFile)\n\n // Check for generics\n if (node.typeParameters && node.typeParameters.length > 0) {\n // Generic function types → generic FunctionPredicate\n if (node.type.kind === ts.SyntaxKind.FunctionType) {\n return transformGenericFunctionTypeToFP(node, sourceFile, warnings)\n }\n return transformGenericTypeAliasToGeneric(\n node,\n sourceFile,\n warnings,\n annotations\n )\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 // Function types → FunctionPredicate declaration\n if (node.type.kind === ts.SyntaxKind.FunctionType) {\n const funcType = node.type as ts.FunctionTypeNode\n const fpParams: string[] = []\n for (const param of funcType.parameters) {\n const name = param.name?.getText(sourceFile) || '_'\n if (name === 'this') continue\n let paramExample = typeToExample(param.type, undefined, warnings)\n if (paramExample === 'any') paramExample = 'null'\n fpParams.push(`${name}: ${paramExample}`)\n }\n let fpReturn = typeToExample(funcType.type, undefined, warnings)\n if (fpReturn === 'any') fpReturn = 'null'\n const spec: string[] = []\n if (fpParams.length > 0) spec.push(`params: { ${fpParams.join(', ')} }`)\n if (fpReturn !== 'undefined') spec.push(`returns: ${fpReturn}`)\n return `FunctionPredicate ${typeName} {\\n ${spec.join('\\n ')}\\n}`\n }\n\n const example = typeToExample(node.type, undefined, warnings)\n\n // 'any' and 'undefined' — skip declaration (undeclared = any in TJS)\n if (example === 'any' || example === 'undefined') {\n return `Type ${typeName} {}`\n }\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 function type alias to a generic FunctionPredicate declaration.\n * e.g. `type Creator<T> = (x: string) => T` → `FunctionPredicate Creator<T> { params: { x: '' } returns: T }`\n */\nfunction transformGenericFunctionTypeToFP(\n node: ts.TypeAliasDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string {\n const typeName = node.name.getText(sourceFile)\n const funcType = node.type as ts.FunctionTypeNode\n\n // Build type params string: <T, U = {}>\n const typeParamNames = new Set<string>()\n const typeParams: string[] = []\n for (const tp of node.typeParameters!) {\n const name = tp.name.getText(sourceFile)\n typeParamNames.add(name)\n if (tp.default) {\n const defaultExample = typeToExample(tp.default, undefined, warnings)\n typeParams.push(`${name} = ${defaultExample}`)\n } else {\n typeParams.push(name)\n }\n }\n\n // Build params — preserve type param references as bare identifiers\n const fpParams: string[] = []\n for (const param of funcType.parameters) {\n const name = param.name?.getText(sourceFile) || '_'\n if (name === 'this') continue\n const paramTypeText = param.type?.getText(sourceFile) || 'any'\n if (typeParamNames.has(paramTypeText)) {\n // Type param reference — keep as-is\n fpParams.push(`${name}: ${paramTypeText}`)\n } else {\n let paramExample = typeToExample(param.type, undefined, warnings)\n if (paramExample === 'any') paramExample = 'null'\n fpParams.push(`${name}: ${paramExample}`)\n }\n }\n\n // Build return type — preserve type param references\n const returnTypeText = funcType.type?.getText(sourceFile) || 'void'\n let fpReturn: string | undefined\n if (returnTypeText !== 'void') {\n if (typeParamNames.has(returnTypeText)) {\n fpReturn = returnTypeText\n } else {\n fpReturn = typeToExample(funcType.type, undefined, warnings)\n if (fpReturn === 'any') fpReturn = 'null'\n if (fpReturn === 'undefined') fpReturn = undefined\n }\n }\n\n const spec: string[] = []\n if (fpParams.length > 0) spec.push(`params: { ${fpParams.join(', ')} }`)\n if (fpReturn !== undefined) spec.push(`returns: ${fpReturn}`)\n return `FunctionPredicate ${typeName}<${typeParams.join(\n ', '\n )}> {\\n ${spec.join('\\n ')}\\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 annotations?: TjsAnnotation[]\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\n // Use @tjs predicate if provided, otherwise default placeholder\n const predicateAnnotation = annotations?.find((a) => a.kind === 'predicate')\n const declarationAnnotation = annotations?.find(\n (a) => a.kind === 'declaration'\n )\n\n let predicateLine: string\n if (predicateAnnotation?.text) {\n predicateLine = predicateAnnotation.text\n } else {\n const predicateParams = ['x', ...typeParamNames].join(', ')\n predicateLine = `predicate(${predicateParams}) { return true }`\n }\n\n // Include original TS source as a block comment for manual enhancement\n const originalSource = node.getText(sourceFile).trim()\n const comment = `/* Original TS:\\n${originalSource}\\n*/`\n\n const parts = [`description: '${typeName}'`, predicateLine]\n if (declarationAnnotation?.text) {\n parts.push(`declaration ${declarationAnnotation.text}`)\n }\n\n return `${comment}\\nGeneric ${typeName}<${typeParams.join(\n ', '\n )}> {\\n ${parts.join('\\n ')}\\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 ctx?: TypeResolutionContext\n): string {\n // Build type parameter map from generic params (constraint/default)\n let typeParamMap:\n | Map<string, { constraint?: ts.TypeNode; default?: ts.TypeNode }>\n | undefined\n if (node.typeParameters && node.typeParameters.length > 0) {\n typeParamMap = new Map()\n for (const tp of node.typeParameters) {\n typeParamMap.set(tp.name.getText(sourceFile), {\n constraint: tp.constraint,\n default: tp.default,\n })\n }\n }\n\n // Merge type params into ctx for resolution in typeToExample\n const resolveCtx: TypeResolutionContext | undefined =\n typeParamMap || ctx\n ? { ...ctx, typeParams: typeParamMap ?? ctx?.typeParams }\n : ctx\n\n const degraded: string[] = []\n const params = transformParams(\n node.parameters,\n sourceFile,\n warnings,\n degraded,\n resolveCtx\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, resolveCtx)\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 &&\n returnExample !== 'undefined' &&\n returnExample !== 'any' &&\n !returnExample.startsWith('new ') // new Set(), new Map() etc. aren't valid TJS literals\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 export, async, and generator modifiers\n const isExported = node.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\n const isAsync = node.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.AsyncKeyword\n )\n const isGenerator = !!(node as ts.FunctionDeclaration).asteriskToken\n const exportPrefix = isExported ? 'export ' : ''\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}${exportPrefix}${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 ctx?: TypeResolutionContext,\n convertPrivateToHash = false\n): string {\n // Build type parameter map from class-level generics\n let resolveCtx = ctx\n if (node.typeParameters && node.typeParameters.length > 0) {\n const typeParamMap = new Map<\n string,\n { constraint?: ts.TypeNode; default?: ts.TypeNode }\n >()\n for (const tp of node.typeParameters) {\n typeParamMap.set(tp.name.getText(sourceFile), {\n constraint: tp.constraint,\n default: tp.default,\n })\n }\n resolveCtx = { ...ctx, typeParams: typeParamMap }\n }\n\n const className = node.name?.getText(sourceFile) || 'Anonymous'\n // Get base class name, stripping type arguments (e.g. Component<T> → Component)\n const extendsType = node.heritageClauses?.find(\n (h) => h.token === ts.SyntaxKind.ExtendsKeyword\n )?.types[0]\n const extendsClause = extendsType?.expression?.getText(sourceFile)\n\n // With TjsClass: convert TS private to JS # (true runtime privacy).\n // Without TjsClass: strip the keyword, keep the name (TS private is compile-time only).\n const privateFieldMap = new Map<string, string>()\n if (convertPrivateToHash) {\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\n // Helper to replace private field references in transpiled code\n // Handles: this.prop, ClassName.prop (static), varName.prop (instance via variable)\n const replacePrivateRefs = (code: string): string => {\n let result = code\n for (const [tsName, jsName] of privateFieldMap) {\n // Match property access on any identifier: word.propName or this.propName\n // This covers this.prop, ClassName.prop, and varName.prop\n result = result.replace(\n new RegExp(`(\\\\b\\\\w+)\\\\.${tsName}\\\\b`, 'g'),\n `$1.${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(\n member.parameters,\n sourceFile,\n warnings,\n undefined,\n resolveCtx\n )\n const returnExample = member.type\n ? typeToExample(member.type, undefined, warnings, resolveCtx)\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 isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n const staticPrefix = isStatic ? 'static ' : ''\n const returnExample = member.type\n ? typeToExample(member.type, undefined, warnings, resolveCtx)\n : ''\n const returnAnnotation =\n returnExample &&\n returnExample !== 'undefined' &&\n returnExample !== 'any' &&\n !returnExample.startsWith('new ')\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(\n ` ${staticPrefix}get ${propName}()${returnAnnotation} ${body}`\n )\n }\n\n // Setters\n if (ts.isSetAccessorDeclaration(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n const staticPrefix = isStatic ? 'static ' : ''\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(\n ` ${staticPrefix}set ${propName}(${params.join(', ')}) ${body}`\n )\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 // Wrap in parens so TS treats { ... } as an object expression,\n // not a block with labels (which mangles property colons)\n const initText = member.initializer.getText(sourceFile)\n const wrapped = initText.trimStart().startsWith('{')\n ? `(${initText})`\n : initText\n const transpiled = ts.transpileModule(wrapped, {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n let output = transpiled.outputText.trim()\n // Strip the wrapping parens and trailing semicolon\n if (wrapped !== initText) {\n output = output.replace(/^\\(/, '').replace(/\\);?\\s*$/, '')\n }\n members.push(` ${staticPrefix}${propName} = ${output}`)\n } else {\n // Property without initializer - just declare it\n members.push(` ${staticPrefix}${propName}`)\n }\n }\n }\n\n const isExported = node.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\n const exportPrefix = isExported ? 'export ' : ''\n const extendsStr = extendsClause ? ` extends ${extendsClause}` : ''\n return `${exportPrefix}class ${className}${extendsStr} {\\n${members.join(\n '\\n'\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 ctx?: TypeResolutionContext\n): string[] {\n const params: string[] = []\n\n for (const param of parameters) {\n const name = param.name.getText(sourceFile)\n // Skip TypeScript's `this` pseudo-parameter (declares `this` context type)\n if (name === 'this') continue\n const isRest = !!param.dotDotDotToken\n const isOptional = !!param.questionToken || !!param.initializer\n const typeExample = typeToExample(param.type, undefined, warnings, ctx)\n\n if (isRest) {\n // Rest parameter: ...args: T[] → ...args: [example]\n // typeToExample already converts T[] to [example], so use directly\n if (typeExample === 'any' || typeExample === 'undefined') {\n params.push(`...${name}: [null]`)\n } else {\n params.push(`...${name}: ${typeExample}`)\n }\n } else 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 // Build type parameter map from generic params\n let resolveCtx = ctx\n if (node.typeParameters && node.typeParameters.length > 0) {\n const typeParamMap = new Map<\n string,\n { constraint?: ts.TypeNode; default?: ts.TypeNode }\n >()\n for (const tp of node.typeParameters) {\n typeParamMap.set(tp.name.getText(sourceFile), {\n constraint: tp.constraint,\n default: tp.default,\n })\n }\n resolveCtx = { ...ctx, typeParams: typeParamMap }\n }\n\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, resolveCtx),\n required: !isOptional,\n default: defaultValue,\n }\n }\n\n const result: FunctionTypeInfo = {\n name,\n params,\n returns: node.type ? typeToInfo(node.type, resolveCtx) : 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 // Build type parameter map from class-level generics\n let resolveCtx = ctx\n if (node.typeParameters && node.typeParameters.length > 0) {\n const typeParamMap = new Map<\n string,\n { constraint?: ts.TypeNode; default?: ts.TypeNode }\n >()\n for (const tp of node.typeParameters) {\n typeParamMap.set(tp.name.getText(sourceFile), {\n constraint: tp.constraint,\n default: tp.default,\n })\n }\n resolveCtx = { ...ctx, typeParams: typeParamMap }\n }\n\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, resolveCtx),\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, resolveCtx),\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, resolveCtx) : 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 */\n// =============================================================================\n// @tjs annotations — enrich TJS output from TS source comments\n// =============================================================================\n\ninterface TjsAnnotation {\n index: number\n kind: 'predicate' | 'example' | 'skip' | 'declaration'\n text?: string // raw text for predicate/example/declaration\n}\n\n/** Valid TJS mode directives */\nconst VALID_TJS_MODES = new Set([\n 'TjsStrict',\n 'TjsEquals',\n 'TjsClass',\n 'TjsDate',\n 'TjsNoeval',\n 'TjsNoVar',\n 'TjsStandard',\n 'TjsSafeEval',\n])\n\n/**\n * Extract TJS mode directives from /* @tjs ... * / comments.\n * e.g. /* @tjs TjsClass TjsEquals * / → ['TjsClass', 'TjsEquals']\n */\nfunction extractTjsModes(source: string): string[] {\n const modes: string[] = []\n const re = /\\/\\*\\s*@tjs\\s+((?:Tjs\\w+\\s*)+)\\*\\//g\n let m\n while ((m = re.exec(source)) !== null) {\n const words = m[1].trim().split(/\\s+/)\n for (const word of words) {\n if (VALID_TJS_MODES.has(word) && !modes.includes(word)) {\n modes.push(word)\n }\n }\n }\n return modes\n}\n\n/**\n * Extract @tjs annotations from source comments.\n *\n * Supported forms:\n * /* @tjs-skip * /\n * /* @tjs example: { name: '', age: 0 } * /\n * /* @tjs predicate(x, T) { return typeof x === 'object' && T(x.value) } * /\n * /* @tjs declaration { value: T; path: string } * /\n */\nfunction extractTjsAnnotations(source: string): TjsAnnotation[] {\n const annotations: TjsAnnotation[] = []\n\n // @tjs-skip\n const skipRe = /\\/\\*\\s*@tjs-skip\\s*\\*\\//g\n let m\n while ((m = skipRe.exec(source)) !== null) {\n annotations.push({ index: m.index, kind: 'skip' })\n }\n\n // @tjs predicate(...) { ... }\n const predRe = /\\/\\*\\s*@tjs\\s+predicate(\\([^)]*\\)\\s*\\{[\\s\\S]*?\\})\\s*\\*\\//g\n while ((m = predRe.exec(source)) !== null) {\n annotations.push({\n index: m.index,\n kind: 'predicate',\n text: `predicate${m[1].trim()}`,\n })\n }\n\n // @tjs example: ...\n const exRe = /\\/\\*\\s*@tjs\\s+example:\\s*([\\s\\S]*?)\\s*\\*\\//g\n while ((m = exRe.exec(source)) !== null) {\n annotations.push({ index: m.index, kind: 'example', text: m[1].trim() })\n }\n\n // @tjs declaration { ... }\n const declRe = /\\/\\*\\s*@tjs\\s+declaration\\s*(\\{[\\s\\S]*?\\})\\s*\\*\\//g\n while ((m = declRe.exec(source)) !== null) {\n annotations.push({\n index: m.index,\n kind: 'declaration',\n text: m[1].trim(),\n })\n }\n\n return annotations.sort((a, b) => a.index - b.index)\n}\n\n/**\n * Build a map from declaration name → annotations that precede it.\n */\nfunction buildAnnotationMap(\n annotations: TjsAnnotation[],\n sourceFile: ts.SourceFile\n): Map<string, TjsAnnotation[]> {\n const result = new Map<string, TjsAnnotation[]>()\n if (annotations.length === 0) return result\n\n const statements = sourceFile.statements\n for (let si = 0; si < statements.length; si++) {\n const stmt = statements[si]\n let name: string | undefined\n\n if (ts.isInterfaceDeclaration(stmt)) {\n name = stmt.name.getText(sourceFile)\n } else if (ts.isTypeAliasDeclaration(stmt)) {\n name = stmt.name.getText(sourceFile)\n } else if (ts.isEnumDeclaration(stmt)) {\n name = stmt.name.getText(sourceFile)\n }\n\n if (!name) continue\n\n const stmtStart = stmt.getStart(sourceFile)\n const prevEnd = si > 0 ? statements[si - 1].getEnd() : 0\n\n const matching = annotations.filter(\n (a) => a.index >= prevEnd && a.index < stmtStart\n )\n if (matching.length > 0) {\n result.set(name, matching)\n }\n }\n\n return result\n}\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 // Extract @tjs annotations for enriching TJS output\n const tjsAnnotations = emitTJS ? extractTjsAnnotations(source) : []\n\n // Extract TJS mode directives from /* @tjs TjsClass ... */ comments\n const tjsModes = extractTjsModes(source)\n const hasTjsClass =\n tjsModes.includes('TjsClass') || tjsModes.includes('TjsStrict')\n\n // Parse TypeScript\n const sourceFile = ts.createSourceFile(\n filename,\n source,\n ts.ScriptTarget.Latest,\n true\n )\n\n // Build annotation map from @tjs comments\n const annotationMap = emitTJS\n ? buildAnnotationMap(tjsAnnotations, sourceFile)\n : new Map<string, TjsAnnotation[]>()\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 resolutionCtx\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 // Check if the variable statement itself is exported\n const varIsExported = statement.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\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 let tjsFunc = transformFunctionToTJS(\n funcNode,\n sourceFile,\n funcName,\n warnings,\n true,\n resolutionCtx\n )\n // Arrow/const functions: export is on the VariableStatement\n // Insert after any line comment or degraded comment\n if (varIsExported && !tjsFunc.includes('export ')) {\n const firstFuncLine = tjsFunc.search(/^(async\\s+)?function[\\s*]/m)\n if (firstFuncLine > 0) {\n tjsFunc =\n tjsFunc.slice(0, firstFuncLine) +\n 'export ' +\n tjsFunc.slice(firstFuncLine)\n } else {\n tjsFunc = 'export ' + tjsFunc\n }\n }\n tjsFunctions.push(tjsFunc)\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 const annotations = annotationMap.get(typeName)\n if (!seenTypeNames.has(typeName)) {\n seenTypeNames.add(typeName)\n // @tjs-skip — omit this declaration entirely\n if (annotations?.some((a) => a.kind === 'skip')) {\n // Skip — do not emit\n } else {\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 annotations\n )\n if (typeDecl) {\n const isExported = statement.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\n tjsFunctions.push(\n isExported\n ? typeDecl.replace(/^(\\/\\*[\\s\\S]*?\\*\\/\\s*)?/, '$1export ')\n : typeDecl\n )\n }\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 const annotations = annotationMap.get(typeName)\n if (!seenTypeNames.has(typeName)) {\n seenTypeNames.add(typeName)\n // @tjs-skip — omit this declaration entirely\n if (annotations?.some((a) => a.kind === 'skip')) {\n // Skip — do not emit\n } else {\n const typeDecl = transformTypeAliasToType(\n statement,\n sourceFile,\n warnings,\n annotations\n )\n if (typeDecl) {\n const isExported = statement.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\n tjsFunctions.push(\n isExported\n ? typeDecl.replace(/^(\\/\\*[\\s\\S]*?\\*\\/\\s*)?/, '$1export ')\n : typeDecl\n )\n }\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 const annotations = annotationMap.get(enumName)\n if (!seenTypeNames.has(enumName)) {\n seenTypeNames.add(enumName)\n if (annotations?.some((a) => a.kind === 'skip')) {\n // Skip — do not emit\n } else {\n const enumDecl = transformEnumToTJS(statement, sourceFile, warnings)\n if (enumDecl) {\n tjsFunctions.push(enumDecl)\n }\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(\n statement,\n sourceFile,\n warnings,\n undefined,\n hasTjsClass\n )\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 // Emit import directly — don't use ts.transpileModule which\n // strips \"unused\" imports in isolation. Filter out type-only\n // specifiers manually.\n if (\n statement.importClause?.namedBindings &&\n ts.isNamedImports(statement.importClause.namedBindings)\n ) {\n const valueSpecs = statement.importClause.namedBindings.elements\n .filter((e) => !e.isTypeOnly)\n .map((e) => {\n const name = e.name.getText(sourceFile)\n const propName = e.propertyName?.getText(sourceFile)\n return propName ? `${propName} as ${name}` : name\n })\n if (valueSpecs.length > 0) {\n const modSpec = (statement.moduleSpecifier as ts.StringLiteral)\n .text\n tjsFunctions.push(\n `import { ${valueSpecs.join(', ')} } from '${modSpec}'`\n )\n }\n } else {\n // Default import, namespace import, or side-effect import\n // Emit as-is (strip types via getText which preserves structure)\n const importText = statement.getText(sourceFile)\n // Remove type annotations by running through TS\n const cleaned = importText\n .replace(/\\btype\\s+/g, '')\n .replace(/\\s*:\\s*\\w+/g, '')\n tjsFunctions.push(cleaned)\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 and TJS mode directives\n const sourceFileName = filename || 'unknown'\n const modesLine = tjsModes.length > 0 ? tjsModes.join('\\n') + '\\n\\n' : ''\n const header = `${modesLine}/* 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",
|
|
19
|
+
"/**\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 FunctionPredicate Name\n const fpRe = /^[ \\t]*export\\s+FunctionPredicate\\s+(\\w+)/gm\n while ((m = fpRe.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 FunctionPredicate declaration */\ninterface FunctionPredicateInfo {\n params: { name: string; example: string }[]\n returns?: string\n typeParams?: string[]\n}\n\n/** Detect FunctionPredicate declarations and extract their param/return specs */\nfunction detectFunctionPredicates(\n source: string\n): Map<string, FunctionPredicateInfo> {\n const result = new Map<string, FunctionPredicateInfo>()\n\n // Block form: FunctionPredicate Name { ... } or FunctionPredicate Name<T> { ... }\n const blockRe =\n /^[ \\t]*(?:export\\s+)?FunctionPredicate\\s+(\\w+)\\s*(?:<([^>]+)>)?\\s*\\{/gm\n let m\n while ((m = blockRe.exec(source)) !== null) {\n const name = m[1]\n const typeParamsRaw = m[2] // undefined if no <...>\n const blockStart = m.index + m[0].length - 1\n\n // Find matching closing brace\n let depth = 1\n let i = blockStart + 1\n while (i < source.length && depth > 0) {\n if (source[i] === '{') depth++\n else if (source[i] === '}') depth--\n i++\n }\n const body = source.slice(blockStart + 1, i - 1)\n\n // Parse type params if present\n let typeParams: string[] | undefined\n if (typeParamsRaw) {\n typeParams = typeParamsRaw.split(',').map((tp) => tp.trim())\n }\n\n // Extract params object: params: { key: value, ... }\n const params: FunctionPredicateInfo['params'] = []\n const paramsMatch = body.match(/params\\s*:\\s*\\{([^}]*)\\}/)\n if (paramsMatch) {\n const paramsStr = paramsMatch[1]\n const paramEntries = splitParams(paramsStr)\n for (const entry of paramEntries) {\n const kv = entry.match(/^(\\w+)\\s*:\\s*(.+)$/)\n if (kv) {\n params.push({ name: kv[1], example: kv[2].trim() })\n }\n }\n }\n\n // Extract returns value\n let returns: string | undefined\n const returnsMatch = body.match(/returns\\s*:\\s*(.+?)(?:\\n|$)/)\n if (returnsMatch) {\n returns = returnsMatch[1].trim()\n }\n\n result.set(name, { params, returns, typeParams })\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 at class body level (brace depth 0 within classBody)\n // Must skip method implementations to avoid matching if(), for(), etc.\n const methods: ClassInfo['methods'] = []\n {\n let pos = 0\n let bodyDepth = 0\n\n while (pos < classBody.length) {\n const ch = classBody[pos]\n\n // Track brace depth — only look for methods at depth 0\n if (ch === '{') {\n bodyDepth++\n pos++\n continue\n }\n if (ch === '}') {\n bodyDepth--\n pos++\n continue\n }\n\n // Only match method declarations at class body level (depth 0)\n if (bodyDepth === 0) {\n const methodMatch = classBody.slice(pos).match(/^(\\w+)\\s*\\(/)\n if (methodMatch) {\n const name = methodMatch[1]\n if (name === 'constructor' || name === 'get' || name === 'set') {\n // Skip past the keyword to avoid re-matching a suffix\n pos += name.length\n continue\n } else {\n // Find matching close paren\n const parenStart = pos + methodMatch[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 pos = j\n continue\n }\n }\n }\n\n pos++\n }\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 // Empty block: Type Name {} (no example — degraded type, emit as any)\n const emptyBlockRe = /^[ \\t]*(?:export\\s+)?Type\\s+(\\w+)\\s*\\{\\s*\\}/gm\n while ((m = emptyBlockRe.exec(source)) !== null) {\n if (!result.has(m[1])) {\n result.set(m[1], '') // empty string signals \"any\"\n }\n }\n\n return result\n}\n\n/** Info about a Generic declaration */\ninterface GenericInfo {\n typeParams: string[]\n /** Raw TypeScript content from `declaration { ... }` block, if present */\n declaration?: string\n}\n\n/** Detect Generic declarations, their type params, and optional declaration blocks */\nfunction detectGenerics(source: string): Map<string, GenericInfo> {\n const result = new Map<string, GenericInfo>()\n const re = /^[ \\t]*(?:export\\s+)?Generic\\s+(\\w+)\\s*<([^>]+)>\\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 return tp.trim().split(/\\s*=/)[0].trim()\n })\n\n // Find the full Generic block body via brace matching\n const blockStart = m.index + m[0].length - 1\n let depth = 1\n let i = blockStart + 1\n while (i < source.length && depth > 0) {\n if (source[i] === '{') depth++\n else if (source[i] === '}') depth--\n i++\n }\n const blockBody = source.slice(blockStart + 1, i - 1)\n\n // Look for declaration { ... } within the block body\n let declaration: string | undefined\n const declMatch = blockBody.match(/\\bdeclaration\\s*\\{/)\n if (declMatch && declMatch.index !== undefined) {\n const declStart = declMatch.index + declMatch[0].length - 1\n let dDepth = 1\n let j = declStart + 1\n while (j < blockBody.length && dDepth > 0) {\n if (blockBody[j] === '{') dDepth++\n else if (blockBody[j] === '}') dDepth--\n j++\n }\n declaration = blockBody.slice(declStart + 1, j - 1).trim()\n }\n\n result.set(name, { typeParams, declaration })\n }\n return result\n}\n\n/** Info about a const/let/var declaration */\ninterface VarDeclInfo {\n name: string\n value: string\n kind: 'const' | 'let' | 'var'\n}\n\n/** Detect exported const/let/var declarations and their initializer values */\nfunction detectVarDeclarations(source: string): VarDeclInfo[] {\n const result: VarDeclInfo[] = []\n const re =\n /^[ \\t]*export\\s+(?:default\\s+)?(const|let|var)\\s+(\\w+)\\s*(?::\\s*\\w+\\s*)?=\\s*(.+)/gm\n let m\n while ((m = re.exec(source)) !== null) {\n // Get the value — may span multiple lines for objects/arrays\n let value = m[3].trim()\n // Strip trailing semicolons\n if (value.endsWith(';')) value = value.slice(0, -1).trim()\n result.push({ name: m[2], value, kind: m[1] as 'const' | 'let' | 'var' })\n }\n return result\n}\n\n/** Infer a TS type from a const initializer value */\nfunction inferConstType(value: string): string {\n // String literal\n if (/^['\"]/.test(value)) return 'string'\n // Template literal\n if (value.startsWith('`')) return 'string'\n // Boolean\n if (value === 'true' || value === 'false') return 'boolean'\n // Number\n if (/^[+-]?\\d+(\\.\\d+)?$/.test(value)) return 'number'\n // Symbol\n if (value.startsWith('Symbol(') || value.startsWith('Symbol.'))\n return 'symbol'\n // Array\n if (value.startsWith('[')) return 'any[]'\n // new Map/Set/WeakMap etc.\n if (value.startsWith('new WeakMap')) return 'WeakMap<any, any>'\n if (value.startsWith('new Map')) return 'Map<any, any>'\n if (value.startsWith('new Set')) return 'Set<any>'\n if (value.startsWith('new ')) return 'any'\n // Object/Record\n if (value.startsWith('{')) return 'Record<string, any>'\n // null/undefined\n if (value === 'null') return 'null'\n if (value === 'undefined') return 'undefined'\n return 'any'\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 if (exampleStr === '') {\n // Empty Type {} — degraded from TS type alias, emit as type = any\n lines.push(`export type ${name} = any;`)\n } else {\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 }\n emitted.add(name)\n }\n\n // Emit Generic declarations.\n // If a declaration block is present, emit a proper TS interface.\n // Otherwise, emit an any-based factory stub.\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 const typeParamStr =\n info.typeParams.length > 0 ? `<${info.typeParams.join(', ')}>` : ''\n\n if (info.declaration) {\n const declContent = info.declaration.trim()\n\n // Check if this is a verbatim TS type (conditional, mapped, etc.)\n // These start with \"// TS:\" and should be emitted as `export type`\n const tsMatch = declContent.match(/^\\/\\/\\s*TS:\\s*(.+)$/s)\n if (tsMatch) {\n lines.push(`export type ${name}${typeParamStr} = ${tsMatch[1].trim()};`)\n } else {\n // Structured declaration — emit as interface\n const declLines = declContent\n .split('\\n')\n .map((l) => l.trim())\n .filter((l) => l.length > 0)\n .map((l) => ` ${l}`)\n .join('\\n')\n lines.push(`export interface ${name}${typeParamStr} {\\n${declLines}\\n}`)\n }\n } else {\n // No declaration block — emit any-based factory stub\n lines.push(\n `export declare function ${name}(` +\n `...args: any[]` +\n `): { check(value: any): boolean; (value: any): boolean; };`\n )\n }\n emitted.add(name)\n }\n\n // Emit FunctionPredicate declarations as TS function types.\n // FunctionPredicate Callback { params: { x: 0 } returns: '' }\n // → export type Callback = (x: number) => string;\n const funcPreds = detectFunctionPredicates(source)\n for (const [name, fpInfo] of funcPreds) {\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 // Collect type param names for passthrough (don't convert T to any)\n const tpNames = new Set(\n fpInfo.typeParams?.map((tp) => tp.split('=')[0].trim()) ?? []\n )\n const typeParamStr = fpInfo.typeParams\n ? `<${fpInfo.typeParams.join(', ')}>`\n : ''\n\n const tsParams = fpInfo.params\n .map((p) => {\n // Array example [X] → rest param ...name: X[]\n if (p.example.startsWith('[') && p.example.endsWith(']')) {\n const inner = p.example.slice(1, -1).trim()\n const innerType = inner\n ? tpNames.has(inner)\n ? inner\n : inferTSTypeFromExample(inner)\n : 'any'\n return `...${p.name}: ${innerType}[]`\n }\n // In FunctionPredicate params, null means \"any\" (not literal null)\n const tsType =\n p.example === 'null'\n ? 'any'\n : tpNames.has(p.example)\n ? p.example\n : inferTSTypeFromExample(p.example)\n return `${p.name}: ${tsType}`\n })\n .join(', ')\n const tsReturn =\n fpInfo.returns !== undefined\n ? fpInfo.returns === 'null'\n ? 'any'\n : tpNames.has(fpInfo.returns)\n ? fpInfo.returns\n : inferTSTypeFromExample(fpInfo.returns)\n : 'void'\n lines.push(\n `export type ${name}${typeParamStr} = (${tsParams}) => ${tsReturn};`\n )\n emitted.add(name)\n }\n\n // Emit exported const/let/var declarations\n const varDecls = detectVarDeclarations(source)\n for (const decl of varDecls) {\n if (emitted.has(decl.name)) continue\n\n const exportInfo = exports.get(decl.name)\n const isExported = hasAnyExport ? !!exportInfo?.exported : true\n if (!isExported) continue\n\n const tsType = inferConstType(decl.value)\n lines.push(`export declare const ${decl.name}: ${tsType};`)\n emitted.add(decl.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",
|
|
20
|
+
"/**\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 /** Type parameter constraints and defaults from enclosing generic function/class */\n typeParams?: Map<string, { constraint?: ts.TypeNode; default?: ts.TypeNode }>\n}\n\n/**\n * DOM interface types — not constructible but common in TS signatures.\n * Map to {} (opaque object) so params stay annotated and required\n * rather than degrading to bare names.\n */\nconst domInterfaceTypes = new Set([\n // Events\n 'Event',\n 'CustomEvent',\n 'MouseEvent',\n 'KeyboardEvent',\n 'PointerEvent',\n 'TouchEvent',\n 'FocusEvent',\n 'InputEvent',\n 'CompositionEvent',\n 'WheelEvent',\n 'DragEvent',\n 'AnimationEvent',\n 'TransitionEvent',\n 'ClipboardEvent',\n 'UIEvent',\n 'ProgressEvent',\n 'ErrorEvent',\n 'MessageEvent',\n 'PopStateEvent',\n 'HashChangeEvent',\n 'PageTransitionEvent',\n 'StorageEvent',\n 'BeforeUnloadEvent',\n 'SubmitEvent',\n // Event targets / misc\n 'EventTarget',\n 'EventListener',\n // Nodes\n 'Node',\n 'Element',\n 'HTMLElement',\n 'SVGElement',\n 'Document',\n 'DocumentFragment',\n 'ShadowRoot',\n 'Text',\n 'Comment',\n 'Attr',\n // Specific HTML elements\n 'HTMLInputElement',\n 'HTMLTextAreaElement',\n 'HTMLSelectElement',\n 'HTMLButtonElement',\n 'HTMLFormElement',\n 'HTMLAnchorElement',\n 'HTMLImageElement',\n 'HTMLVideoElement',\n 'HTMLAudioElement',\n 'HTMLCanvasElement',\n 'HTMLDivElement',\n 'HTMLSpanElement',\n 'HTMLParagraphElement',\n 'HTMLTableElement',\n 'HTMLTemplateElement',\n 'HTMLSlotElement',\n 'HTMLDialogElement',\n 'HTMLDetailsElement',\n 'HTMLLabelElement',\n 'HTMLOptionElement',\n 'HTMLIFrameElement',\n 'HTMLScriptElement',\n 'HTMLStyleElement',\n 'HTMLLinkElement',\n 'HTMLMetaElement',\n 'HTMLHeadElement',\n 'HTMLBodyElement',\n 'HTMLMediaElement',\n // SVG elements\n 'SVGSVGElement',\n 'SVGPathElement',\n 'SVGGElement',\n 'SVGCircleElement',\n 'SVGRectElement',\n 'SVGTextElement',\n 'SVGLineElement',\n 'SVGPolygonElement',\n // Collections / lists\n 'NodeList',\n 'HTMLCollection',\n 'NamedNodeMap',\n 'DOMTokenList',\n 'DOMStringMap',\n 'CSSStyleDeclaration',\n 'DOMRect',\n 'DOMRectReadOnly',\n 'DOMPoint',\n 'DOMMatrix',\n // Ranges / selection\n 'Range',\n 'Selection',\n 'StaticRange',\n // Observers\n 'MutationObserver',\n 'MutationRecord',\n 'IntersectionObserver',\n 'IntersectionObserverEntry',\n 'ResizeObserver',\n 'ResizeObserverEntry',\n 'PerformanceObserver',\n 'PerformanceEntry',\n // Window / global\n 'Window',\n 'Location',\n 'History',\n 'Navigator',\n 'Screen',\n 'Storage',\n // Canvas / media\n 'CanvasRenderingContext2D',\n 'WebGLRenderingContext',\n 'WebGL2RenderingContext',\n 'OffscreenCanvas',\n 'ImageData',\n 'ImageBitmap',\n 'MediaStream',\n 'MediaRecorder',\n 'AudioContext',\n 'AudioNode',\n 'AudioBuffer',\n // Workers / messaging\n 'Worker',\n 'SharedWorker',\n 'ServiceWorker',\n 'ServiceWorkerRegistration',\n 'BroadcastChannel',\n 'MessageChannel',\n 'MessagePort',\n // Other Web APIs\n 'WebSocket',\n 'XMLHttpRequest',\n 'FileReader',\n 'FileList',\n 'DataTransfer',\n 'Crypto',\n 'SubtleCrypto',\n 'CryptoKey',\n 'Geolocation',\n 'Notification',\n 'PermissionStatus',\n 'MediaQueryList',\n 'TreeWalker',\n 'NodeIterator',\n 'ClipboardItem',\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 case ts.SyntaxKind.SymbolKeyword:\n return \"Symbol('example')\"\n case ts.SyntaxKind.BigIntKeyword:\n return '0n'\n case ts.SyntaxKind.ObjectKeyword:\n return '{}'\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\n // Built-in constructible types — valid JS expressions as examples\n const builtinExamples: Record<string, string> = {\n // Collections\n Map: 'new Map()',\n Set: 'new Set()',\n WeakMap: 'new WeakMap()',\n WeakSet: 'new WeakSet()',\n WeakRef: 'new WeakRef({})',\n // Errors\n Error: \"new Error('example')\",\n TypeError: \"new TypeError('example')\",\n RangeError: \"new RangeError('example')\",\n SyntaxError: \"new SyntaxError('example')\",\n ReferenceError: \"new ReferenceError('example')\",\n URIError: \"new URIError('example')\",\n EvalError: \"new EvalError('example')\",\n // Date/Regex\n Date: 'new Date()',\n RegExp: '/example/',\n // Binary / WASM\n ArrayBuffer: 'new ArrayBuffer(0)',\n SharedArrayBuffer: 'new SharedArrayBuffer(0)',\n DataView: 'new DataView(new ArrayBuffer(0))',\n Float32Array: 'new Float32Array(0)',\n Float64Array: 'new Float64Array(0)',\n Int8Array: 'new Int8Array(0)',\n Int16Array: 'new Int16Array(0)',\n Int32Array: 'new Int32Array(0)',\n Uint8Array: 'new Uint8Array(0)',\n Uint16Array: 'new Uint16Array(0)',\n Uint32Array: 'new Uint32Array(0)',\n Uint8ClampedArray: 'new Uint8ClampedArray(0)',\n BigInt64Array: 'new BigInt64Array(0)',\n BigUint64Array: 'new BigUint64Array(0)',\n // Web APIs (constructible)\n URL: \"new URL('https://example.com')\",\n URLSearchParams: 'new URLSearchParams()',\n Headers: 'new Headers()',\n FormData: 'new FormData()',\n Blob: 'new Blob()',\n File: \"new File([], 'example')\",\n Response: 'new Response()',\n Request: \"new Request('https://example.com')\",\n AbortController: 'new AbortController()',\n AbortSignal: 'AbortSignal.abort()',\n // Streams\n ReadableStream: 'new ReadableStream()',\n WritableStream: 'new WritableStream()',\n TransformStream: 'new TransformStream()',\n // Structured data\n TextEncoder: 'new TextEncoder()',\n TextDecoder: 'new TextDecoder()',\n // Promises\n Promise: 'Promise.resolve(null)',\n }\n\n if (typeName in builtinExamples) {\n return builtinExamples[typeName]\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 // Always use : for object shape properties — = is only valid\n // in destructuring patterns, not in object literal examples\n props.push(`${propName}: ${propExample}`)\n }\n }\n return `{ ${props.join(', ')} }`\n }\n\n // Type parameters (generics like T, K, V)\n // Check if we have constraint or default info from enclosing context\n if (ctx?.typeParams?.has(typeName)) {\n const tp = ctx.typeParams.get(typeName)!\n if (tp.constraint) {\n return typeToExample(tp.constraint, checker, warnings, ctx)\n }\n if (tp.default) {\n return typeToExample(tp.default, checker, warnings, ctx)\n }\n // No constraint or default — fall through to 'any'\n }\n\n // DOM interface types — opaque objects, keep params annotated\n if (domInterfaceTypes.has(typeName)) {\n return '{}'\n }\n\n // Single uppercase letter or common generic names — treat as any\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 // All null/undefined — just return the simplest form\n if (nonNullTypes.length === 0) {\n if (hasNull) return 'null'\n return 'undefined'\n }\n\n if (nonNullTypes.length === 1 && (hasNull || hasUndefined)) {\n // Nullable type: T | null -> T | null\n const baseExample = typeToExample(\n nonNullTypes[0],\n checker,\n warnings,\n ctx\n )\n // any | null/undefined is just any — don't emit 'any | null'\n if (baseExample === 'any') return 'any'\n if (hasNull) return `${baseExample} | null`\n if (hasUndefined) return `${baseExample} | undefined`\n }\n\n // General union: if any member can't be expressed (any), degrade\n // the whole union to any — don't silently drop members\n const examples = unionType.types\n .map((t) => typeToExample(t, checker, warnings, ctx))\n .filter((e, i, arr) => arr.indexOf(e) === i) // deduplicate\n if (examples.some((e) => e === 'any')) return 'any'\n if (examples.length === 1) return examples[0]\n if (examples.length > 0) {\n // Check if any member is a complex expression (function call, new, etc.)\n // that would make | ambiguous as JS bitwise OR\n const hasComplexMember = examples.some(\n (e) => /[()]/.test(e) || e.startsWith('new ')\n )\n if (hasComplexMember) return 'any'\n return examples.join(' | ')\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 // Convert to inline FunctionPredicate expression\n const funcType = type as ts.FunctionTypeNode\n const fpParams: string[] = []\n for (const param of funcType.parameters) {\n const name = param.name?.getText() || '_'\n if (name === 'this') continue\n let paramExample = typeToExample(param.type, checker, warnings, ctx)\n if (paramExample === 'any') paramExample = 'null'\n fpParams.push(`${name}: ${paramExample}`)\n }\n let fpReturn = typeToExample(funcType.type, checker, warnings, ctx)\n if (fpReturn === 'any') fpReturn = 'null'\n const spec: string[] = []\n if (fpParams.length > 0) spec.push(`params: { ${fpParams.join(', ')} }`)\n if (fpReturn !== 'undefined') spec.push(`returns: ${fpReturn}`)\n return `FunctionPredicate('function', { ${spec.join(', ')} })`\n }\n\n case ts.SyntaxKind.TupleType: {\n const tupleType = type as ts.TupleTypeNode\n const elements = tupleType.elements.map((e) => {\n const example = ts.isNamedTupleMember(e)\n ? typeToExample(e.type, checker)\n : typeToExample(e as ts.TypeNode, checker)\n // 'any' is not a valid literal value\n return example === 'any' ? 'null' : example\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 // Check type parameter constraints/defaults from enclosing context\n if (ctx?.typeParams?.has(typeName)) {\n const tp = ctx.typeParams.get(typeName)!\n if (tp.constraint) {\n return typeToInfo(tp.constraint, ctx)\n }\n if (tp.default) {\n return typeToInfo(tp.default, ctx)\n }\n }\n\n // DOM interface types — opaque objects\n if (domInterfaceTypes.has(typeName)) {\n return { kind: 'object' }\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 annotations?: TjsAnnotation[]\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(\n node,\n sourceFile,\n warnings,\n annotations\n )\n }\n\n // Use @tjs example if provided, otherwise build from members\n const exampleAnnotation = annotations?.find((a) => a.kind === 'example')\n const predicateAnnotation = annotations?.find((a) => a.kind === 'predicate')\n\n let example: string\n if (exampleAnnotation?.text) {\n example = exampleAnnotation.text\n } else {\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 if (propExample === 'any') propExample = 'null'\n props.push(`${propName}: ${propExample}`)\n }\n }\n if (props.length === 0 && !predicateAnnotation) {\n return `Type ${typeName} {}`\n }\n example = props.length > 0 ? `{ ${props.join(', ')} }` : '{}'\n }\n\n const parts = [`example: ${example}`]\n if (predicateAnnotation?.text) {\n parts.push(predicateAnnotation.text)\n }\n\n return `Type ${typeName} {\\n ${parts.join('\\n ')}\\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 annotations?: TjsAnnotation[]\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 // Use @tjs predicate if provided, otherwise auto-generate\n const predicateAnnotation = annotations?.find((a) => a.kind === 'predicate')\n const declarationAnnotation = annotations?.find(\n (a) => a.kind === 'declaration'\n )\n\n let predicateLine: string\n if (predicateAnnotation?.text) {\n predicateLine = predicateAnnotation.text\n } else {\n // Build predicate checks from interface members\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 const isComputed = propName.startsWith('[') && propName.endsWith(']')\n const symbolName = isComputed ? propName.slice(1, -1) : null\n\n if (isComputed) {\n checks.push(`${symbolName} in x`)\n } else {\n checks.push(`'${propName}' in x`)\n }\n\n if (member.type && ts.isTypeReferenceNode(member.type)) {\n const refName = member.type.typeName.getText(sourceFile)\n if (typeParamNames.includes(refName)) {\n if (isComputed) {\n checks.push(`${refName}(x[${symbolName}])`)\n } else {\n checks.push(`${refName}(x.${propName})`)\n }\n }\n }\n }\n }\n\n const predicateParams = ['x', ...typeParamNames].join(', ')\n predicateLine = `predicate(${predicateParams}) { return ${checks.join(\n ' && '\n )} }`\n }\n\n const parts = [`description: '${typeName}'`, predicateLine]\n\n if (declarationAnnotation?.text) {\n parts.push(`declaration ${declarationAnnotation.text}`)\n } else {\n // Auto-generate declaration block from interface members\n const declMembers: string[] = []\n for (const member of node.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const optional = member.questionToken ? '?' : ''\n const typeText = member.type ? member.type.getText(sourceFile) : 'any'\n declMembers.push(`${propName}${optional}: ${typeText}`)\n } else if (ts.isMethodSignature(member) && member.name) {\n // Method: name(params): returnType\n const methodText = member.getText(sourceFile).trim()\n // Remove trailing semicolon if present\n declMembers.push(methodText.replace(/;$/, ''))\n }\n }\n if (declMembers.length > 0) {\n parts.push(`declaration {\\n ${declMembers.join('\\n ')}\\n }`)\n }\n }\n\n return `Generic ${typeName}<${typeParams.join(', ')}> {\\n ${parts.join(\n '\\n '\n )}\\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 annotations?: TjsAnnotation[]\n): string | null {\n const typeName = node.name.getText(sourceFile)\n\n // Check for generics\n if (node.typeParameters && node.typeParameters.length > 0) {\n // Generic function types → generic FunctionPredicate\n if (node.type.kind === ts.SyntaxKind.FunctionType) {\n return transformGenericFunctionTypeToFP(node, sourceFile, warnings)\n }\n return transformGenericTypeAliasToGeneric(\n node,\n sourceFile,\n warnings,\n annotations\n )\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 // Function types → FunctionPredicate declaration\n if (node.type.kind === ts.SyntaxKind.FunctionType) {\n const funcType = node.type as ts.FunctionTypeNode\n const fpParams: string[] = []\n for (const param of funcType.parameters) {\n const name = param.name?.getText(sourceFile) || '_'\n if (name === 'this') continue\n let paramExample = typeToExample(param.type, undefined, warnings)\n if (paramExample === 'any') paramExample = 'null'\n fpParams.push(`${name}: ${paramExample}`)\n }\n let fpReturn = typeToExample(funcType.type, undefined, warnings)\n if (fpReturn === 'any') fpReturn = 'null'\n const spec: string[] = []\n if (fpParams.length > 0) spec.push(`params: { ${fpParams.join(', ')} }`)\n if (fpReturn !== 'undefined') spec.push(`returns: ${fpReturn}`)\n return `FunctionPredicate ${typeName} {\\n ${spec.join('\\n ')}\\n}`\n }\n\n const example = typeToExample(node.type, undefined, warnings)\n\n // 'any' and 'undefined' — skip declaration (undeclared = any in TJS)\n if (example === 'any' || example === 'undefined') {\n return `Type ${typeName} {}`\n }\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 function type alias to a generic FunctionPredicate declaration.\n * e.g. `type Creator<T> = (x: string) => T` → `FunctionPredicate Creator<T> { params: { x: '' } returns: T }`\n */\nfunction transformGenericFunctionTypeToFP(\n node: ts.TypeAliasDeclaration,\n sourceFile: ts.SourceFile,\n warnings?: string[]\n): string {\n const typeName = node.name.getText(sourceFile)\n const funcType = node.type as ts.FunctionTypeNode\n\n // Build type params string: <T, U = {}>\n const typeParamNames = new Set<string>()\n const typeParams: string[] = []\n for (const tp of node.typeParameters!) {\n const name = tp.name.getText(sourceFile)\n typeParamNames.add(name)\n if (tp.default) {\n const defaultExample = typeToExample(tp.default, undefined, warnings)\n typeParams.push(`${name} = ${defaultExample}`)\n } else {\n typeParams.push(name)\n }\n }\n\n // Build params — preserve type param references as bare identifiers\n const fpParams: string[] = []\n for (const param of funcType.parameters) {\n const name = param.name?.getText(sourceFile) || '_'\n if (name === 'this') continue\n const paramTypeText = param.type?.getText(sourceFile) || 'any'\n if (typeParamNames.has(paramTypeText)) {\n // Type param reference — keep as-is\n fpParams.push(`${name}: ${paramTypeText}`)\n } else {\n let paramExample = typeToExample(param.type, undefined, warnings)\n if (paramExample === 'any') paramExample = 'null'\n fpParams.push(`${name}: ${paramExample}`)\n }\n }\n\n // Build return type — preserve type param references\n const returnTypeText = funcType.type?.getText(sourceFile) || 'void'\n let fpReturn: string | undefined\n if (returnTypeText !== 'void') {\n if (typeParamNames.has(returnTypeText)) {\n fpReturn = returnTypeText\n } else {\n fpReturn = typeToExample(funcType.type, undefined, warnings)\n if (fpReturn === 'any') fpReturn = 'null'\n if (fpReturn === 'undefined') fpReturn = undefined\n }\n }\n\n const spec: string[] = []\n if (fpParams.length > 0) spec.push(`params: { ${fpParams.join(', ')} }`)\n if (fpReturn !== undefined) spec.push(`returns: ${fpReturn}`)\n return `FunctionPredicate ${typeName}<${typeParams.join(\n ', '\n )}> {\\n ${spec.join('\\n ')}\\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 annotations?: TjsAnnotation[]\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\n // Use @tjs predicate if provided, otherwise default placeholder\n const predicateAnnotation = annotations?.find((a) => a.kind === 'predicate')\n const declarationAnnotation = annotations?.find(\n (a) => a.kind === 'declaration'\n )\n\n let predicateLine: string\n if (predicateAnnotation?.text) {\n predicateLine = predicateAnnotation.text\n } else {\n const predicateParams = ['x', ...typeParamNames].join(', ')\n predicateLine = `predicate(${predicateParams}) { return true }`\n }\n\n const parts = [`description: '${typeName}'`, predicateLine]\n\n if (declarationAnnotation?.text) {\n parts.push(`declaration ${declarationAnnotation.text}`)\n } else {\n // Auto-generate declaration block from the type body\n const typeBody = node.type\n\n if (typeBody && ts.isTypeLiteralNode(typeBody)) {\n // Object type literal: { item: T; count: number }\n const declMembers: string[] = []\n for (const member of typeBody.members) {\n if (ts.isPropertySignature(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const optional = member.questionToken ? '?' : ''\n const typeText = member.type ? member.type.getText(sourceFile) : 'any'\n declMembers.push(`${propName}${optional}: ${typeText}`)\n } else if (ts.isMethodSignature(member) && member.name) {\n declMembers.push(member.getText(sourceFile).trim().replace(/;$/, ''))\n }\n }\n if (declMembers.length > 0) {\n parts.push(`declaration {\\n ${declMembers.join('\\n ')}\\n }`)\n }\n } else if (typeBody) {\n // Complex type (conditional, mapped, intersection, etc.)\n // Pass through the TS type body verbatim\n const typeText = typeBody.getText(sourceFile).trim()\n parts.push(`declaration {\\n // TS: ${typeText}\\n }`)\n }\n }\n\n return `Generic ${typeName}<${typeParams.join(', ')}> {\\n ${parts.join(\n '\\n '\n )}\\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 ctx?: TypeResolutionContext\n): string {\n // Build type parameter map from generic params (constraint/default)\n let typeParamMap:\n | Map<string, { constraint?: ts.TypeNode; default?: ts.TypeNode }>\n | undefined\n if (node.typeParameters && node.typeParameters.length > 0) {\n typeParamMap = new Map()\n for (const tp of node.typeParameters) {\n typeParamMap.set(tp.name.getText(sourceFile), {\n constraint: tp.constraint,\n default: tp.default,\n })\n }\n }\n\n // Merge type params into ctx for resolution in typeToExample\n const resolveCtx: TypeResolutionContext | undefined =\n typeParamMap || ctx\n ? { ...ctx, typeParams: typeParamMap ?? ctx?.typeParams }\n : ctx\n\n const degraded: string[] = []\n const params = transformParams(\n node.parameters,\n sourceFile,\n warnings,\n degraded,\n resolveCtx\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, resolveCtx)\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 &&\n returnExample !== 'undefined' &&\n returnExample !== 'any' &&\n !returnExample.startsWith('new ') // new Set(), new Map() etc. aren't valid TJS literals\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 export, async, and generator modifiers\n const isExported = node.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\n const isAsync = node.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.AsyncKeyword\n )\n const isGenerator = !!(node as ts.FunctionDeclaration).asteriskToken\n const exportPrefix = isExported ? 'export ' : ''\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}${exportPrefix}${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 ctx?: TypeResolutionContext,\n convertPrivateToHash = false\n): string {\n // Build type parameter map from class-level generics\n let resolveCtx = ctx\n if (node.typeParameters && node.typeParameters.length > 0) {\n const typeParamMap = new Map<\n string,\n { constraint?: ts.TypeNode; default?: ts.TypeNode }\n >()\n for (const tp of node.typeParameters) {\n typeParamMap.set(tp.name.getText(sourceFile), {\n constraint: tp.constraint,\n default: tp.default,\n })\n }\n resolveCtx = { ...ctx, typeParams: typeParamMap }\n }\n\n const className = node.name?.getText(sourceFile) || 'Anonymous'\n // Get base class name, stripping type arguments (e.g. Component<T> → Component)\n const extendsType = node.heritageClauses?.find(\n (h) => h.token === ts.SyntaxKind.ExtendsKeyword\n )?.types[0]\n const extendsClause = extendsType?.expression?.getText(sourceFile)\n\n // With TjsClass: convert TS private to JS # (true runtime privacy).\n // Without TjsClass: strip the keyword, keep the name (TS private is compile-time only).\n const privateFieldMap = new Map<string, string>()\n if (convertPrivateToHash) {\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\n // Helper to replace private field references in transpiled code\n // Handles: this.prop, ClassName.prop (static), varName.prop (instance via variable)\n const replacePrivateRefs = (code: string): string => {\n let result = code\n for (const [tsName, jsName] of privateFieldMap) {\n // Match property access on any identifier: word.propName or this.propName\n // This covers this.prop, ClassName.prop, and varName.prop\n result = result.replace(\n new RegExp(`(\\\\b\\\\w+)\\\\.${tsName}\\\\b`, 'g'),\n `$1.${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(\n member.parameters,\n sourceFile,\n warnings,\n undefined,\n resolveCtx\n )\n const returnExample = member.type\n ? typeToExample(member.type, undefined, warnings, resolveCtx)\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 isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n const staticPrefix = isStatic ? 'static ' : ''\n const returnExample = member.type\n ? typeToExample(member.type, undefined, warnings, resolveCtx)\n : ''\n const returnAnnotation =\n returnExample &&\n returnExample !== 'undefined' &&\n returnExample !== 'any' &&\n !returnExample.startsWith('new ')\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(\n ` ${staticPrefix}get ${propName}()${returnAnnotation} ${body}`\n )\n }\n\n // Setters\n if (ts.isSetAccessorDeclaration(member) && member.name) {\n const propName = member.name.getText(sourceFile)\n const isStatic = member.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.StaticKeyword\n )\n const staticPrefix = isStatic ? 'static ' : ''\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(\n ` ${staticPrefix}set ${propName}(${params.join(', ')}) ${body}`\n )\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 // Wrap in parens so TS treats { ... } as an object expression,\n // not a block with labels (which mangles property colons)\n const initText = member.initializer.getText(sourceFile)\n const wrapped = initText.trimStart().startsWith('{')\n ? `(${initText})`\n : initText\n const transpiled = ts.transpileModule(wrapped, {\n compilerOptions: {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n removeComments: false,\n },\n })\n let output = transpiled.outputText.trim()\n // Strip the wrapping parens and trailing semicolon\n if (wrapped !== initText) {\n output = output.replace(/^\\(/, '').replace(/\\);?\\s*$/, '')\n }\n members.push(` ${staticPrefix}${propName} = ${output}`)\n } else {\n // Property without initializer - just declare it\n members.push(` ${staticPrefix}${propName}`)\n }\n }\n }\n\n const isExported = node.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\n const exportPrefix = isExported ? 'export ' : ''\n const extendsStr = extendsClause ? ` extends ${extendsClause}` : ''\n return `${exportPrefix}class ${className}${extendsStr} {\\n${members.join(\n '\\n'\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 ctx?: TypeResolutionContext\n): string[] {\n const params: string[] = []\n\n for (const param of parameters) {\n const name = param.name.getText(sourceFile)\n // Skip TypeScript's `this` pseudo-parameter (declares `this` context type)\n if (name === 'this') continue\n const isRest = !!param.dotDotDotToken\n const isOptional = !!param.questionToken || !!param.initializer\n const typeExample = typeToExample(param.type, undefined, warnings, ctx)\n\n if (isRest) {\n // Rest parameter: ...args: T[] → ...args: [example]\n // typeToExample already converts T[] to [example], so use directly\n if (typeExample === 'any' || typeExample === 'undefined') {\n params.push(`...${name}: [null]`)\n } else {\n params.push(`...${name}: ${typeExample}`)\n }\n } else 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 // Build type parameter map from generic params\n let resolveCtx = ctx\n if (node.typeParameters && node.typeParameters.length > 0) {\n const typeParamMap = new Map<\n string,\n { constraint?: ts.TypeNode; default?: ts.TypeNode }\n >()\n for (const tp of node.typeParameters) {\n typeParamMap.set(tp.name.getText(sourceFile), {\n constraint: tp.constraint,\n default: tp.default,\n })\n }\n resolveCtx = { ...ctx, typeParams: typeParamMap }\n }\n\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, resolveCtx),\n required: !isOptional,\n default: defaultValue,\n }\n }\n\n const result: FunctionTypeInfo = {\n name,\n params,\n returns: node.type ? typeToInfo(node.type, resolveCtx) : 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 // Build type parameter map from class-level generics\n let resolveCtx = ctx\n if (node.typeParameters && node.typeParameters.length > 0) {\n const typeParamMap = new Map<\n string,\n { constraint?: ts.TypeNode; default?: ts.TypeNode }\n >()\n for (const tp of node.typeParameters) {\n typeParamMap.set(tp.name.getText(sourceFile), {\n constraint: tp.constraint,\n default: tp.default,\n })\n }\n resolveCtx = { ...ctx, typeParams: typeParamMap }\n }\n\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, resolveCtx),\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, resolveCtx),\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, resolveCtx) : 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 */\n// =============================================================================\n// @tjs annotations — enrich TJS output from TS source comments\n// =============================================================================\n\ninterface TjsAnnotation {\n index: number\n kind: 'predicate' | 'example' | 'skip' | 'declaration'\n text?: string // raw text for predicate/example/declaration\n}\n\n/** Valid TJS mode directives */\nconst VALID_TJS_MODES = new Set([\n 'TjsStrict',\n 'TjsEquals',\n 'TjsClass',\n 'TjsDate',\n 'TjsNoeval',\n 'TjsNoVar',\n 'TjsStandard',\n 'TjsSafeEval',\n])\n\n/**\n * Extract TJS mode directives from /* @tjs ... * / comments.\n * e.g. /* @tjs TjsClass TjsEquals * / → ['TjsClass', 'TjsEquals']\n */\nfunction extractTjsModes(source: string): string[] {\n const modes: string[] = []\n const re = /\\/\\*\\s*@tjs\\s+((?:Tjs\\w+\\s*)+)\\*\\//g\n let m\n while ((m = re.exec(source)) !== null) {\n const words = m[1].trim().split(/\\s+/)\n for (const word of words) {\n if (VALID_TJS_MODES.has(word) && !modes.includes(word)) {\n modes.push(word)\n }\n }\n }\n return modes\n}\n\n/**\n * Extract @tjs annotations from source comments.\n *\n * Supported forms:\n * /* @tjs-skip * /\n * /* @tjs example: { name: '', age: 0 } * /\n * /* @tjs predicate(x, T) { return typeof x === 'object' && T(x.value) } * /\n * /* @tjs declaration { value: T; path: string } * /\n */\nfunction extractTjsAnnotations(source: string): TjsAnnotation[] {\n const annotations: TjsAnnotation[] = []\n\n // @tjs-skip\n const skipRe = /\\/\\*\\s*@tjs-skip\\s*\\*\\//g\n let m\n while ((m = skipRe.exec(source)) !== null) {\n annotations.push({ index: m.index, kind: 'skip' })\n }\n\n // @tjs predicate(...) { ... }\n const predRe = /\\/\\*\\s*@tjs\\s+predicate(\\([^)]*\\)\\s*\\{[\\s\\S]*?\\})\\s*\\*\\//g\n while ((m = predRe.exec(source)) !== null) {\n annotations.push({\n index: m.index,\n kind: 'predicate',\n text: `predicate${m[1].trim()}`,\n })\n }\n\n // @tjs example: ...\n const exRe = /\\/\\*\\s*@tjs\\s+example:\\s*([\\s\\S]*?)\\s*\\*\\//g\n while ((m = exRe.exec(source)) !== null) {\n annotations.push({ index: m.index, kind: 'example', text: m[1].trim() })\n }\n\n // @tjs declaration { ... }\n const declRe = /\\/\\*\\s*@tjs\\s+declaration\\s*(\\{[\\s\\S]*?\\})\\s*\\*\\//g\n while ((m = declRe.exec(source)) !== null) {\n annotations.push({\n index: m.index,\n kind: 'declaration',\n text: m[1].trim(),\n })\n }\n\n return annotations.sort((a, b) => a.index - b.index)\n}\n\n/**\n * Build a map from declaration name → annotations that precede it.\n */\nfunction buildAnnotationMap(\n annotations: TjsAnnotation[],\n sourceFile: ts.SourceFile\n): Map<string, TjsAnnotation[]> {\n const result = new Map<string, TjsAnnotation[]>()\n if (annotations.length === 0) return result\n\n const statements = sourceFile.statements\n for (let si = 0; si < statements.length; si++) {\n const stmt = statements[si]\n let name: string | undefined\n\n if (ts.isInterfaceDeclaration(stmt)) {\n name = stmt.name.getText(sourceFile)\n } else if (ts.isTypeAliasDeclaration(stmt)) {\n name = stmt.name.getText(sourceFile)\n } else if (ts.isEnumDeclaration(stmt)) {\n name = stmt.name.getText(sourceFile)\n }\n\n if (!name) continue\n\n const stmtStart = stmt.getStart(sourceFile)\n const prevEnd = si > 0 ? statements[si - 1].getEnd() : 0\n\n const matching = annotations.filter(\n (a) => a.index >= prevEnd && a.index < stmtStart\n )\n if (matching.length > 0) {\n result.set(name, matching)\n }\n }\n\n return result\n}\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 // Extract @tjs annotations for enriching TJS output\n const tjsAnnotations = emitTJS ? extractTjsAnnotations(source) : []\n\n // Extract TJS mode directives from /* @tjs TjsClass ... */ comments\n const tjsModes = extractTjsModes(source)\n const hasTjsClass =\n tjsModes.includes('TjsClass') || tjsModes.includes('TjsStrict')\n\n // Parse TypeScript\n const sourceFile = ts.createSourceFile(\n filename,\n source,\n ts.ScriptTarget.Latest,\n true\n )\n\n // Build annotation map from @tjs comments\n const annotationMap = emitTJS\n ? buildAnnotationMap(tjsAnnotations, sourceFile)\n : new Map<string, TjsAnnotation[]>()\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 resolutionCtx\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 // Check if the variable statement itself is exported\n const varIsExported = statement.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\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 let tjsFunc = transformFunctionToTJS(\n funcNode,\n sourceFile,\n funcName,\n warnings,\n true,\n resolutionCtx\n )\n // Arrow/const functions: export is on the VariableStatement\n // Insert after any line comment or degraded comment\n if (varIsExported && !tjsFunc.includes('export ')) {\n const firstFuncLine = tjsFunc.search(/^(async\\s+)?function[\\s*]/m)\n if (firstFuncLine > 0) {\n tjsFunc =\n tjsFunc.slice(0, firstFuncLine) +\n 'export ' +\n tjsFunc.slice(firstFuncLine)\n } else {\n tjsFunc = 'export ' + tjsFunc\n }\n }\n tjsFunctions.push(tjsFunc)\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 const annotations = annotationMap.get(typeName)\n if (!seenTypeNames.has(typeName)) {\n seenTypeNames.add(typeName)\n // @tjs-skip — omit this declaration entirely\n if (annotations?.some((a) => a.kind === 'skip')) {\n // Skip — do not emit\n } else {\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 annotations\n )\n if (typeDecl) {\n const isExported = statement.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\n tjsFunctions.push(\n isExported\n ? typeDecl.replace(/^(\\/\\*[\\s\\S]*?\\*\\/\\s*)?/, '$1export ')\n : typeDecl\n )\n }\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 const annotations = annotationMap.get(typeName)\n if (!seenTypeNames.has(typeName)) {\n seenTypeNames.add(typeName)\n // @tjs-skip — omit this declaration entirely\n if (annotations?.some((a) => a.kind === 'skip')) {\n // Skip — do not emit\n } else {\n const typeDecl = transformTypeAliasToType(\n statement,\n sourceFile,\n warnings,\n annotations\n )\n if (typeDecl) {\n const isExported = statement.modifiers?.some(\n (m) => m.kind === ts.SyntaxKind.ExportKeyword\n )\n tjsFunctions.push(\n isExported\n ? typeDecl.replace(/^(\\/\\*[\\s\\S]*?\\*\\/\\s*)?/, '$1export ')\n : typeDecl\n )\n }\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 const annotations = annotationMap.get(enumName)\n if (!seenTypeNames.has(enumName)) {\n seenTypeNames.add(enumName)\n if (annotations?.some((a) => a.kind === 'skip')) {\n // Skip — do not emit\n } else {\n const enumDecl = transformEnumToTJS(statement, sourceFile, warnings)\n if (enumDecl) {\n tjsFunctions.push(enumDecl)\n }\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(\n statement,\n sourceFile,\n warnings,\n undefined,\n hasTjsClass\n )\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 // Emit import directly — don't use ts.transpileModule which\n // strips \"unused\" imports in isolation. Filter out type-only\n // specifiers manually.\n if (\n statement.importClause?.namedBindings &&\n ts.isNamedImports(statement.importClause.namedBindings)\n ) {\n const valueSpecs = statement.importClause.namedBindings.elements\n .filter((e) => !e.isTypeOnly)\n .map((e) => {\n const name = e.name.getText(sourceFile)\n const propName = e.propertyName?.getText(sourceFile)\n return propName ? `${propName} as ${name}` : name\n })\n if (valueSpecs.length > 0) {\n const modSpec = (statement.moduleSpecifier as ts.StringLiteral)\n .text\n tjsFunctions.push(\n `import { ${valueSpecs.join(', ')} } from '${modSpec}'`\n )\n }\n } else {\n // Default import, namespace import, or side-effect import\n // Emit as-is (strip types via getText which preserves structure)\n const importText = statement.getText(sourceFile)\n // Remove type annotations by running through TS\n const cleaned = importText\n .replace(/\\btype\\s+/g, '')\n .replace(/\\s*:\\s*\\w+/g, '')\n tjsFunctions.push(cleaned)\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 and TJS mode directives\n const sourceFileName = filename || 'unknown'\n const modesLine = tjsModes.length > 0 ? tjsModes.join('\\n') + '\\n\\n' : ''\n const header = `${modesLine}/* 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",
|
|
21
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",
|
|
22
22
|
"/**\n * IndexedDB-based cache for module metadata\n *\n * Caches transpilation results (AST, signatures, type info) to avoid\n * re-parsing unchanged source code. Particularly useful for:\n * - Playground editors (instant feedback on unchanged code)\n * - Autocomplete metadata retrieval\n * - Development workflows with rapid iteration\n *\n * @example\n * ```typescript\n * const cache = new MetadataCache()\n * await cache.open()\n *\n * // Check cache before transpiling\n * const cached = await cache.get(source)\n * if (cached) {\n * return cached // Skip transpilation\n * }\n *\n * // Transpile and cache\n * const result = transpile(source)\n * await cache.set(source, result)\n * ```\n */\n\nimport type { SeqNode } from '../builder'\nimport type { FunctionSignature, TranspileWarning } from './types'\nimport type { TJSTypeInfo } from './emitters/js'\nimport { TJS_VERSION } from './runtime'\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/** Cached entry for AsyncJS transpilation (ajs/transpile) */\nexport interface CachedTranspileResult {\n ast: SeqNode\n signature: FunctionSignature\n warnings: TranspileWarning[]\n}\n\n/** Cached entry for TJS transpilation (tjs/transpileToJS) */\nexport interface CachedTJSResult {\n code: string\n types: Record<string, TJSTypeInfo>\n testRunner?: string\n testCount?: number\n warnings?: string[]\n}\n\n/** Full cache entry stored in IndexedDB */\nexport interface CacheEntry {\n /** SHA-256 hash of source + version */\n hash: string\n /** TJS version used during transpilation */\n version: string\n /** Timestamp when cached */\n timestamp: number\n /** AsyncJS transpilation result */\n transpile?: CachedTranspileResult\n /** TJS transpilation result */\n tjs?: CachedTJSResult\n}\n\n/** Cache statistics */\nexport interface CacheStats {\n /** Number of entries in cache */\n entries: number\n /** Total bytes used (approximate) */\n bytes: number\n /** Cache hit count this session */\n hits: number\n /** Cache miss count this session */\n misses: number\n /** Hit rate (hits / (hits + misses)) */\n hitRate: number\n}\n\n// ============================================================================\n// Hash utilities\n// ============================================================================\n\n/**\n * Compute SHA-256 hash of source code + version\n * Falls back to simple hash if crypto.subtle unavailable\n */\nexport async function hashSource(source: string): Promise<string> {\n const input = `${TJS_VERSION}:${source}`\n\n // Try crypto.subtle (available in browsers and Node 15+)\n if (typeof crypto !== 'undefined' && crypto.subtle) {\n const encoder = new TextEncoder()\n const data = encoder.encode(input)\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n }\n\n // Fallback: simple djb2 hash (good enough for cache keys)\n let hash = 5381\n for (let i = 0; i < input.length; i++) {\n hash = ((hash << 5) + hash + input.charCodeAt(i)) >>> 0\n }\n return hash.toString(16)\n}\n\n/**\n * Synchronous hash for environments without async support\n * Uses djb2 algorithm\n */\nexport function hashSourceSync(source: string): string {\n const input = `${TJS_VERSION}:${source}`\n let hash = 5381\n for (let i = 0; i < input.length; i++) {\n hash = ((hash << 5) + hash + input.charCodeAt(i)) >>> 0\n }\n return hash.toString(16)\n}\n\n// ============================================================================\n// MetadataCache class\n// ============================================================================\n\nconst DB_NAME = 'tjs-metadata-cache'\nconst DB_VERSION = 1\nconst STORE_NAME = 'modules'\n\n/**\n * IndexedDB-based metadata cache\n *\n * Thread-safe and persistent across browser sessions.\n * Automatically handles versioning - entries from old TJS versions\n * are ignored (stale data won't cause issues).\n */\nexport class MetadataCache {\n private db: IDBDatabase | null = null\n private stats = { hits: 0, misses: 0 }\n private pendingOpen: Promise<void> | null = null\n\n /**\n * Open the cache database\n * Safe to call multiple times - will reuse existing connection\n */\n async open(): Promise<void> {\n if (this.db) return\n\n // Prevent multiple simultaneous opens\n if (this.pendingOpen) {\n return this.pendingOpen\n }\n\n this.pendingOpen = this._open()\n await this.pendingOpen\n this.pendingOpen = null\n }\n\n private async _open(): Promise<void> {\n return new Promise((resolve, _reject) => {\n if (typeof indexedDB === 'undefined') {\n // IndexedDB not available (Node.js without polyfill, etc.)\n resolve()\n return\n }\n\n const request = indexedDB.open(DB_NAME, DB_VERSION)\n\n request.onerror = () => {\n // Don't fail hard - cache is optional\n console.warn('MetadataCache: Failed to open IndexedDB', request.error)\n resolve()\n }\n\n request.onsuccess = () => {\n this.db = request.result\n resolve()\n }\n\n request.onupgradeneeded = (event) => {\n const db = (event.target as IDBOpenDBRequest).result\n\n // Create modules store with hash as key\n if (!db.objectStoreNames.contains(STORE_NAME)) {\n const store = db.createObjectStore(STORE_NAME, { keyPath: 'hash' })\n store.createIndex('timestamp', 'timestamp')\n store.createIndex('version', 'version')\n }\n }\n })\n }\n\n /**\n * Get cached entry by source code\n * Returns undefined if not cached or version mismatch\n */\n async get(source: string): Promise<CacheEntry | undefined> {\n if (!this.db) {\n this.stats.misses++\n return undefined\n }\n\n const hash = await hashSource(source)\n\n return new Promise((resolve) => {\n const transaction = this.db!.transaction(STORE_NAME, 'readonly')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.get(hash)\n\n request.onerror = () => {\n this.stats.misses++\n resolve(undefined)\n }\n\n request.onsuccess = () => {\n const entry = request.result as CacheEntry | undefined\n\n // Validate version\n if (entry && entry.version !== TJS_VERSION) {\n this.stats.misses++\n resolve(undefined)\n return\n }\n\n if (entry) {\n this.stats.hits++\n } else {\n this.stats.misses++\n }\n resolve(entry)\n }\n })\n }\n\n /**\n * Get cached transpile result (AsyncJS -> AST)\n */\n async getTranspile(\n source: string\n ): Promise<CachedTranspileResult | undefined> {\n const entry = await this.get(source)\n return entry?.transpile\n }\n\n /**\n * Get cached TJS result (TJS -> JS)\n */\n async getTJS(source: string): Promise<CachedTJSResult | undefined> {\n const entry = await this.get(source)\n return entry?.tjs\n }\n\n /**\n * Store transpile result\n */\n async setTranspile(\n source: string,\n result: CachedTranspileResult\n ): Promise<void> {\n await this._set(source, { transpile: result })\n }\n\n /**\n * Store TJS result\n */\n async setTJS(source: string, result: CachedTJSResult): Promise<void> {\n await this._set(source, { tjs: result })\n }\n\n /**\n * Store or update cache entry\n */\n private async _set(\n source: string,\n data: { transpile?: CachedTranspileResult; tjs?: CachedTJSResult }\n ): Promise<void> {\n if (!this.db) return\n\n const hash = await hashSource(source)\n\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction(STORE_NAME, 'readwrite')\n const store = transaction.objectStore(STORE_NAME)\n\n // Get existing entry to merge\n const getRequest = store.get(hash)\n\n getRequest.onsuccess = () => {\n const existing = getRequest.result as CacheEntry | undefined\n\n const entry: CacheEntry = {\n hash,\n version: TJS_VERSION,\n timestamp: Date.now(),\n transpile: data.transpile ?? existing?.transpile,\n tjs: data.tjs ?? existing?.tjs,\n }\n\n const putRequest = store.put(entry)\n putRequest.onerror = () => reject(putRequest.error)\n putRequest.onsuccess = () => resolve()\n }\n\n getRequest.onerror = () => reject(getRequest.error)\n })\n }\n\n /**\n * Delete a specific entry\n */\n async delete(source: string): Promise<void> {\n if (!this.db) return\n\n const hash = await hashSource(source)\n\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction(STORE_NAME, 'readwrite')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.delete(hash)\n\n request.onerror = () => reject(request.error)\n request.onsuccess = () => resolve()\n })\n }\n\n /**\n * Clear all cached entries\n */\n async clear(): Promise<void> {\n if (!this.db) return\n\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction(STORE_NAME, 'readwrite')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.clear()\n\n request.onerror = () => reject(request.error)\n request.onsuccess = () => {\n this.stats = { hits: 0, misses: 0 }\n resolve()\n }\n })\n }\n\n /**\n * Remove entries older than maxAge milliseconds\n * Returns count of entries removed\n */\n async prune(maxAge: number): Promise<number> {\n if (!this.db) return 0\n\n const cutoff = Date.now() - maxAge\n\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction(STORE_NAME, 'readwrite')\n const store = transaction.objectStore(STORE_NAME)\n const index = store.index('timestamp')\n const range = IDBKeyRange.upperBound(cutoff)\n\n let count = 0\n const request = index.openCursor(range)\n\n request.onsuccess = (event) => {\n const cursor = (event.target as IDBRequest<IDBCursorWithValue>).result\n if (cursor) {\n cursor.delete()\n count++\n cursor.continue()\n } else {\n resolve(count)\n }\n }\n\n request.onerror = () => reject(request.error)\n })\n }\n\n /**\n * Remove entries from old TJS versions\n * Returns count of entries removed\n */\n async pruneOldVersions(): Promise<number> {\n if (!this.db) return 0\n\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction(STORE_NAME, 'readwrite')\n const store = transaction.objectStore(STORE_NAME)\n\n let count = 0\n const request = store.openCursor()\n\n request.onsuccess = (event) => {\n const cursor = (event.target as IDBRequest<IDBCursorWithValue>).result\n if (cursor) {\n const entry = cursor.value as CacheEntry\n if (entry.version !== TJS_VERSION) {\n cursor.delete()\n count++\n }\n cursor.continue()\n } else {\n resolve(count)\n }\n }\n\n request.onerror = () => reject(request.error)\n })\n }\n\n /**\n * Get cache statistics\n */\n async getStats(): Promise<CacheStats> {\n const entries = await this.count()\n const bytes = await this.estimateSize()\n\n const total = this.stats.hits + this.stats.misses\n const hitRate = total > 0 ? this.stats.hits / total : 0\n\n return {\n entries,\n bytes,\n hits: this.stats.hits,\n misses: this.stats.misses,\n hitRate,\n }\n }\n\n /**\n * Count entries in cache\n */\n async count(): Promise<number> {\n if (!this.db) return 0\n\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction(STORE_NAME, 'readonly')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.count()\n\n request.onerror = () => reject(request.error)\n request.onsuccess = () => resolve(request.result)\n })\n }\n\n /**\n * Estimate storage size in bytes\n */\n async estimateSize(): Promise<number> {\n if (!this.db) return 0\n\n // Use Storage API if available\n if (typeof navigator !== 'undefined' && navigator.storage?.estimate) {\n try {\n const estimate = await navigator.storage.estimate()\n return estimate.usage ?? 0\n } catch {\n // Fall through to manual estimation\n }\n }\n\n // Manual estimation by iterating entries\n return new Promise((resolve, reject) => {\n const transaction = this.db!.transaction(STORE_NAME, 'readonly')\n const store = transaction.objectStore(STORE_NAME)\n\n let totalSize = 0\n const request = store.openCursor()\n\n request.onsuccess = (event) => {\n const cursor = (event.target as IDBRequest<IDBCursorWithValue>).result\n if (cursor) {\n // Rough estimate: JSON string length * 2 (UTF-16)\n totalSize += JSON.stringify(cursor.value).length * 2\n cursor.continue()\n } else {\n resolve(totalSize)\n }\n }\n\n request.onerror = () => reject(request.error)\n })\n }\n\n /**\n * Close the database connection\n */\n close(): void {\n if (this.db) {\n this.db.close()\n this.db = null\n }\n }\n\n /**\n * Check if cache is available (IndexedDB accessible)\n */\n isAvailable(): boolean {\n return this.db !== null\n }\n\n /**\n * Reset session statistics\n */\n resetStats(): void {\n this.stats = { hits: 0, misses: 0 }\n }\n}\n\n// ============================================================================\n// Global cache instance\n// ============================================================================\n\nlet globalCache: MetadataCache | null = null\n\n/**\n * Get or create the global cache instance\n * Automatically opens the database on first call\n */\nexport async function getGlobalCache(): Promise<MetadataCache> {\n if (!globalCache) {\n globalCache = new MetadataCache()\n await globalCache.open()\n }\n return globalCache\n}\n\n/**\n * Set a custom global cache instance (for testing)\n */\nexport function setGlobalCache(cache: MetadataCache | null): void {\n globalCache = cache\n}\n",
|
|
23
23
|
"// AST walker module for ESTree compatible trees\n\n// A simple walk is one where you simply specify callbacks to be\n// called on specific nodes. The last two arguments are optional. A\n// simple use would be\n//\n// walk.simple(myTree, {\n// Expression: function(node) { ... }\n// });\n//\n// to do something with all expressions. All ESTree node types\n// can be used to identify node types, as well as Expression and\n// Statement, which denote categories of nodes.\n//\n// The base argument can be used to pass a custom (recursive)\n// walker, and state can be used to give this walked an initial\n// state.\n\nfunction simple(node, visitors, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st); }\n })(node, state, override);\n}\n\n// An ancestor walk keeps an array of ancestor nodes (including the\n// current node) and passes them to the callback as third parameter\n// (and also as state parameter when no other state is present).\nfunction ancestor(node, visitors, baseVisitor, state, override) {\n var ancestors = [];\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st || ancestors, ancestors); }\n if (isNew) { ancestors.pop(); }\n })(node, state, override);\n}\n\n// A recursive walk is one where your functions override the default\n// walkers. They can modify and replace the state parameter that's\n// threaded through the walk, and can opt how and whether to walk\n// their child nodes (by calling their third argument on these\n// nodes).\nfunction recursive(node, state, funcs, baseVisitor, override) {\n var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor\n ;(function c(node, st, override) {\n visitor[override || node.type](node, st, c);\n })(node, state, override);\n}\n\nfunction makeTest(test) {\n if (typeof test === \"string\")\n { return function (type) { return type === test; } }\n else if (!test)\n { return function () { return true; } }\n else\n { return test }\n}\n\nvar Found = function Found(node, state) { this.node = node; this.state = state; };\n\n// A full walk triggers the callback on each node\nfunction full(node, callback, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base; }\n var last\n ;(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st, type);\n last = node;\n }\n })(node, state, override);\n}\n\n// An fullAncestor walk is like an ancestor walk, but triggers\n// the callback on each node\nfunction fullAncestor(node, callback, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n var ancestors = [], last\n ;(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st || ancestors, ancestors, type);\n last = node;\n }\n if (isNew) { ancestors.pop(); }\n })(node, state);\n}\n\n// Find a node with a given start, end, and type (all are optional,\n// null can be used as wildcard). Returns a {node, state} object, or\n// undefined when it doesn't find a matching node.\nfunction findNodeAt(node, start, end, test, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n test = makeTest(test);\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if ((start == null || node.start <= start) &&\n (end == null || node.end >= end))\n { baseVisitor[type](node, st, c); }\n if ((start == null || node.start === start) &&\n (end == null || node.end === end) &&\n test(type, node))\n { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the innermost node of a given type that contains the given\n// position. Interface similar to findNodeAt.\nfunction findNodeAround(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if (node.start > pos || node.end < pos) { return }\n baseVisitor[type](node, st, c);\n if (test(type, node)) { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node after a given position.\nfunction findNodeAfter(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n if (node.end < pos) { return }\n var type = override || node.type;\n if (node.start >= pos && test(type, node)) { throw new Found(node, st) }\n baseVisitor[type](node, st, c);\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node before a given position.\nfunction findNodeBefore(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n var max\n ;(function c(node, st, override) {\n if (node.start > pos) { return }\n var type = override || node.type;\n if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))\n { max = new Found(node, st); }\n baseVisitor[type](node, st, c);\n })(node, state);\n return max\n}\n\n// Used to create a custom walker. Will fill in all missing node\n// type properties with the defaults.\nfunction make(funcs, baseVisitor) {\n var visitor = Object.create(baseVisitor || base);\n for (var type in funcs) { visitor[type] = funcs[type]; }\n return visitor\n}\n\nfunction skipThrough(node, st, c) { c(node, st); }\nfunction ignore(_node, _st, _c) {}\n\n// Node walkers.\n\nvar base = {};\n\nbase.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var stmt = list[i];\n\n c(stmt, st, \"Statement\");\n }\n};\nbase.Statement = skipThrough;\nbase.EmptyStatement = ignore;\nbase.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression =\n function (node, st, c) { return c(node.expression, st, \"Expression\"); };\nbase.IfStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Statement\");\n if (node.alternate) { c(node.alternate, st, \"Statement\"); }\n};\nbase.LabeledStatement = function (node, st, c) { return c(node.body, st, \"Statement\"); };\nbase.BreakStatement = base.ContinueStatement = ignore;\nbase.WithStatement = function (node, st, c) {\n c(node.object, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.SwitchStatement = function (node, st, c) {\n c(node.discriminant, st, \"Expression\");\n for (var i = 0, list = node.cases; i < list.length; i += 1) {\n var cs = list[i];\n\n c(cs, st);\n }\n};\nbase.SwitchCase = function (node, st, c) {\n if (node.test) { c(node.test, st, \"Expression\"); }\n for (var i = 0, list = node.consequent; i < list.length; i += 1)\n {\n var cons = list[i];\n\n c(cons, st, \"Statement\");\n }\n};\nbase.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {\n if (node.argument) { c(node.argument, st, \"Expression\"); }\n};\nbase.ThrowStatement = base.SpreadElement =\n function (node, st, c) { return c(node.argument, st, \"Expression\"); };\nbase.TryStatement = function (node, st, c) {\n c(node.block, st, \"Statement\");\n if (node.handler) { c(node.handler, st); }\n if (node.finalizer) { c(node.finalizer, st, \"Statement\"); }\n};\nbase.CatchClause = function (node, st, c) {\n if (node.param) { c(node.param, st, \"Pattern\"); }\n c(node.body, st, \"Statement\");\n};\nbase.WhileStatement = base.DoWhileStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForStatement = function (node, st, c) {\n if (node.init) { c(node.init, st, \"ForInit\"); }\n if (node.test) { c(node.test, st, \"Expression\"); }\n if (node.update) { c(node.update, st, \"Expression\"); }\n c(node.body, st, \"Statement\");\n};\nbase.ForInStatement = base.ForOfStatement = function (node, st, c) {\n c(node.left, st, \"ForInit\");\n c(node.right, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForInit = function (node, st, c) {\n if (node.type === \"VariableDeclaration\") { c(node, st); }\n else { c(node, st, \"Expression\"); }\n};\nbase.DebuggerStatement = ignore;\n\nbase.FunctionDeclaration = function (node, st, c) { return c(node, st, \"Function\"); };\nbase.VariableDeclaration = function (node, st, c) {\n for (var i = 0, list = node.declarations; i < list.length; i += 1)\n {\n var decl = list[i];\n\n c(decl, st);\n }\n};\nbase.VariableDeclarator = function (node, st, c) {\n c(node.id, st, \"Pattern\");\n if (node.init) { c(node.init, st, \"Expression\"); }\n};\n\nbase.Function = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n c(param, st, \"Pattern\");\n }\n c(node.body, st, node.expression ? \"Expression\" : \"Statement\");\n};\n\nbase.Pattern = function (node, st, c) {\n if (node.type === \"Identifier\")\n { c(node, st, \"VariablePattern\"); }\n else if (node.type === \"MemberExpression\")\n { c(node, st, \"MemberPattern\"); }\n else\n { c(node, st); }\n};\nbase.VariablePattern = ignore;\nbase.MemberPattern = skipThrough;\nbase.RestElement = function (node, st, c) { return c(node.argument, st, \"Pattern\"); };\nbase.ArrayPattern = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Pattern\"); }\n }\n};\nbase.ObjectPattern = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n if (prop.type === \"Property\") {\n if (prop.computed) { c(prop.key, st, \"Expression\"); }\n c(prop.value, st, \"Pattern\");\n } else if (prop.type === \"RestElement\") {\n c(prop.argument, st, \"Pattern\");\n }\n }\n};\n\nbase.Expression = skipThrough;\nbase.ThisExpression = base.Super = base.MetaProperty = ignore;\nbase.ArrayExpression = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Expression\"); }\n }\n};\nbase.ObjectExpression = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n c(prop, st);\n }\n};\nbase.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;\nbase.SequenceExpression = function (node, st, c) {\n for (var i = 0, list = node.expressions; i < list.length; i += 1)\n {\n var expr = list[i];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateLiteral = function (node, st, c) {\n for (var i = 0, list = node.quasis; i < list.length; i += 1)\n {\n var quasi = list[i];\n\n c(quasi, st);\n }\n\n for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1)\n {\n var expr = list$1[i$1];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateElement = ignore;\nbase.UnaryExpression = base.UpdateExpression = function (node, st, c) {\n c(node.argument, st, \"Expression\");\n};\nbase.BinaryExpression = base.LogicalExpression = function (node, st, c) {\n c(node.left, st, \"Expression\");\n c(node.right, st, \"Expression\");\n};\nbase.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {\n c(node.left, st, \"Pattern\");\n c(node.right, st, \"Expression\");\n};\nbase.ConditionalExpression = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Expression\");\n c(node.alternate, st, \"Expression\");\n};\nbase.NewExpression = base.CallExpression = function (node, st, c) {\n c(node.callee, st, \"Expression\");\n if (node.arguments)\n { for (var i = 0, list = node.arguments; i < list.length; i += 1)\n {\n var arg = list[i];\n\n c(arg, st, \"Expression\");\n } }\n};\nbase.MemberExpression = function (node, st, c) {\n c(node.object, st, \"Expression\");\n if (node.computed) { c(node.property, st, \"Expression\"); }\n};\nbase.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {\n if (node.declaration)\n { c(node.declaration, st, node.type === \"ExportNamedDeclaration\" || node.declaration.id ? \"Statement\" : \"Expression\"); }\n if (node.source) { c(node.source, st, \"Expression\"); }\n};\nbase.ExportAllDeclaration = function (node, st, c) {\n if (node.exported)\n { c(node.exported, st); }\n c(node.source, st, \"Expression\");\n};\nbase.ImportDeclaration = function (node, st, c) {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1)\n {\n var spec = list[i];\n\n c(spec, st);\n }\n c(node.source, st, \"Expression\");\n};\nbase.ImportExpression = function (node, st, c) {\n c(node.source, st, \"Expression\");\n};\nbase.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore;\n\nbase.TaggedTemplateExpression = function (node, st, c) {\n c(node.tag, st, \"Expression\");\n c(node.quasi, st, \"Expression\");\n};\nbase.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, \"Class\"); };\nbase.Class = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n if (node.superClass) { c(node.superClass, st, \"Expression\"); }\n c(node.body, st);\n};\nbase.ClassBody = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var elt = list[i];\n\n c(elt, st);\n }\n};\nbase.MethodDefinition = base.PropertyDefinition = base.Property = function (node, st, c) {\n if (node.computed) { c(node.key, st, \"Expression\"); }\n if (node.value) { c(node.value, st, \"Expression\"); }\n};\n\nexport { ancestor, base, findNodeAfter, findNodeAround, findNodeAt, findNodeBefore, full, fullAncestor, make, recursive, simple };\n",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
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",
|
|
40
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"
|
|
41
41
|
],
|
|
42
|
-
"mappings": "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EAAmB,CAAC,EACtB,EAAQ,EACR,EAAuB,KACvB,EAAU,GACd,QAAW,KAAM,EAAG,CAClB,GAAI,EAAO,CAET,GADA,GAAW,EACP,IAAO,EAAO,EAAQ,KAC1B,SAEF,GAAI,IAAO,KAAO,IAAO,KAAO,IAAO,IAAK,CAC1C,EAAQ,EACR,GAAW,EACX,SAEF,GAAI,IAAO,KAAO,IAAO,KAAO,IAAO,IAAK,IACvC,QAAI,IAAO,KAAO,IAAO,KAAO,IAAO,IAAK,IAEjD,GAAI,IAAO,KAAO,IAAU,EAC1B,EAAO,KAAK,CAAO,EACnB,EAAU,GAEV,QAAW,EAGf,GAAI,EAAS,EAAO,KAAK,CAAO,EAChC,OAAO,ECruBT,0BAmGA,IAAM,GAAoB,IAAI,IAAI,CAEhC,QACA,cACA,aACA,gBACA,eACA,aACA,aACA,aACA,mBACA,aACA,YACA,iBACA,kBACA,iBACA,UACA,gBACA,aACA,eACA,gBACA,kBACA,sBACA,eACA,oBACA,cAEA,cACA,gBAEA,OACA,UACA,cACA,aACA,WACA,mBACA,aACA,OACA,UACA,OAEA,mBACA,sBACA,oBACA,oBACA,kBACA,oBACA,mBACA,mBACA,mBACA,oBACA,iBACA,kBACA,uBACA,mBACA,sBACA,kBACA,oBACA,qBACA,mBACA,oBACA,oBACA,oBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBAEA,gBACA,iBACA,cACA,mBACA,iBACA,iBACA,iBACA,oBAEA,WACA,iBACA,eACA,eACA,eACA,sBACA,UACA,kBACA,WACA,YAEA,QACA,YACA,cAEA,mBACA,iBACA,uBACA,4BACA,iBACA,sBACA,sBACA,mBAEA,SACA,WACA,UACA,YACA,SACA,UAEA,2BACA,wBACA,yBACA,kBACA,YACA,cACA,cACA,gBACA,eACA,YACA,cAEA,SACA,eACA,gBACA,4BACA,mBACA,iBACA,cAEA,YACA,iBACA,aACA,WACA,eACA,SACA,eACA,YACA,cACA,eACA,mBACA,iBACA,aACA,eACA,eACF,CAAC,EAOD,SAAS,CAAa,CACpB,EACA,EACA,EACA,EACQ,CACR,G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",
|
|
43
|
-
"debugId": "
|
|
42
|
+
"mappings": "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",
|
|
43
|
+
"debugId": "3AA5355EEC48E0E764756E2164756E21",
|
|
44
44
|
"names": []
|
|
45
45
|
}
|