tywrap 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +319 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +263 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/config/index.d.ts +41 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +234 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/core/analyzer.d.ts +63 -0
  12. package/dist/core/analyzer.d.ts.map +1 -0
  13. package/dist/core/analyzer.js +676 -0
  14. package/dist/core/analyzer.js.map +1 -0
  15. package/dist/core/discovery.d.ts +85 -0
  16. package/dist/core/discovery.d.ts.map +1 -0
  17. package/dist/core/discovery.js +344 -0
  18. package/dist/core/discovery.js.map +1 -0
  19. package/dist/core/generator.d.ts +37 -0
  20. package/dist/core/generator.d.ts.map +1 -0
  21. package/dist/core/generator.js +368 -0
  22. package/dist/core/generator.js.map +1 -0
  23. package/dist/core/mapper.d.ts +40 -0
  24. package/dist/core/mapper.d.ts.map +1 -0
  25. package/dist/core/mapper.js +401 -0
  26. package/dist/core/mapper.js.map +1 -0
  27. package/dist/core/validation.d.ts +79 -0
  28. package/dist/core/validation.d.ts.map +1 -0
  29. package/dist/core/validation.js +486 -0
  30. package/dist/core/validation.js.map +1 -0
  31. package/dist/index.d.ts +26 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +29 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/runtime/base.d.ts +12 -0
  36. package/dist/runtime/base.d.ts.map +1 -0
  37. package/dist/runtime/base.js +6 -0
  38. package/dist/runtime/base.js.map +1 -0
  39. package/dist/runtime/errors.d.ts +17 -0
  40. package/dist/runtime/errors.d.ts.map +1 -0
  41. package/dist/runtime/errors.js +21 -0
  42. package/dist/runtime/errors.js.map +1 -0
  43. package/dist/runtime/http.d.ts +22 -0
  44. package/dist/runtime/http.d.ts.map +1 -0
  45. package/dist/runtime/http.js +79 -0
  46. package/dist/runtime/http.js.map +1 -0
  47. package/dist/runtime/index.d.ts +8 -0
  48. package/dist/runtime/index.d.ts.map +1 -0
  49. package/dist/runtime/index.js +17 -0
  50. package/dist/runtime/index.js.map +1 -0
  51. package/dist/runtime/node.d.ts +48 -0
  52. package/dist/runtime/node.d.ts.map +1 -0
  53. package/dist/runtime/node.js +328 -0
  54. package/dist/runtime/node.js.map +1 -0
  55. package/dist/runtime/optimized-node.d.ts +131 -0
  56. package/dist/runtime/optimized-node.d.ts.map +1 -0
  57. package/dist/runtime/optimized-node.js +622 -0
  58. package/dist/runtime/optimized-node.js.map +1 -0
  59. package/dist/runtime/protocol.d.ts +3 -0
  60. package/dist/runtime/protocol.d.ts.map +1 -0
  61. package/dist/runtime/protocol.js +3 -0
  62. package/dist/runtime/protocol.js.map +1 -0
  63. package/dist/runtime/pyodide.d.ts +27 -0
  64. package/dist/runtime/pyodide.d.ts.map +1 -0
  65. package/dist/runtime/pyodide.js +191 -0
  66. package/dist/runtime/pyodide.js.map +1 -0
  67. package/dist/tools/python_suite.js +173 -0
  68. package/dist/tools/python_suite.js.map +1 -0
  69. package/dist/types/index.d.ts +299 -0
  70. package/dist/types/index.d.ts.map +1 -0
  71. package/dist/types/index.js +5 -0
  72. package/dist/types/index.js.map +1 -0
  73. package/dist/tywrap.d.ts +29 -0
  74. package/dist/tywrap.d.ts.map +1 -0
  75. package/dist/tywrap.js +589 -0
  76. package/dist/tywrap.js.map +1 -0
  77. package/dist/utils/bundle-optimizer.d.ts +182 -0
  78. package/dist/utils/bundle-optimizer.d.ts.map +1 -0
  79. package/dist/utils/bundle-optimizer.js +680 -0
  80. package/dist/utils/bundle-optimizer.js.map +1 -0
  81. package/dist/utils/cache.d.ts +149 -0
  82. package/dist/utils/cache.d.ts.map +1 -0
  83. package/dist/utils/cache.js +492 -0
  84. package/dist/utils/cache.js.map +1 -0
  85. package/dist/utils/codec.d.ts +94 -0
  86. package/dist/utils/codec.d.ts.map +1 -0
  87. package/dist/utils/codec.js +150 -0
  88. package/dist/utils/codec.js.map +1 -0
  89. package/dist/utils/logger.d.ts +42 -0
  90. package/dist/utils/logger.d.ts.map +1 -0
  91. package/dist/utils/logger.js +140 -0
  92. package/dist/utils/logger.js.map +1 -0
  93. package/dist/utils/memory-profiler.d.ts +123 -0
  94. package/dist/utils/memory-profiler.d.ts.map +1 -0
  95. package/dist/utils/memory-profiler.js +426 -0
  96. package/dist/utils/memory-profiler.js.map +1 -0
  97. package/dist/utils/parallel-processor.d.ts +146 -0
  98. package/dist/utils/parallel-processor.d.ts.map +1 -0
  99. package/dist/utils/parallel-processor.js +636 -0
  100. package/dist/utils/parallel-processor.js.map +1 -0
  101. package/dist/utils/python.d.ts +8 -0
  102. package/dist/utils/python.d.ts.map +1 -0
  103. package/dist/utils/python.js +56 -0
  104. package/dist/utils/python.js.map +1 -0
  105. package/dist/utils/runtime.d.ts +153 -0
  106. package/dist/utils/runtime.d.ts.map +1 -0
  107. package/dist/utils/runtime.js +519 -0
  108. package/dist/utils/runtime.js.map +1 -0
  109. package/package.json +136 -0
  110. package/runtime/python_bridge.py +476 -0
  111. package/src/cli.ts +331 -0
  112. package/src/config/index.ts +289 -0
  113. package/src/core/analyzer.ts +788 -0
  114. package/src/core/discovery.ts +415 -0
  115. package/src/core/generator.ts +447 -0
  116. package/src/core/mapper.ts +504 -0
  117. package/src/core/validation.ts +693 -0
  118. package/src/index.ts +83 -0
  119. package/src/runtime/base.ts +32 -0
  120. package/src/runtime/errors.ts +19 -0
  121. package/src/runtime/http.ts +132 -0
  122. package/src/runtime/index.ts +24 -0
  123. package/src/runtime/node.ts +431 -0
  124. package/src/runtime/optimized-node.ts +838 -0
  125. package/src/runtime/protocol.ts +2 -0
  126. package/src/runtime/pyodide.ts +228 -0
  127. package/src/types/global.d.ts +60 -0
  128. package/src/types/index.ts +410 -0
  129. package/src/tywrap.ts +669 -0
  130. package/src/utils/bundle-optimizer.ts +876 -0
  131. package/src/utils/cache.ts +634 -0
  132. package/src/utils/codec.ts +275 -0
  133. package/src/utils/logger.ts +201 -0
  134. package/src/utils/memory-profiler.ts +582 -0
  135. package/src/utils/parallel-processor.ts +879 -0
  136. package/src/utils/python.ts +79 -0
  137. package/src/utils/runtime.ts +616 -0
@@ -0,0 +1,368 @@
1
+ /**
2
+ * CodeGenerator - TypeScript wrapper generation
3
+ */
4
+ import { globalCache } from '../utils/cache.js';
5
+ import { TypeMapper } from './mapper.js';
6
+ export class CodeGenerator {
7
+ mapper;
8
+ reservedTsIdentifiers = new Set([
9
+ 'default',
10
+ 'delete',
11
+ 'new',
12
+ 'class',
13
+ 'function',
14
+ 'var',
15
+ 'let',
16
+ 'const',
17
+ 'enum',
18
+ 'export',
19
+ 'import',
20
+ 'return',
21
+ 'extends',
22
+ 'implements',
23
+ 'interface',
24
+ 'package',
25
+ 'private',
26
+ 'protected',
27
+ 'public',
28
+ 'static',
29
+ 'yield',
30
+ 'await',
31
+ 'async',
32
+ 'null',
33
+ 'true',
34
+ 'false',
35
+ ]);
36
+ constructor(mapper = new TypeMapper()) {
37
+ this.mapper = mapper;
38
+ }
39
+ /**
40
+ * Convert Python snake_case to TypeScript camelCase and escape reserved words
41
+ */
42
+ escapeIdentifier(name, options = {}) {
43
+ if (!name) {
44
+ return '_';
45
+ }
46
+ // First, normalize unicode characters
47
+ let safe = this.normalizeUnicode(name);
48
+ // Then handle special characters and make it a valid identifier
49
+ safe = safe.replace(/[^a-zA-Z0-9_]/g, '_');
50
+ if (/^[0-9]/.test(safe)) {
51
+ safe = `_${safe}`;
52
+ }
53
+ // Convert snake_case to camelCase unless preserveCase is true
54
+ if (!options.preserveCase) {
55
+ safe = this.toCamelCase(safe);
56
+ }
57
+ // Check for reserved words after conversion
58
+ if (this.reservedTsIdentifiers.has(safe)) {
59
+ return `_${safe}_`;
60
+ }
61
+ return safe;
62
+ }
63
+ /**
64
+ * Convert snake_case to camelCase
65
+ */
66
+ toCamelCase(str) {
67
+ return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
68
+ }
69
+ /**
70
+ * Convert unicode characters to ASCII equivalents for better compatibility
71
+ */
72
+ normalizeUnicode(str) {
73
+ // Basic unicode normalization - convert accented characters to ASCII equivalents
74
+ return str
75
+ .normalize('NFD')
76
+ .replace(/[\u0300-\u036f]/g, '') // Remove diacritics
77
+ .replace(/[^\x00-\x7F]/g, char => {
78
+ // Map common unicode characters to ASCII equivalents
79
+ const unicodeMap = new Map([
80
+ ['ñ', 'n'],
81
+ ['ü', 'u'],
82
+ ['ß', 'ss'],
83
+ ['æ', 'ae'],
84
+ ['œ', 'oe'],
85
+ ['ø', 'o'],
86
+ ['€', 'euro'],
87
+ // Add more mappings as needed
88
+ ]);
89
+ return unicodeMap.get(char) ?? char.charCodeAt(0).toString(16);
90
+ });
91
+ }
92
+ generateFunctionWrapper(func, moduleName, annotatedJSDoc = false) {
93
+ const jsdoc = this.generateJsDoc(func.docstring, annotatedJSDoc ? func.parameters.map(p => String(p.type)) : undefined);
94
+ const filteredParams = func.parameters.filter(p => p.name !== 'self' && p.name !== 'cls');
95
+ const renderParam = (p) => {
96
+ const pname = this.escapeIdentifier(p.name);
97
+ if (p.varArgs) {
98
+ return `...${pname}: unknown[]`;
99
+ }
100
+ if (p.kwArgs) {
101
+ return `kwargs?: Record<string, unknown>`;
102
+ }
103
+ return `${pname}${p.optional ? '?' : ''}: ${this.typeToTs(this.mapper.mapPythonType(p.type, 'value'))}`;
104
+ };
105
+ const paramDecl = filteredParams.map(renderParam).join(', ');
106
+ const positionalParams = filteredParams.filter(p => !p.kwArgs);
107
+ const callArgs = positionalParams
108
+ .map(p => (p.varArgs ? `...${this.escapeIdentifier(p.name)}` : this.escapeIdentifier(p.name)))
109
+ .join(', ');
110
+ const hasKwArgs = filteredParams.some(p => p.kwArgs);
111
+ const returnType = this.typeToTs(this.mapper.mapPythonType(func.returnType, 'return'));
112
+ const fname = this.escapeIdentifier(func.name);
113
+ const moduleId = moduleName ?? '__main__';
114
+ // Overloads: generate trailing optional parameter drop variants (exclude *args/**kwargs)
115
+ const positional = filteredParams.filter(p => !p.varArgs && !p.kwArgs);
116
+ const firstOptionalIndex = positional.findIndex(p => p.optional);
117
+ const overloads = [];
118
+ if (firstOptionalIndex >= 0) {
119
+ for (let i = firstOptionalIndex; i < positional.length; i++) {
120
+ const head = positional.slice(0, i);
121
+ const rest = filteredParams.filter(p => p.varArgs || p.kwArgs);
122
+ const sigParams = [...head, ...rest].map(renderParam).join(', ');
123
+ overloads.push(`export function ${fname}(${sigParams}): Promise<${returnType}>;`);
124
+ }
125
+ }
126
+ const overloadDecl = overloads.length > 0 ? `${overloads.join('\n')}\n` : '';
127
+ const ts = `${jsdoc}${overloadDecl}export async function ${fname}(${paramDecl}): Promise<${returnType}> {
128
+ return getRuntimeBridge().call('${moduleId}', '${func.name}', [${callArgs}]${hasKwArgs ? ', kwargs' : ''});
129
+ }
130
+ `;
131
+ return this.wrap(ts, [func.name]);
132
+ }
133
+ generateClassWrapper(cls, moduleName, _annotatedJSDoc = false) {
134
+ const jsdoc = this.generateJsDoc(cls.docstring);
135
+ // Structural type aliases for special kinds
136
+ if (cls.decorators.includes('__typed_dict__') || cls.kind === 'typed_dict') {
137
+ const props = cls.properties
138
+ .map(p => {
139
+ const pname = this.escapeIdentifier(p.name);
140
+ const opt = p.optional === true ? '?' : '';
141
+ const t = this.typeToTs(this.mapper.mapPythonType(p.type, 'value'));
142
+ return `${pname}${opt}: ${t};`;
143
+ })
144
+ .join(' ');
145
+ const cname = this.escapeIdentifier(cls.name);
146
+ const ts = `${jsdoc}export type ${cname} = { ${props} }\n`;
147
+ return this.wrap(ts, [cls.name]);
148
+ }
149
+ if (cls.kind === 'namedtuple') {
150
+ // NamedTuple -> readonly tuple type alias `[T1, T2, ...]`
151
+ const elements = cls.properties.map(p => this.typeToTs(this.mapper.mapPythonType(p.type, 'value')));
152
+ const cname = this.escapeIdentifier(cls.name);
153
+ const ts = `${jsdoc}export type ${cname} = readonly [${elements.join(', ')}]\n`;
154
+ return this.wrap(ts, [cls.name]);
155
+ }
156
+ if (cls.kind === 'protocol') {
157
+ // Protocol -> structural interface-like type alias for attributes and callables (subset)
158
+ const props = cls.properties
159
+ .map(p => `${this.escapeIdentifier(p.name)}: ${this.typeToTs(this.mapper.mapPythonType(p.type, 'value'))};`)
160
+ .join(' ');
161
+ const methods = cls.methods
162
+ .map(m => {
163
+ const fparams = m.parameters.filter(p => p.name !== 'self' && p.name !== 'cls');
164
+ const paramsDecl = fparams
165
+ .map(p => `${this.escapeIdentifier(p.name)}${p.optional ? '?' : ''}: ${this.typeToTs(this.mapper.mapPythonType(p.type, 'value'))}`)
166
+ .join(', ');
167
+ const returnType = this.typeToTs(this.mapper.mapPythonType(m.returnType, 'return'));
168
+ return `${this.escapeIdentifier(m.name)}: (${paramsDecl}) => ${returnType};`;
169
+ })
170
+ .join(' ');
171
+ const cname = this.escapeIdentifier(cls.name);
172
+ const ts = `${jsdoc}export type ${cname} = { ${props} ${methods} }\n`;
173
+ return this.wrap(ts, [cls.name]);
174
+ }
175
+ if (cls.kind === 'dataclass' || cls.kind === 'pydantic') {
176
+ // Data containers -> object type alias
177
+ const props = cls.properties
178
+ .map(p => {
179
+ const pname = this.escapeIdentifier(p.name);
180
+ const opt = p.optional === true ? '?' : '';
181
+ const t = this.typeToTs(this.mapper.mapPythonType(p.type, 'value'));
182
+ return `${pname}${opt}: ${t};`;
183
+ })
184
+ .join(' ');
185
+ const cname = this.escapeIdentifier(cls.name);
186
+ const ts = `${jsdoc}export type ${cname} = { ${props} }\n`;
187
+ return this.wrap(ts, [cls.name]);
188
+ }
189
+ const sortedMethods = [...cls.methods].sort((a, b) => a.name.localeCompare(b.name));
190
+ const methodBodies = sortedMethods
191
+ .filter(m => m.name !== '__init__')
192
+ .map(m => {
193
+ const fparams = m.parameters.filter(p => p.name !== 'self' && p.name !== 'cls');
194
+ const paramsDecl = fparams
195
+ .map(p => p.varArgs
196
+ ? `...${this.escapeIdentifier(p.name)}: unknown[]`
197
+ : p.kwArgs
198
+ ? `kwargs?: Record<string, unknown>`
199
+ : `${this.escapeIdentifier(p.name)}${p.optional ? '?' : ''}: ${this.typeToTs(this.mapper.mapPythonType(p.type, 'value'))}`)
200
+ .join(', ');
201
+ const positionalParams = fparams.filter(p => !p.kwArgs);
202
+ const callPassthrough = positionalParams
203
+ .map(p => p.varArgs ? `...${this.escapeIdentifier(p.name)}` : this.escapeIdentifier(p.name))
204
+ .join(', ');
205
+ const hasKwArgs = fparams.some(p => p.kwArgs);
206
+ const returnType = this.typeToTs(this.mapper.mapPythonType(m.returnType, 'return'));
207
+ return ` async ${this.escapeIdentifier(m.name)}(${paramsDecl}): Promise<${returnType}> { return getRuntimeBridge().callMethod(this.__handle, '${m.name}', [${callPassthrough}]${hasKwArgs ? ', kwargs' : ''}); }`;
208
+ })
209
+ .join('\n');
210
+ // Constructor typing from __init__
211
+ const init = cls.methods.find(m => m.name === '__init__');
212
+ const ctorParams = init
213
+ ? init.parameters
214
+ .filter(p => p.name !== 'self' && p.name !== 'cls')
215
+ .map(p => p.varArgs
216
+ ? `...${this.escapeIdentifier(p.name)}: unknown[]`
217
+ : p.kwArgs
218
+ ? `kwargs?: Record<string, unknown>`
219
+ : `${this.escapeIdentifier(p.name)}${p.optional ? '?' : ''}: ${this.typeToTs(this.mapper.mapPythonType(p.type, 'value'))}`)
220
+ .join(', ')
221
+ : `...args: unknown[]`;
222
+ const ctorHasKwArgs = init
223
+ ? init.parameters.some(p => p.name !== 'self' && p.name !== 'cls' && p.kwArgs)
224
+ : false;
225
+ const ctorArgsPassthrough = init
226
+ ? init.parameters
227
+ .filter(p => p.name !== 'self' && p.name !== 'cls' && !p.kwArgs)
228
+ .map(p => p.varArgs ? `...${this.escapeIdentifier(p.name)}` : this.escapeIdentifier(p.name))
229
+ .join(', ')
230
+ : '...args';
231
+ const cname = this.escapeIdentifier(cls.name);
232
+ const moduleId = moduleName ?? '__main__';
233
+ const methodsSection = methodBodies ? `\n${methodBodies}\n` : '\n';
234
+ const ts = `${jsdoc}export class ${cname} {
235
+ private readonly __handle: string;
236
+ private constructor(handle: string) { this.__handle = handle; }
237
+ static async create(${ctorParams}): Promise<${cname}> {
238
+ const handle = await getRuntimeBridge().instantiate<string>('${moduleId}', '${cls.name}', [${ctorArgsPassthrough}]${ctorHasKwArgs ? ', kwargs' : ''});
239
+ return new ${cname}(handle);
240
+ }
241
+ static fromHandle(handle: string): ${cname} { return new ${cname}(handle); }${methodsSection} async disposeHandle(): Promise<void> { await getRuntimeBridge().disposeInstance(this.__handle); }
242
+ }
243
+ `;
244
+ return this.wrap(ts, [cls.name]);
245
+ }
246
+ /**
247
+ * Generate TypeScript wrapper for Python module with caching
248
+ */
249
+ async generateModule(module, options = {
250
+ moduleName: 'unknown',
251
+ }) {
252
+ // Check cache first
253
+ const cached = await globalCache.getCachedGeneration(module, options);
254
+ if (cached) {
255
+ return cached;
256
+ }
257
+ const startTime = performance.now();
258
+ const result = this.generateModuleDefinition(module, options.annotatedJSDoc);
259
+ const computeTime = performance.now() - startTime;
260
+ // Cache the result
261
+ await globalCache.setCachedGeneration(module, options, result, computeTime);
262
+ return result;
263
+ }
264
+ generateModuleDefinition(module, annotatedJSDoc = false) {
265
+ const functionCodes = [...module.functions]
266
+ .sort((a, b) => a.name.localeCompare(b.name))
267
+ .map(f => this.generateFunctionWrapper(f, module.name, annotatedJSDoc).typescript)
268
+ .join('\n');
269
+ const classCodes = [...module.classes]
270
+ .sort((a, b) => a.name.localeCompare(b.name))
271
+ .map(c => this.generateClassWrapper(c, module.name, annotatedJSDoc).typescript)
272
+ .join('\n');
273
+ const header = `// Generated by tywrap\n// Module: ${module.name}\n// DO NOT EDIT MANUALLY\n\n`;
274
+ const hasRuntimeClasses = module.classes.some(c => {
275
+ const kind = c.kind ?? 'class';
276
+ return kind === 'class' && !c.decorators.includes('__typed_dict__');
277
+ });
278
+ const needsRuntime = module.functions.length > 0 || hasRuntimeClasses;
279
+ const bridgeDecl = needsRuntime ? `import { getRuntimeBridge } from 'tywrap/runtime';\n\n` : '';
280
+ const ts = `${header + bridgeDecl + functionCodes}\n${classCodes}`;
281
+ return this.wrap(ts, [module.name]);
282
+ }
283
+ generateJsDoc(doc, paramAnnotations) {
284
+ const lines = [];
285
+ if (doc) {
286
+ lines.push(...doc.split('\n').map(l => ` * ${l}`));
287
+ }
288
+ if (paramAnnotations && paramAnnotations.length > 0) {
289
+ // Lightweight inclusion of annotation strings when enabled
290
+ paramAnnotations.forEach((ann, idx) => {
291
+ lines.push(` * @param arg${idx} ${ann}`);
292
+ });
293
+ }
294
+ if (lines.length === 0) {
295
+ return '';
296
+ }
297
+ return `/**\n${lines.join('\n')}\n */\n`;
298
+ }
299
+ wrap(typescript, _sources) {
300
+ return {
301
+ typescript,
302
+ declaration: '',
303
+ sourceMap: undefined,
304
+ metadata: {
305
+ generatedAt: new Date(),
306
+ sourceFiles: [],
307
+ runtime: 'auto',
308
+ optimizations: [],
309
+ },
310
+ };
311
+ }
312
+ typeToTs(type) {
313
+ switch (type.kind) {
314
+ case 'primitive':
315
+ return type.name;
316
+ case 'array':
317
+ return `${this.typeToTs(type.elementType)}[]`;
318
+ case 'tuple': {
319
+ const t = type;
320
+ const parts = t.elementTypes.map(e => this.typeToTs(e)).join(', ');
321
+ return `[${parts}]`;
322
+ }
323
+ case 'object': {
324
+ const t = type;
325
+ // If it's a simple Record<string, T> pattern, use that syntax
326
+ if (t.properties.length === 0 && t.indexSignature) {
327
+ const keyType = this.typeToTs(t.indexSignature.keyType);
328
+ const valueType = this.typeToTs(t.indexSignature.valueType);
329
+ if (keyType === 'string') {
330
+ return `Record<string, ${valueType}>`;
331
+ }
332
+ }
333
+ const props = t.properties
334
+ .map(p => `${p.readonly ? 'readonly ' : ''}${p.name}${p.optional ? '?' : ''}: ${this.typeToTs(p.type)};`)
335
+ .join(' ');
336
+ const indexSig = t.indexSignature
337
+ ? `[key: ${this.typeToTs(t.indexSignature.keyType)}]: ${this.typeToTs(t.indexSignature.valueType)};`
338
+ : '';
339
+ return `{ ${props} ${indexSig} }`;
340
+ }
341
+ case 'union':
342
+ return type.types.map(t => this.typeToTs(t)).join(' | ');
343
+ case 'function': {
344
+ const ft = type;
345
+ const params = ft.parameters
346
+ .map(p => `${p.rest ? '...' : ''}${p.name}${p.optional ? '?' : ''}: ${this.typeToTs(p.type)}`)
347
+ .join(', ');
348
+ return `(${params}) => ${this.typeToTs(ft.returnType)}`;
349
+ }
350
+ case 'generic': {
351
+ const g = type;
352
+ const args = g.typeArgs.map(a => this.typeToTs(a)).join(', ');
353
+ return `${g.name}<${args}>`;
354
+ }
355
+ case 'custom': {
356
+ const c = type;
357
+ return c.name;
358
+ }
359
+ case 'literal': {
360
+ const l = type;
361
+ return JSON.stringify(l.value);
362
+ }
363
+ default:
364
+ return 'unknown';
365
+ }
366
+ }
367
+ }
368
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/core/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * TypeMapper - Python to TypeScript type conversion
3
+ */
4
+ import type { PythonType, PrimitiveType as PyPrimitiveType, CollectionType as PyCollectionType, UnionType as PyUnionType, OptionalType as PyOptionalType, GenericType as PyGenericType, TypeVarType as PyTypeVarType, FinalType as PyFinalType, ClassVarType as PyClassVarType, TypescriptType, TSPrimitiveType, TSArrayType, TSTupleType, TSObjectType, TSUnionType, TSFunctionType, TSGenericType, TSCustomType, TSLiteralType, TypePreset } from '../types/index.js';
5
+ export type MappingContext = 'value' | 'return';
6
+ export interface TypeMapperOptions {
7
+ presets?: readonly TypePreset[];
8
+ }
9
+ export declare class TypeMapper {
10
+ private readonly presets;
11
+ constructor(options?: TypeMapperOptions);
12
+ mapPythonType(pythonType: PythonType, context?: MappingContext): TypescriptType;
13
+ mapPrimitiveType(type: PyPrimitiveType, context?: MappingContext): TSPrimitiveType;
14
+ mapCollectionType(type: PyCollectionType): TSArrayType | TSTupleType | TSObjectType | TSGenericType;
15
+ mapUnionType(type: PyUnionType, context?: MappingContext): TSUnionType;
16
+ mapOptionalType(type: PyOptionalType, context?: MappingContext): TSUnionType;
17
+ mapGenericType(type: PyGenericType, context?: MappingContext): TSGenericType;
18
+ mapCustomType(type: {
19
+ kind: 'custom';
20
+ name: string;
21
+ module?: string;
22
+ }, _context?: MappingContext): TypescriptType;
23
+ mapCallableType(type: {
24
+ kind: 'callable';
25
+ parameters: PythonType[];
26
+ returnType: PythonType;
27
+ }): TSFunctionType;
28
+ mapLiteralType(type: {
29
+ kind: 'literal';
30
+ value: string | number | boolean | null;
31
+ }): TSLiteralType;
32
+ mapTypeVarType(type: PyTypeVarType, _context?: MappingContext): TSCustomType;
33
+ mapFinalType(type: PyFinalType, context?: MappingContext): TypescriptType;
34
+ mapClassVarType(type: PyClassVarType, context?: MappingContext): TypescriptType;
35
+ private asIndexKeyType;
36
+ private hasPreset;
37
+ private normalizeCustomType;
38
+ private mapPresetType;
39
+ }
40
+ //# sourceMappingURL=mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../src/core/mapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,IAAI,eAAe,EAChC,cAAc,IAAI,gBAAgB,EAClC,SAAS,IAAI,WAAW,EACxB,YAAY,IAAI,cAAc,EAC9B,WAAW,IAAI,aAAa,EAC5B,WAAW,IAAI,aAAa,EAC5B,SAAS,IAAI,WAAW,EACxB,YAAY,IAAI,cAAc,EAC9B,cAAc,EACd,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,YAAY,EAEZ,aAAa,EACb,UAAU,EACX,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CACjC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;gBAE9B,OAAO,GAAE,iBAAsB;IAI3C,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,cAAwB,GAAG,cAAc;IA8BxF,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,GAAE,cAAwB,GAAG,eAAe;IAkB3F,iBAAiB,CACf,IAAI,EAAE,gBAAgB,GACrB,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa;IA+D3D,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,cAAwB,GAAG,WAAW;IAO/E,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,cAAwB,GAAG,WAAW;IAQrF,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,cAAwB,GAAG,aAAa;IAQrF,aAAa,CACX,IAAI,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EACvD,QAAQ,GAAE,cAAwB,GACjC,cAAc;IA4FjB,eAAe,CAAC,IAAI,EAAE;QACpB,IAAI,EAAE,UAAU,CAAC;QACjB,UAAU,EAAE,UAAU,EAAE,CAAC;QACzB,UAAU,EAAE,UAAU,CAAC;KACxB,GAAG,cAAc;IA6BlB,cAAc,CAAC,IAAI,EAAE;QACnB,IAAI,EAAE,SAAS,CAAC;QAChB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;KACzC,GAAG,aAAa;IAIjB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,GAAE,cAAwB,GAAG,YAAY;IAUrF,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,cAAwB,GAAG,cAAc;IAMlF,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,cAAwB,GAAG,cAAc;IAMxF,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,aAAa;CA0ItB"}