@prodisco/search-libs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +379 -0
  3. package/dist/__tests__/extractor.test.d.ts +5 -0
  4. package/dist/__tests__/extractor.test.d.ts.map +1 -0
  5. package/dist/__tests__/extractor.test.js +452 -0
  6. package/dist/__tests__/extractor.test.js.map +1 -0
  7. package/dist/__tests__/library-indexer.test.d.ts +5 -0
  8. package/dist/__tests__/library-indexer.test.d.ts.map +1 -0
  9. package/dist/__tests__/library-indexer.test.js +611 -0
  10. package/dist/__tests__/library-indexer.test.js.map +1 -0
  11. package/dist/__tests__/schema.test.d.ts +5 -0
  12. package/dist/__tests__/schema.test.d.ts.map +1 -0
  13. package/dist/__tests__/schema.test.js +231 -0
  14. package/dist/__tests__/schema.test.js.map +1 -0
  15. package/dist/__tests__/script-parser.test.d.ts +5 -0
  16. package/dist/__tests__/script-parser.test.d.ts.map +1 -0
  17. package/dist/__tests__/script-parser.test.js +178 -0
  18. package/dist/__tests__/script-parser.test.js.map +1 -0
  19. package/dist/__tests__/search-engine.test.d.ts +5 -0
  20. package/dist/__tests__/search-engine.test.d.ts.map +1 -0
  21. package/dist/__tests__/search-engine.test.js +497 -0
  22. package/dist/__tests__/search-engine.test.js.map +1 -0
  23. package/dist/extractor/ast-parser.d.ts +48 -0
  24. package/dist/extractor/ast-parser.d.ts.map +1 -0
  25. package/dist/extractor/ast-parser.js +118 -0
  26. package/dist/extractor/ast-parser.js.map +1 -0
  27. package/dist/extractor/function-extractor.d.ts +20 -0
  28. package/dist/extractor/function-extractor.d.ts.map +1 -0
  29. package/dist/extractor/function-extractor.js +169 -0
  30. package/dist/extractor/function-extractor.js.map +1 -0
  31. package/dist/extractor/index.d.ts +22 -0
  32. package/dist/extractor/index.d.ts.map +1 -0
  33. package/dist/extractor/index.js +194 -0
  34. package/dist/extractor/index.js.map +1 -0
  35. package/dist/extractor/method-extractor.d.ts +30 -0
  36. package/dist/extractor/method-extractor.d.ts.map +1 -0
  37. package/dist/extractor/method-extractor.js +163 -0
  38. package/dist/extractor/method-extractor.js.map +1 -0
  39. package/dist/extractor/package-resolver.d.ts +77 -0
  40. package/dist/extractor/package-resolver.d.ts.map +1 -0
  41. package/dist/extractor/package-resolver.js +766 -0
  42. package/dist/extractor/package-resolver.js.map +1 -0
  43. package/dist/extractor/type-extractor.d.ts +15 -0
  44. package/dist/extractor/type-extractor.d.ts.map +1 -0
  45. package/dist/extractor/type-extractor.js +206 -0
  46. package/dist/extractor/type-extractor.js.map +1 -0
  47. package/dist/extractor/types.d.ts +116 -0
  48. package/dist/extractor/types.d.ts.map +1 -0
  49. package/dist/extractor/types.js +5 -0
  50. package/dist/extractor/types.js.map +1 -0
  51. package/dist/index.d.ts +18 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +21 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/library-indexer.d.ts +104 -0
  56. package/dist/library-indexer.d.ts.map +1 -0
  57. package/dist/library-indexer.js +295 -0
  58. package/dist/library-indexer.js.map +1 -0
  59. package/dist/schema/base-schema.d.ts +63 -0
  60. package/dist/schema/base-schema.d.ts.map +1 -0
  61. package/dist/schema/base-schema.js +63 -0
  62. package/dist/schema/base-schema.js.map +1 -0
  63. package/dist/schema/index.d.ts +6 -0
  64. package/dist/schema/index.d.ts.map +1 -0
  65. package/dist/schema/index.js +6 -0
  66. package/dist/schema/index.js.map +1 -0
  67. package/dist/schema/schema-builder.d.ts +47 -0
  68. package/dist/schema/schema-builder.d.ts.map +1 -0
  69. package/dist/schema/schema-builder.js +236 -0
  70. package/dist/schema/schema-builder.js.map +1 -0
  71. package/dist/script/index.d.ts +6 -0
  72. package/dist/script/index.d.ts.map +1 -0
  73. package/dist/script/index.js +5 -0
  74. package/dist/script/index.js.map +1 -0
  75. package/dist/script/script-parser.d.ts +18 -0
  76. package/dist/script/script-parser.d.ts.map +1 -0
  77. package/dist/script/script-parser.js +246 -0
  78. package/dist/script/script-parser.js.map +1 -0
  79. package/dist/script/types.d.ts +32 -0
  80. package/dist/script/types.d.ts.map +1 -0
  81. package/dist/script/types.js +5 -0
  82. package/dist/script/types.js.map +1 -0
  83. package/dist/search/index.d.ts +7 -0
  84. package/dist/search/index.d.ts.map +1 -0
  85. package/dist/search/index.js +7 -0
  86. package/dist/search/index.js.map +1 -0
  87. package/dist/search/query-builder.d.ts +59 -0
  88. package/dist/search/query-builder.d.ts.map +1 -0
  89. package/dist/search/query-builder.js +103 -0
  90. package/dist/search/query-builder.js.map +1 -0
  91. package/dist/search/result-formatter.d.ts +61 -0
  92. package/dist/search/result-formatter.d.ts.map +1 -0
  93. package/dist/search/result-formatter.js +170 -0
  94. package/dist/search/result-formatter.js.map +1 -0
  95. package/dist/search/search-engine.d.ts +105 -0
  96. package/dist/search/search-engine.d.ts.map +1 -0
  97. package/dist/search/search-engine.js +245 -0
  98. package/dist/search/search-engine.js.map +1 -0
  99. package/package.json +41 -0
@@ -0,0 +1,497 @@
1
+ /**
2
+ * Tests for the search engine module
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
5
+ import { SearchEngine } from '../search/search-engine.js';
6
+ import { QueryBuilder } from '../search/query-builder.js';
7
+ import { formatResults, formatForAI } from '../search/result-formatter.js';
8
+ describe('SearchEngine', () => {
9
+ let engine;
10
+ beforeEach(async () => {
11
+ engine = new SearchEngine();
12
+ await engine.initialize();
13
+ });
14
+ afterEach(async () => {
15
+ await engine.shutdown();
16
+ });
17
+ describe('initialization', () => {
18
+ it('initializes successfully', () => {
19
+ expect(engine.isInitialized()).toBe(true);
20
+ });
21
+ it('creates Orama database', () => {
22
+ expect(engine.getDb()).not.toBeNull();
23
+ });
24
+ });
25
+ describe('insert', () => {
26
+ it('inserts a single document', async () => {
27
+ const doc = {
28
+ id: 'test:1',
29
+ documentType: 'type',
30
+ name: 'TestType',
31
+ description: 'A test type.',
32
+ searchTokens: 'Test Type',
33
+ library: 'test-lib',
34
+ category: 'class',
35
+ properties: '[]',
36
+ typeDefinition: '',
37
+ nestedTypes: '',
38
+ typeKind: 'class',
39
+ parameters: '',
40
+ returnType: '',
41
+ returnTypeDefinition: '',
42
+ signature: '',
43
+ className: '',
44
+ filePath: '',
45
+ keywords: '',
46
+ };
47
+ await engine.insert(doc);
48
+ const result = await engine.search({ query: 'TestType' });
49
+ expect(result.results.length).toBe(1);
50
+ expect(result.results[0].name).toBe('TestType');
51
+ });
52
+ });
53
+ describe('insertBatch', () => {
54
+ it('inserts multiple documents', async () => {
55
+ const docs = [
56
+ {
57
+ id: 'test:1',
58
+ documentType: 'type',
59
+ name: 'TypeOne',
60
+ description: 'First type.',
61
+ searchTokens: 'Type One',
62
+ library: 'test-lib',
63
+ category: 'class',
64
+ properties: '[]',
65
+ typeDefinition: '',
66
+ nestedTypes: '',
67
+ typeKind: 'class',
68
+ parameters: '',
69
+ returnType: '',
70
+ returnTypeDefinition: '',
71
+ signature: '',
72
+ className: '',
73
+ filePath: '',
74
+ keywords: '',
75
+ },
76
+ {
77
+ id: 'test:2',
78
+ documentType: 'type',
79
+ name: 'TypeTwo',
80
+ description: 'Second type.',
81
+ searchTokens: 'Type Two',
82
+ library: 'test-lib',
83
+ category: 'interface',
84
+ properties: '[]',
85
+ typeDefinition: '',
86
+ nestedTypes: '',
87
+ typeKind: 'interface',
88
+ parameters: '',
89
+ returnType: '',
90
+ returnTypeDefinition: '',
91
+ signature: '',
92
+ className: '',
93
+ filePath: '',
94
+ keywords: '',
95
+ },
96
+ ];
97
+ await engine.insertBatch(docs);
98
+ const result = await engine.search({ query: 'Type' });
99
+ expect(result.results.length).toBe(2);
100
+ });
101
+ it('handles empty array', async () => {
102
+ await expect(engine.insertBatch([])).resolves.not.toThrow();
103
+ });
104
+ });
105
+ describe('search', () => {
106
+ beforeEach(async () => {
107
+ const docs = [
108
+ {
109
+ id: 'method:CoreV1Api.listNamespacedPod',
110
+ documentType: 'method',
111
+ name: 'listNamespacedPod',
112
+ description: 'List pods in a namespace.',
113
+ searchTokens: 'list Namespaced Pod',
114
+ library: '@kubernetes/client-node',
115
+ category: 'list',
116
+ properties: '',
117
+ typeDefinition: '',
118
+ nestedTypes: '',
119
+ typeKind: '',
120
+ parameters: '[]',
121
+ returnType: 'Promise<V1PodList>',
122
+ returnTypeDefinition: '',
123
+ signature: 'listNamespacedPod(namespace: string): Promise<V1PodList>',
124
+ className: 'CoreV1Api',
125
+ filePath: '',
126
+ keywords: '',
127
+ },
128
+ {
129
+ id: 'method:CoreV1Api.createNamespacedPod',
130
+ documentType: 'method',
131
+ name: 'createNamespacedPod',
132
+ description: 'Create a pod in a namespace.',
133
+ searchTokens: 'create Namespaced Pod',
134
+ library: '@kubernetes/client-node',
135
+ category: 'create',
136
+ properties: '',
137
+ typeDefinition: '',
138
+ nestedTypes: '',
139
+ typeKind: '',
140
+ parameters: '[]',
141
+ returnType: 'Promise<V1Pod>',
142
+ returnTypeDefinition: '',
143
+ signature: 'createNamespacedPod(namespace: string, body: V1Pod): Promise<V1Pod>',
144
+ className: 'CoreV1Api',
145
+ filePath: '',
146
+ keywords: '',
147
+ },
148
+ {
149
+ id: 'type:V1Pod',
150
+ documentType: 'type',
151
+ name: 'V1Pod',
152
+ description: 'Pod resource.',
153
+ searchTokens: 'V1 Pod',
154
+ library: '@kubernetes/client-node',
155
+ category: 'class',
156
+ properties: '[]',
157
+ typeDefinition: '',
158
+ nestedTypes: '',
159
+ typeKind: 'class',
160
+ parameters: '',
161
+ returnType: '',
162
+ returnTypeDefinition: '',
163
+ signature: '',
164
+ className: '',
165
+ filePath: '',
166
+ keywords: '',
167
+ },
168
+ {
169
+ id: 'method:PrometheusDriver.instantQuery',
170
+ documentType: 'method',
171
+ name: 'instantQuery',
172
+ description: 'Execute an instant query.',
173
+ searchTokens: 'instant Query',
174
+ library: 'prometheus-query',
175
+ category: 'query',
176
+ properties: '',
177
+ typeDefinition: '',
178
+ nestedTypes: '',
179
+ typeKind: '',
180
+ parameters: '[]',
181
+ returnType: 'Promise<QueryResult>',
182
+ returnTypeDefinition: '',
183
+ signature: 'instantQuery(query: string): Promise<QueryResult>',
184
+ className: 'PrometheusDriver',
185
+ filePath: '',
186
+ keywords: '',
187
+ },
188
+ ];
189
+ await engine.insertBatch(docs);
190
+ });
191
+ it('finds documents by query term', async () => {
192
+ const result = await engine.search({ query: 'Pod' });
193
+ expect(result.results.length).toBeGreaterThan(0);
194
+ expect(result.results.some((r) => r.name.includes('Pod'))).toBe(true);
195
+ });
196
+ it('filters by documentType', async () => {
197
+ const result = await engine.search({
198
+ query: 'Pod',
199
+ documentType: 'method',
200
+ });
201
+ expect(result.results.length).toBeGreaterThan(0);
202
+ expect(result.results.every((r) => r.documentType === 'method')).toBe(true);
203
+ });
204
+ it('filters by category', async () => {
205
+ const result = await engine.search({
206
+ query: 'Pod',
207
+ category: 'list',
208
+ });
209
+ expect(result.results.length).toBe(1);
210
+ expect(result.results[0].name).toBe('listNamespacedPod');
211
+ });
212
+ it('filters by library', async () => {
213
+ const result = await engine.search({
214
+ query: 'query',
215
+ library: 'prometheus-query',
216
+ });
217
+ expect(result.results.length).toBe(1);
218
+ expect(result.results[0].library).toBe('prometheus-query');
219
+ });
220
+ it('excludes categories', async () => {
221
+ const result = await engine.search({
222
+ query: 'Pod',
223
+ exclude: { categories: ['create'] },
224
+ });
225
+ expect(result.results.every((r) => r.category !== 'create')).toBe(true);
226
+ });
227
+ it('excludes libraries', async () => {
228
+ const result = await engine.search({
229
+ exclude: { libraries: ['prometheus-query'] },
230
+ });
231
+ expect(result.results.every((r) => r.library !== 'prometheus-query')).toBe(true);
232
+ });
233
+ it('respects limit parameter', async () => {
234
+ const result = await engine.search({ query: 'Pod', limit: 1 });
235
+ expect(result.results.length).toBe(1);
236
+ });
237
+ it('respects offset parameter', async () => {
238
+ const firstPage = await engine.search({ query: 'Pod', limit: 1, offset: 0 });
239
+ const secondPage = await engine.search({ query: 'Pod', limit: 1, offset: 1 });
240
+ if (firstPage.totalMatches > 1) {
241
+ expect(firstPage.results[0].id).not.toBe(secondPage.results[0]?.id);
242
+ }
243
+ });
244
+ it('returns totalMatches count', async () => {
245
+ const result = await engine.search({ query: 'Pod', limit: 1 });
246
+ expect(result.totalMatches).toBeGreaterThanOrEqual(1);
247
+ });
248
+ it('returns search time', async () => {
249
+ const result = await engine.search({ query: 'Pod' });
250
+ expect(result.searchTime).toBeGreaterThanOrEqual(0);
251
+ });
252
+ it('returns facets', async () => {
253
+ const result = await engine.search({ query: 'Pod' });
254
+ expect(result.facets).toBeDefined();
255
+ expect(result.facets.documentType).toBeDefined();
256
+ expect(result.facets.library).toBeDefined();
257
+ expect(result.facets.category).toBeDefined();
258
+ });
259
+ });
260
+ describe('remove', () => {
261
+ it('removes a document by ID', async () => {
262
+ const doc = {
263
+ id: 'test:removable',
264
+ documentType: 'type',
265
+ name: 'RemovableType',
266
+ description: 'A removable type.',
267
+ searchTokens: 'Removable Type',
268
+ library: 'test-lib',
269
+ category: 'class',
270
+ properties: '[]',
271
+ typeDefinition: '',
272
+ nestedTypes: '',
273
+ typeKind: 'class',
274
+ parameters: '',
275
+ returnType: '',
276
+ returnTypeDefinition: '',
277
+ signature: '',
278
+ className: '',
279
+ filePath: '',
280
+ keywords: '',
281
+ };
282
+ await engine.insert(doc);
283
+ // Verify it was inserted
284
+ let result = await engine.search({ query: 'Removable' });
285
+ expect(result.results.length).toBe(1);
286
+ // Remove it
287
+ await engine.remove('test:removable');
288
+ // Verify it was removed
289
+ result = await engine.search({ query: 'Removable' });
290
+ expect(result.results.length).toBe(0);
291
+ });
292
+ });
293
+ });
294
+ describe('QueryBuilder', () => {
295
+ it('builds basic query', () => {
296
+ const options = QueryBuilder.create().query('Pod').build();
297
+ expect(options.query).toBe('Pod');
298
+ });
299
+ it('sets document type filter', () => {
300
+ const options = QueryBuilder.create()
301
+ .query('Pod')
302
+ .documentType('method')
303
+ .build();
304
+ expect(options.documentType).toBe('method');
305
+ });
306
+ it('sets category filter', () => {
307
+ const options = QueryBuilder.create().query('Pod').category('list').build();
308
+ expect(options.category).toBe('list');
309
+ });
310
+ it('sets library filter', () => {
311
+ const options = QueryBuilder.create()
312
+ .query('Pod')
313
+ .library('@kubernetes/client-node')
314
+ .build();
315
+ expect(options.library).toBe('@kubernetes/client-node');
316
+ });
317
+ it('sets exclude categories', () => {
318
+ const options = QueryBuilder.create()
319
+ .query('Pod')
320
+ .excludeCategories(['delete', 'create'])
321
+ .build();
322
+ expect(options.exclude?.categories).toEqual(['delete', 'create']);
323
+ });
324
+ it('sets exclude libraries', () => {
325
+ const options = QueryBuilder.create()
326
+ .query('Pod')
327
+ .excludeLibraries(['prometheus-query'])
328
+ .build();
329
+ expect(options.exclude?.libraries).toEqual(['prometheus-query']);
330
+ });
331
+ it('sets limit', () => {
332
+ const options = QueryBuilder.create().query('Pod').limit(5).build();
333
+ expect(options.limit).toBe(5);
334
+ });
335
+ it('sets offset', () => {
336
+ const options = QueryBuilder.create().query('Pod').offset(10).build();
337
+ expect(options.offset).toBe(10);
338
+ });
339
+ it('sets page number', () => {
340
+ const options = QueryBuilder.create().query('Pod').page(3, 10).build();
341
+ expect(options.limit).toBe(10);
342
+ expect(options.offset).toBe(20); // (3-1) * 10
343
+ });
344
+ it('sets boost weights', () => {
345
+ const options = QueryBuilder.create()
346
+ .query('Pod')
347
+ .boost({ name: 5, description: 1 })
348
+ .build();
349
+ expect(options.boost).toEqual({ name: 5, description: 1 });
350
+ });
351
+ it('chains multiple options', () => {
352
+ const options = QueryBuilder.create()
353
+ .query('Pod')
354
+ .documentType('method')
355
+ .category('list')
356
+ .library('@kubernetes/client-node')
357
+ .excludeCategories(['delete'])
358
+ .limit(10)
359
+ .offset(5)
360
+ .build();
361
+ expect(options.query).toBe('Pod');
362
+ expect(options.documentType).toBe('method');
363
+ expect(options.category).toBe('list');
364
+ expect(options.library).toBe('@kubernetes/client-node');
365
+ expect(options.exclude?.categories).toEqual(['delete']);
366
+ expect(options.limit).toBe(10);
367
+ expect(options.offset).toBe(5);
368
+ });
369
+ });
370
+ describe('Result Formatter', () => {
371
+ const mockSearchResult = {
372
+ results: [
373
+ {
374
+ id: 'method:CoreV1Api.listNamespacedPod',
375
+ documentType: 'method',
376
+ name: 'listNamespacedPod',
377
+ description: 'List pods in a namespace.',
378
+ searchTokens: 'list Namespaced Pod',
379
+ library: '@kubernetes/client-node',
380
+ category: 'list',
381
+ properties: '',
382
+ typeDefinition: '',
383
+ nestedTypes: '',
384
+ typeKind: '',
385
+ parameters: JSON.stringify([
386
+ { name: 'namespace', type: 'string', optional: false },
387
+ ]),
388
+ returnType: 'Promise<V1PodList>',
389
+ returnTypeDefinition: '',
390
+ signature: 'listNamespacedPod(namespace: string): Promise<V1PodList>',
391
+ className: 'CoreV1Api',
392
+ filePath: '',
393
+ keywords: '',
394
+ },
395
+ {
396
+ id: 'type:V1Pod',
397
+ documentType: 'type',
398
+ name: 'V1Pod',
399
+ description: 'Pod resource.',
400
+ searchTokens: 'V1 Pod',
401
+ library: '@kubernetes/client-node',
402
+ category: 'class',
403
+ properties: JSON.stringify([
404
+ { name: 'metadata', type: 'V1ObjectMeta', optional: true },
405
+ { name: 'spec', type: 'V1PodSpec', optional: true },
406
+ ]),
407
+ typeDefinition: 'class V1Pod { ... }',
408
+ nestedTypes: 'V1ObjectMeta,V1PodSpec',
409
+ typeKind: 'class',
410
+ parameters: '',
411
+ returnType: '',
412
+ returnTypeDefinition: '',
413
+ signature: '',
414
+ className: '',
415
+ filePath: '',
416
+ keywords: '',
417
+ },
418
+ ],
419
+ totalMatches: 2,
420
+ facets: {
421
+ documentType: { method: 1, type: 1 },
422
+ library: { '@kubernetes/client-node': 2 },
423
+ category: { list: 1, class: 1 },
424
+ },
425
+ searchTime: 5.2,
426
+ };
427
+ describe('formatResults', () => {
428
+ it('formats search results to structured output', () => {
429
+ const formatted = formatResults(mockSearchResult);
430
+ expect(formatted.summary).toContain('Found 2 result');
431
+ expect(formatted.items.length).toBe(2);
432
+ expect(formatted.totalMatches).toBe(2);
433
+ expect(formatted.searchTime).toBe(5.2);
434
+ });
435
+ it('includes method-specific fields', () => {
436
+ const formatted = formatResults(mockSearchResult);
437
+ const methodItem = formatted.items.find((i) => i.type === 'method');
438
+ expect(methodItem).toBeDefined();
439
+ expect(methodItem?.parameters).toBeDefined();
440
+ expect(methodItem?.returnType).toBe('Promise<V1PodList>');
441
+ expect(methodItem?.signature).toBeDefined();
442
+ expect(methodItem?.className).toBe('CoreV1Api');
443
+ });
444
+ it('includes type-specific fields', () => {
445
+ const formatted = formatResults(mockSearchResult);
446
+ const typeItem = formatted.items.find((i) => i.type === 'type');
447
+ expect(typeItem).toBeDefined();
448
+ expect(typeItem?.properties).toBeDefined();
449
+ expect(typeItem?.properties?.length).toBe(2);
450
+ expect(typeItem?.nestedTypes).toContain('V1ObjectMeta');
451
+ expect(typeItem?.typeKind).toBe('class');
452
+ });
453
+ it('limits properties when maxProperties option is set', () => {
454
+ const formatted = formatResults(mockSearchResult, { maxProperties: 1 });
455
+ const typeItem = formatted.items.find((i) => i.type === 'type');
456
+ expect(typeItem?.properties?.length).toBe(1);
457
+ });
458
+ it('includes pagination info', () => {
459
+ const formatted = formatResults(mockSearchResult);
460
+ expect(formatted.pagination).toBeDefined();
461
+ expect(formatted.pagination.limit).toBe(2);
462
+ expect(formatted.pagination.hasMore).toBe(false);
463
+ });
464
+ it('sets hasMore when more results exist', () => {
465
+ const resultWithMore = {
466
+ ...mockSearchResult,
467
+ totalMatches: 10,
468
+ };
469
+ const formatted = formatResults(resultWithMore);
470
+ expect(formatted.pagination.hasMore).toBe(true);
471
+ });
472
+ });
473
+ describe('formatForAI', () => {
474
+ it('formats results as markdown string', () => {
475
+ const output = formatForAI(mockSearchResult);
476
+ expect(typeof output).toBe('string');
477
+ expect(output).toContain('Found 2 result');
478
+ expect(output).toContain('## listNamespacedPod');
479
+ expect(output).toContain('## V1Pod');
480
+ });
481
+ it('includes method parameters in output', () => {
482
+ const output = formatForAI(mockSearchResult);
483
+ expect(output).toContain('Parameters:');
484
+ expect(output).toContain('namespace');
485
+ });
486
+ it('includes type properties in output', () => {
487
+ const output = formatForAI(mockSearchResult);
488
+ expect(output).toContain('Properties:');
489
+ expect(output).toContain('metadata');
490
+ });
491
+ it('includes return type for methods', () => {
492
+ const output = formatForAI(mockSearchResult);
493
+ expect(output).toContain('Returns: Promise<V1PodList>');
494
+ });
495
+ });
496
+ });
497
+ //# sourceMappingURL=search-engine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-engine.test.js","sourceRoot":"","sources":["../../src/__tests__/search-engine.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG3E,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,MAAoB,CAAC;IAEzB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,GAAG,GAAiB;gBACxB,EAAE,EAAE,QAAQ;gBACZ,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,cAAc;gBAC3B,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,IAAI;gBAChB,cAAc,EAAE,EAAE;gBAClB,WAAW,EAAE,EAAE;gBACf,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,EAAE;gBACd,UAAU,EAAE,EAAE;gBACd,oBAAoB,EAAE,EAAE;gBACxB,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,EAAE;aACb,CAAC;YAEF,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,GAAmB;gBAC3B;oBACE,EAAE,EAAE,QAAQ;oBACZ,YAAY,EAAE,MAAM;oBACpB,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,aAAa;oBAC1B,YAAY,EAAE,UAAU;oBACxB,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE,EAAE;oBAClB,WAAW,EAAE,EAAE;oBACf,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,EAAE;oBACd,UAAU,EAAE,EAAE;oBACd,oBAAoB,EAAE,EAAE;oBACxB,SAAS,EAAE,EAAE;oBACb,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,EAAE;iBACb;gBACD;oBACE,EAAE,EAAE,QAAQ;oBACZ,YAAY,EAAE,MAAM;oBACpB,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,cAAc;oBAC3B,YAAY,EAAE,UAAU;oBACxB,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE,EAAE;oBAClB,WAAW,EAAE,EAAE;oBACf,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,EAAE;oBACd,UAAU,EAAE,EAAE;oBACd,oBAAoB,EAAE,EAAE;oBACxB,SAAS,EAAE,EAAE;oBACb,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,EAAE;iBACb;aACF,CAAC;YAEF,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,GAAmB;gBAC3B;oBACE,EAAE,EAAE,oCAAoC;oBACxC,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,2BAA2B;oBACxC,YAAY,EAAE,qBAAqB;oBACnC,OAAO,EAAE,yBAAyB;oBAClC,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,EAAE;oBACd,cAAc,EAAE,EAAE;oBAClB,WAAW,EAAE,EAAE;oBACf,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,oBAAoB;oBAChC,oBAAoB,EAAE,EAAE;oBACxB,SAAS,EAAE,0DAA0D;oBACrE,SAAS,EAAE,WAAW;oBACtB,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,EAAE;iBACb;gBACD;oBACE,EAAE,EAAE,sCAAsC;oBAC1C,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,qBAAqB;oBAC3B,WAAW,EAAE,8BAA8B;oBAC3C,YAAY,EAAE,uBAAuB;oBACrC,OAAO,EAAE,yBAAyB;oBAClC,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,EAAE;oBACd,cAAc,EAAE,EAAE;oBAClB,WAAW,EAAE,EAAE;oBACf,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,gBAAgB;oBAC5B,oBAAoB,EAAE,EAAE;oBACxB,SAAS,EAAE,qEAAqE;oBAChF,SAAS,EAAE,WAAW;oBACtB,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,EAAE;iBACb;gBACD;oBACE,EAAE,EAAE,YAAY;oBAChB,YAAY,EAAE,MAAM;oBACpB,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,eAAe;oBAC5B,YAAY,EAAE,QAAQ;oBACtB,OAAO,EAAE,yBAAyB;oBAClC,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE,EAAE;oBAClB,WAAW,EAAE,EAAE;oBACf,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,EAAE;oBACd,UAAU,EAAE,EAAE;oBACd,oBAAoB,EAAE,EAAE;oBACxB,SAAS,EAAE,EAAE;oBACb,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,EAAE;iBACb;gBACD;oBACE,EAAE,EAAE,sCAAsC;oBAC1C,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,cAAc;oBACpB,WAAW,EAAE,2BAA2B;oBACxC,YAAY,EAAE,eAAe;oBAC7B,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,EAAE;oBACd,cAAc,EAAE,EAAE;oBAClB,WAAW,EAAE,EAAE;oBACf,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,sBAAsB;oBAClC,oBAAoB,EAAE,EAAE;oBACxB,SAAS,EAAE,mDAAmD;oBAC9D,SAAS,EAAE,kBAAkB;oBAC7B,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,EAAE;iBACb;aACF,CAAC;YAEF,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACjC,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE,QAAQ;aACvB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACjC,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACjC,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,kBAAkB;aAC5B,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACjC,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE;aACpC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACjC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE;aAC7C,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAE/D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAE9E,IAAI,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAE/D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,GAAG,GAAiB;gBACxB,EAAE,EAAE,gBAAgB;gBACpB,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,mBAAmB;gBAChC,YAAY,EAAE,gBAAgB;gBAC9B,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,IAAI;gBAChB,cAAc,EAAE,EAAE;gBAClB,WAAW,EAAE,EAAE;gBACf,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,EAAE;gBACd,UAAU,EAAE,EAAE;gBACd,oBAAoB,EAAE,EAAE;gBACxB,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,EAAE;aACb,CAAC;YAEF,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEzB,yBAAyB;YACzB,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEtC,YAAY;YACZ,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAEtC,wBAAwB;YACxB,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAE3D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE;aAClC,KAAK,CAAC,KAAK,CAAC;aACZ,YAAY,CAAC,QAAQ,CAAC;aACtB,KAAK,EAAE,CAAC;QAEX,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5E,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE;aAClC,KAAK,CAAC,KAAK,CAAC;aACZ,OAAO,CAAC,yBAAyB,CAAC;aAClC,KAAK,EAAE,CAAC;QAEX,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE;aAClC,KAAK,CAAC,KAAK,CAAC;aACZ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;aACvC,KAAK,EAAE,CAAC;QAEX,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE;aAClC,KAAK,CAAC,KAAK,CAAC;aACZ,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,CAAC;aACtC,KAAK,EAAE,CAAC;QAEX,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACpB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAEpE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAEvE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE;aAClC,KAAK,CAAC,KAAK,CAAC;aACZ,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;aAClC,KAAK,EAAE,CAAC;QAEX,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE;aAClC,KAAK,CAAC,KAAK,CAAC;aACZ,YAAY,CAAC,QAAQ,CAAC;aACtB,QAAQ,CAAC,MAAM,CAAC;aAChB,OAAO,CAAC,yBAAyB,CAAC;aAClC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC;aAC7B,KAAK,CAAC,EAAE,CAAC;aACT,MAAM,CAAC,CAAC,CAAC;aACT,KAAK,EAAE,CAAC;QAEX,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,gBAAgB,GAAG;QACvB,OAAO,EAAE;YACP;gBACE,EAAE,EAAE,oCAAoC;gBACxC,YAAY,EAAE,QAAiB;gBAC/B,IAAI,EAAE,mBAAmB;gBACzB,WAAW,EAAE,2BAA2B;gBACxC,YAAY,EAAE,qBAAqB;gBACnC,OAAO,EAAE,yBAAyB;gBAClC,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,EAAE;gBACd,cAAc,EAAE,EAAE;gBAClB,WAAW,EAAE,EAAE;gBACf,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;oBACzB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;iBACvD,CAAC;gBACF,UAAU,EAAE,oBAAoB;gBAChC,oBAAoB,EAAE,EAAE;gBACxB,SAAS,EAAE,0DAA0D;gBACrE,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,EAAE;aACb;YACD;gBACE,EAAE,EAAE,YAAY;gBAChB,YAAY,EAAE,MAAe;gBAC7B,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,eAAe;gBAC5B,YAAY,EAAE,QAAQ;gBACtB,OAAO,EAAE,yBAAyB;gBAClC,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;oBACzB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAC1D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;iBACpD,CAAC;gBACF,cAAc,EAAE,qBAAqB;gBACrC,WAAW,EAAE,wBAAwB;gBACrC,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,EAAE;gBACd,UAAU,EAAE,EAAE;gBACd,oBAAoB,EAAE,EAAE;gBACxB,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,EAAE;aACb;SACgB;QACnB,YAAY,EAAE,CAAC;QACf,MAAM,EAAE;YACN,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;YACpC,OAAO,EAAE,EAAE,yBAAyB,EAAE,CAAC,EAAE;YACzC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;SAChC;QACD,UAAU,EAAE,GAAG;KAChB,CAAC;IAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAElD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACtD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAEpE,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC1D,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAEhE,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACxD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAEhE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAElD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,cAAc,GAAG;gBACrB,GAAG,gBAAgB;gBACnB,YAAY,EAAE,EAAE;aACjB,CAAC;YACF,MAAM,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;YAEhD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAE7C,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * TypeScript AST parsing utilities
3
+ */
4
+ import * as ts from 'typescript';
5
+ import type { ParameterInfo } from './types.js';
6
+ /**
7
+ * Create a TypeScript source file from source code
8
+ */
9
+ export declare function createSourceFile(filePath: string, sourceCode: string): ts.SourceFile;
10
+ /**
11
+ * Extract JSDoc comment from a node
12
+ */
13
+ export declare function getJSDocDescription(node: ts.Node): string | undefined;
14
+ /**
15
+ * Extract nested type references from a TypeNode
16
+ * Returns all type references found in the node
17
+ */
18
+ export declare function extractNestedTypeRefs(typeNode: ts.TypeNode | undefined, sourceFile: ts.SourceFile): string[];
19
+ /**
20
+ * Extract parameter information from a function/method signature
21
+ */
22
+ export declare function extractParameterInfo(params: ts.NodeArray<ts.ParameterDeclaration>, sourceFile: ts.SourceFile): ParameterInfo[];
23
+ /**
24
+ * Split camelCase/PascalCase identifiers into separate words for better search matching
25
+ * e.g., "queryRange" -> "query Range", "queryRangeStream" -> "query Range Stream"
26
+ */
27
+ export declare function splitCamelCase(identifier: string): string;
28
+ /**
29
+ * Check if a node has a specific modifier
30
+ */
31
+ export declare function hasModifier(node: ts.Node, kind: ts.SyntaxKind): boolean;
32
+ /**
33
+ * Check if a method is async (has async modifier or returns Promise)
34
+ */
35
+ export declare function isAsyncMethod(node: ts.MethodDeclaration | ts.MethodSignature | ts.FunctionDeclaration, sourceFile: ts.SourceFile): boolean;
36
+ /**
37
+ * Check if a method is static
38
+ */
39
+ export declare function isStaticMethod(node: ts.MethodDeclaration | ts.MethodSignature): boolean;
40
+ /**
41
+ * Check if a member is private (has private modifier or starts with underscore)
42
+ */
43
+ export declare function isPrivateMember(node: ts.Node, sourceFile: ts.SourceFile, name?: string): boolean;
44
+ /**
45
+ * Get the text of a node, safely handling undefined
46
+ */
47
+ export declare function getNodeText(node: ts.Node | undefined, sourceFile: ts.SourceFile): string;
48
+ //# sourceMappingURL=ast-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-parser.d.ts","sourceRoot":"","sources":["../../src/extractor/ast-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAEpF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,GAAG,SAAS,CAgBrE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,SAAS,EACjC,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,MAAM,EAAE,CAmBV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAC7C,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,aAAa,EAAE,CAajB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO,CAGvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,EAAE,CAAC,iBAAiB,GAAG,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC,mBAAmB,EACxE,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,OAAO,CAST;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,GAAG,EAAE,CAAC,eAAe,GAAG,OAAO,CAEvF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAUT;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,EACzB,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,MAAM,CAGR"}