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,321 @@
1
+ /**
2
+ * Pydantic Constraint Parser
3
+ *
4
+ * Parses Field() constraints from function call arguments.
5
+ * Handles numeric, string, and custom constraints.
6
+ *
7
+ * @module pydantic/constraint-parser
8
+ */
9
+ // ============================================
10
+ // Constraint Parser Class
11
+ // ============================================
12
+ /**
13
+ * Parses Pydantic Field() constraints.
14
+ *
15
+ * Handles:
16
+ * - Numeric: ge, le, gt, lt, multiple_of
17
+ * - String: min_length, max_length, pattern, regex
18
+ * - Other: frozen, alias, title, description
19
+ */
20
+ export class ConstraintParser {
21
+ /**
22
+ * Parse constraints from Field() arguments.
23
+ *
24
+ * @param args - Field() call arguments
25
+ * @returns Parsed constraints
26
+ */
27
+ parseConstraints(args) {
28
+ const constraints = {
29
+ ge: null,
30
+ le: null,
31
+ gt: null,
32
+ lt: null,
33
+ minLength: null,
34
+ maxLength: null,
35
+ pattern: null,
36
+ multipleOf: null,
37
+ frozen: false,
38
+ validators: [],
39
+ jsonSchemaExtra: null,
40
+ };
41
+ for (const arg of args) {
42
+ if (!arg.isKeyword || !arg.name)
43
+ continue;
44
+ this.parseConstraintArg(arg.name, arg.value, constraints);
45
+ }
46
+ return constraints;
47
+ }
48
+ /**
49
+ * Parse a single constraint argument.
50
+ */
51
+ parseConstraintArg(name, value, constraints) {
52
+ switch (name) {
53
+ // Numeric constraints
54
+ case 'ge':
55
+ constraints.ge = this.parseNumber(value);
56
+ break;
57
+ case 'le':
58
+ constraints.le = this.parseNumber(value);
59
+ break;
60
+ case 'gt':
61
+ constraints.gt = this.parseNumber(value);
62
+ break;
63
+ case 'lt':
64
+ constraints.lt = this.parseNumber(value);
65
+ break;
66
+ case 'multiple_of':
67
+ constraints.multipleOf = this.parseNumber(value);
68
+ break;
69
+ // String constraints
70
+ case 'min_length':
71
+ constraints.minLength = this.parseNumber(value);
72
+ break;
73
+ case 'max_length':
74
+ constraints.maxLength = this.parseNumber(value);
75
+ break;
76
+ case 'pattern':
77
+ case 'regex':
78
+ constraints.pattern = this.parseString(value);
79
+ break;
80
+ // Boolean constraints
81
+ case 'frozen':
82
+ constraints.frozen = this.parseBoolean(value);
83
+ break;
84
+ // JSON schema extra
85
+ case 'json_schema_extra':
86
+ constraints.jsonSchemaExtra = this.parseJsonSchemaExtra(value);
87
+ break;
88
+ // Validators (custom validation functions)
89
+ case 'validator':
90
+ case 'validators':
91
+ const validators = this.parseValidators(value);
92
+ constraints.validators.push(...validators);
93
+ break;
94
+ }
95
+ }
96
+ // ============================================
97
+ // Value Parsers
98
+ // ============================================
99
+ /**
100
+ * Parse a numeric value.
101
+ */
102
+ parseNumber(value) {
103
+ const trimmed = value.trim();
104
+ // Handle negative numbers
105
+ const num = parseFloat(trimmed);
106
+ if (!isNaN(num)) {
107
+ return num;
108
+ }
109
+ return null;
110
+ }
111
+ /**
112
+ * Parse a string value (remove quotes).
113
+ */
114
+ parseString(value) {
115
+ const trimmed = value.trim();
116
+ // Handle raw strings: r'pattern' or r"pattern"
117
+ if (trimmed.startsWith('r"') || trimmed.startsWith("r'")) {
118
+ return trimmed.slice(2, -1);
119
+ }
120
+ // Handle regular strings
121
+ if ((trimmed.startsWith('"') && trimmed.endsWith('"')) ||
122
+ (trimmed.startsWith("'") && trimmed.endsWith("'"))) {
123
+ return trimmed.slice(1, -1);
124
+ }
125
+ // Handle triple-quoted strings
126
+ if (trimmed.startsWith('"""') || trimmed.startsWith("'''")) {
127
+ return trimmed.slice(3, -3);
128
+ }
129
+ return trimmed;
130
+ }
131
+ /**
132
+ * Parse a boolean value.
133
+ */
134
+ parseBoolean(value) {
135
+ const trimmed = value.trim().toLowerCase();
136
+ return trimmed === 'true';
137
+ }
138
+ /**
139
+ * Parse json_schema_extra value.
140
+ */
141
+ parseJsonSchemaExtra(value) {
142
+ // This is typically a dict literal or function call
143
+ // For now, we'll store the raw value and mark it as complex
144
+ try {
145
+ // Simple dict parsing for common cases
146
+ if (value.startsWith('{') && value.endsWith('}')) {
147
+ return this.parseSimpleDict(value);
148
+ }
149
+ }
150
+ catch {
151
+ // Fall through to return null
152
+ }
153
+ return null;
154
+ }
155
+ /**
156
+ * Parse a simple Python dict literal.
157
+ */
158
+ parseSimpleDict(value) {
159
+ // Remove braces
160
+ const inner = value.slice(1, -1).trim();
161
+ if (!inner)
162
+ return {};
163
+ const result = {};
164
+ const pairs = this.splitDictPairs(inner);
165
+ for (const pair of pairs) {
166
+ const colonIndex = pair.indexOf(':');
167
+ if (colonIndex === -1)
168
+ continue;
169
+ const key = this.parseString(pair.slice(0, colonIndex).trim());
170
+ const val = pair.slice(colonIndex + 1).trim();
171
+ if (key) {
172
+ result[key] = this.parseValue(val);
173
+ }
174
+ }
175
+ return result;
176
+ }
177
+ /**
178
+ * Split dict pairs respecting nested structures.
179
+ */
180
+ splitDictPairs(inner) {
181
+ const pairs = [];
182
+ let current = '';
183
+ let depth = 0;
184
+ let inString = false;
185
+ let stringChar = '';
186
+ for (let i = 0; i < inner.length; i++) {
187
+ const char = inner[i];
188
+ const prevChar = inner[i - 1];
189
+ // Handle string boundaries
190
+ if ((char === '"' || char === "'") && prevChar !== '\\') {
191
+ if (!inString) {
192
+ inString = true;
193
+ stringChar = char;
194
+ }
195
+ else if (char === stringChar) {
196
+ inString = false;
197
+ }
198
+ }
199
+ if (!inString) {
200
+ if (char === '{' || char === '[' || char === '(')
201
+ depth++;
202
+ else if (char === '}' || char === ']' || char === ')')
203
+ depth--;
204
+ else if (char === ',' && depth === 0) {
205
+ pairs.push(current.trim());
206
+ current = '';
207
+ continue;
208
+ }
209
+ }
210
+ current += char;
211
+ }
212
+ if (current.trim()) {
213
+ pairs.push(current.trim());
214
+ }
215
+ return pairs;
216
+ }
217
+ /**
218
+ * Parse a generic Python value.
219
+ */
220
+ parseValue(value) {
221
+ const trimmed = value.trim();
222
+ // Boolean
223
+ if (trimmed === 'True')
224
+ return true;
225
+ if (trimmed === 'False')
226
+ return false;
227
+ if (trimmed === 'None')
228
+ return null;
229
+ // Number
230
+ const num = parseFloat(trimmed);
231
+ if (!isNaN(num) && /^-?\d+\.?\d*$/.test(trimmed)) {
232
+ return num;
233
+ }
234
+ // String
235
+ const str = this.parseString(trimmed);
236
+ if (str !== trimmed) {
237
+ return str;
238
+ }
239
+ // List
240
+ if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
241
+ return this.parseSimpleList(trimmed);
242
+ }
243
+ // Dict
244
+ if (trimmed.startsWith('{') && trimmed.endsWith('}')) {
245
+ return this.parseSimpleDict(trimmed);
246
+ }
247
+ // Return as-is for complex expressions
248
+ return trimmed;
249
+ }
250
+ /**
251
+ * Parse a simple Python list literal.
252
+ */
253
+ parseSimpleList(value) {
254
+ const inner = value.slice(1, -1).trim();
255
+ if (!inner)
256
+ return [];
257
+ const items = this.splitDictPairs(inner); // Same splitting logic works
258
+ return items.map((item) => this.parseValue(item));
259
+ }
260
+ /**
261
+ * Parse validator references.
262
+ */
263
+ parseValidators(value) {
264
+ // Could be a single validator or list
265
+ if (value.startsWith('[') && value.endsWith(']')) {
266
+ const inner = value.slice(1, -1);
267
+ return inner.split(',').map((v) => v.trim()).filter(Boolean);
268
+ }
269
+ return [value.trim()];
270
+ }
271
+ }
272
+ // ============================================
273
+ // Constraint Utilities
274
+ // ============================================
275
+ /**
276
+ * Check if constraints have any numeric constraints.
277
+ */
278
+ export function hasNumericConstraints(constraints) {
279
+ return (constraints.ge !== null ||
280
+ constraints.le !== null ||
281
+ constraints.gt !== null ||
282
+ constraints.lt !== null ||
283
+ constraints.multipleOf !== null);
284
+ }
285
+ /**
286
+ * Check if constraints have any string constraints.
287
+ */
288
+ export function hasStringConstraints(constraints) {
289
+ return (constraints.minLength !== null ||
290
+ constraints.maxLength !== null ||
291
+ constraints.pattern !== null);
292
+ }
293
+ /**
294
+ * Check if constraints are empty.
295
+ */
296
+ export function hasAnyConstraints(constraints) {
297
+ return (hasNumericConstraints(constraints) ||
298
+ hasStringConstraints(constraints) ||
299
+ constraints.frozen ||
300
+ constraints.validators.length > 0 ||
301
+ constraints.jsonSchemaExtra !== null);
302
+ }
303
+ /**
304
+ * Merge two constraint objects.
305
+ */
306
+ export function mergeConstraints(base, override) {
307
+ return {
308
+ ge: override.ge ?? base.ge,
309
+ le: override.le ?? base.le,
310
+ gt: override.gt ?? base.gt,
311
+ lt: override.lt ?? base.lt,
312
+ minLength: override.minLength ?? base.minLength,
313
+ maxLength: override.maxLength ?? base.maxLength,
314
+ pattern: override.pattern ?? base.pattern,
315
+ multipleOf: override.multipleOf ?? base.multipleOf,
316
+ frozen: override.frozen ?? base.frozen,
317
+ validators: [...base.validators, ...(override.validators ?? [])],
318
+ jsonSchemaExtra: override.jsonSchemaExtra ?? base.jsonSchemaExtra,
319
+ };
320
+ }
321
+ //# sourceMappingURL=constraint-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint-parser.js","sourceRoot":"","sources":["../../../../src/parsers/tree-sitter/pydantic/constraint-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Pydantic Field Extractor
3
+ *
4
+ * Extracts field definitions from Pydantic model class bodies.
5
+ * Handles annotated assignments, Field() calls, and default values.
6
+ *
7
+ * @module pydantic/field-extractor
8
+ */
9
+ import type { TreeSitterNode } from '../types.js';
10
+ import type { PydanticFieldInfo } from '../types.js';
11
+ import type { ExtractionContext } from './types.js';
12
+ /**
13
+ * Extracts Pydantic field definitions from class bodies.
14
+ *
15
+ * Handles:
16
+ * - Simple annotations: `name: str`
17
+ * - Annotations with defaults: `name: str = "default"`
18
+ * - Field() calls: `name: str = Field(default="value", min_length=1)`
19
+ * - Optional fields: `name: Optional[str] = None`
20
+ */
21
+ export declare class FieldExtractor {
22
+ private readonly typeResolver;
23
+ private readonly constraintParser;
24
+ constructor();
25
+ /**
26
+ * Extract all fields from a class body node.
27
+ *
28
+ * @param bodyNode - The class body (block) node
29
+ * @param context - Extraction context
30
+ * @returns Array of extracted field information
31
+ */
32
+ extractFields(bodyNode: TreeSitterNode, context: ExtractionContext): PydanticFieldInfo[];
33
+ /**
34
+ * Extract a single field from an AST node.
35
+ *
36
+ * @param node - AST node (expression_statement or typed_assignment)
37
+ * @param context - Extraction context
38
+ * @returns Field info or null if not a field
39
+ */
40
+ extractField(node: TreeSitterNode, context: ExtractionContext): PydanticFieldInfo | null;
41
+ /**
42
+ * Extract raw field data from an assignment node.
43
+ */
44
+ private extractRawFieldData;
45
+ /**
46
+ * Parse a Field() call and extract arguments.
47
+ */
48
+ private parseFieldCall;
49
+ /**
50
+ * Extract arguments from a call's argument_list.
51
+ */
52
+ private extractCallArguments;
53
+ /**
54
+ * Process raw field data into PydanticFieldInfo.
55
+ */
56
+ private processRawField;
57
+ /**
58
+ * Determine if a field is required.
59
+ */
60
+ private isFieldRequired;
61
+ /**
62
+ * Extract the actual default value (not Field() call).
63
+ */
64
+ private extractDefaultValue;
65
+ /**
66
+ * Extract a string constraint value.
67
+ */
68
+ private extractStringConstraint;
69
+ /**
70
+ * Create empty constraints object.
71
+ */
72
+ private createEmptyConstraints;
73
+ }
74
+ //# sourceMappingURL=field-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-extractor.d.ts","sourceRoot":"","sources":["../../../../src/parsers/tree-sitter/pydantic/field-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAA+B,MAAM,YAAY,CAAC;AASjF;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;;IAOpD;;;;;;OAMG;IACH,aAAa,CACX,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,iBAAiB,GACzB,iBAAiB,EAAE;IAatB;;;;;;OAMG;IACH,YAAY,CACV,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,iBAAiB,GACzB,iBAAiB,GAAG,IAAI;IAyB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA+BtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiC5B;;OAEG;IACH,OAAO,CAAC,eAAe;IA2CvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAe/B"}