driftdetect-core 0.1.2 → 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 (193) hide show
  1. package/dist/boundaries/boundary-store.d.ts +92 -0
  2. package/dist/boundaries/boundary-store.d.ts.map +1 -0
  3. package/dist/boundaries/boundary-store.js +458 -0
  4. package/dist/boundaries/boundary-store.js.map +1 -0
  5. package/dist/boundaries/index.d.ts +8 -0
  6. package/dist/boundaries/index.d.ts.map +1 -0
  7. package/dist/boundaries/index.js +8 -0
  8. package/dist/boundaries/index.js.map +1 -0
  9. package/dist/boundaries/types.d.ts +237 -0
  10. package/dist/boundaries/types.d.ts.map +1 -0
  11. package/dist/boundaries/types.js +8 -0
  12. package/dist/boundaries/types.js.map +1 -0
  13. package/dist/dna/ai-context.d.ts +10 -0
  14. package/dist/dna/ai-context.d.ts.map +1 -0
  15. package/dist/dna/ai-context.js +46 -0
  16. package/dist/dna/ai-context.js.map +1 -0
  17. package/dist/dna/dna-analyzer.d.ts +34 -0
  18. package/dist/dna/dna-analyzer.d.ts.map +1 -0
  19. package/dist/dna/dna-analyzer.js +110 -0
  20. package/dist/dna/dna-analyzer.js.map +1 -0
  21. package/dist/dna/dna-store.d.ts +13 -0
  22. package/dist/dna/dna-store.d.ts.map +1 -0
  23. package/dist/dna/dna-store.js +43 -0
  24. package/dist/dna/dna-store.js.map +1 -0
  25. package/dist/dna/gene-extractors/animation-approach.d.ts +15 -0
  26. package/dist/dna/gene-extractors/animation-approach.d.ts.map +1 -0
  27. package/dist/dna/gene-extractors/animation-approach.js +97 -0
  28. package/dist/dna/gene-extractors/animation-approach.js.map +1 -0
  29. package/dist/dna/gene-extractors/base-extractor.d.ts +53 -0
  30. package/dist/dna/gene-extractors/base-extractor.d.ts.map +1 -0
  31. package/dist/dna/gene-extractors/base-extractor.js +76 -0
  32. package/dist/dna/gene-extractors/base-extractor.js.map +1 -0
  33. package/dist/dna/gene-extractors/index.d.ts +16 -0
  34. package/dist/dna/gene-extractors/index.d.ts.map +1 -0
  35. package/dist/dna/gene-extractors/index.js +38 -0
  36. package/dist/dna/gene-extractors/index.js.map +1 -0
  37. package/dist/dna/gene-extractors/responsive-approach.d.ts +10 -0
  38. package/dist/dna/gene-extractors/responsive-approach.d.ts.map +1 -0
  39. package/dist/dna/gene-extractors/responsive-approach.js +30 -0
  40. package/dist/dna/gene-extractors/responsive-approach.js.map +1 -0
  41. package/dist/dna/gene-extractors/spacing-philosophy.d.ts +10 -0
  42. package/dist/dna/gene-extractors/spacing-philosophy.d.ts.map +1 -0
  43. package/dist/dna/gene-extractors/spacing-philosophy.js +30 -0
  44. package/dist/dna/gene-extractors/spacing-philosophy.js.map +1 -0
  45. package/dist/dna/gene-extractors/state-styling.d.ts +10 -0
  46. package/dist/dna/gene-extractors/state-styling.d.ts.map +1 -0
  47. package/dist/dna/gene-extractors/state-styling.js +29 -0
  48. package/dist/dna/gene-extractors/state-styling.js.map +1 -0
  49. package/dist/dna/gene-extractors/theming.d.ts +10 -0
  50. package/dist/dna/gene-extractors/theming.d.ts.map +1 -0
  51. package/dist/dna/gene-extractors/theming.js +30 -0
  52. package/dist/dna/gene-extractors/theming.js.map +1 -0
  53. package/dist/dna/gene-extractors/variant-handling.d.ts +13 -0
  54. package/dist/dna/gene-extractors/variant-handling.d.ts.map +1 -0
  55. package/dist/dna/gene-extractors/variant-handling.js +38 -0
  56. package/dist/dna/gene-extractors/variant-handling.js.map +1 -0
  57. package/dist/dna/health-calculator.d.ts +21 -0
  58. package/dist/dna/health-calculator.d.ts.map +1 -0
  59. package/dist/dna/health-calculator.js +113 -0
  60. package/dist/dna/health-calculator.js.map +1 -0
  61. package/dist/dna/index.d.ts +21 -0
  62. package/dist/dna/index.d.ts.map +1 -0
  63. package/dist/dna/index.js +19 -0
  64. package/dist/dna/index.js.map +1 -0
  65. package/dist/dna/mutation-detector.d.ts +10 -0
  66. package/dist/dna/mutation-detector.d.ts.map +1 -0
  67. package/dist/dna/mutation-detector.js +39 -0
  68. package/dist/dna/mutation-detector.js.map +1 -0
  69. package/dist/dna/playbook-generator.d.ts +6 -0
  70. package/dist/dna/playbook-generator.d.ts.map +1 -0
  71. package/dist/dna/playbook-generator.js +53 -0
  72. package/dist/dna/playbook-generator.js.map +1 -0
  73. package/dist/dna/types.d.ts +95 -0
  74. package/dist/dna/types.d.ts.map +1 -0
  75. package/dist/dna/types.js +8 -0
  76. package/dist/dna/types.js.map +1 -0
  77. package/dist/index.d.ts +7 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +10 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/parsers/parser-manager.d.ts.map +1 -1
  82. package/dist/parsers/parser-manager.js +2 -0
  83. package/dist/parsers/parser-manager.js.map +1 -1
  84. package/dist/parsers/tree-sitter/config.d.ts +82 -0
  85. package/dist/parsers/tree-sitter/config.d.ts.map +1 -0
  86. package/dist/parsers/tree-sitter/config.js +200 -0
  87. package/dist/parsers/tree-sitter/config.js.map +1 -0
  88. package/dist/parsers/tree-sitter/csharp-ast-converter.d.ts +64 -0
  89. package/dist/parsers/tree-sitter/csharp-ast-converter.d.ts.map +1 -0
  90. package/dist/parsers/tree-sitter/csharp-ast-converter.js +271 -0
  91. package/dist/parsers/tree-sitter/csharp-ast-converter.js.map +1 -0
  92. package/dist/parsers/tree-sitter/csharp-loader.d.ts +43 -0
  93. package/dist/parsers/tree-sitter/csharp-loader.d.ts.map +1 -0
  94. package/dist/parsers/tree-sitter/csharp-loader.js +146 -0
  95. package/dist/parsers/tree-sitter/csharp-loader.js.map +1 -0
  96. package/dist/parsers/tree-sitter/index.d.ts +26 -0
  97. package/dist/parsers/tree-sitter/index.d.ts.map +1 -0
  98. package/dist/parsers/tree-sitter/index.js +47 -0
  99. package/dist/parsers/tree-sitter/index.js.map +1 -0
  100. package/dist/parsers/tree-sitter/java/annotation-extractor.d.ts +79 -0
  101. package/dist/parsers/tree-sitter/java/annotation-extractor.d.ts.map +1 -0
  102. package/dist/parsers/tree-sitter/java/annotation-extractor.js +540 -0
  103. package/dist/parsers/tree-sitter/java/annotation-extractor.js.map +1 -0
  104. package/dist/parsers/tree-sitter/java/class-extractor.d.ts +40 -0
  105. package/dist/parsers/tree-sitter/java/class-extractor.d.ts.map +1 -0
  106. package/dist/parsers/tree-sitter/java/class-extractor.js +770 -0
  107. package/dist/parsers/tree-sitter/java/class-extractor.js.map +1 -0
  108. package/dist/parsers/tree-sitter/java/index.d.ts +14 -0
  109. package/dist/parsers/tree-sitter/java/index.d.ts.map +1 -0
  110. package/dist/parsers/tree-sitter/java/index.js +25 -0
  111. package/dist/parsers/tree-sitter/java/index.js.map +1 -0
  112. package/dist/parsers/tree-sitter/java/method-extractor.d.ts +88 -0
  113. package/dist/parsers/tree-sitter/java/method-extractor.d.ts.map +1 -0
  114. package/dist/parsers/tree-sitter/java/method-extractor.js +551 -0
  115. package/dist/parsers/tree-sitter/java/method-extractor.js.map +1 -0
  116. package/dist/parsers/tree-sitter/java/types.d.ts +545 -0
  117. package/dist/parsers/tree-sitter/java/types.d.ts.map +1 -0
  118. package/dist/parsers/tree-sitter/java/types.js +81 -0
  119. package/dist/parsers/tree-sitter/java/types.js.map +1 -0
  120. package/dist/parsers/tree-sitter/loader.d.ts +50 -0
  121. package/dist/parsers/tree-sitter/loader.d.ts.map +1 -0
  122. package/dist/parsers/tree-sitter/loader.js +156 -0
  123. package/dist/parsers/tree-sitter/loader.js.map +1 -0
  124. package/dist/parsers/tree-sitter/pydantic/config-extractor.d.ts +78 -0
  125. package/dist/parsers/tree-sitter/pydantic/config-extractor.d.ts.map +1 -0
  126. package/dist/parsers/tree-sitter/pydantic/config-extractor.js +278 -0
  127. package/dist/parsers/tree-sitter/pydantic/config-extractor.js.map +1 -0
  128. package/dist/parsers/tree-sitter/pydantic/constraint-parser.d.ts +84 -0
  129. package/dist/parsers/tree-sitter/pydantic/constraint-parser.d.ts.map +1 -0
  130. package/dist/parsers/tree-sitter/pydantic/constraint-parser.js +321 -0
  131. package/dist/parsers/tree-sitter/pydantic/constraint-parser.js.map +1 -0
  132. package/dist/parsers/tree-sitter/pydantic/field-extractor.d.ts +74 -0
  133. package/dist/parsers/tree-sitter/pydantic/field-extractor.d.ts.map +1 -0
  134. package/dist/parsers/tree-sitter/pydantic/field-extractor.js +285 -0
  135. package/dist/parsers/tree-sitter/pydantic/field-extractor.js.map +1 -0
  136. package/dist/parsers/tree-sitter/pydantic/index.d.ts +18 -0
  137. package/dist/parsers/tree-sitter/pydantic/index.d.ts.map +1 -0
  138. package/dist/parsers/tree-sitter/pydantic/index.js +23 -0
  139. package/dist/parsers/tree-sitter/pydantic/index.js.map +1 -0
  140. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.d.ts +70 -0
  141. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.d.ts.map +1 -0
  142. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.js +251 -0
  143. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.js.map +1 -0
  144. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.d.ts +102 -0
  145. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.d.ts.map +1 -0
  146. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.js +399 -0
  147. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.js.map +1 -0
  148. package/dist/parsers/tree-sitter/pydantic/type-resolver.d.ts +89 -0
  149. package/dist/parsers/tree-sitter/pydantic/type-resolver.d.ts.map +1 -0
  150. package/dist/parsers/tree-sitter/pydantic/type-resolver.js +426 -0
  151. package/dist/parsers/tree-sitter/pydantic/type-resolver.js.map +1 -0
  152. package/dist/parsers/tree-sitter/pydantic/types.d.ts +177 -0
  153. package/dist/parsers/tree-sitter/pydantic/types.d.ts.map +1 -0
  154. package/dist/parsers/tree-sitter/pydantic/types.js +139 -0
  155. package/dist/parsers/tree-sitter/pydantic/types.js.map +1 -0
  156. package/dist/parsers/tree-sitter/pydantic/validator-extractor.d.ts +88 -0
  157. package/dist/parsers/tree-sitter/pydantic/validator-extractor.d.ts.map +1 -0
  158. package/dist/parsers/tree-sitter/pydantic/validator-extractor.js +315 -0
  159. package/dist/parsers/tree-sitter/pydantic/validator-extractor.js.map +1 -0
  160. package/dist/parsers/tree-sitter/python-ast-converter.d.ts +140 -0
  161. package/dist/parsers/tree-sitter/python-ast-converter.d.ts.map +1 -0
  162. package/dist/parsers/tree-sitter/python-ast-converter.js +360 -0
  163. package/dist/parsers/tree-sitter/python-ast-converter.js.map +1 -0
  164. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.d.ts +465 -0
  165. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.d.ts.map +1 -0
  166. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.js +1146 -0
  167. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.js.map +1 -0
  168. package/dist/parsers/tree-sitter/tree-sitter-python-parser.d.ts +86 -0
  169. package/dist/parsers/tree-sitter/tree-sitter-python-parser.d.ts.map +1 -0
  170. package/dist/parsers/tree-sitter/tree-sitter-python-parser.js +177 -0
  171. package/dist/parsers/tree-sitter/tree-sitter-python-parser.js.map +1 -0
  172. package/dist/parsers/tree-sitter/types.d.ts +399 -0
  173. package/dist/parsers/tree-sitter/types.d.ts.map +1 -0
  174. package/dist/parsers/tree-sitter/types.js +20 -0
  175. package/dist/parsers/tree-sitter/types.js.map +1 -0
  176. package/dist/parsers/types.d.ts +1 -1
  177. package/dist/parsers/types.d.ts.map +1 -1
  178. package/dist/scanner/file-walker.d.ts.map +1 -1
  179. package/dist/scanner/file-walker.js +5 -0
  180. package/dist/scanner/file-walker.js.map +1 -1
  181. package/dist/store/history-store.d.ts +85 -269
  182. package/dist/store/history-store.d.ts.map +1 -1
  183. package/dist/store/history-store.js +272 -624
  184. package/dist/store/history-store.js.map +1 -1
  185. package/dist/types/index.d.ts +1 -0
  186. package/dist/types/index.d.ts.map +1 -1
  187. package/dist/types/index.js +2 -0
  188. package/dist/types/index.js.map +1 -1
  189. package/dist/types/java-type-mapping.d.ts +79 -0
  190. package/dist/types/java-type-mapping.d.ts.map +1 -0
  191. package/dist/types/java-type-mapping.js +290 -0
  192. package/dist/types/java-type-mapping.js.map +1 -0
  193. package/package.json +8 -3
@@ -0,0 +1,426 @@
1
+ /**
2
+ * Pydantic Type Resolver
3
+ *
4
+ * Resolves Python type annotations to TypeInfo structures.
5
+ * Handles Optional, Union, List, Dict, Literal, and nested generics.
6
+ *
7
+ * @module pydantic/type-resolver
8
+ */
9
+ import { PYTHON_TYPE_MAP } from './types.js';
10
+ // ============================================
11
+ // Type Resolver Class
12
+ // ============================================
13
+ /**
14
+ * Resolves Python type annotations to TypeInfo.
15
+ *
16
+ * Handles:
17
+ * - Simple types: `str`, `int`, `bool`
18
+ * - Optional: `Optional[str]`, `str | None`
19
+ * - Union: `Union[str, int]`, `str | int`
20
+ * - List/Dict: `List[str]`, `Dict[str, int]`
21
+ * - Literal: `Literal['a', 'b', 'c']`
22
+ * - Nested: `List[Dict[str, Optional[int]]]`
23
+ */
24
+ export class TypeResolver {
25
+ /**
26
+ * Resolve a type annotation string to TypeInfo.
27
+ *
28
+ * @param typeStr - The type annotation string
29
+ * @param context - Extraction context
30
+ * @param depth - Current recursion depth
31
+ * @returns Resolved TypeInfo
32
+ */
33
+ resolve(typeStr, context, depth = 0) {
34
+ // Prevent infinite recursion
35
+ if (depth > context.maxTypeDepth) {
36
+ return this.createUnknownType(typeStr);
37
+ }
38
+ // Normalize whitespace
39
+ const normalized = typeStr.trim();
40
+ // Check for type alias
41
+ const aliased = context.typeAliases.get(normalized);
42
+ if (aliased) {
43
+ return this.resolve(aliased, context, depth + 1);
44
+ }
45
+ // Parse the type structure
46
+ const parsed = this.parseTypeString(normalized);
47
+ // Convert to TypeInfo
48
+ return this.parsedToTypeInfo(parsed, context, depth);
49
+ }
50
+ /**
51
+ * Create an unknown type placeholder.
52
+ */
53
+ createUnknownType(raw = 'unknown') {
54
+ return {
55
+ raw,
56
+ base: 'unknown',
57
+ args: [],
58
+ isOptional: false,
59
+ isUnion: false,
60
+ isList: false,
61
+ isDict: false,
62
+ isLiteral: false,
63
+ literalValues: [],
64
+ isPydanticModel: false,
65
+ referencedModel: null,
66
+ };
67
+ }
68
+ // ============================================
69
+ // Type String Parsing
70
+ // ============================================
71
+ /**
72
+ * Parse a type string into a structured format.
73
+ */
74
+ parseTypeString(typeStr) {
75
+ // Handle union syntax: str | int | None
76
+ if (this.containsUnionOperator(typeStr)) {
77
+ return this.parseUnionType(typeStr);
78
+ }
79
+ // Handle generic types: List[str], Dict[str, int]
80
+ const genericMatch = typeStr.match(/^(\w+(?:\.\w+)*)\s*\[(.+)\]$/);
81
+ if (genericMatch) {
82
+ const [, base, argsStr] = genericMatch;
83
+ const args = this.parseGenericArgs(argsStr ?? '');
84
+ return {
85
+ base: base ?? '',
86
+ args,
87
+ raw: typeStr,
88
+ isOptional: false,
89
+ isUnion: false,
90
+ unionMembers: [],
91
+ };
92
+ }
93
+ // Simple type
94
+ return {
95
+ base: typeStr,
96
+ args: [],
97
+ raw: typeStr,
98
+ isOptional: false,
99
+ isUnion: false,
100
+ unionMembers: [],
101
+ };
102
+ }
103
+ /**
104
+ * Check if type string contains union operator (|) outside brackets.
105
+ */
106
+ containsUnionOperator(typeStr) {
107
+ let depth = 0;
108
+ for (const char of typeStr) {
109
+ if (char === '[' || char === '(')
110
+ depth++;
111
+ else if (char === ']' || char === ')')
112
+ depth--;
113
+ else if (char === '|' && depth === 0)
114
+ return true;
115
+ }
116
+ return false;
117
+ }
118
+ /**
119
+ * Parse a union type (str | int | None).
120
+ */
121
+ parseUnionType(typeStr) {
122
+ const members = this.splitUnionMembers(typeStr);
123
+ const parsedMembers = members.map((m) => this.parseTypeString(m.trim()));
124
+ // Check if this is Optional (has None member)
125
+ const hasNone = parsedMembers.some((m) => m.base === 'None' || m.base === 'NoneType');
126
+ const nonNoneMembers = parsedMembers.filter((m) => m.base !== 'None' && m.base !== 'NoneType');
127
+ // If only one non-None member, treat as Optional[T]
128
+ if (hasNone && nonNoneMembers.length === 1) {
129
+ const inner = nonNoneMembers[0];
130
+ return {
131
+ ...inner,
132
+ isOptional: true,
133
+ raw: typeStr,
134
+ };
135
+ }
136
+ return {
137
+ base: 'Union',
138
+ args: parsedMembers,
139
+ raw: typeStr,
140
+ isOptional: hasNone,
141
+ isUnion: true,
142
+ unionMembers: parsedMembers,
143
+ };
144
+ }
145
+ /**
146
+ * Split union members respecting bracket depth.
147
+ */
148
+ splitUnionMembers(typeStr) {
149
+ const members = [];
150
+ let current = '';
151
+ let depth = 0;
152
+ for (const char of typeStr) {
153
+ if (char === '[' || char === '(') {
154
+ depth++;
155
+ current += char;
156
+ }
157
+ else if (char === ']' || char === ')') {
158
+ depth--;
159
+ current += char;
160
+ }
161
+ else if (char === '|' && depth === 0) {
162
+ members.push(current.trim());
163
+ current = '';
164
+ }
165
+ else {
166
+ current += char;
167
+ }
168
+ }
169
+ if (current.trim()) {
170
+ members.push(current.trim());
171
+ }
172
+ return members;
173
+ }
174
+ /**
175
+ * Parse generic type arguments.
176
+ */
177
+ parseGenericArgs(argsStr) {
178
+ const args = [];
179
+ let current = '';
180
+ let depth = 0;
181
+ for (const char of argsStr) {
182
+ if (char === '[' || char === '(') {
183
+ depth++;
184
+ current += char;
185
+ }
186
+ else if (char === ']' || char === ')') {
187
+ depth--;
188
+ current += char;
189
+ }
190
+ else if (char === ',' && depth === 0) {
191
+ if (current.trim()) {
192
+ args.push(this.parseTypeString(current.trim()));
193
+ }
194
+ current = '';
195
+ }
196
+ else {
197
+ current += char;
198
+ }
199
+ }
200
+ if (current.trim()) {
201
+ args.push(this.parseTypeString(current.trim()));
202
+ }
203
+ return args;
204
+ }
205
+ // ============================================
206
+ // Type Conversion
207
+ // ============================================
208
+ /**
209
+ * Convert ParsedType to TypeInfo.
210
+ */
211
+ parsedToTypeInfo(parsed, context, depth) {
212
+ const base = parsed.base;
213
+ // Handle Optional[T]
214
+ if (base === 'Optional') {
215
+ const inner = parsed.args[0];
216
+ if (inner) {
217
+ const innerInfo = this.parsedToTypeInfo(inner, context, depth + 1);
218
+ return {
219
+ ...innerInfo,
220
+ isOptional: true,
221
+ raw: parsed.raw,
222
+ };
223
+ }
224
+ }
225
+ // Handle Union[T, U, ...]
226
+ if (base === 'Union' || parsed.isUnion) {
227
+ return this.handleUnionType(parsed, context, depth);
228
+ }
229
+ // Handle Literal['a', 'b']
230
+ if (base === 'Literal') {
231
+ return this.handleLiteralType(parsed);
232
+ }
233
+ // Handle List/Sequence types
234
+ if (this.isListType(base)) {
235
+ return this.handleListType(parsed, context, depth);
236
+ }
237
+ // Handle Dict/Mapping types
238
+ if (this.isDictType(base)) {
239
+ return this.handleDictType(parsed, context, depth);
240
+ }
241
+ // Handle Tuple
242
+ if (base === 'Tuple' || base === 'tuple') {
243
+ return this.handleTupleType(parsed, context, depth);
244
+ }
245
+ // Check if this is a known Pydantic model
246
+ const isPydanticModel = context.knownModels.has(base);
247
+ // Map Python type to contract type
248
+ const mappedBase = PYTHON_TYPE_MAP[base] ?? base;
249
+ return {
250
+ raw: parsed.raw,
251
+ base: mappedBase,
252
+ args: parsed.args.map((a) => this.parsedToTypeInfo(a, context, depth + 1)),
253
+ isOptional: parsed.isOptional,
254
+ isUnion: false,
255
+ isList: false,
256
+ isDict: false,
257
+ isLiteral: false,
258
+ literalValues: [],
259
+ isPydanticModel,
260
+ referencedModel: isPydanticModel ? base : null,
261
+ };
262
+ }
263
+ /**
264
+ * Handle Union type conversion.
265
+ */
266
+ handleUnionType(parsed, context, depth) {
267
+ const members = parsed.unionMembers.length > 0
268
+ ? parsed.unionMembers
269
+ : parsed.args;
270
+ // Filter out None for display
271
+ const nonNoneMembers = members.filter((m) => m.base !== 'None' && m.base !== 'NoneType');
272
+ // If single non-None member, return it as optional
273
+ if (nonNoneMembers.length === 1 && parsed.isOptional) {
274
+ const inner = this.parsedToTypeInfo(nonNoneMembers[0], context, depth + 1);
275
+ return {
276
+ ...inner,
277
+ isOptional: true,
278
+ raw: parsed.raw,
279
+ };
280
+ }
281
+ // True union type
282
+ return {
283
+ raw: parsed.raw,
284
+ base: 'union',
285
+ args: nonNoneMembers.map((m) => this.parsedToTypeInfo(m, context, depth + 1)),
286
+ isOptional: parsed.isOptional,
287
+ isUnion: true,
288
+ isList: false,
289
+ isDict: false,
290
+ isLiteral: false,
291
+ literalValues: [],
292
+ isPydanticModel: false,
293
+ referencedModel: null,
294
+ };
295
+ }
296
+ /**
297
+ * Handle Literal type conversion.
298
+ */
299
+ handleLiteralType(parsed) {
300
+ // Extract literal values from args
301
+ const literalValues = parsed.args.map((arg) => {
302
+ // Remove quotes from string literals
303
+ const val = arg.base;
304
+ if ((val.startsWith('"') && val.endsWith('"')) ||
305
+ (val.startsWith("'") && val.endsWith("'"))) {
306
+ return val.slice(1, -1);
307
+ }
308
+ return val;
309
+ });
310
+ // Determine base type from first value
311
+ const firstValue = literalValues[0];
312
+ let base = 'string';
313
+ if (firstValue !== undefined) {
314
+ if (/^-?\d+$/.test(firstValue))
315
+ base = 'number';
316
+ else if (firstValue === 'True' || firstValue === 'False')
317
+ base = 'boolean';
318
+ }
319
+ return {
320
+ raw: parsed.raw,
321
+ base,
322
+ args: [],
323
+ isOptional: false,
324
+ isUnion: false,
325
+ isList: false,
326
+ isDict: false,
327
+ isLiteral: true,
328
+ literalValues,
329
+ isPydanticModel: false,
330
+ referencedModel: null,
331
+ };
332
+ }
333
+ /**
334
+ * Handle List/Sequence type conversion.
335
+ */
336
+ handleListType(parsed, context, depth) {
337
+ const itemType = parsed.args[0];
338
+ const itemInfo = itemType
339
+ ? this.parsedToTypeInfo(itemType, context, depth + 1)
340
+ : this.createUnknownType();
341
+ return {
342
+ raw: parsed.raw,
343
+ base: 'array',
344
+ args: [itemInfo],
345
+ isOptional: parsed.isOptional,
346
+ isUnion: false,
347
+ isList: true,
348
+ isDict: false,
349
+ isLiteral: false,
350
+ literalValues: [],
351
+ isPydanticModel: false,
352
+ referencedModel: null,
353
+ };
354
+ }
355
+ /**
356
+ * Handle Dict/Mapping type conversion.
357
+ */
358
+ handleDictType(parsed, context, depth) {
359
+ const keyType = parsed.args[0];
360
+ const valueType = parsed.args[1];
361
+ const keyInfo = keyType
362
+ ? this.parsedToTypeInfo(keyType, context, depth + 1)
363
+ : this.createUnknownType();
364
+ const valueInfo = valueType
365
+ ? this.parsedToTypeInfo(valueType, context, depth + 1)
366
+ : this.createUnknownType();
367
+ return {
368
+ raw: parsed.raw,
369
+ base: 'object',
370
+ args: [keyInfo, valueInfo],
371
+ isOptional: parsed.isOptional,
372
+ isUnion: false,
373
+ isList: false,
374
+ isDict: true,
375
+ isLiteral: false,
376
+ literalValues: [],
377
+ isPydanticModel: false,
378
+ referencedModel: null,
379
+ };
380
+ }
381
+ /**
382
+ * Handle Tuple type conversion.
383
+ */
384
+ handleTupleType(parsed, context, depth) {
385
+ return {
386
+ raw: parsed.raw,
387
+ base: 'array',
388
+ args: parsed.args.map((a) => this.parsedToTypeInfo(a, context, depth + 1)),
389
+ isOptional: parsed.isOptional,
390
+ isUnion: false,
391
+ isList: true,
392
+ isDict: false,
393
+ isLiteral: false,
394
+ literalValues: [],
395
+ isPydanticModel: false,
396
+ referencedModel: null,
397
+ };
398
+ }
399
+ // ============================================
400
+ // Type Classification Helpers
401
+ // ============================================
402
+ /**
403
+ * Check if a type name is a list-like type.
404
+ */
405
+ isListType(typeName) {
406
+ return [
407
+ 'List', 'list',
408
+ 'Sequence', 'MutableSequence',
409
+ 'Set', 'set', 'FrozenSet', 'frozenset',
410
+ 'Iterable', 'Iterator', 'Generator',
411
+ 'Collection', 'AbstractSet',
412
+ ].includes(typeName);
413
+ }
414
+ /**
415
+ * Check if a type name is a dict-like type.
416
+ */
417
+ isDictType(typeName) {
418
+ return [
419
+ 'Dict', 'dict',
420
+ 'Mapping', 'MutableMapping',
421
+ 'OrderedDict', 'DefaultDict',
422
+ 'Counter', 'ChainMap',
423
+ ].includes(typeName);
424
+ }
425
+ }
426
+ //# sourceMappingURL=type-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-resolver.js","sourceRoot":"","sources":["../../../../src/parsers/tree-sitter/pydantic/type-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Pydantic Module Types
3
+ *
4
+ * Type definitions specific to Pydantic model extraction.
5
+ * Extends the base types with additional extraction-specific interfaces.
6
+ *
7
+ * @module pydantic/types
8
+ */
9
+ import type { Position } from '../../types.js';
10
+ import type { TreeSitterNode } from '../types.js';
11
+ /**
12
+ * Context passed during extraction operations.
13
+ * Contains shared state and configuration.
14
+ */
15
+ export interface ExtractionContext {
16
+ /** Source code being parsed */
17
+ source: string;
18
+ /** Maximum depth for type resolution */
19
+ maxTypeDepth: number;
20
+ /** Known model names in the file */
21
+ knownModels: Set<string>;
22
+ /** Type aliases defined in the file */
23
+ typeAliases: Map<string, string>;
24
+ /** Import mappings (alias -> full path) */
25
+ imports: Map<string, string>;
26
+ /** Whether to include position information */
27
+ includePositions: boolean;
28
+ }
29
+ /**
30
+ * Create a default extraction context.
31
+ */
32
+ export declare function createExtractionContext(source: string, options?: Partial<ExtractionContext>): ExtractionContext;
33
+ /**
34
+ * Raw field data extracted from AST before processing.
35
+ */
36
+ export interface RawFieldData {
37
+ /** Field name */
38
+ name: string;
39
+ /** Raw type annotation string */
40
+ typeAnnotation: string | null;
41
+ /** Default value expression */
42
+ defaultValue: string | null;
43
+ /** Whether Field() is used */
44
+ usesField: boolean;
45
+ /** Field() arguments if present */
46
+ fieldArguments: FieldArgument[];
47
+ /** AST node for the field */
48
+ node: TreeSitterNode;
49
+ }
50
+ /**
51
+ * A single argument from Field() call.
52
+ */
53
+ export interface FieldArgument {
54
+ /** Argument name (null for positional) */
55
+ name: string | null;
56
+ /** Argument value as string */
57
+ value: string;
58
+ /** Whether this is a keyword argument */
59
+ isKeyword: boolean;
60
+ }
61
+ /**
62
+ * Result of parsing a type annotation.
63
+ */
64
+ export interface ParsedType {
65
+ /** The base type name */
66
+ base: string;
67
+ /** Generic type arguments */
68
+ args: ParsedType[];
69
+ /** Original raw string */
70
+ raw: string;
71
+ /** Whether wrapped in Optional */
72
+ isOptional: boolean;
73
+ /** Whether this is a Union type */
74
+ isUnion: boolean;
75
+ /** Union members if isUnion */
76
+ unionMembers: ParsedType[];
77
+ }
78
+ /**
79
+ * Python to contract type mapping.
80
+ */
81
+ export declare const PYTHON_TYPE_MAP: Record<string, string>;
82
+ /**
83
+ * Numeric constraint names.
84
+ */
85
+ export declare const NUMERIC_CONSTRAINTS: readonly ["ge", "le", "gt", "lt", "multiple_of"];
86
+ export type NumericConstraint = typeof NUMERIC_CONSTRAINTS[number];
87
+ /**
88
+ * String constraint names.
89
+ */
90
+ export declare const STRING_CONSTRAINTS: readonly ["min_length", "max_length", "pattern", "regex"];
91
+ export type StringConstraint = typeof STRING_CONSTRAINTS[number];
92
+ /**
93
+ * All constraint names.
94
+ */
95
+ export declare const ALL_CONSTRAINTS: readonly ["ge", "le", "gt", "lt", "multiple_of", "min_length", "max_length", "pattern", "regex", "alias", "title", "description", "examples", "deprecated", "frozen", "exclude", "include", "discriminator", "json_schema_extra", "strict", "default", "default_factory"];
96
+ /**
97
+ * Validator decorator types.
98
+ */
99
+ export type ValidatorDecoratorType = 'validator' | 'root_validator' | 'field_validator' | 'model_validator' | 'computed_field';
100
+ /**
101
+ * Validator mode for v2 validators.
102
+ */
103
+ export type ValidatorMode = 'before' | 'after' | 'wrap' | 'plain';
104
+ /**
105
+ * Raw validator data from AST.
106
+ */
107
+ export interface RawValidatorData {
108
+ /** Function name */
109
+ name: string;
110
+ /** Decorator type */
111
+ decoratorType: ValidatorDecoratorType;
112
+ /** Fields this validator applies to (for field validators) */
113
+ fields: string[];
114
+ /** Validator mode */
115
+ mode: ValidatorMode | null;
116
+ /** Whether pre=True (v1) */
117
+ isPre: boolean;
118
+ /** Whether always=True (v1) */
119
+ isAlways: boolean;
120
+ /** Whether check_fields=False */
121
+ skipOnFailure: boolean;
122
+ /** AST node */
123
+ node: TreeSitterNode;
124
+ }
125
+ /**
126
+ * Raw config data from AST.
127
+ */
128
+ export interface RawConfigData {
129
+ /** Whether this is v1 Config class or v2 model_config */
130
+ version: 1 | 2;
131
+ /** Config values as key-value pairs */
132
+ values: Map<string, ConfigValue>;
133
+ /** AST node */
134
+ node: TreeSitterNode;
135
+ }
136
+ /**
137
+ * A config value (can be various types).
138
+ */
139
+ export interface ConfigValue {
140
+ /** Raw string representation */
141
+ raw: string;
142
+ /** Parsed value if simple type */
143
+ parsed: string | number | boolean | null;
144
+ /** Whether this is a complex expression */
145
+ isComplex: boolean;
146
+ }
147
+ /**
148
+ * Information about a base class.
149
+ */
150
+ export interface BaseClassInfo {
151
+ /** Base class name */
152
+ name: string;
153
+ /** Full qualified name if available */
154
+ fullName: string | null;
155
+ /** Generic type arguments if any */
156
+ typeArgs: string[];
157
+ /** Whether this is a Pydantic base */
158
+ isPydanticBase: boolean;
159
+ /** Whether this is Generic[T] */
160
+ isGeneric: boolean;
161
+ }
162
+ /**
163
+ * Known Pydantic base classes.
164
+ */
165
+ export declare const PYDANTIC_BASE_CLASSES: Set<string>;
166
+ /**
167
+ * Extract position from a tree-sitter node.
168
+ */
169
+ export declare function extractPosition(node: TreeSitterNode): Position;
170
+ /**
171
+ * Extract start and end positions from a node.
172
+ */
173
+ export declare function extractPositionRange(node: TreeSitterNode): {
174
+ startPosition: Position;
175
+ endPosition: Position;
176
+ };
177
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/parsers/tree-sitter/pydantic/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,uCAAuC;IACvC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2CAA2C;IAC3C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,8CAA8C;IAC9C,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACvC,iBAAiB,CASnB;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,+BAA+B;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8BAA8B;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,6BAA6B;IAC7B,IAAI,EAAE,cAAc,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkDlD,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,mBAAmB,kDAAmD,CAAC;AACpF,MAAM,MAAM,iBAAiB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,kBAAkB,2DAA4D,CAAC;AAC5F,MAAM,MAAM,gBAAgB,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,eAAe,2QAgBlB,CAAC;AAMX;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAC9B,WAAW,GACX,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,aAAa,EAAE,sBAAsB,CAAC;IACtC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qBAAqB;IACrB,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,4BAA4B;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,+BAA+B;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe;IACf,IAAI,EAAE,cAAc,CAAC;CACtB;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,uCAAuC;IACvC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjC,eAAe;IACf,IAAI,EAAE,cAAc,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACzC,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sCAAsC;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,iCAAiC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,aAOhC,CAAC;AAMH;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,CAK9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG;IAC1D,aAAa,EAAE,QAAQ,CAAC;IACxB,WAAW,EAAE,QAAQ,CAAC;CACvB,CAWA"}