mcp-tailwindcss 1.0.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.
@@ -0,0 +1,615 @@
1
+ import { Project, } from 'ts-morph';
2
+ import * as path from 'path';
3
+ export class AstParser {
4
+ project;
5
+ tailwindSrcPath;
6
+ cachedTypes = null;
7
+ constructor(tailwindSrcPath) {
8
+ this.tailwindSrcPath = tailwindSrcPath;
9
+ this.project = new Project({
10
+ tsConfigFilePath: path.join(tailwindSrcPath, '..', 'tsconfig.json'),
11
+ skipAddingFilesFromTsConfig: true,
12
+ });
13
+ }
14
+ getModuleName(filePath) {
15
+ const relativePath = path.relative(this.tailwindSrcPath, filePath);
16
+ const parts = relativePath.split(path.sep);
17
+ if (parts.length > 1) {
18
+ return parts[0];
19
+ }
20
+ return 'root';
21
+ }
22
+ getRelativePath(filePath) {
23
+ return path.relative(this.tailwindSrcPath, filePath).replace(/\\/g, '/');
24
+ }
25
+ addSourceFiles(patterns) {
26
+ for (const pattern of patterns) {
27
+ this.project.addSourceFilesAtPaths(path.join(this.tailwindSrcPath, pattern));
28
+ }
29
+ }
30
+ extractFromFile(filePath) {
31
+ const fullPath = path.join(this.tailwindSrcPath, filePath);
32
+ const sourceFile = this.project.addSourceFileAtPath(fullPath);
33
+ return this.extractTypes(sourceFile);
34
+ }
35
+ extractAllTypes() {
36
+ if (this.cachedTypes)
37
+ return this.cachedTypes;
38
+ this.addSourceFiles(['**/*.ts', '**/*.d.ts']);
39
+ const types = [];
40
+ for (const sourceFile of this.project.getSourceFiles()) {
41
+ const filePath = sourceFile.getFilePath();
42
+ if (filePath.includes('Tests') ||
43
+ filePath.includes('.test.') ||
44
+ filePath.includes('.bench.') ||
45
+ filePath.includes('__snapshots__') ||
46
+ filePath.includes('test-utils') ||
47
+ filePath.includes('/tests/'))
48
+ continue;
49
+ types.push(...this.extractTypes(sourceFile));
50
+ }
51
+ this.cachedTypes = types;
52
+ return types;
53
+ }
54
+ extractTypes(sourceFile) {
55
+ const types = [];
56
+ const relativePath = this.getRelativePath(sourceFile.getFilePath());
57
+ const moduleName = this.getModuleName(sourceFile.getFilePath());
58
+ for (const iface of sourceFile.getInterfaces()) {
59
+ if (iface.isExported()) {
60
+ types.push(this.extractInterface(iface, relativePath, moduleName));
61
+ }
62
+ }
63
+ for (const typeAlias of sourceFile.getTypeAliases()) {
64
+ if (typeAlias.isExported()) {
65
+ types.push(this.extractTypeAlias(typeAlias, relativePath, moduleName));
66
+ }
67
+ }
68
+ for (const enumDecl of sourceFile.getEnums()) {
69
+ if (enumDecl.isExported()) {
70
+ types.push(this.extractEnum(enumDecl, relativePath, moduleName));
71
+ }
72
+ }
73
+ for (const funcDecl of sourceFile.getFunctions()) {
74
+ if (funcDecl.isExported()) {
75
+ types.push(this.extractFunction(funcDecl, relativePath, moduleName));
76
+ }
77
+ }
78
+ for (const classDecl of sourceFile.getClasses()) {
79
+ if (classDecl.isExported()) {
80
+ types.push(this.extractClass(classDecl, relativePath, moduleName));
81
+ }
82
+ }
83
+ for (const varDecl of sourceFile.getVariableDeclarations()) {
84
+ const varStmt = varDecl.getVariableStatement();
85
+ if (varStmt?.isExported()) {
86
+ types.push(this.extractVariable(varDecl, relativePath, moduleName));
87
+ }
88
+ }
89
+ for (const moduleDecl of sourceFile.getModules()) {
90
+ if (moduleDecl.isExported()) {
91
+ types.push(this.extractNamespace(moduleDecl, relativePath, moduleName));
92
+ }
93
+ }
94
+ for (const exportDecl of sourceFile.getExportDeclarations()) {
95
+ const reExport = this.extractReExport(exportDecl, relativePath, moduleName);
96
+ if (reExport) {
97
+ types.push(reExport);
98
+ }
99
+ }
100
+ return types;
101
+ }
102
+ extractTypeParameters(node) {
103
+ return node.getTypeParameters().map((tp) => ({
104
+ name: tp.getName(),
105
+ constraint: tp.getConstraint()?.getText(),
106
+ default: tp.getDefault()?.getText(),
107
+ }));
108
+ }
109
+ extractInterface(iface, file, module) {
110
+ const properties = [];
111
+ const methods = [];
112
+ for (const prop of iface.getProperties()) {
113
+ properties.push({
114
+ name: prop.getName(),
115
+ type: this.simplifyType(prop.getType().getText()),
116
+ optional: prop.hasQuestionToken(),
117
+ readonly: prop.isReadonly(),
118
+ docs: this.getJsDocs(prop),
119
+ isMethod: false,
120
+ isCallSignature: false,
121
+ isIndexSignature: false,
122
+ });
123
+ }
124
+ for (const method of iface.getMethods()) {
125
+ const params = method
126
+ .getParameters()
127
+ .map((p) => `${p.getName()}: ${this.simplifyType(p.getType().getText())}`);
128
+ methods.push({
129
+ name: method.getName(),
130
+ type: this.simplifyType(method.getReturnType().getText()),
131
+ optional: method.hasQuestionToken(),
132
+ readonly: false,
133
+ docs: this.getJsDocs(method),
134
+ isMethod: true,
135
+ isCallSignature: false,
136
+ isIndexSignature: false,
137
+ parameters: params,
138
+ returnType: this.simplifyType(method.getReturnType().getText()),
139
+ });
140
+ }
141
+ for (const callSig of iface.getCallSignatures()) {
142
+ const params = callSig
143
+ .getParameters()
144
+ .map((p) => `${p.getName()}: ${this.simplifyType(p.getType().getText())}`);
145
+ methods.push({
146
+ name: '(call)',
147
+ type: this.simplifyType(callSig.getReturnType().getText()),
148
+ optional: false,
149
+ readonly: false,
150
+ docs: this.getJsDocs(callSig),
151
+ isMethod: false,
152
+ isCallSignature: true,
153
+ isIndexSignature: false,
154
+ parameters: params,
155
+ returnType: this.simplifyType(callSig.getReturnType().getText()),
156
+ });
157
+ }
158
+ for (const indexSig of iface.getIndexSignatures()) {
159
+ const keyType = indexSig.getKeyType().getText();
160
+ const keyName = indexSig.getKeyName();
161
+ methods.push({
162
+ name: `[${keyName}: ${keyType}]`,
163
+ type: this.simplifyType(indexSig.getReturnType().getText()),
164
+ optional: false,
165
+ readonly: indexSig.isReadonly(),
166
+ docs: this.getJsDocs(indexSig),
167
+ isMethod: false,
168
+ isCallSignature: false,
169
+ isIndexSignature: true,
170
+ });
171
+ }
172
+ const typeParams = this.extractTypeParameters(iface);
173
+ const typeParamsStr = typeParams.length > 0 ? `<${typeParams.map((tp) => tp.name).join(', ')}>` : '';
174
+ const extendsClause = iface.getExtends();
175
+ const extendsStr = extendsClause.length > 0
176
+ ? ` extends ${extendsClause.map((e) => e.getText()).join(', ')}`
177
+ : '';
178
+ return {
179
+ name: iface.getName(),
180
+ kind: 'interface',
181
+ exported: true,
182
+ file,
183
+ module,
184
+ signature: `interface ${iface.getName()}${typeParamsStr}${extendsStr}`,
185
+ properties,
186
+ methods,
187
+ typeParameters: typeParams,
188
+ extends: extendsClause.map((e) => e.getText()),
189
+ docs: this.getJsDocs(iface),
190
+ lineNumber: iface.getStartLineNumber(),
191
+ };
192
+ }
193
+ extractTypeAlias(typeAlias, file, module) {
194
+ const typeParams = this.extractTypeParameters(typeAlias);
195
+ const typeParamsStr = typeParams.length > 0 ? `<${typeParams.map((tp) => tp.name).join(', ')}>` : '';
196
+ const typeText = this.simplifyType(typeAlias.getType().getText());
197
+ return {
198
+ name: typeAlias.getName(),
199
+ kind: 'type',
200
+ exported: true,
201
+ file,
202
+ module,
203
+ signature: `type ${typeAlias.getName()}${typeParamsStr} = ${typeText}`,
204
+ fullSignature: `type ${typeAlias.getName()}${typeParamsStr} = ${typeAlias.getType().getText()}`,
205
+ typeParameters: typeParams,
206
+ docs: this.getJsDocs(typeAlias),
207
+ lineNumber: typeAlias.getStartLineNumber(),
208
+ };
209
+ }
210
+ extractEnum(enumDecl, file, module) {
211
+ const members = enumDecl.getMembers().map((m) => {
212
+ const value = m.getValue();
213
+ const valueStr = typeof value === 'string' ? `"${value}"` : (value ?? m.getInitializer()?.getText() ?? 'auto');
214
+ return `${m.getName()} = ${valueStr}`;
215
+ });
216
+ return {
217
+ name: enumDecl.getName(),
218
+ kind: 'enum',
219
+ exported: true,
220
+ file,
221
+ module,
222
+ signature: `enum ${enumDecl.getName()} { ${members.slice(0, 5).join(', ')}${members.length > 5 ? `, ... (+${members.length - 5})` : ''} }`,
223
+ members,
224
+ docs: this.getJsDocs(enumDecl),
225
+ lineNumber: enumDecl.getStartLineNumber(),
226
+ };
227
+ }
228
+ extractFunction(funcDecl, file, module) {
229
+ const typeParams = this.extractTypeParameters(funcDecl);
230
+ const typeParamsStr = typeParams.length > 0 ? `<${typeParams.map((tp) => tp.name).join(', ')}>` : '';
231
+ const params = funcDecl.getParameters().map((p) => {
232
+ const optional = p.hasQuestionToken() ? '?' : '';
233
+ return `${p.getName()}${optional}: ${this.simplifyType(p.getType().getText())}`;
234
+ });
235
+ const returnType = this.simplifyType(funcDecl.getReturnType().getText());
236
+ return {
237
+ name: funcDecl.getName() || 'anonymous',
238
+ kind: 'function',
239
+ exported: true,
240
+ file,
241
+ module,
242
+ signature: `function ${funcDecl.getName()}${typeParamsStr}(${params.join(', ')}): ${returnType}`,
243
+ typeParameters: typeParams,
244
+ docs: this.getJsDocs(funcDecl),
245
+ lineNumber: funcDecl.getStartLineNumber(),
246
+ };
247
+ }
248
+ extractClass(classDecl, file, module) {
249
+ const methods = [];
250
+ const properties = [];
251
+ for (const method of classDecl.getMethods()) {
252
+ const isPublic = method.getScope() === 'public' || !method.getScope();
253
+ if (!isPublic)
254
+ continue;
255
+ const params = method
256
+ .getParameters()
257
+ .map((p) => `${p.getName()}: ${this.simplifyType(p.getType().getText())}`);
258
+ methods.push({
259
+ name: method.getName(),
260
+ type: this.simplifyType(method.getReturnType().getText()),
261
+ optional: false,
262
+ readonly: false,
263
+ docs: this.getJsDocs(method),
264
+ isMethod: true,
265
+ isCallSignature: false,
266
+ isIndexSignature: false,
267
+ parameters: params,
268
+ returnType: this.simplifyType(method.getReturnType().getText()),
269
+ });
270
+ }
271
+ for (const prop of classDecl.getProperties()) {
272
+ const isPublic = prop.getScope() === 'public' || !prop.getScope();
273
+ if (!isPublic)
274
+ continue;
275
+ properties.push({
276
+ name: prop.getName(),
277
+ type: this.simplifyType(prop.getType().getText()),
278
+ optional: prop.hasQuestionToken(),
279
+ readonly: prop.isReadonly(),
280
+ docs: this.getJsDocs(prop),
281
+ isMethod: false,
282
+ isCallSignature: false,
283
+ isIndexSignature: false,
284
+ });
285
+ }
286
+ const typeParams = this.extractTypeParameters(classDecl);
287
+ const typeParamsStr = typeParams.length > 0 ? `<${typeParams.map((tp) => tp.name).join(', ')}>` : '';
288
+ const extendsClause = classDecl.getExtends();
289
+ const implementsClause = classDecl.getImplements();
290
+ let signature = `class ${classDecl.getName()}${typeParamsStr}`;
291
+ if (extendsClause) {
292
+ signature += ` extends ${extendsClause.getText()}`;
293
+ }
294
+ if (implementsClause.length > 0) {
295
+ signature += ` implements ${implementsClause.map((i) => i.getText()).join(', ')}`;
296
+ }
297
+ return {
298
+ name: classDecl.getName() || 'AnonymousClass',
299
+ kind: 'class',
300
+ exported: true,
301
+ file,
302
+ module,
303
+ signature,
304
+ properties,
305
+ methods,
306
+ typeParameters: typeParams,
307
+ extends: extendsClause ? [extendsClause.getText()] : undefined,
308
+ implements: implementsClause.length > 0 ? implementsClause.map((i) => i.getText()) : undefined,
309
+ docs: this.getJsDocs(classDecl),
310
+ lineNumber: classDecl.getStartLineNumber(),
311
+ };
312
+ }
313
+ extractVariable(varDecl, file, module) {
314
+ const name = varDecl.getName();
315
+ const type = this.simplifyType(varDecl.getType().getText());
316
+ const initializer = varDecl.getInitializer();
317
+ let value;
318
+ if (initializer) {
319
+ const initText = initializer.getText();
320
+ value = initText.length > 100 ? initText.substring(0, 100) + '...' : initText;
321
+ }
322
+ const varStmt = varDecl.getVariableStatement();
323
+ const declarationKind = varStmt?.getDeclarationKind() || 'const';
324
+ return {
325
+ name,
326
+ kind: 'variable',
327
+ exported: true,
328
+ file,
329
+ module,
330
+ signature: `${declarationKind} ${name}: ${type}`,
331
+ value,
332
+ docs: varStmt ? this.getJsDocs(varStmt) : undefined,
333
+ lineNumber: varDecl.getStartLineNumber(),
334
+ };
335
+ }
336
+ extractNamespace(moduleDecl, file, module) {
337
+ const members = [];
338
+ for (const iface of moduleDecl.getInterfaces()) {
339
+ members.push(`interface ${iface.getName()}`);
340
+ }
341
+ for (const typeAlias of moduleDecl.getTypeAliases()) {
342
+ members.push(`type ${typeAlias.getName()}`);
343
+ }
344
+ for (const enumDecl of moduleDecl.getEnums()) {
345
+ members.push(`enum ${enumDecl.getName()}`);
346
+ }
347
+ for (const func of moduleDecl.getFunctions()) {
348
+ members.push(`function ${func.getName()}`);
349
+ }
350
+ for (const cls of moduleDecl.getClasses()) {
351
+ members.push(`class ${cls.getName()}`);
352
+ }
353
+ for (const nestedNs of moduleDecl.getModules()) {
354
+ members.push(`namespace ${nestedNs.getName()}`);
355
+ }
356
+ return {
357
+ name: moduleDecl.getName(),
358
+ kind: 'namespace',
359
+ exported: true,
360
+ file,
361
+ module,
362
+ signature: `namespace ${moduleDecl.getName()} { /* ${members.length} members */ }`,
363
+ members,
364
+ docs: this.getJsDocs(moduleDecl),
365
+ lineNumber: moduleDecl.getStartLineNumber(),
366
+ };
367
+ }
368
+ extractReExport(exportDecl, file, module) {
369
+ const moduleSpecifier = exportDecl.getModuleSpecifierValue();
370
+ if (!moduleSpecifier)
371
+ return null;
372
+ const namedExports = exportDecl.getNamedExports();
373
+ const isNamespaceExport = exportDecl.isNamespaceExport();
374
+ if (isNamespaceExport) {
375
+ return {
376
+ name: `* from "${moduleSpecifier}"`,
377
+ kind: 're-export',
378
+ exported: true,
379
+ file,
380
+ module,
381
+ signature: `export * from "${moduleSpecifier}"`,
382
+ reExportSource: moduleSpecifier,
383
+ lineNumber: exportDecl.getStartLineNumber(),
384
+ };
385
+ }
386
+ if (namedExports.length > 0) {
387
+ const names = namedExports.map((ne) => {
388
+ const alias = ne.getAliasNode();
389
+ return alias ? `${ne.getName()} as ${alias.getText()}` : ne.getName();
390
+ });
391
+ return {
392
+ name: `{ ${names.join(', ')} } from "${moduleSpecifier}"`,
393
+ kind: 're-export',
394
+ exported: true,
395
+ file,
396
+ module,
397
+ signature: `export { ${names.join(', ')} } from "${moduleSpecifier}"`,
398
+ reExportSource: moduleSpecifier,
399
+ members: names,
400
+ lineNumber: exportDecl.getStartLineNumber(),
401
+ };
402
+ }
403
+ return null;
404
+ }
405
+ simplifyType(type) {
406
+ return type
407
+ .replace(/import\([^)]+\)\./g, '')
408
+ .replace(/typeof import\([^)]+\)\./g, '')
409
+ .replace(/d:\/[^"]+\//g, '')
410
+ .replace(/\s+/g, ' ')
411
+ .trim();
412
+ }
413
+ getJsDocs(node) {
414
+ const nodeWithDocs = node;
415
+ if (typeof nodeWithDocs.getJsDocs === 'function') {
416
+ const jsDocs = nodeWithDocs.getJsDocs();
417
+ if (jsDocs && jsDocs.length > 0) {
418
+ return jsDocs
419
+ .map((d) => d.getDescription?.() || d.getText?.())
420
+ .filter(Boolean)
421
+ .join('\n')
422
+ .trim();
423
+ }
424
+ }
425
+ return undefined;
426
+ }
427
+ searchType(typeName) {
428
+ const allTypes = this.extractAllTypes();
429
+ const lowerName = typeName.toLowerCase();
430
+ return (allTypes.find((t) => t.name.toLowerCase() === lowerName) ||
431
+ allTypes.find((t) => t.name.toLowerCase().includes(lowerName)));
432
+ }
433
+ fuzzySearch(query, maxResults = 20) {
434
+ const allTypes = this.extractAllTypes();
435
+ const lowerQuery = query.toLowerCase();
436
+ const words = lowerQuery.split(/\s+/);
437
+ const scored = allTypes.map((type) => {
438
+ let score = 0;
439
+ const lowerName = type.name.toLowerCase();
440
+ const lowerDocs = (type.docs || '').toLowerCase();
441
+ if (lowerName === lowerQuery)
442
+ score += 100;
443
+ else if (lowerName.startsWith(lowerQuery))
444
+ score += 50;
445
+ else if (lowerName.includes(lowerQuery))
446
+ score += 25;
447
+ for (const word of words) {
448
+ if (lowerName.includes(word))
449
+ score += 10;
450
+ if (lowerDocs.includes(word))
451
+ score += 5;
452
+ }
453
+ return { type, score };
454
+ });
455
+ return scored
456
+ .filter((s) => s.score > 0)
457
+ .sort((a, b) => b.score - a.score)
458
+ .slice(0, maxResults)
459
+ .map((s) => s.type);
460
+ }
461
+ getTypesFromModule(moduleName) {
462
+ const allTypes = this.extractAllTypes();
463
+ const lowerModule = moduleName.toLowerCase();
464
+ return allTypes.filter((t) => t.module.toLowerCase() === lowerModule || t.file.toLowerCase().includes(lowerModule));
465
+ }
466
+ getTypesByKind(kind) {
467
+ const allTypes = this.extractAllTypes();
468
+ return allTypes.filter((t) => t.kind === kind);
469
+ }
470
+ getStatistics() {
471
+ const allTypes = this.extractAllTypes();
472
+ const byKind = {
473
+ interface: 0,
474
+ type: 0,
475
+ enum: 0,
476
+ function: 0,
477
+ class: 0,
478
+ variable: 0,
479
+ namespace: 0,
480
+ 're-export': 0,
481
+ };
482
+ const moduleMap = new Map();
483
+ for (const type of allTypes) {
484
+ byKind[type.kind]++;
485
+ if (!moduleMap.has(type.module)) {
486
+ moduleMap.set(type.module, {
487
+ module: type.module,
488
+ interfaces: 0,
489
+ types: 0,
490
+ enums: 0,
491
+ functions: 0,
492
+ classes: 0,
493
+ variables: 0,
494
+ namespaces: 0,
495
+ reExports: 0,
496
+ total: 0,
497
+ });
498
+ }
499
+ const stats = moduleMap.get(type.module);
500
+ stats.total++;
501
+ switch (type.kind) {
502
+ case 'interface':
503
+ stats.interfaces++;
504
+ break;
505
+ case 'type':
506
+ stats.types++;
507
+ break;
508
+ case 'enum':
509
+ stats.enums++;
510
+ break;
511
+ case 'function':
512
+ stats.functions++;
513
+ break;
514
+ case 'class':
515
+ stats.classes++;
516
+ break;
517
+ case 'variable':
518
+ stats.variables++;
519
+ break;
520
+ case 'namespace':
521
+ stats.namespaces++;
522
+ break;
523
+ case 're-export':
524
+ stats.reExports++;
525
+ break;
526
+ }
527
+ }
528
+ return {
529
+ totalDeclarations: allTypes.length,
530
+ byKind,
531
+ byModule: Array.from(moduleMap.values()).sort((a, b) => b.total - a.total),
532
+ topInterfaces: allTypes
533
+ .filter((t) => t.kind === 'interface')
534
+ .slice(0, 10)
535
+ .map((t) => t.name),
536
+ topTypes: allTypes
537
+ .filter((t) => t.kind === 'type')
538
+ .slice(0, 10)
539
+ .map((t) => t.name),
540
+ topFunctions: allTypes
541
+ .filter((t) => t.kind === 'function')
542
+ .slice(0, 10)
543
+ .map((t) => t.name),
544
+ };
545
+ }
546
+ getTypeHierarchy(typeName) {
547
+ const allTypes = this.extractAllTypes();
548
+ const type = allTypes.find((t) => t.name.toLowerCase() === typeName.toLowerCase());
549
+ if (!type)
550
+ return null;
551
+ const parents = [];
552
+ const children = [];
553
+ if (type.extends) {
554
+ parents.push(...type.extends);
555
+ }
556
+ if (type.implements) {
557
+ parents.push(...type.implements);
558
+ }
559
+ for (const t of allTypes) {
560
+ if (t.extends?.some((e) => e.includes(type.name))) {
561
+ children.push(t.name);
562
+ }
563
+ if (t.implements?.some((i) => i.includes(type.name))) {
564
+ children.push(t.name);
565
+ }
566
+ }
567
+ return { type, parents, children };
568
+ }
569
+ analyzeDependencies() {
570
+ const dependencies = new Map();
571
+ const allTypes = this.extractAllTypes();
572
+ for (const type of allTypes) {
573
+ if (!dependencies.has(type.module)) {
574
+ dependencies.set(type.module, {
575
+ module: type.module,
576
+ imports: [],
577
+ exports: [type.name],
578
+ reExportsFrom: [],
579
+ });
580
+ }
581
+ else {
582
+ dependencies.get(type.module).exports.push(type.name);
583
+ }
584
+ if (type.kind === 're-export' && type.reExportSource) {
585
+ dependencies.get(type.module).reExportsFrom.push(type.reExportSource);
586
+ }
587
+ }
588
+ return Array.from(dependencies.values());
589
+ }
590
+ getVariables() {
591
+ return this.getTypesByKind('variable');
592
+ }
593
+ getConstants() {
594
+ return this.getVariables().filter((v) => v.signature.startsWith('const'));
595
+ }
596
+ getNamespaces() {
597
+ return this.getTypesByKind('namespace');
598
+ }
599
+ getInterfaces() {
600
+ return this.getTypesByKind('interface');
601
+ }
602
+ getEnums() {
603
+ return this.getTypesByKind('enum');
604
+ }
605
+ getFunctions() {
606
+ return this.getTypesByKind('function');
607
+ }
608
+ getClasses() {
609
+ return this.getTypesByKind('class');
610
+ }
611
+ getTypes() {
612
+ return this.getTypesByKind('type');
613
+ }
614
+ }
615
+ //# sourceMappingURL=ast-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-parser.js","sourceRoot":"","sources":["../src/ast-parser.ts"],"names":[],"mappings":"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"}