firecrawl-cli 1.0.1-beta.1 → 1.0.1-beta.3

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 (40) hide show
  1. package/README.md +1 -2
  2. package/dist/__tests__/commands/search.test.d.ts +5 -0
  3. package/dist/__tests__/commands/search.test.d.ts.map +1 -0
  4. package/dist/__tests__/commands/search.test.js +542 -0
  5. package/dist/__tests__/commands/search.test.js.map +1 -0
  6. package/dist/__tests__/utils/auth.test.d.ts +5 -0
  7. package/dist/__tests__/utils/auth.test.d.ts.map +1 -0
  8. package/dist/__tests__/utils/auth.test.js +119 -0
  9. package/dist/__tests__/utils/auth.test.js.map +1 -0
  10. package/dist/__tests__/utils/credentials.test.d.ts +5 -0
  11. package/dist/__tests__/utils/credentials.test.d.ts.map +1 -0
  12. package/dist/__tests__/utils/credentials.test.js +189 -0
  13. package/dist/__tests__/utils/credentials.test.js.map +1 -0
  14. package/dist/__tests__/utils/options.test.d.ts +5 -0
  15. package/dist/__tests__/utils/options.test.d.ts.map +1 -0
  16. package/dist/__tests__/utils/options.test.js +266 -0
  17. package/dist/__tests__/utils/options.test.js.map +1 -0
  18. package/dist/__tests__/utils/output.test.d.ts +5 -0
  19. package/dist/__tests__/utils/output.test.d.ts.map +1 -0
  20. package/dist/__tests__/utils/output.test.js +335 -0
  21. package/dist/__tests__/utils/output.test.js.map +1 -0
  22. package/dist/__tests__/utils/url.test.d.ts +5 -0
  23. package/dist/__tests__/utils/url.test.d.ts.map +1 -0
  24. package/dist/__tests__/utils/url.test.js +118 -0
  25. package/dist/__tests__/utils/url.test.js.map +1 -0
  26. package/dist/commands/scrape.d.ts.map +1 -1
  27. package/dist/commands/scrape.js +1 -1
  28. package/dist/commands/scrape.js.map +1 -1
  29. package/dist/index.js +48 -7
  30. package/dist/index.js.map +1 -1
  31. package/dist/types/scrape.d.ts +2 -0
  32. package/dist/types/scrape.d.ts.map +1 -1
  33. package/dist/utils/options.d.ts.map +1 -1
  34. package/dist/utils/options.js +1 -0
  35. package/dist/utils/options.js.map +1 -1
  36. package/dist/utils/output.d.ts +2 -1
  37. package/dist/utils/output.d.ts.map +1 -1
  38. package/dist/utils/output.js +65 -1
  39. package/dist/utils/output.js.map +1 -1
  40. package/package.json +1 -1
package/README.md CHANGED
@@ -277,7 +277,7 @@ firecrawl search "firecrawl tutorials" --scrape
277
277
  firecrawl search "API documentation" --scrape --scrape-formats markdown,links
278
278
 
279
279
  # Output as pretty JSON
280
- firecrawl search "web scraping" -p
280
+ firecrawl search "web scraping"
281
281
  ```
282
282
 
283
283
  #### Search Options
@@ -295,7 +295,6 @@ firecrawl search "web scraping" -p
295
295
  | `--scrape` | Enable scraping of search results |
296
296
  | `--scrape-formats <formats>` | Scrape formats when `--scrape` enabled (default: markdown) |
297
297
  | `--only-main-content` | Include only main content when scraping (default: true) |
298
- | `-p, --pretty` | Output as pretty JSON (default is human-readable text) |
299
298
  | `-o, --output <path>` | Save to file |
300
299
  | `--json` | Output as compact JSON (use `-p` for pretty JSON) |
301
300
 
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for search command
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=search.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/commands/search.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,542 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for search command
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const search_1 = require("../../commands/search");
8
+ const client_1 = require("../../utils/client");
9
+ const config_1 = require("../../utils/config");
10
+ const mock_client_1 = require("../utils/mock-client");
11
+ // Mock the Firecrawl client module
12
+ vitest_1.vi.mock('../../utils/client', async () => {
13
+ const actual = await vitest_1.vi.importActual('../../utils/client');
14
+ return {
15
+ ...actual,
16
+ getClient: vitest_1.vi.fn(),
17
+ };
18
+ });
19
+ (0, vitest_1.describe)('executeSearch', () => {
20
+ let mockClient;
21
+ (0, vitest_1.beforeEach)(() => {
22
+ (0, mock_client_1.setupTest)();
23
+ // Initialize config with test API key
24
+ (0, config_1.initializeConfig)({
25
+ apiKey: 'test-api-key',
26
+ apiUrl: 'https://api.firecrawl.dev',
27
+ });
28
+ // Create mock client
29
+ mockClient = {
30
+ search: vitest_1.vi.fn(),
31
+ };
32
+ // Mock getClient to return our mock
33
+ vitest_1.vi.mocked(client_1.getClient).mockReturnValue(mockClient);
34
+ });
35
+ (0, vitest_1.afterEach)(() => {
36
+ (0, mock_client_1.teardownTest)();
37
+ vitest_1.vi.clearAllMocks();
38
+ });
39
+ (0, vitest_1.describe)('API call generation', () => {
40
+ (0, vitest_1.it)('should call search with correct query and default options', async () => {
41
+ const mockResponse = {
42
+ web: [
43
+ { url: 'https://example.com', title: 'Example', description: 'Test' },
44
+ ],
45
+ };
46
+ mockClient.search.mockResolvedValue(mockResponse);
47
+ await (0, search_1.executeSearch)({
48
+ query: 'test query',
49
+ });
50
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledTimes(1);
51
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('test query', {
52
+ limit: undefined,
53
+ });
54
+ });
55
+ (0, vitest_1.it)('should include limit option when provided', async () => {
56
+ const mockResponse = { web: [] };
57
+ mockClient.search.mockResolvedValue(mockResponse);
58
+ await (0, search_1.executeSearch)({
59
+ query: 'AI news',
60
+ limit: 10,
61
+ });
62
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('AI news', vitest_1.expect.objectContaining({
63
+ limit: 10,
64
+ }));
65
+ });
66
+ (0, vitest_1.it)('should include sources option when provided', async () => {
67
+ const mockResponse = { web: [], images: [], news: [] };
68
+ mockClient.search.mockResolvedValue(mockResponse);
69
+ await (0, search_1.executeSearch)({
70
+ query: 'test query',
71
+ sources: ['web', 'images', 'news'],
72
+ });
73
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('test query', vitest_1.expect.objectContaining({
74
+ sources: [{ type: 'web' }, { type: 'images' }, { type: 'news' }],
75
+ }));
76
+ });
77
+ (0, vitest_1.it)('should include single source correctly', async () => {
78
+ const mockResponse = { news: [] };
79
+ mockClient.search.mockResolvedValue(mockResponse);
80
+ await (0, search_1.executeSearch)({
81
+ query: 'tech news',
82
+ sources: ['news'],
83
+ });
84
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('tech news', vitest_1.expect.objectContaining({
85
+ sources: [{ type: 'news' }],
86
+ }));
87
+ });
88
+ (0, vitest_1.it)('should include categories option when provided', async () => {
89
+ const mockResponse = { web: [] };
90
+ mockClient.search.mockResolvedValue(mockResponse);
91
+ await (0, search_1.executeSearch)({
92
+ query: 'web scraping python',
93
+ categories: ['github'],
94
+ });
95
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('web scraping python', vitest_1.expect.objectContaining({
96
+ categories: [{ type: 'github' }],
97
+ }));
98
+ });
99
+ (0, vitest_1.it)('should include multiple categories correctly', async () => {
100
+ const mockResponse = { web: [] };
101
+ mockClient.search.mockResolvedValue(mockResponse);
102
+ await (0, search_1.executeSearch)({
103
+ query: 'transformer architecture',
104
+ categories: ['research', 'pdf'],
105
+ });
106
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('transformer architecture', vitest_1.expect.objectContaining({
107
+ categories: [{ type: 'research' }, { type: 'pdf' }],
108
+ }));
109
+ });
110
+ (0, vitest_1.it)('should include tbs (time-based search) option when provided', async () => {
111
+ const mockResponse = { web: [] };
112
+ mockClient.search.mockResolvedValue(mockResponse);
113
+ await (0, search_1.executeSearch)({
114
+ query: 'AI announcements',
115
+ tbs: 'qdr:d', // Past day
116
+ });
117
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('AI announcements', vitest_1.expect.objectContaining({
118
+ tbs: 'qdr:d',
119
+ }));
120
+ });
121
+ (0, vitest_1.it)('should include location option when provided', async () => {
122
+ const mockResponse = { web: [] };
123
+ mockClient.search.mockResolvedValue(mockResponse);
124
+ await (0, search_1.executeSearch)({
125
+ query: 'restaurants',
126
+ location: 'San Francisco,California,United States',
127
+ });
128
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('restaurants', vitest_1.expect.objectContaining({
129
+ location: 'San Francisco,California,United States',
130
+ }));
131
+ });
132
+ (0, vitest_1.it)('should include country option when provided', async () => {
133
+ const mockResponse = { web: [] };
134
+ mockClient.search.mockResolvedValue(mockResponse);
135
+ await (0, search_1.executeSearch)({
136
+ query: 'local news',
137
+ country: 'DE',
138
+ });
139
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('local news', vitest_1.expect.objectContaining({
140
+ country: 'DE',
141
+ }));
142
+ });
143
+ (0, vitest_1.it)('should include timeout option when provided', async () => {
144
+ const mockResponse = { web: [] };
145
+ mockClient.search.mockResolvedValue(mockResponse);
146
+ await (0, search_1.executeSearch)({
147
+ query: 'test query',
148
+ timeout: 30000,
149
+ });
150
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('test query', vitest_1.expect.objectContaining({
151
+ timeout: 30000,
152
+ }));
153
+ });
154
+ (0, vitest_1.it)('should include ignoreInvalidUrls option when provided', async () => {
155
+ const mockResponse = { web: [] };
156
+ mockClient.search.mockResolvedValue(mockResponse);
157
+ await (0, search_1.executeSearch)({
158
+ query: 'test query',
159
+ ignoreInvalidUrls: true,
160
+ });
161
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('test query', vitest_1.expect.objectContaining({
162
+ ignoreInvalidURLs: true,
163
+ }));
164
+ });
165
+ (0, vitest_1.it)('should include scrape options when scrape is enabled', async () => {
166
+ const mockResponse = {
167
+ web: [{ url: 'https://example.com', markdown: '# Test' }],
168
+ };
169
+ mockClient.search.mockResolvedValue(mockResponse);
170
+ await (0, search_1.executeSearch)({
171
+ query: 'firecrawl tutorials',
172
+ scrape: true,
173
+ });
174
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('firecrawl tutorials', vitest_1.expect.objectContaining({
175
+ scrapeOptions: {
176
+ formats: [{ type: 'markdown' }],
177
+ },
178
+ }));
179
+ });
180
+ (0, vitest_1.it)('should include custom scrape formats when provided', async () => {
181
+ const mockResponse = {
182
+ web: [{ url: 'https://example.com', markdown: '# Test', links: [] }],
183
+ };
184
+ mockClient.search.mockResolvedValue(mockResponse);
185
+ await (0, search_1.executeSearch)({
186
+ query: 'API docs',
187
+ scrape: true,
188
+ scrapeFormats: ['markdown', 'links'],
189
+ });
190
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('API docs', vitest_1.expect.objectContaining({
191
+ scrapeOptions: {
192
+ formats: [{ type: 'markdown' }, { type: 'links' }],
193
+ },
194
+ }));
195
+ });
196
+ (0, vitest_1.it)('should include onlyMainContent in scrape options when provided', async () => {
197
+ const mockResponse = {
198
+ web: [{ url: 'https://example.com', markdown: '# Test' }],
199
+ };
200
+ mockClient.search.mockResolvedValue(mockResponse);
201
+ await (0, search_1.executeSearch)({
202
+ query: 'test query',
203
+ scrape: true,
204
+ onlyMainContent: true,
205
+ });
206
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('test query', vitest_1.expect.objectContaining({
207
+ scrapeOptions: {
208
+ formats: [{ type: 'markdown' }],
209
+ onlyMainContent: true,
210
+ },
211
+ }));
212
+ });
213
+ (0, vitest_1.it)('should combine all options correctly', async () => {
214
+ const mockResponse = {
215
+ web: [{ url: 'https://example.com', markdown: '# Test' }],
216
+ news: [{ url: 'https://news.example.com', title: 'News' }],
217
+ };
218
+ mockClient.search.mockResolvedValue(mockResponse);
219
+ await (0, search_1.executeSearch)({
220
+ query: 'comprehensive test',
221
+ limit: 20,
222
+ sources: ['web', 'news'],
223
+ categories: ['github'],
224
+ tbs: 'qdr:w',
225
+ location: 'Germany',
226
+ country: 'DE',
227
+ timeout: 60000,
228
+ scrape: true,
229
+ scrapeFormats: ['markdown', 'links'],
230
+ onlyMainContent: true,
231
+ });
232
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('comprehensive test', {
233
+ limit: 20,
234
+ sources: [{ type: 'web' }, { type: 'news' }],
235
+ categories: [{ type: 'github' }],
236
+ tbs: 'qdr:w',
237
+ location: 'Germany',
238
+ country: 'DE',
239
+ timeout: 60000,
240
+ scrapeOptions: {
241
+ formats: [{ type: 'markdown' }, { type: 'links' }],
242
+ onlyMainContent: true,
243
+ },
244
+ });
245
+ });
246
+ });
247
+ (0, vitest_1.describe)('Response handling', () => {
248
+ (0, vitest_1.it)('should return success result with web results', async () => {
249
+ const mockResponse = {
250
+ web: [
251
+ {
252
+ url: 'https://example.com',
253
+ title: 'Example',
254
+ description: 'Test description',
255
+ },
256
+ {
257
+ url: 'https://example2.com',
258
+ title: 'Example 2',
259
+ description: 'Another test',
260
+ },
261
+ ],
262
+ };
263
+ mockClient.search.mockResolvedValue(mockResponse);
264
+ const result = await (0, search_1.executeSearch)({
265
+ query: 'test query',
266
+ });
267
+ (0, vitest_1.expect)(result.success).toBe(true);
268
+ (0, vitest_1.expect)(result.data).toEqual({
269
+ web: mockResponse.web,
270
+ });
271
+ });
272
+ (0, vitest_1.it)('should return success result with image results', async () => {
273
+ const mockResponse = {
274
+ images: [
275
+ {
276
+ imageUrl: 'https://example.com/image.jpg',
277
+ url: 'https://example.com',
278
+ title: 'Image 1',
279
+ imageWidth: 800,
280
+ imageHeight: 600,
281
+ },
282
+ ],
283
+ };
284
+ mockClient.search.mockResolvedValue(mockResponse);
285
+ const result = await (0, search_1.executeSearch)({
286
+ query: 'landscapes',
287
+ sources: ['images'],
288
+ });
289
+ (0, vitest_1.expect)(result.success).toBe(true);
290
+ (0, vitest_1.expect)(result.data).toEqual({
291
+ images: mockResponse.images,
292
+ });
293
+ });
294
+ (0, vitest_1.it)('should return success result with news results', async () => {
295
+ const mockResponse = {
296
+ news: [
297
+ {
298
+ url: 'https://news.example.com',
299
+ title: 'Breaking News',
300
+ snippet: 'Something happened',
301
+ date: '2024-01-15',
302
+ },
303
+ ],
304
+ };
305
+ mockClient.search.mockResolvedValue(mockResponse);
306
+ const result = await (0, search_1.executeSearch)({
307
+ query: 'tech news',
308
+ sources: ['news'],
309
+ });
310
+ (0, vitest_1.expect)(result.success).toBe(true);
311
+ (0, vitest_1.expect)(result.data).toEqual({
312
+ news: mockResponse.news,
313
+ });
314
+ });
315
+ (0, vitest_1.it)('should handle combined results from multiple sources', async () => {
316
+ const mockResponse = {
317
+ web: [{ url: 'https://example.com', title: 'Web Result' }],
318
+ images: [
319
+ {
320
+ imageUrl: 'https://example.com/img.jpg',
321
+ url: 'https://example.com',
322
+ },
323
+ ],
324
+ news: [{ url: 'https://news.example.com', title: 'News' }],
325
+ };
326
+ mockClient.search.mockResolvedValue(mockResponse);
327
+ const result = await (0, search_1.executeSearch)({
328
+ query: 'machine learning',
329
+ sources: ['web', 'images', 'news'],
330
+ });
331
+ (0, vitest_1.expect)(result.success).toBe(true);
332
+ (0, vitest_1.expect)(result.data).toEqual({
333
+ web: mockResponse.web,
334
+ images: mockResponse.images,
335
+ news: mockResponse.news,
336
+ });
337
+ });
338
+ (0, vitest_1.it)('should handle response with scraped content', async () => {
339
+ const mockResponse = {
340
+ web: [
341
+ {
342
+ url: 'https://example.com',
343
+ title: 'Example',
344
+ markdown: '# Page Content\n\nThis is the content.',
345
+ },
346
+ ],
347
+ };
348
+ mockClient.search.mockResolvedValue(mockResponse);
349
+ const result = await (0, search_1.executeSearch)({
350
+ query: 'test',
351
+ scrape: true,
352
+ });
353
+ (0, vitest_1.expect)(result.success).toBe(true);
354
+ (0, vitest_1.expect)(result.data?.web?.[0].markdown).toBe('# Page Content\n\nThis is the content.');
355
+ });
356
+ (0, vitest_1.it)('should handle nested data response format', async () => {
357
+ const mockResponse = {
358
+ data: {
359
+ web: [{ url: 'https://example.com', title: 'Test' }],
360
+ },
361
+ };
362
+ mockClient.search.mockResolvedValue(mockResponse);
363
+ const result = await (0, search_1.executeSearch)({
364
+ query: 'test',
365
+ });
366
+ (0, vitest_1.expect)(result.success).toBe(true);
367
+ (0, vitest_1.expect)(result.data?.web).toEqual([
368
+ { url: 'https://example.com', title: 'Test' },
369
+ ]);
370
+ });
371
+ (0, vitest_1.it)('should handle array response format (legacy)', async () => {
372
+ const mockResponse = [
373
+ { url: 'https://example.com', title: 'Test 1' },
374
+ { url: 'https://example2.com', title: 'Test 2' },
375
+ ];
376
+ mockClient.search.mockResolvedValue(mockResponse);
377
+ const result = await (0, search_1.executeSearch)({
378
+ query: 'test',
379
+ });
380
+ (0, vitest_1.expect)(result.success).toBe(true);
381
+ (0, vitest_1.expect)(result.data?.web).toEqual(mockResponse);
382
+ });
383
+ (0, vitest_1.it)('should include warning in result when present', async () => {
384
+ const mockResponse = {
385
+ web: [{ url: 'https://example.com', title: 'Test' }],
386
+ warning: 'Some warning message',
387
+ };
388
+ mockClient.search.mockResolvedValue(mockResponse);
389
+ const result = await (0, search_1.executeSearch)({
390
+ query: 'test',
391
+ });
392
+ (0, vitest_1.expect)(result.success).toBe(true);
393
+ (0, vitest_1.expect)(result.warning).toBe('Some warning message');
394
+ });
395
+ (0, vitest_1.it)('should include id in result when present', async () => {
396
+ const mockResponse = {
397
+ web: [{ url: 'https://example.com', title: 'Test' }],
398
+ id: 'search-123',
399
+ };
400
+ mockClient.search.mockResolvedValue(mockResponse);
401
+ const result = await (0, search_1.executeSearch)({
402
+ query: 'test',
403
+ });
404
+ (0, vitest_1.expect)(result.success).toBe(true);
405
+ (0, vitest_1.expect)(result.id).toBe('search-123');
406
+ });
407
+ (0, vitest_1.it)('should include creditsUsed in result when present', async () => {
408
+ const mockResponse = {
409
+ web: [{ url: 'https://example.com', title: 'Test' }],
410
+ creditsUsed: 5,
411
+ };
412
+ mockClient.search.mockResolvedValue(mockResponse);
413
+ const result = await (0, search_1.executeSearch)({
414
+ query: 'test',
415
+ });
416
+ (0, vitest_1.expect)(result.success).toBe(true);
417
+ (0, vitest_1.expect)(result.creditsUsed).toBe(5);
418
+ });
419
+ (0, vitest_1.it)('should handle empty results', async () => {
420
+ const mockResponse = {};
421
+ mockClient.search.mockResolvedValue(mockResponse);
422
+ const result = await (0, search_1.executeSearch)({
423
+ query: 'nonexistent content xyz123',
424
+ });
425
+ (0, vitest_1.expect)(result.success).toBe(true);
426
+ (0, vitest_1.expect)(result.data).toEqual({});
427
+ });
428
+ (0, vitest_1.it)('should return error result when search fails', async () => {
429
+ const errorMessage = 'API Error: Rate limit exceeded';
430
+ mockClient.search.mockRejectedValue(new Error(errorMessage));
431
+ const result = await (0, search_1.executeSearch)({
432
+ query: 'test query',
433
+ });
434
+ (0, vitest_1.expect)(result).toEqual({
435
+ success: false,
436
+ error: errorMessage,
437
+ });
438
+ });
439
+ (0, vitest_1.it)('should handle non-Error exceptions', async () => {
440
+ mockClient.search.mockRejectedValue('String error');
441
+ const result = await (0, search_1.executeSearch)({
442
+ query: 'test query',
443
+ });
444
+ (0, vitest_1.expect)(result.success).toBe(false);
445
+ (0, vitest_1.expect)(result.error).toBe('Unknown error occurred');
446
+ });
447
+ });
448
+ (0, vitest_1.describe)('Time-based search parameters', () => {
449
+ (0, vitest_1.it)('should support qdr:h for past hour', async () => {
450
+ mockClient.search.mockResolvedValue({ web: [] });
451
+ await (0, search_1.executeSearch)({
452
+ query: 'breaking news',
453
+ tbs: 'qdr:h',
454
+ });
455
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('breaking news', vitest_1.expect.objectContaining({ tbs: 'qdr:h' }));
456
+ });
457
+ (0, vitest_1.it)('should support qdr:d for past day', async () => {
458
+ mockClient.search.mockResolvedValue({ web: [] });
459
+ await (0, search_1.executeSearch)({
460
+ query: 'AI announcements',
461
+ tbs: 'qdr:d',
462
+ });
463
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('AI announcements', vitest_1.expect.objectContaining({ tbs: 'qdr:d' }));
464
+ });
465
+ (0, vitest_1.it)('should support qdr:w for past week', async () => {
466
+ mockClient.search.mockResolvedValue({ web: [] });
467
+ await (0, search_1.executeSearch)({
468
+ query: 'tech news',
469
+ tbs: 'qdr:w',
470
+ });
471
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('tech news', vitest_1.expect.objectContaining({ tbs: 'qdr:w' }));
472
+ });
473
+ (0, vitest_1.it)('should support qdr:m for past month', async () => {
474
+ mockClient.search.mockResolvedValue({ web: [] });
475
+ await (0, search_1.executeSearch)({
476
+ query: 'startup funding',
477
+ tbs: 'qdr:m',
478
+ });
479
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('startup funding', vitest_1.expect.objectContaining({ tbs: 'qdr:m' }));
480
+ });
481
+ (0, vitest_1.it)('should support qdr:y for past year', async () => {
482
+ mockClient.search.mockResolvedValue({ web: [] });
483
+ await (0, search_1.executeSearch)({
484
+ query: 'yearly review',
485
+ tbs: 'qdr:y',
486
+ });
487
+ (0, vitest_1.expect)(mockClient.search).toHaveBeenCalledWith('yearly review', vitest_1.expect.objectContaining({ tbs: 'qdr:y' }));
488
+ });
489
+ });
490
+ (0, vitest_1.describe)('Type safety', () => {
491
+ (0, vitest_1.it)('should accept valid source types', async () => {
492
+ const sourceList = [
493
+ 'web',
494
+ 'images',
495
+ 'news',
496
+ ];
497
+ mockClient.search.mockResolvedValue({ web: [], images: [], news: [] });
498
+ for (const source of sourceList) {
499
+ const result = await (0, search_1.executeSearch)({
500
+ query: 'test',
501
+ sources: [source],
502
+ });
503
+ (0, vitest_1.expect)(result.success).toBe(true);
504
+ }
505
+ });
506
+ (0, vitest_1.it)('should accept valid category types', async () => {
507
+ const categoryList = [
508
+ 'github',
509
+ 'research',
510
+ 'pdf',
511
+ ];
512
+ mockClient.search.mockResolvedValue({ web: [] });
513
+ for (const category of categoryList) {
514
+ const result = await (0, search_1.executeSearch)({
515
+ query: 'test',
516
+ categories: [category],
517
+ });
518
+ (0, vitest_1.expect)(result.success).toBe(true);
519
+ }
520
+ });
521
+ (0, vitest_1.it)('should accept valid scrape format types', async () => {
522
+ const formatList = [
523
+ 'markdown',
524
+ 'html',
525
+ 'rawHtml',
526
+ 'links',
527
+ ];
528
+ for (const format of formatList) {
529
+ mockClient.search.mockResolvedValue({
530
+ web: [{ url: 'https://example.com' }],
531
+ });
532
+ const result = await (0, search_1.executeSearch)({
533
+ query: 'test',
534
+ scrape: true,
535
+ scrapeFormats: [format],
536
+ });
537
+ (0, vitest_1.expect)(result.success).toBe(true);
538
+ }
539
+ });
540
+ });
541
+ });
542
+ //# sourceMappingURL=search.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/search.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for authentication utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=auth.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/auth.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}