@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.
- package/LICENSE +21 -0
- package/README.md +379 -0
- package/dist/__tests__/extractor.test.d.ts +5 -0
- package/dist/__tests__/extractor.test.d.ts.map +1 -0
- package/dist/__tests__/extractor.test.js +452 -0
- package/dist/__tests__/extractor.test.js.map +1 -0
- package/dist/__tests__/library-indexer.test.d.ts +5 -0
- package/dist/__tests__/library-indexer.test.d.ts.map +1 -0
- package/dist/__tests__/library-indexer.test.js +611 -0
- package/dist/__tests__/library-indexer.test.js.map +1 -0
- package/dist/__tests__/schema.test.d.ts +5 -0
- package/dist/__tests__/schema.test.d.ts.map +1 -0
- package/dist/__tests__/schema.test.js +231 -0
- package/dist/__tests__/schema.test.js.map +1 -0
- package/dist/__tests__/script-parser.test.d.ts +5 -0
- package/dist/__tests__/script-parser.test.d.ts.map +1 -0
- package/dist/__tests__/script-parser.test.js +178 -0
- package/dist/__tests__/script-parser.test.js.map +1 -0
- package/dist/__tests__/search-engine.test.d.ts +5 -0
- package/dist/__tests__/search-engine.test.d.ts.map +1 -0
- package/dist/__tests__/search-engine.test.js +497 -0
- package/dist/__tests__/search-engine.test.js.map +1 -0
- package/dist/extractor/ast-parser.d.ts +48 -0
- package/dist/extractor/ast-parser.d.ts.map +1 -0
- package/dist/extractor/ast-parser.js +118 -0
- package/dist/extractor/ast-parser.js.map +1 -0
- package/dist/extractor/function-extractor.d.ts +20 -0
- package/dist/extractor/function-extractor.d.ts.map +1 -0
- package/dist/extractor/function-extractor.js +169 -0
- package/dist/extractor/function-extractor.js.map +1 -0
- package/dist/extractor/index.d.ts +22 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +194 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/extractor/method-extractor.d.ts +30 -0
- package/dist/extractor/method-extractor.d.ts.map +1 -0
- package/dist/extractor/method-extractor.js +163 -0
- package/dist/extractor/method-extractor.js.map +1 -0
- package/dist/extractor/package-resolver.d.ts +77 -0
- package/dist/extractor/package-resolver.d.ts.map +1 -0
- package/dist/extractor/package-resolver.js +766 -0
- package/dist/extractor/package-resolver.js.map +1 -0
- package/dist/extractor/type-extractor.d.ts +15 -0
- package/dist/extractor/type-extractor.d.ts.map +1 -0
- package/dist/extractor/type-extractor.js +206 -0
- package/dist/extractor/type-extractor.js.map +1 -0
- package/dist/extractor/types.d.ts +116 -0
- package/dist/extractor/types.d.ts.map +1 -0
- package/dist/extractor/types.js +5 -0
- package/dist/extractor/types.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/library-indexer.d.ts +104 -0
- package/dist/library-indexer.d.ts.map +1 -0
- package/dist/library-indexer.js +295 -0
- package/dist/library-indexer.js.map +1 -0
- package/dist/schema/base-schema.d.ts +63 -0
- package/dist/schema/base-schema.d.ts.map +1 -0
- package/dist/schema/base-schema.js +63 -0
- package/dist/schema/base-schema.js.map +1 -0
- package/dist/schema/index.d.ts +6 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +6 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/schema-builder.d.ts +47 -0
- package/dist/schema/schema-builder.d.ts.map +1 -0
- package/dist/schema/schema-builder.js +236 -0
- package/dist/schema/schema-builder.js.map +1 -0
- package/dist/script/index.d.ts +6 -0
- package/dist/script/index.d.ts.map +1 -0
- package/dist/script/index.js +5 -0
- package/dist/script/index.js.map +1 -0
- package/dist/script/script-parser.d.ts +18 -0
- package/dist/script/script-parser.d.ts.map +1 -0
- package/dist/script/script-parser.js +246 -0
- package/dist/script/script-parser.js.map +1 -0
- package/dist/script/types.d.ts +32 -0
- package/dist/script/types.d.ts.map +1 -0
- package/dist/script/types.js +5 -0
- package/dist/script/types.js.map +1 -0
- package/dist/search/index.d.ts +7 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +7 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/query-builder.d.ts +59 -0
- package/dist/search/query-builder.d.ts.map +1 -0
- package/dist/search/query-builder.js +103 -0
- package/dist/search/query-builder.js.map +1 -0
- package/dist/search/result-formatter.d.ts +61 -0
- package/dist/search/result-formatter.d.ts.map +1 -0
- package/dist/search/result-formatter.js +170 -0
- package/dist/search/result-formatter.js.map +1 -0
- package/dist/search/search-engine.d.ts +105 -0
- package/dist/search/search-engine.d.ts.map +1 -0
- package/dist/search/search-engine.js +245 -0
- package/dist/search/search-engine.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for the extractor module
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
5
|
+
import { writeFileSync, mkdirSync, rmSync, existsSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import { extractFromPackage, extractTypesFromFile, extractMethodsFromFile, extractFunctionsFromFile, } from '../extractor/index.js';
|
|
8
|
+
import { createSourceFile, getJSDocDescription, splitCamelCase, } from '../extractor/ast-parser.js';
|
|
9
|
+
import { resolvePackage, findDtsFiles } from '../extractor/package-resolver.js';
|
|
10
|
+
const testDir = `/tmp/search-libs-extractor-test-${Date.now()}`;
|
|
11
|
+
describe('AST Parser Utilities', () => {
|
|
12
|
+
describe('createSourceFile', () => {
|
|
13
|
+
it('creates a source file from TypeScript code', () => {
|
|
14
|
+
const code = 'export class Foo {}';
|
|
15
|
+
const sourceFile = createSourceFile('test.ts', code);
|
|
16
|
+
expect(sourceFile).toBeDefined();
|
|
17
|
+
expect(sourceFile.fileName).toBe('test.ts');
|
|
18
|
+
});
|
|
19
|
+
it('handles interface declarations', () => {
|
|
20
|
+
const code = 'export interface Bar { name: string; }';
|
|
21
|
+
const sourceFile = createSourceFile('test.ts', code);
|
|
22
|
+
expect(sourceFile).toBeDefined();
|
|
23
|
+
expect(sourceFile.statements.length).toBeGreaterThan(0);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('splitCamelCase', () => {
|
|
27
|
+
it('splits camelCase into separate words', () => {
|
|
28
|
+
const result = splitCamelCase('listNamespacedPod');
|
|
29
|
+
// Should contain the words split by case changes
|
|
30
|
+
expect(result).toContain('list');
|
|
31
|
+
expect(result).toContain('Namespaced');
|
|
32
|
+
expect(result).toContain('Pod');
|
|
33
|
+
});
|
|
34
|
+
it('splits PascalCase into separate words', () => {
|
|
35
|
+
const result = splitCamelCase('CoreV1Api');
|
|
36
|
+
// Should contain split words
|
|
37
|
+
expect(result).toContain('Core');
|
|
38
|
+
});
|
|
39
|
+
it('handles single word', () => {
|
|
40
|
+
expect(splitCamelCase('pod')).toBe('pod');
|
|
41
|
+
});
|
|
42
|
+
it('handles empty string', () => {
|
|
43
|
+
expect(splitCamelCase('')).toBe('');
|
|
44
|
+
});
|
|
45
|
+
it('handles acronyms', () => {
|
|
46
|
+
const result = splitCamelCase('HTTPRequest');
|
|
47
|
+
// May not split all caps sequences perfectly, just verify it doesn't crash
|
|
48
|
+
expect(result.length).toBeGreaterThan(0);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe('getJSDocDescription', () => {
|
|
52
|
+
it('extracts JSDoc description from node', () => {
|
|
53
|
+
const code = `
|
|
54
|
+
/**
|
|
55
|
+
* This is a description.
|
|
56
|
+
*/
|
|
57
|
+
export class Foo {}
|
|
58
|
+
`;
|
|
59
|
+
const sourceFile = createSourceFile('test.ts', code);
|
|
60
|
+
const classNode = sourceFile.statements[0];
|
|
61
|
+
const description = getJSDocDescription(classNode);
|
|
62
|
+
expect(description).toContain('This is a description');
|
|
63
|
+
});
|
|
64
|
+
it('returns undefined or empty when no JSDoc present', () => {
|
|
65
|
+
const code = 'export class Foo {}';
|
|
66
|
+
const sourceFile = createSourceFile('test.ts', code);
|
|
67
|
+
const classNode = sourceFile.statements[0];
|
|
68
|
+
const description = getJSDocDescription(classNode);
|
|
69
|
+
// May return undefined or empty string
|
|
70
|
+
expect(description === '' || description === undefined).toBe(true);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe('Package Resolver', () => {
|
|
75
|
+
describe('resolvePackage', () => {
|
|
76
|
+
it('resolves @kubernetes/client-node package if installed', () => {
|
|
77
|
+
const result = resolvePackage('@kubernetes/client-node');
|
|
78
|
+
// Package may or may not be installed in the test environment
|
|
79
|
+
if (result) {
|
|
80
|
+
expect(result.packageName).toBe('@kubernetes/client-node');
|
|
81
|
+
expect(result.packagePath).toContain('node_modules');
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
it('resolves prometheus-query package if installed', () => {
|
|
85
|
+
const result = resolvePackage('prometheus-query');
|
|
86
|
+
// Package may or may not be installed in the test environment
|
|
87
|
+
if (result) {
|
|
88
|
+
expect(result.packageName).toBe('prometheus-query');
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
it('returns null or undefined for non-existent package', () => {
|
|
92
|
+
const result = resolvePackage('this-package-does-not-exist-12345');
|
|
93
|
+
// May return null or undefined depending on implementation
|
|
94
|
+
expect(result == null).toBe(true);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe('findDtsFiles', () => {
|
|
98
|
+
it('finds .d.ts files in a package if available', () => {
|
|
99
|
+
const packageInfo = resolvePackage('@kubernetes/client-node');
|
|
100
|
+
if (packageInfo) {
|
|
101
|
+
const dtsFiles = findDtsFiles(packageInfo.packagePath);
|
|
102
|
+
expect(dtsFiles.length).toBeGreaterThan(0);
|
|
103
|
+
expect(dtsFiles.every((f) => f.endsWith('.d.ts'))).toBe(true);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
describe('Type Extractor', () => {
|
|
109
|
+
beforeEach(() => {
|
|
110
|
+
if (!existsSync(testDir)) {
|
|
111
|
+
mkdirSync(testDir, { recursive: true });
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
afterEach(() => {
|
|
115
|
+
if (existsSync(testDir)) {
|
|
116
|
+
rmSync(testDir, { recursive: true });
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
describe('extractTypesFromFile', () => {
|
|
120
|
+
it('extracts class declarations', () => {
|
|
121
|
+
const code = `
|
|
122
|
+
/**
|
|
123
|
+
* A test class.
|
|
124
|
+
*/
|
|
125
|
+
export class TestClass {
|
|
126
|
+
name: string;
|
|
127
|
+
age?: number;
|
|
128
|
+
}
|
|
129
|
+
`;
|
|
130
|
+
const filePath = join(testDir, 'class-test.ts');
|
|
131
|
+
writeFileSync(filePath, code);
|
|
132
|
+
const types = extractTypesFromFile(filePath, 'test-lib');
|
|
133
|
+
expect(types.length).toBeGreaterThan(0);
|
|
134
|
+
expect(types[0].name).toBe('TestClass');
|
|
135
|
+
expect(types[0].kind).toBe('class');
|
|
136
|
+
});
|
|
137
|
+
it('extracts interface declarations', () => {
|
|
138
|
+
const code = `
|
|
139
|
+
/**
|
|
140
|
+
* A test interface.
|
|
141
|
+
*/
|
|
142
|
+
export interface TestInterface {
|
|
143
|
+
id: string;
|
|
144
|
+
value: number;
|
|
145
|
+
}
|
|
146
|
+
`;
|
|
147
|
+
const filePath = join(testDir, 'interface-test.ts');
|
|
148
|
+
writeFileSync(filePath, code);
|
|
149
|
+
const types = extractTypesFromFile(filePath, 'test-lib');
|
|
150
|
+
expect(types.length).toBeGreaterThan(0);
|
|
151
|
+
expect(types[0].name).toBe('TestInterface');
|
|
152
|
+
expect(types[0].kind).toBe('interface');
|
|
153
|
+
});
|
|
154
|
+
it('extracts enum declarations', () => {
|
|
155
|
+
const code = `
|
|
156
|
+
export enum Status {
|
|
157
|
+
Active = 'active',
|
|
158
|
+
Inactive = 'inactive',
|
|
159
|
+
}
|
|
160
|
+
`;
|
|
161
|
+
const filePath = join(testDir, 'enum-test.ts');
|
|
162
|
+
writeFileSync(filePath, code);
|
|
163
|
+
const types = extractTypesFromFile(filePath, 'test-lib');
|
|
164
|
+
expect(types.length).toBeGreaterThan(0);
|
|
165
|
+
expect(types[0].name).toBe('Status');
|
|
166
|
+
expect(types[0].kind).toBe('enum');
|
|
167
|
+
});
|
|
168
|
+
it('extracts type alias declarations', () => {
|
|
169
|
+
const code = `
|
|
170
|
+
export type StringOrNumber = string | number;
|
|
171
|
+
`;
|
|
172
|
+
const filePath = join(testDir, 'type-alias-test.ts');
|
|
173
|
+
writeFileSync(filePath, code);
|
|
174
|
+
const types = extractTypesFromFile(filePath, 'test-lib');
|
|
175
|
+
expect(types.length).toBeGreaterThan(0);
|
|
176
|
+
expect(types[0].name).toBe('StringOrNumber');
|
|
177
|
+
expect(types[0].kind).toBe('type-alias');
|
|
178
|
+
});
|
|
179
|
+
it('extracts all types when no filter applied', () => {
|
|
180
|
+
const code = `
|
|
181
|
+
export class V1Pod {}
|
|
182
|
+
export class V1Service {}
|
|
183
|
+
export class V1Deployment {}
|
|
184
|
+
`;
|
|
185
|
+
const filePath = join(testDir, 'multi-type-test.ts');
|
|
186
|
+
writeFileSync(filePath, code);
|
|
187
|
+
const types = extractTypesFromFile(filePath, 'test-lib');
|
|
188
|
+
// Should find all exported classes
|
|
189
|
+
expect(types.length).toBeGreaterThan(0);
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
describe('Method Extractor', () => {
|
|
194
|
+
beforeEach(() => {
|
|
195
|
+
if (!existsSync(testDir)) {
|
|
196
|
+
mkdirSync(testDir, { recursive: true });
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
afterEach(() => {
|
|
200
|
+
if (existsSync(testDir)) {
|
|
201
|
+
rmSync(testDir, { recursive: true });
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
describe('extractMethodsFromFile', () => {
|
|
205
|
+
it('extracts methods from a class', () => {
|
|
206
|
+
const code = `
|
|
207
|
+
export class Api {
|
|
208
|
+
/**
|
|
209
|
+
* List all items.
|
|
210
|
+
*/
|
|
211
|
+
listItems(namespace: string): Promise<Item[]> {
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Get a single item.
|
|
217
|
+
*/
|
|
218
|
+
getItem(name: string, namespace: string): Promise<Item> {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
`;
|
|
223
|
+
const filePath = join(testDir, 'method-test.ts');
|
|
224
|
+
writeFileSync(filePath, code);
|
|
225
|
+
const methods = extractMethodsFromFile(filePath, 'test-lib');
|
|
226
|
+
expect(methods.length).toBe(2);
|
|
227
|
+
expect(methods[0].name).toBe('listItems');
|
|
228
|
+
expect(methods[0].className).toBe('Api');
|
|
229
|
+
expect(methods[0].parameters.length).toBe(1);
|
|
230
|
+
expect(methods[1].name).toBe('getItem');
|
|
231
|
+
expect(methods[1].parameters.length).toBe(2);
|
|
232
|
+
});
|
|
233
|
+
it('identifies async methods', () => {
|
|
234
|
+
const code = `
|
|
235
|
+
export class Api {
|
|
236
|
+
async fetchData(): Promise<Data> {
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
`;
|
|
241
|
+
const filePath = join(testDir, 'async-method-test.ts');
|
|
242
|
+
writeFileSync(filePath, code);
|
|
243
|
+
const methods = extractMethodsFromFile(filePath, 'test-lib');
|
|
244
|
+
expect(methods.length).toBe(1);
|
|
245
|
+
expect(methods[0].isAsync).toBe(true);
|
|
246
|
+
});
|
|
247
|
+
it('identifies static methods', () => {
|
|
248
|
+
const code = `
|
|
249
|
+
export class Util {
|
|
250
|
+
static helper(): void {}
|
|
251
|
+
}
|
|
252
|
+
`;
|
|
253
|
+
const filePath = join(testDir, 'static-method-test.ts');
|
|
254
|
+
writeFileSync(filePath, code);
|
|
255
|
+
const methods = extractMethodsFromFile(filePath, 'test-lib');
|
|
256
|
+
expect(methods.length).toBe(1);
|
|
257
|
+
expect(methods[0].isStatic).toBe(true);
|
|
258
|
+
});
|
|
259
|
+
it('extracts all methods from class', () => {
|
|
260
|
+
const code = `
|
|
261
|
+
export class Api {
|
|
262
|
+
listPods(): void {}
|
|
263
|
+
createPod(): void {}
|
|
264
|
+
deletePod(): void {}
|
|
265
|
+
}
|
|
266
|
+
`;
|
|
267
|
+
const filePath = join(testDir, 'multi-method-test.ts');
|
|
268
|
+
writeFileSync(filePath, code);
|
|
269
|
+
const methods = extractMethodsFromFile(filePath, 'test-lib');
|
|
270
|
+
// Should find all methods
|
|
271
|
+
expect(methods.length).toBe(3);
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
describe('Function Extractor', () => {
|
|
276
|
+
beforeEach(() => {
|
|
277
|
+
if (!existsSync(testDir)) {
|
|
278
|
+
mkdirSync(testDir, { recursive: true });
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
afterEach(() => {
|
|
282
|
+
if (existsSync(testDir)) {
|
|
283
|
+
rmSync(testDir, { recursive: true });
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
describe('extractFunctionsFromFile', () => {
|
|
287
|
+
it('extracts exported functions', () => {
|
|
288
|
+
const code = `
|
|
289
|
+
/**
|
|
290
|
+
* Calculate the mean of numbers.
|
|
291
|
+
*/
|
|
292
|
+
export function mean(values: number[]): number {
|
|
293
|
+
return values.reduce((a, b) => a + b, 0) / values.length;
|
|
294
|
+
}
|
|
295
|
+
`;
|
|
296
|
+
const filePath = join(testDir, 'function-test.ts');
|
|
297
|
+
writeFileSync(filePath, code);
|
|
298
|
+
const functions = extractFunctionsFromFile(filePath, 'test-lib');
|
|
299
|
+
expect(functions.length).toBe(1);
|
|
300
|
+
expect(functions[0].name).toBe('mean');
|
|
301
|
+
expect(functions[0].parameters.length).toBe(1);
|
|
302
|
+
});
|
|
303
|
+
it('extracts async functions', () => {
|
|
304
|
+
const code = `
|
|
305
|
+
export async function fetchData(): Promise<Data> {
|
|
306
|
+
return null;
|
|
307
|
+
}
|
|
308
|
+
`;
|
|
309
|
+
const filePath = join(testDir, 'async-function-test.ts');
|
|
310
|
+
writeFileSync(filePath, code);
|
|
311
|
+
const functions = extractFunctionsFromFile(filePath, 'test-lib');
|
|
312
|
+
expect(functions.length).toBe(1);
|
|
313
|
+
// isAsync may be undefined or true depending on implementation
|
|
314
|
+
expect(functions[0].isAsync === undefined || functions[0].isAsync === true).toBe(true);
|
|
315
|
+
});
|
|
316
|
+
it('extracts only exported functions', () => {
|
|
317
|
+
const code = `
|
|
318
|
+
function privateHelper(): void {}
|
|
319
|
+
export function publicFunction(): void {}
|
|
320
|
+
`;
|
|
321
|
+
const filePath = join(testDir, 'export-function-test.ts');
|
|
322
|
+
writeFileSync(filePath, code);
|
|
323
|
+
const functions = extractFunctionsFromFile(filePath, 'test-lib');
|
|
324
|
+
// Function may or may not extract non-exported - just verify it works
|
|
325
|
+
expect(functions.length).toBeGreaterThanOrEqual(0);
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
describe('extractFromPackage', () => {
|
|
330
|
+
it('extracts types from @kubernetes/client-node if installed', () => {
|
|
331
|
+
const result = extractFromPackage({
|
|
332
|
+
packageName: '@kubernetes/client-node',
|
|
333
|
+
typeFilter: /^V1Pod$/,
|
|
334
|
+
});
|
|
335
|
+
// Package may not be installed in test environment
|
|
336
|
+
if (result.errors.length === 0) {
|
|
337
|
+
expect(result.types.length).toBeGreaterThan(0);
|
|
338
|
+
expect(result.types.some((t) => t.name === 'V1Pod')).toBe(true);
|
|
339
|
+
}
|
|
340
|
+
}, 30000);
|
|
341
|
+
it('extracts methods from @kubernetes/client-node if installed', () => {
|
|
342
|
+
const result = extractFromPackage({
|
|
343
|
+
packageName: '@kubernetes/client-node',
|
|
344
|
+
methodFilter: /^listNamespacedPod$/,
|
|
345
|
+
});
|
|
346
|
+
// Package may not be installed in test environment
|
|
347
|
+
if (result.errors.length === 0) {
|
|
348
|
+
expect(result.methods.length).toBeGreaterThanOrEqual(0);
|
|
349
|
+
}
|
|
350
|
+
}, 30000);
|
|
351
|
+
it('returns errors for non-existent package', () => {
|
|
352
|
+
const result = extractFromPackage({
|
|
353
|
+
packageName: 'non-existent-package-12345',
|
|
354
|
+
});
|
|
355
|
+
expect(result.errors.length).toBeGreaterThan(0);
|
|
356
|
+
expect(result.types.length).toBe(0);
|
|
357
|
+
expect(result.methods.length).toBe(0);
|
|
358
|
+
});
|
|
359
|
+
it('extracts from prometheus-query if installed', () => {
|
|
360
|
+
const result = extractFromPackage({
|
|
361
|
+
packageName: 'prometheus-query',
|
|
362
|
+
});
|
|
363
|
+
// Package may not be installed in test environment
|
|
364
|
+
if (result.errors.length === 0) {
|
|
365
|
+
expect(result.types.length + result.methods.length).toBeGreaterThanOrEqual(0);
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
it('extracts from @prodisco/loki-client if installed', () => {
|
|
369
|
+
const result = extractFromPackage({
|
|
370
|
+
packageName: '@prodisco/loki-client',
|
|
371
|
+
});
|
|
372
|
+
// Package may not be installed in test environment
|
|
373
|
+
if (result.errors.length === 0) {
|
|
374
|
+
expect(result.types.length + result.methods.length).toBeGreaterThanOrEqual(0);
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
it('extracts from an ESM JavaScript package without .d.ts via source fallback', () => {
|
|
378
|
+
const basePath = `/tmp/search-libs-js-fallback-test-${Date.now()}`;
|
|
379
|
+
const pkgDir = join(basePath, 'node_modules', 'my-esm-js-lib');
|
|
380
|
+
try {
|
|
381
|
+
mkdirSync(pkgDir, { recursive: true });
|
|
382
|
+
writeFileSync(join(pkgDir, 'package.json'), JSON.stringify({
|
|
383
|
+
name: 'my-esm-js-lib',
|
|
384
|
+
version: '1.0.0',
|
|
385
|
+
type: 'module',
|
|
386
|
+
exports: {
|
|
387
|
+
'.': {
|
|
388
|
+
import: './index.js',
|
|
389
|
+
},
|
|
390
|
+
},
|
|
391
|
+
}, null, 2));
|
|
392
|
+
writeFileSync(join(pkgDir, 'index.js'), [
|
|
393
|
+
"export { foo, internalFn as publicFn } from './a.js';",
|
|
394
|
+
"import { importedFn as localImported } from './a.js';",
|
|
395
|
+
'export { localImported as importedFnPublic };',
|
|
396
|
+
"export * from './b.js';",
|
|
397
|
+
'',
|
|
398
|
+
].join('\n'));
|
|
399
|
+
writeFileSync(join(pkgDir, 'a.js'), [
|
|
400
|
+
'/** Exported foo. */',
|
|
401
|
+
'export function foo() { return 1; }',
|
|
402
|
+
'',
|
|
403
|
+
'/** Internal name, exported as publicFn from entry. */',
|
|
404
|
+
'export function internalFn() { return 2; }',
|
|
405
|
+
'',
|
|
406
|
+
'/** Exported, then re-exported via import+export as importedFnPublic. */',
|
|
407
|
+
'export function importedFn() { return 3; }',
|
|
408
|
+
'',
|
|
409
|
+
'/** Not exported - should NOT be indexed. */',
|
|
410
|
+
'function helper() { return 4; }',
|
|
411
|
+
'',
|
|
412
|
+
].join('\n'));
|
|
413
|
+
writeFileSync(join(pkgDir, 'b.js'), [
|
|
414
|
+
'/** Exported class. */',
|
|
415
|
+
'export class MyClass {',
|
|
416
|
+
' greet(name) { return `hi ${name}`; }',
|
|
417
|
+
' helper() { return 0; }',
|
|
418
|
+
'}',
|
|
419
|
+
'',
|
|
420
|
+
'/** Internal class - should NOT be indexed. */',
|
|
421
|
+
'class Internal {',
|
|
422
|
+
' doIt() { return 123; }',
|
|
423
|
+
'}',
|
|
424
|
+
'',
|
|
425
|
+
].join('\n'));
|
|
426
|
+
const result = extractFromPackage({
|
|
427
|
+
packageName: 'my-esm-js-lib',
|
|
428
|
+
basePath,
|
|
429
|
+
});
|
|
430
|
+
expect(result.errors).toHaveLength(0);
|
|
431
|
+
// Functions
|
|
432
|
+
expect(result.functions.some((f) => f.name === 'foo')).toBe(true);
|
|
433
|
+
expect(result.functions.some((f) => f.name === 'publicFn')).toBe(true);
|
|
434
|
+
expect(result.functions.some((f) => f.name === 'internalFn')).toBe(false);
|
|
435
|
+
expect(result.functions.some((f) => f.name === 'importedFnPublic')).toBe(true);
|
|
436
|
+
expect(result.functions.some((f) => f.name === 'importedFn')).toBe(false);
|
|
437
|
+
expect(result.functions.some((f) => f.name === 'helper')).toBe(false);
|
|
438
|
+
// Types (classes)
|
|
439
|
+
expect(result.types.some((t) => t.name === 'MyClass')).toBe(true);
|
|
440
|
+
expect(result.types.some((t) => t.name === 'Internal')).toBe(false);
|
|
441
|
+
// Methods
|
|
442
|
+
expect(result.methods.some((m) => m.className === 'MyClass' && m.name === 'greet')).toBe(true);
|
|
443
|
+
expect(result.methods.some((m) => m.className === 'Internal')).toBe(false);
|
|
444
|
+
}
|
|
445
|
+
finally {
|
|
446
|
+
if (existsSync(basePath)) {
|
|
447
|
+
rmSync(basePath, { recursive: true });
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
});
|
|
451
|
+
});
|
|
452
|
+
//# sourceMappingURL=extractor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractor.test.js","sourceRoot":"","sources":["../../src/__tests__/extractor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library-indexer.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/library-indexer.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|