tywrap 0.2.0 → 0.3.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 (163) hide show
  1. package/README.md +65 -31
  2. package/dist/cli.js +49 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config/index.d.ts +11 -7
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/index.js +43 -7
  7. package/dist/config/index.js.map +1 -1
  8. package/dist/core/analyzer.d.ts +1 -0
  9. package/dist/core/analyzer.d.ts.map +1 -1
  10. package/dist/core/analyzer.js +47 -12
  11. package/dist/core/analyzer.js.map +1 -1
  12. package/dist/core/annotation-parser.d.ts +8 -0
  13. package/dist/core/annotation-parser.d.ts.map +1 -0
  14. package/dist/core/annotation-parser.js +409 -0
  15. package/dist/core/annotation-parser.js.map +1 -0
  16. package/dist/core/discovery.d.ts +1 -0
  17. package/dist/core/discovery.d.ts.map +1 -1
  18. package/dist/core/discovery.js +9 -9
  19. package/dist/core/discovery.js.map +1 -1
  20. package/dist/core/generator.d.ts +9 -1
  21. package/dist/core/generator.d.ts.map +1 -1
  22. package/dist/core/generator.js +738 -104
  23. package/dist/core/generator.js.map +1 -1
  24. package/dist/core/mapper.d.ts +9 -7
  25. package/dist/core/mapper.d.ts.map +1 -1
  26. package/dist/core/mapper.js +129 -44
  27. package/dist/core/mapper.js.map +1 -1
  28. package/dist/index.d.ts +23 -7
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +23 -3
  31. package/dist/index.js.map +1 -1
  32. package/dist/runtime/base.d.ts +17 -7
  33. package/dist/runtime/base.d.ts.map +1 -1
  34. package/dist/runtime/base.js +18 -1
  35. package/dist/runtime/base.js.map +1 -1
  36. package/dist/runtime/bounded-context.d.ts +252 -0
  37. package/dist/runtime/bounded-context.d.ts.map +1 -0
  38. package/dist/runtime/bounded-context.js +454 -0
  39. package/dist/runtime/bounded-context.js.map +1 -0
  40. package/dist/runtime/bridge-core.d.ts +1 -0
  41. package/dist/runtime/bridge-core.d.ts.map +1 -1
  42. package/dist/runtime/bridge-core.js +52 -17
  43. package/dist/runtime/bridge-core.js.map +1 -1
  44. package/dist/runtime/bridge-protocol.d.ts +184 -0
  45. package/dist/runtime/bridge-protocol.d.ts.map +1 -0
  46. package/dist/runtime/bridge-protocol.js +344 -0
  47. package/dist/runtime/bridge-protocol.js.map +1 -0
  48. package/dist/runtime/disposable.d.ts +40 -0
  49. package/dist/runtime/disposable.d.ts.map +1 -0
  50. package/dist/runtime/disposable.js +49 -0
  51. package/dist/runtime/disposable.js.map +1 -0
  52. package/dist/runtime/errors.d.ts +10 -0
  53. package/dist/runtime/errors.d.ts.map +1 -1
  54. package/dist/runtime/errors.js +9 -0
  55. package/dist/runtime/errors.js.map +1 -1
  56. package/dist/runtime/http-io.d.ts +91 -0
  57. package/dist/runtime/http-io.d.ts.map +1 -0
  58. package/dist/runtime/http-io.js +195 -0
  59. package/dist/runtime/http-io.js.map +1 -0
  60. package/dist/runtime/http.d.ts +48 -13
  61. package/dist/runtime/http.d.ts.map +1 -1
  62. package/dist/runtime/http.js +60 -73
  63. package/dist/runtime/http.js.map +1 -1
  64. package/dist/runtime/node.d.ts +97 -130
  65. package/dist/runtime/node.d.ts.map +1 -1
  66. package/dist/runtime/node.js +392 -521
  67. package/dist/runtime/node.js.map +1 -1
  68. package/dist/runtime/optimized-node.d.ts +1 -1
  69. package/dist/runtime/optimized-node.d.ts.map +1 -1
  70. package/dist/runtime/optimized-node.js +1 -1
  71. package/dist/runtime/optimized-node.js.map +1 -1
  72. package/dist/runtime/pooled-transport.d.ts +135 -0
  73. package/dist/runtime/pooled-transport.d.ts.map +1 -0
  74. package/dist/runtime/pooled-transport.js +177 -0
  75. package/dist/runtime/pooled-transport.js.map +1 -0
  76. package/dist/runtime/process-io.d.ts +209 -0
  77. package/dist/runtime/process-io.d.ts.map +1 -0
  78. package/dist/runtime/process-io.js +729 -0
  79. package/dist/runtime/process-io.js.map +1 -0
  80. package/dist/runtime/pyodide-io.d.ts +154 -0
  81. package/dist/runtime/pyodide-io.d.ts.map +1 -0
  82. package/dist/runtime/pyodide-io.js +459 -0
  83. package/dist/runtime/pyodide-io.js.map +1 -0
  84. package/dist/runtime/pyodide.d.ts +51 -19
  85. package/dist/runtime/pyodide.d.ts.map +1 -1
  86. package/dist/runtime/pyodide.js +57 -186
  87. package/dist/runtime/pyodide.js.map +1 -1
  88. package/dist/runtime/safe-codec.d.ts +103 -0
  89. package/dist/runtime/safe-codec.d.ts.map +1 -0
  90. package/dist/runtime/safe-codec.js +519 -0
  91. package/dist/runtime/safe-codec.js.map +1 -0
  92. package/dist/runtime/transport.d.ts +191 -0
  93. package/dist/runtime/transport.d.ts.map +1 -0
  94. package/dist/runtime/transport.js +86 -0
  95. package/dist/runtime/transport.js.map +1 -0
  96. package/dist/runtime/validators.d.ts +120 -0
  97. package/dist/runtime/validators.d.ts.map +1 -0
  98. package/dist/runtime/validators.js +229 -0
  99. package/dist/runtime/validators.js.map +1 -0
  100. package/dist/runtime/worker-pool.d.ts +208 -0
  101. package/dist/runtime/worker-pool.d.ts.map +1 -0
  102. package/dist/runtime/worker-pool.js +419 -0
  103. package/dist/runtime/worker-pool.js.map +1 -0
  104. package/dist/types/index.d.ts +51 -1
  105. package/dist/types/index.d.ts.map +1 -1
  106. package/dist/tywrap.d.ts.map +1 -1
  107. package/dist/tywrap.js +227 -328
  108. package/dist/tywrap.js.map +1 -1
  109. package/dist/utils/cache.d.ts.map +1 -1
  110. package/dist/utils/cache.js +53 -5
  111. package/dist/utils/cache.js.map +1 -1
  112. package/dist/utils/codec.d.ts.map +1 -1
  113. package/dist/utils/codec.js +114 -1
  114. package/dist/utils/codec.js.map +1 -1
  115. package/dist/utils/ir-cache.d.ts +28 -0
  116. package/dist/utils/ir-cache.d.ts.map +1 -0
  117. package/dist/utils/ir-cache.js +29 -0
  118. package/dist/utils/ir-cache.js.map +1 -0
  119. package/dist/utils/parallel-processor.d.ts +1 -1
  120. package/dist/utils/parallel-processor.d.ts.map +1 -1
  121. package/dist/utils/parallel-processor.js +111 -40
  122. package/dist/utils/parallel-processor.js.map +1 -1
  123. package/dist/utils/runtime.d.ts +5 -1
  124. package/dist/utils/runtime.d.ts.map +1 -1
  125. package/dist/utils/runtime.js +112 -18
  126. package/dist/utils/runtime.js.map +1 -1
  127. package/package.json +40 -18
  128. package/runtime/python_bridge.py +108 -15
  129. package/runtime/safe_codec.py +344 -0
  130. package/src/cli.ts +61 -2
  131. package/src/config/index.ts +63 -17
  132. package/src/core/analyzer.ts +52 -15
  133. package/src/core/annotation-parser.ts +500 -0
  134. package/src/core/discovery.ts +26 -12
  135. package/src/core/generator.ts +956 -116
  136. package/src/core/mapper.ts +158 -51
  137. package/src/index.ts +78 -6
  138. package/src/runtime/base.ts +18 -26
  139. package/src/runtime/bounded-context.ts +608 -0
  140. package/src/runtime/bridge-core.ts +58 -18
  141. package/src/runtime/bridge-protocol.ts +483 -0
  142. package/src/runtime/disposable.ts +65 -0
  143. package/src/runtime/errors.ts +14 -0
  144. package/src/runtime/http-io.ts +245 -0
  145. package/src/runtime/http.ts +76 -115
  146. package/src/runtime/node.ts +563 -676
  147. package/src/runtime/optimized-node.ts +4 -1
  148. package/src/runtime/pooled-transport.ts +263 -0
  149. package/src/runtime/process-io.ts +930 -0
  150. package/src/runtime/pyodide-io.ts +551 -0
  151. package/src/runtime/pyodide.ts +75 -215
  152. package/src/runtime/safe-codec.ts +651 -0
  153. package/src/runtime/transport.ts +278 -0
  154. package/src/runtime/validators.ts +252 -0
  155. package/src/runtime/worker-pool.ts +559 -0
  156. package/src/types/global.d.ts +11 -1
  157. package/src/types/index.ts +63 -0
  158. package/src/tywrap.ts +279 -358
  159. package/src/utils/cache.ts +59 -5
  160. package/src/utils/codec.ts +122 -1
  161. package/src/utils/ir-cache.ts +51 -0
  162. package/src/utils/parallel-processor.ts +119 -43
  163. package/src/utils/runtime.ts +129 -18
@@ -7,6 +7,8 @@ import { globalCache } from '../utils/cache.js';
7
7
  import { getComponentLogger } from '../utils/logger.js';
8
8
  const log = getComponentLogger('Analyzer');
9
9
  const UNKNOWN_TYPE = { kind: 'custom', name: 'Any', module: 'typing' };
10
+ // tree-sitter-python >=0.25 updates its typings, but Parser#setLanguage still expects the package export at runtime.
11
+ const PYTHON_LANGUAGE = Python;
10
12
  export class PyAnalyzer {
11
13
  parser;
12
14
  initialized = false;
@@ -21,7 +23,7 @@ export class PyAnalyzer {
21
23
  return;
22
24
  }
23
25
  try {
24
- await this.parser.setLanguage(Python);
26
+ await this.parser.setLanguage(PYTHON_LANGUAGE);
25
27
  this.initialized = true;
26
28
  }
27
29
  catch (error) {
@@ -105,7 +107,7 @@ export class PyAnalyzer {
105
107
  */
106
108
  async extractFunctions(node) {
107
109
  const functions = [];
108
- const functionNodes = this.findNodesByType(node, 'function_definition');
110
+ const functionNodes = this.findDirectDefinitions(node, 'function_definition');
109
111
  for (const funcNode of functionNodes) {
110
112
  try {
111
113
  const func = await this.extractFunction(funcNode);
@@ -122,7 +124,7 @@ export class PyAnalyzer {
122
124
  */
123
125
  async extractClasses(node) {
124
126
  const classes = [];
125
- const classNodes = this.findNodesByType(node, 'class_definition');
127
+ const classNodes = this.findDirectDefinitions(node, 'class_definition');
126
128
  for (const classNode of classNodes) {
127
129
  try {
128
130
  const cls = await this.extractClass(classNode);
@@ -185,7 +187,7 @@ export class PyAnalyzer {
185
187
  const methods = [];
186
188
  const properties = [];
187
189
  if (bodyNode) {
188
- const methodNodes = this.findNodesByType(bodyNode, 'function_definition');
190
+ const methodNodes = this.findDirectDefinitions(bodyNode, 'function_definition');
189
191
  for (const methodNode of methodNodes) {
190
192
  try {
191
193
  const method = await this.extractFunction(methodNode);
@@ -196,9 +198,17 @@ export class PyAnalyzer {
196
198
  }
197
199
  }
198
200
  // Extract properties (assignments with type annotations or @property decorators)
199
- const assignmentNodes = this.findNodesByType(bodyNode, 'assignment');
200
- for (const assignNode of assignmentNodes) {
201
- const prop = this.extractProperty(assignNode);
201
+ for (const stmt of bodyNode.namedChildren) {
202
+ // Only consider class-body statements, never descend into method bodies.
203
+ const assignmentNode = stmt.type === 'assignment'
204
+ ? stmt
205
+ : stmt.type === 'expression_statement'
206
+ ? (stmt.namedChildren.find(c => c.type === 'assignment') ?? null)
207
+ : null;
208
+ if (!assignmentNode) {
209
+ continue;
210
+ }
211
+ const prop = this.extractProperty(assignmentNode);
202
212
  if (prop) {
203
213
  properties.push(prop);
204
214
  }
@@ -550,17 +560,40 @@ export class PyAnalyzer {
550
560
  */
551
561
  findNodesByType(node, type) {
552
562
  const results = [];
553
- const traverse = (n) => {
563
+ const stack = [node];
564
+ while (stack.length > 0) {
565
+ const n = stack.pop();
566
+ if (!n) {
567
+ break;
568
+ }
554
569
  if (n.type === type) {
555
570
  results.push(n);
556
571
  }
557
- for (const child of n.children) {
558
- traverse(child);
572
+ for (let i = n.children.length - 1; i >= 0; i--) {
573
+ const child = n.children[i];
574
+ if (child) {
575
+ stack.push(child);
576
+ }
559
577
  }
560
- };
561
- traverse(node);
578
+ }
562
579
  return results;
563
580
  }
581
+ findDirectDefinitions(node, type) {
582
+ const out = [];
583
+ for (const child of node.namedChildren) {
584
+ if (child.type === type) {
585
+ out.push(child);
586
+ continue;
587
+ }
588
+ if (child.type === 'decorated_definition') {
589
+ const def = child.namedChildren.find(c => c.type === type) ?? null;
590
+ if (def) {
591
+ out.push(def);
592
+ }
593
+ }
594
+ }
595
+ return out;
596
+ }
564
597
  extractModuleName(path) {
565
598
  if (!path) {
566
599
  return 'unknown';
@@ -584,6 +617,8 @@ export class PyAnalyzer {
584
617
  const expr = firstChild.child(0);
585
618
  if (expr?.type === 'string') {
586
619
  let docstring = expr.text;
620
+ // Strip docstring prefixes like r/u/f/b and combos (rf/fr/br/...).
621
+ docstring = docstring.replace(/^(?:[rRuUbBfF]{1,2})(?=(\"\"\"|'''|\"|'))/, '');
587
622
  // Remove outer quotes and any remaining inner quotes
588
623
  if (docstring.startsWith('"""') && docstring.endsWith('"""')) {
589
624
  docstring = docstring.slice(3, -3);
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/core/analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/core/analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { PythonGenericParameter, PythonType } from '../types/index.js';
2
+ export interface AnnotationParserOptions {
3
+ onUnknownTypeName?: (name: string) => void;
4
+ knownTypeVarNames?: Iterable<string>;
5
+ typeParameters?: readonly PythonGenericParameter[];
6
+ }
7
+ export declare function parseAnnotationToPythonType(annotation: unknown, options?: AnnotationParserOptions): PythonType;
8
+ //# sourceMappingURL=annotation-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-parser.d.ts","sourceRoot":"","sources":["../../src/core/annotation-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,cAAc,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpD;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE,uBAA4B,GACpC,UAAU,CAweZ"}
@@ -0,0 +1,409 @@
1
+ export function parseAnnotationToPythonType(annotation, options = {}) {
2
+ const onUnknownTypeName = options.onUnknownTypeName;
3
+ const knownTypeVarNames = new Set(options.knownTypeVarNames ?? []);
4
+ const knownTypeParameters = new Map((options.typeParameters ?? []).map(param => [param.name, param]));
5
+ const modulePrefixes = ['', 'typing.', 'typing_extensions.', 'collections.abc.'];
6
+ const unknownType = () => ({ kind: 'custom', name: 'Any', module: 'typing' });
7
+ const recordUnknown = (name) => {
8
+ try {
9
+ onUnknownTypeName?.(name);
10
+ }
11
+ catch {
12
+ // ignore diagnostics hooks
13
+ }
14
+ };
15
+ const mapLiteral = (text) => {
16
+ const t = text.trim();
17
+ if ((t.startsWith("'") && t.endsWith("'")) || (t.startsWith('"') && t.endsWith('"'))) {
18
+ return { kind: 'literal', value: t.slice(1, -1) };
19
+ }
20
+ if (t === 'True' || t === 'False') {
21
+ return { kind: 'literal', value: t === 'True' };
22
+ }
23
+ if (t === 'None') {
24
+ return { kind: 'literal', value: null };
25
+ }
26
+ const num = Number(t);
27
+ if (t !== '' && !Number.isNaN(num)) {
28
+ return { kind: 'literal', value: num };
29
+ }
30
+ return { kind: 'custom', name: t };
31
+ };
32
+ const mapKnownTypeParameter = (name) => {
33
+ const normalized = name.replace(/^~/, '').trim();
34
+ const param = knownTypeParameters.get(normalized);
35
+ if (!param) {
36
+ return null;
37
+ }
38
+ switch (param.kind) {
39
+ case 'typevar':
40
+ return {
41
+ kind: 'typevar',
42
+ name: param.name,
43
+ bound: param.bound,
44
+ constraints: param.constraints,
45
+ variance: param.variance,
46
+ };
47
+ case 'paramspec':
48
+ return { kind: 'paramspec', name: param.name };
49
+ case 'typevartuple':
50
+ return { kind: 'typevartuple', name: param.name };
51
+ }
52
+ };
53
+ const mapSimpleName = (name) => {
54
+ const n = name.replace(/^(typing\.|typing_extensions\.|collections\.abc\.)/, '').trim();
55
+ const known = mapKnownTypeParameter(n);
56
+ if (known) {
57
+ return known;
58
+ }
59
+ if (knownTypeVarNames.has(n)) {
60
+ return { kind: 'typevar', name: n };
61
+ }
62
+ if (n === 'int' || n === 'float' || n === 'str' || n === 'bool' || n === 'bytes') {
63
+ return { kind: 'primitive', name: n };
64
+ }
65
+ if (n === 'Any' ||
66
+ n === 'Never' ||
67
+ n === 'LiteralString' ||
68
+ n === 'ClassVar' ||
69
+ n === 'Final' ||
70
+ n === 'TypeAlias' ||
71
+ n === 'Required' ||
72
+ n === 'NotRequired') {
73
+ recordUnknown(n);
74
+ }
75
+ if (n === 'None' || n.toLowerCase() === 'nonetype') {
76
+ return { kind: 'primitive', name: 'None' };
77
+ }
78
+ if (n === 'list' || n === 'List') {
79
+ return { kind: 'collection', name: 'list', itemTypes: [] };
80
+ }
81
+ if (n === 'dict' || n === 'Dict') {
82
+ return { kind: 'collection', name: 'dict', itemTypes: [] };
83
+ }
84
+ if (n === 'tuple' || n === 'Tuple') {
85
+ return { kind: 'collection', name: 'tuple', itemTypes: [] };
86
+ }
87
+ if (n === 'set' || n === 'Set') {
88
+ return { kind: 'collection', name: 'set', itemTypes: [] };
89
+ }
90
+ if (n === 'frozenset' || n === 'FrozenSet') {
91
+ return { kind: 'collection', name: 'frozenset', itemTypes: [] };
92
+ }
93
+ if (n.startsWith('~')) {
94
+ return { kind: 'typevar', name: n.slice(1) };
95
+ }
96
+ return { kind: 'custom', name: n };
97
+ };
98
+ const parseTypingFactoryName = (text, name) => {
99
+ for (const prefix of modulePrefixes) {
100
+ const start = `${prefix}${name}(`;
101
+ if (!text.startsWith(start) || !text.endsWith(')')) {
102
+ continue;
103
+ }
104
+ const inner = text.slice(start.length, -1).trim();
105
+ if (inner.length < 2) {
106
+ return null;
107
+ }
108
+ const quote = inner[0];
109
+ if ((quote !== "'" && quote !== '"') || inner[inner.length - 1] !== quote) {
110
+ return null;
111
+ }
112
+ const commaIndex = inner.indexOf(',');
113
+ const quoted = commaIndex === -1 ? inner : inner.slice(0, commaIndex).trimEnd();
114
+ if (quoted.length < 2 || quoted[quoted.length - 1] !== quote) {
115
+ return null;
116
+ }
117
+ return quoted.slice(1, -1);
118
+ }
119
+ return null;
120
+ };
121
+ const splitQualifiedName = (raw) => {
122
+ const trimmed = raw.trim();
123
+ const parts = trimmed.split('.').filter(Boolean);
124
+ if (parts.length <= 1) {
125
+ return { name: trimmed };
126
+ }
127
+ const name = parts[parts.length - 1] ?? trimmed;
128
+ return { name, module: parts.slice(0, -1).join('.') || undefined };
129
+ };
130
+ const normalizeCollectionName = (raw) => {
131
+ const m = raw.match(/^(typing\.|typing_extensions\.)?(List|Dict|Tuple|Set|FrozenSet|list|dict|tuple|set|frozenset)\[(.*)\]$/);
132
+ if (!m) {
133
+ return null;
134
+ }
135
+ const nameRaw = String(m[2] ?? '');
136
+ const nameLower = nameRaw.toLowerCase();
137
+ const name = nameLower === 'list'
138
+ ? 'list'
139
+ : nameLower === 'dict'
140
+ ? 'dict'
141
+ : nameLower === 'tuple'
142
+ ? 'tuple'
143
+ : nameLower === 'frozenset'
144
+ ? 'frozenset'
145
+ : 'set';
146
+ return { name, inner: String(m[3] ?? '') };
147
+ };
148
+ const splitTopLevel = (input, sep) => {
149
+ const results = [];
150
+ let level = 0;
151
+ let cur = '';
152
+ let inQuote = null;
153
+ let escaped = false;
154
+ let guard = 0;
155
+ for (let i = 0; i < input.length; i++) {
156
+ guard++;
157
+ if (guard > 20000) {
158
+ if (cur.trim()) {
159
+ results.push(cur.trim());
160
+ }
161
+ break;
162
+ }
163
+ const ch = input.charAt(i);
164
+ if (escaped) {
165
+ cur += ch;
166
+ escaped = false;
167
+ continue;
168
+ }
169
+ if (inQuote) {
170
+ cur += ch;
171
+ if (ch === '\\') {
172
+ escaped = true;
173
+ continue;
174
+ }
175
+ if (ch === inQuote) {
176
+ inQuote = null;
177
+ }
178
+ continue;
179
+ }
180
+ if (ch === "'" || ch === '"') {
181
+ inQuote = ch;
182
+ cur += ch;
183
+ continue;
184
+ }
185
+ if (ch === '[' || ch === '(') {
186
+ level++;
187
+ }
188
+ else if (ch === ']' || ch === ')') {
189
+ level = Math.max(0, level - 1);
190
+ }
191
+ if (level === 0 && ch === sep) {
192
+ results.push(cur.trim());
193
+ cur = '';
194
+ continue;
195
+ }
196
+ cur += ch;
197
+ }
198
+ if (cur.trim()) {
199
+ results.push(cur.trim());
200
+ }
201
+ return results;
202
+ };
203
+ const splitGenericInvocation = (raw) => {
204
+ if (!raw.endsWith(']')) {
205
+ return null;
206
+ }
207
+ const bracketStart = raw.indexOf('[');
208
+ if (bracketStart <= 0) {
209
+ return null;
210
+ }
211
+ let depth = 0;
212
+ for (let i = bracketStart; i < raw.length; i++) {
213
+ const ch = raw.charAt(i);
214
+ if (ch === '[') {
215
+ depth++;
216
+ }
217
+ else if (ch === ']') {
218
+ depth--;
219
+ if (depth === 0 && i !== raw.length - 1) {
220
+ return null;
221
+ }
222
+ }
223
+ }
224
+ if (depth !== 0) {
225
+ return null;
226
+ }
227
+ return {
228
+ name: raw.slice(0, bracketStart).trim(),
229
+ inner: raw.slice(bracketStart + 1, -1),
230
+ };
231
+ };
232
+ const parse = (ann, depth = 0) => {
233
+ if (ann === null || ann === undefined) {
234
+ return unknownType();
235
+ }
236
+ if (depth > 100) {
237
+ return unknownType();
238
+ }
239
+ const rawText = String(ann).trim();
240
+ const raw = rawText.startsWith('~') ? rawText.slice(1).trim() : rawText;
241
+ if (raw === '') {
242
+ return unknownType();
243
+ }
244
+ if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(raw) && rawText.startsWith('~')) {
245
+ return mapKnownTypeParameter(raw) ?? { kind: 'typevar', name: raw };
246
+ }
247
+ const paramspecArgsMatch = rawText.match(/^~?([A-Za-z_][A-Za-z0-9_]*)\.(args|kwargs)$/);
248
+ if (paramspecArgsMatch?.[1] && paramspecArgsMatch[2]) {
249
+ const baseName = paramspecArgsMatch[1];
250
+ const known = mapKnownTypeParameter(baseName);
251
+ if (known?.kind === 'paramspec' || rawText.startsWith('~')) {
252
+ return paramspecArgsMatch[2] === 'args'
253
+ ? { kind: 'paramspec_args', name: baseName }
254
+ : { kind: 'paramspec_kwargs', name: baseName };
255
+ }
256
+ }
257
+ const builtInClassMatch = raw.match(/^<class ['"][^'"]+['"]>$/);
258
+ if (builtInClassMatch) {
259
+ const inner = (raw.match(/^<class ['"]([^'"]+)['"]>$/) ?? [])[1] ?? '';
260
+ const name = (inner.split('.').pop() ?? '').toString();
261
+ return mapSimpleName(name);
262
+ }
263
+ if (raw.includes('|')) {
264
+ const parts = splitTopLevel(raw, '|');
265
+ if (parts.length > 1) {
266
+ const types = parts.map(p => parse(p.trim(), depth + 1));
267
+ return { kind: 'union', types };
268
+ }
269
+ }
270
+ if (raw.startsWith('typing.Union[') ||
271
+ raw.startsWith('typing_extensions.Union[') ||
272
+ raw.startsWith('Union[')) {
273
+ const inner = raw.slice(raw.indexOf('[') + 1, raw.lastIndexOf(']'));
274
+ const parts = splitTopLevel(inner, ',');
275
+ const types = parts.map(p => parse(p.trim(), depth + 1));
276
+ return { kind: 'union', types };
277
+ }
278
+ if (raw.startsWith('typing.Optional[') ||
279
+ raw.startsWith('typing_extensions.Optional[') ||
280
+ raw.startsWith('Optional[')) {
281
+ const inner = raw.slice(raw.indexOf('[') + 1, raw.lastIndexOf(']'));
282
+ return { kind: 'optional', type: parse(inner, depth + 1) };
283
+ }
284
+ if (raw.startsWith('typing.Literal[') ||
285
+ raw.startsWith('typing_extensions.Literal[') ||
286
+ raw.startsWith('Literal[')) {
287
+ const inner = raw.slice(raw.indexOf('[') + 1, raw.lastIndexOf(']'));
288
+ const parts = splitTopLevel(inner, ',');
289
+ if (parts.length === 1) {
290
+ return mapLiteral(String(parts[0] ?? '').trim());
291
+ }
292
+ return { kind: 'union', types: parts.map(p => mapLiteral(String(p).trim())) };
293
+ }
294
+ const extMatch = raw.match(/^(typing\.|typing_extensions\.)?(ClassVar|Final|Required|NotRequired)\[(.*)\]$/);
295
+ if (extMatch) {
296
+ return parse(extMatch[3] ?? '', depth + 1);
297
+ }
298
+ const typeVarName = parseTypingFactoryName(rawText, 'TypeVar');
299
+ if (typeVarName) {
300
+ return mapKnownTypeParameter(typeVarName) ?? { kind: 'typevar', name: typeVarName };
301
+ }
302
+ const paramSpecName = parseTypingFactoryName(rawText, 'ParamSpec');
303
+ if (paramSpecName) {
304
+ return mapKnownTypeParameter(paramSpecName) ?? { kind: 'paramspec', name: paramSpecName };
305
+ }
306
+ const typeVarTupleName = parseTypingFactoryName(rawText, 'TypeVarTuple');
307
+ if (typeVarTupleName) {
308
+ return (mapKnownTypeParameter(typeVarTupleName) ?? {
309
+ kind: 'typevartuple',
310
+ name: typeVarTupleName,
311
+ });
312
+ }
313
+ if (raw === 'typing.LiteralString' ||
314
+ raw === 'typing_extensions.LiteralString' ||
315
+ raw === 'LiteralString') {
316
+ return { kind: 'primitive', name: 'str' };
317
+ }
318
+ if (raw.startsWith('typing.Callable[') ||
319
+ raw.startsWith('typing_extensions.Callable[') ||
320
+ raw.startsWith('Callable[')) {
321
+ const inner = raw.slice(raw.indexOf('[') + 1, raw.lastIndexOf(']'));
322
+ const parts = splitTopLevel(inner, ',');
323
+ if (parts.length >= 2) {
324
+ const paramsPart = (parts[0] ?? '').trim();
325
+ const returnPart = parts.slice(1).join(',').trim();
326
+ const returnType = parse(returnPart, depth + 1);
327
+ if (paramsPart === '...' || paramsPart === 'Ellipsis') {
328
+ return {
329
+ kind: 'callable',
330
+ parameters: [{ kind: 'custom', name: '...' }],
331
+ returnType,
332
+ };
333
+ }
334
+ const directParamSpec = parse(paramsPart, depth + 1);
335
+ if (directParamSpec.kind === 'paramspec') {
336
+ return {
337
+ kind: 'callable',
338
+ parameters: [],
339
+ parameterSpec: directParamSpec,
340
+ returnType,
341
+ };
342
+ }
343
+ const paramInner = paramsPart.startsWith('[') && paramsPart.endsWith(']') ? paramsPart.slice(1, -1) : '';
344
+ const trimmed = paramInner.trim();
345
+ if (trimmed === '...' || trimmed === 'Ellipsis') {
346
+ return {
347
+ kind: 'callable',
348
+ parameters: [{ kind: 'custom', name: '...' }],
349
+ returnType,
350
+ };
351
+ }
352
+ const parameters = trimmed
353
+ ? splitTopLevel(trimmed, ',').map(p => parse(p.trim(), depth + 1))
354
+ : [];
355
+ return { kind: 'callable', parameters, returnType };
356
+ }
357
+ }
358
+ if (raw.startsWith('typing.Mapping[') ||
359
+ raw.startsWith('typing_extensions.Mapping[') ||
360
+ raw.startsWith('Mapping[')) {
361
+ const inner = raw.slice(raw.indexOf('[') + 1, raw.lastIndexOf(']'));
362
+ const parts = splitTopLevel(inner, ',');
363
+ return {
364
+ kind: 'collection',
365
+ name: 'dict',
366
+ itemTypes: parts.map(p => parse(p.trim(), depth + 1)),
367
+ };
368
+ }
369
+ if (raw.startsWith('typing.Annotated[') ||
370
+ raw.startsWith('typing_extensions.Annotated[') ||
371
+ raw.startsWith('Annotated[')) {
372
+ const inner = raw.slice(raw.indexOf('[') + 1, raw.lastIndexOf(']'));
373
+ const parts = splitTopLevel(inner, ',');
374
+ if (parts.length > 0) {
375
+ return {
376
+ kind: 'annotated',
377
+ base: parse(parts[0] ?? '', depth + 1),
378
+ metadata: parts.slice(1).map(p => String(p).trim()),
379
+ };
380
+ }
381
+ }
382
+ if (raw.startsWith('typing.Unpack[') ||
383
+ raw.startsWith('typing_extensions.Unpack[') ||
384
+ raw.startsWith('Unpack[')) {
385
+ const inner = raw.slice(raw.indexOf('[') + 1, raw.lastIndexOf(']'));
386
+ return { kind: 'unpack', type: parse(inner, depth + 1) };
387
+ }
388
+ const coll = normalizeCollectionName(raw);
389
+ if (coll) {
390
+ const itemParts = splitTopLevel(coll.inner ?? '', ',');
391
+ const itemTypes = (coll.inner ? itemParts : []).map(p => parse(p.trim(), depth + 1));
392
+ return { kind: 'collection', name: coll.name, itemTypes };
393
+ }
394
+ const generic = splitGenericInvocation(raw);
395
+ if (generic) {
396
+ const typeArgs = splitTopLevel(generic.inner, ',').map(part => parse(part.trim(), depth + 1));
397
+ const qualified = splitQualifiedName(generic.name);
398
+ return {
399
+ kind: 'generic',
400
+ name: qualified.name,
401
+ module: qualified.module,
402
+ typeArgs,
403
+ };
404
+ }
405
+ return mapSimpleName(raw);
406
+ };
407
+ return parse(annotation, 0);
408
+ }
409
+ //# sourceMappingURL=annotation-parser.js.map