firecrawl-cli 0.0.1 → 0.0.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 (71) hide show
  1. package/dist/__tests__/commands/crawl.test.d.ts +5 -0
  2. package/dist/__tests__/commands/crawl.test.d.ts.map +1 -0
  3. package/dist/__tests__/commands/crawl.test.js +415 -0
  4. package/dist/__tests__/commands/crawl.test.js.map +1 -0
  5. package/dist/__tests__/commands/credit-usage.test.d.ts +5 -0
  6. package/dist/__tests__/commands/credit-usage.test.d.ts.map +1 -0
  7. package/dist/__tests__/commands/credit-usage.test.js +200 -0
  8. package/dist/__tests__/commands/credit-usage.test.js.map +1 -0
  9. package/dist/__tests__/commands/map.test.d.ts +5 -0
  10. package/dist/__tests__/commands/map.test.d.ts.map +1 -0
  11. package/dist/__tests__/commands/map.test.js +287 -0
  12. package/dist/__tests__/commands/map.test.js.map +1 -0
  13. package/dist/__tests__/commands/scrape.test.d.ts +5 -0
  14. package/dist/__tests__/commands/scrape.test.d.ts.map +1 -0
  15. package/dist/__tests__/commands/scrape.test.js +231 -0
  16. package/dist/__tests__/commands/scrape.test.js.map +1 -0
  17. package/dist/__tests__/utils/job.test.d.ts +5 -0
  18. package/dist/__tests__/utils/job.test.d.ts.map +1 -0
  19. package/dist/__tests__/utils/job.test.js +53 -0
  20. package/dist/__tests__/utils/job.test.js.map +1 -0
  21. package/dist/__tests__/utils/mock-client.d.ts +23 -0
  22. package/dist/__tests__/utils/mock-client.d.ts.map +1 -0
  23. package/dist/__tests__/utils/mock-client.js +24 -0
  24. package/dist/__tests__/utils/mock-client.js.map +1 -0
  25. package/dist/commands/config.d.ts.map +1 -1
  26. package/dist/commands/config.js +5 -3
  27. package/dist/commands/config.js.map +1 -1
  28. package/dist/commands/crawl.d.ts +13 -0
  29. package/dist/commands/crawl.d.ts.map +1 -0
  30. package/dist/commands/crawl.js +242 -0
  31. package/dist/commands/crawl.js.map +1 -0
  32. package/dist/commands/credit-usage.d.ts +32 -0
  33. package/dist/commands/credit-usage.d.ts.map +1 -0
  34. package/dist/commands/credit-usage.js +175 -0
  35. package/dist/commands/credit-usage.js.map +1 -0
  36. package/dist/commands/map.d.ts +13 -0
  37. package/dist/commands/map.d.ts.map +1 -0
  38. package/dist/commands/map.js +96 -0
  39. package/dist/commands/map.js.map +1 -0
  40. package/dist/commands/scrape.d.ts.map +1 -1
  41. package/dist/commands/scrape.js.map +1 -1
  42. package/dist/index.js +134 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/types/crawl.d.ts +63 -0
  45. package/dist/types/crawl.d.ts.map +1 -0
  46. package/dist/types/crawl.js +6 -0
  47. package/dist/types/crawl.js.map +1 -0
  48. package/dist/types/map.d.ts +43 -0
  49. package/dist/types/map.d.ts.map +1 -0
  50. package/dist/types/map.js +6 -0
  51. package/dist/types/map.js.map +1 -0
  52. package/dist/utils/client.d.ts.map +1 -1
  53. package/dist/utils/client.js.map +1 -1
  54. package/dist/utils/config.d.ts.map +1 -1
  55. package/dist/utils/config.js +7 -3
  56. package/dist/utils/config.js.map +1 -1
  57. package/dist/utils/credentials.d.ts.map +1 -1
  58. package/dist/utils/credentials.js.map +1 -1
  59. package/dist/utils/job.d.ts +13 -0
  60. package/dist/utils/job.d.ts.map +1 -0
  61. package/dist/utils/job.js +29 -0
  62. package/dist/utils/job.js.map +1 -0
  63. package/dist/utils/options.d.ts.map +1 -1
  64. package/dist/utils/options.js +6 -2
  65. package/dist/utils/options.js.map +1 -1
  66. package/dist/utils/output.d.ts.map +1 -1
  67. package/dist/utils/output.js +9 -2
  68. package/dist/utils/output.js.map +1 -1
  69. package/dist/utils/url.d.ts.map +1 -1
  70. package/dist/utils/url.js.map +1 -1
  71. package/package.json +19 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credit-usage.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/credit-usage.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for map command
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=map.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/commands/map.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for map command
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const map_1 = require("../../commands/map");
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)('executeMap', () => {
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
+ map: 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 map with correct URL and default options', async () => {
41
+ const mockResponse = {
42
+ links: [
43
+ { url: 'https://example.com/page1', title: 'Page 1' },
44
+ { url: 'https://example.com/page2', title: 'Page 2' },
45
+ ],
46
+ };
47
+ mockClient.map.mockResolvedValue(mockResponse);
48
+ await (0, map_1.executeMap)({
49
+ urlOrJobId: 'https://example.com',
50
+ });
51
+ (0, vitest_1.expect)(mockClient.map).toHaveBeenCalledTimes(1);
52
+ (0, vitest_1.expect)(mockClient.map).toHaveBeenCalledWith('https://example.com', {});
53
+ });
54
+ (0, vitest_1.it)('should include limit option when provided', async () => {
55
+ const mockResponse = {
56
+ links: [{ url: 'https://example.com/page1' }],
57
+ };
58
+ mockClient.map.mockResolvedValue(mockResponse);
59
+ await (0, map_1.executeMap)({
60
+ urlOrJobId: 'https://example.com',
61
+ limit: 50,
62
+ });
63
+ (0, vitest_1.expect)(mockClient.map).toHaveBeenCalledWith('https://example.com', vitest_1.expect.objectContaining({
64
+ limit: 50,
65
+ }));
66
+ });
67
+ (0, vitest_1.it)('should include search option when provided', async () => {
68
+ const mockResponse = {
69
+ links: [{ url: 'https://example.com/blog' }],
70
+ };
71
+ mockClient.map.mockResolvedValue(mockResponse);
72
+ await (0, map_1.executeMap)({
73
+ urlOrJobId: 'https://example.com',
74
+ search: 'blog',
75
+ });
76
+ (0, vitest_1.expect)(mockClient.map).toHaveBeenCalledWith('https://example.com', vitest_1.expect.objectContaining({
77
+ search: 'blog',
78
+ }));
79
+ });
80
+ (0, vitest_1.it)('should include sitemap option when provided', async () => {
81
+ const mockResponse = {
82
+ links: [{ url: 'https://example.com/page1' }],
83
+ };
84
+ mockClient.map.mockResolvedValue(mockResponse);
85
+ await (0, map_1.executeMap)({
86
+ urlOrJobId: 'https://example.com',
87
+ sitemap: 'only',
88
+ });
89
+ (0, vitest_1.expect)(mockClient.map).toHaveBeenCalledWith('https://example.com', vitest_1.expect.objectContaining({
90
+ sitemap: 'only',
91
+ }));
92
+ });
93
+ (0, vitest_1.it)('should include includeSubdomains option when provided', async () => {
94
+ const mockResponse = {
95
+ links: [{ url: 'https://sub.example.com/page1' }],
96
+ };
97
+ mockClient.map.mockResolvedValue(mockResponse);
98
+ await (0, map_1.executeMap)({
99
+ urlOrJobId: 'https://example.com',
100
+ includeSubdomains: true,
101
+ });
102
+ (0, vitest_1.expect)(mockClient.map).toHaveBeenCalledWith('https://example.com', vitest_1.expect.objectContaining({
103
+ includeSubdomains: true,
104
+ }));
105
+ });
106
+ (0, vitest_1.it)('should include ignoreQueryParameters option when provided', async () => {
107
+ const mockResponse = {
108
+ links: [{ url: 'https://example.com/page1' }],
109
+ };
110
+ mockClient.map.mockResolvedValue(mockResponse);
111
+ await (0, map_1.executeMap)({
112
+ urlOrJobId: 'https://example.com',
113
+ ignoreQueryParameters: true,
114
+ });
115
+ (0, vitest_1.expect)(mockClient.map).toHaveBeenCalledWith('https://example.com', vitest_1.expect.objectContaining({
116
+ ignoreQueryParameters: true,
117
+ }));
118
+ });
119
+ (0, vitest_1.it)('should include timeout option when provided', async () => {
120
+ const mockResponse = {
121
+ links: [{ url: 'https://example.com/page1' }],
122
+ };
123
+ mockClient.map.mockResolvedValue(mockResponse);
124
+ await (0, map_1.executeMap)({
125
+ urlOrJobId: 'https://example.com',
126
+ timeout: 60,
127
+ });
128
+ (0, vitest_1.expect)(mockClient.map).toHaveBeenCalledWith('https://example.com', vitest_1.expect.objectContaining({
129
+ timeout: 60000, // Converted to milliseconds
130
+ }));
131
+ });
132
+ (0, vitest_1.it)('should combine all options correctly', async () => {
133
+ const mockResponse = {
134
+ links: [
135
+ { url: 'https://example.com/blog/post1' },
136
+ { url: 'https://example.com/blog/post2' },
137
+ ],
138
+ };
139
+ mockClient.map.mockResolvedValue(mockResponse);
140
+ await (0, map_1.executeMap)({
141
+ urlOrJobId: 'https://example.com',
142
+ limit: 100,
143
+ search: 'blog',
144
+ sitemap: 'include',
145
+ includeSubdomains: true,
146
+ ignoreQueryParameters: true,
147
+ timeout: 120,
148
+ });
149
+ (0, vitest_1.expect)(mockClient.map).toHaveBeenCalledWith('https://example.com', {
150
+ limit: 100,
151
+ search: 'blog',
152
+ sitemap: 'include',
153
+ includeSubdomains: true,
154
+ ignoreQueryParameters: true,
155
+ timeout: 120000,
156
+ });
157
+ });
158
+ });
159
+ (0, vitest_1.describe)('Response handling', () => {
160
+ (0, vitest_1.it)('should return success result with mapped links', async () => {
161
+ const mockResponse = {
162
+ links: [
163
+ {
164
+ url: 'https://example.com/page1',
165
+ title: 'Page 1',
166
+ description: 'Description 1',
167
+ },
168
+ {
169
+ url: 'https://example.com/page2',
170
+ title: 'Page 2',
171
+ description: 'Description 2',
172
+ },
173
+ ],
174
+ };
175
+ mockClient.map.mockResolvedValue(mockResponse);
176
+ const result = await (0, map_1.executeMap)({
177
+ urlOrJobId: 'https://example.com',
178
+ });
179
+ (0, vitest_1.expect)(result).toEqual({
180
+ success: true,
181
+ data: {
182
+ links: [
183
+ {
184
+ url: 'https://example.com/page1',
185
+ title: 'Page 1',
186
+ description: 'Description 1',
187
+ },
188
+ {
189
+ url: 'https://example.com/page2',
190
+ title: 'Page 2',
191
+ description: 'Description 2',
192
+ },
193
+ ],
194
+ },
195
+ });
196
+ });
197
+ (0, vitest_1.it)('should handle links without title or description', async () => {
198
+ const mockResponse = {
199
+ links: [
200
+ { url: 'https://example.com/page1' },
201
+ {
202
+ url: 'https://example.com/page2',
203
+ title: 'Page 2',
204
+ },
205
+ ],
206
+ };
207
+ mockClient.map.mockResolvedValue(mockResponse);
208
+ const result = await (0, map_1.executeMap)({
209
+ urlOrJobId: 'https://example.com',
210
+ });
211
+ (0, vitest_1.expect)(result.success).toBe(true);
212
+ if (result.success && result.data) {
213
+ (0, vitest_1.expect)(result.data.links).toHaveLength(2);
214
+ (0, vitest_1.expect)(result.data.links[0]).toEqual({
215
+ url: 'https://example.com/page1',
216
+ title: undefined,
217
+ description: undefined,
218
+ });
219
+ (0, vitest_1.expect)(result.data.links[1]).toEqual({
220
+ url: 'https://example.com/page2',
221
+ title: 'Page 2',
222
+ description: undefined,
223
+ });
224
+ }
225
+ });
226
+ (0, vitest_1.it)('should handle empty links array', async () => {
227
+ const mockResponse = {
228
+ links: [],
229
+ };
230
+ mockClient.map.mockResolvedValue(mockResponse);
231
+ const result = await (0, map_1.executeMap)({
232
+ urlOrJobId: 'https://example.com',
233
+ });
234
+ (0, vitest_1.expect)(result.success).toBe(true);
235
+ if (result.success && result.data) {
236
+ (0, vitest_1.expect)(result.data.links).toEqual([]);
237
+ }
238
+ });
239
+ (0, vitest_1.it)('should return error result when map fails', async () => {
240
+ const errorMessage = 'API Error: Invalid URL';
241
+ mockClient.map.mockRejectedValue(new Error(errorMessage));
242
+ const result = await (0, map_1.executeMap)({
243
+ urlOrJobId: 'https://example.com',
244
+ });
245
+ (0, vitest_1.expect)(result).toEqual({
246
+ success: false,
247
+ error: errorMessage,
248
+ });
249
+ });
250
+ (0, vitest_1.it)('should handle non-Error exceptions', async () => {
251
+ mockClient.map.mockRejectedValue('String error');
252
+ const result = await (0, map_1.executeMap)({
253
+ urlOrJobId: 'https://example.com',
254
+ });
255
+ (0, vitest_1.expect)(result.success).toBe(false);
256
+ (0, vitest_1.expect)(result.error).toBe('Unknown error occurred');
257
+ });
258
+ });
259
+ (0, vitest_1.describe)('Data transformation', () => {
260
+ (0, vitest_1.it)('should transform links to expected format', async () => {
261
+ const mockResponse = {
262
+ links: [
263
+ {
264
+ url: 'https://example.com/page1',
265
+ title: 'Page 1',
266
+ description: 'Description 1',
267
+ otherField: 'should be ignored',
268
+ },
269
+ ],
270
+ };
271
+ mockClient.map.mockResolvedValue(mockResponse);
272
+ const result = await (0, map_1.executeMap)({
273
+ urlOrJobId: 'https://example.com',
274
+ });
275
+ (0, vitest_1.expect)(result.success).toBe(true);
276
+ if (result.success && result.data) {
277
+ (0, vitest_1.expect)(result.data.links[0]).toEqual({
278
+ url: 'https://example.com/page1',
279
+ title: 'Page 1',
280
+ description: 'Description 1',
281
+ });
282
+ (0, vitest_1.expect)(result.data.links[0]).not.toHaveProperty('otherField');
283
+ }
284
+ });
285
+ });
286
+ });
287
+ //# sourceMappingURL=map.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/map.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for scrape command
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=scrape.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrape.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/commands/scrape.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for scrape command
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const scrape_1 = require("../../commands/scrape");
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)('executeScrape', () => {
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
+ scrape: 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 scrape with correct URL and default markdown format', async () => {
41
+ const mockResponse = { markdown: '# Test Content' };
42
+ mockClient.scrape.mockResolvedValue(mockResponse);
43
+ await (0, scrape_1.executeScrape)({
44
+ url: 'https://example.com',
45
+ });
46
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledTimes(1);
47
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledWith('https://example.com', {
48
+ formats: ['markdown'],
49
+ });
50
+ });
51
+ (0, vitest_1.it)('should call scrape with specified format', async () => {
52
+ const mockResponse = { html: '<html>...</html>' };
53
+ mockClient.scrape.mockResolvedValue(mockResponse);
54
+ await (0, scrape_1.executeScrape)({
55
+ url: 'https://example.com',
56
+ format: 'html',
57
+ });
58
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledWith('https://example.com', {
59
+ formats: ['html'],
60
+ });
61
+ });
62
+ (0, vitest_1.it)('should include screenshot format when screenshot option is true', async () => {
63
+ const mockResponse = {
64
+ markdown: '# Test',
65
+ screenshot: 'base64image...',
66
+ };
67
+ mockClient.scrape.mockResolvedValue(mockResponse);
68
+ await (0, scrape_1.executeScrape)({
69
+ url: 'https://example.com',
70
+ screenshot: true,
71
+ });
72
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledWith('https://example.com', {
73
+ formats: ['screenshot'],
74
+ });
75
+ });
76
+ (0, vitest_1.it)('should include screenshot format alongside other formats', async () => {
77
+ const mockResponse = {
78
+ markdown: '# Test',
79
+ screenshot: 'base64image...',
80
+ };
81
+ mockClient.scrape.mockResolvedValue(mockResponse);
82
+ await (0, scrape_1.executeScrape)({
83
+ url: 'https://example.com',
84
+ format: 'markdown',
85
+ screenshot: true,
86
+ });
87
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledWith('https://example.com', {
88
+ formats: ['markdown', 'screenshot'],
89
+ });
90
+ });
91
+ (0, vitest_1.it)('should include onlyMainContent parameter when provided', async () => {
92
+ const mockResponse = { markdown: '# Test' };
93
+ mockClient.scrape.mockResolvedValue(mockResponse);
94
+ await (0, scrape_1.executeScrape)({
95
+ url: 'https://example.com',
96
+ onlyMainContent: true,
97
+ });
98
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledWith('https://example.com', {
99
+ formats: ['markdown'],
100
+ onlyMainContent: true,
101
+ });
102
+ });
103
+ (0, vitest_1.it)('should include waitFor parameter when provided', async () => {
104
+ const mockResponse = { markdown: '# Test' };
105
+ mockClient.scrape.mockResolvedValue(mockResponse);
106
+ await (0, scrape_1.executeScrape)({
107
+ url: 'https://example.com',
108
+ waitFor: 2000,
109
+ });
110
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledWith('https://example.com', {
111
+ formats: ['markdown'],
112
+ waitFor: 2000,
113
+ });
114
+ });
115
+ (0, vitest_1.it)('should include includeTags parameter when provided', async () => {
116
+ const mockResponse = { markdown: '# Test' };
117
+ mockClient.scrape.mockResolvedValue(mockResponse);
118
+ await (0, scrape_1.executeScrape)({
119
+ url: 'https://example.com',
120
+ includeTags: ['article', 'main'],
121
+ });
122
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledWith('https://example.com', {
123
+ formats: ['markdown'],
124
+ includeTags: ['article', 'main'],
125
+ });
126
+ });
127
+ (0, vitest_1.it)('should include excludeTags parameter when provided', async () => {
128
+ const mockResponse = { markdown: '# Test' };
129
+ mockClient.scrape.mockResolvedValue(mockResponse);
130
+ await (0, scrape_1.executeScrape)({
131
+ url: 'https://example.com',
132
+ excludeTags: ['nav', 'footer'],
133
+ });
134
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledWith('https://example.com', {
135
+ formats: ['markdown'],
136
+ excludeTags: ['nav', 'footer'],
137
+ });
138
+ });
139
+ (0, vitest_1.it)('should combine all parameters correctly', async () => {
140
+ const mockResponse = { markdown: '# Test', screenshot: 'base64...' };
141
+ mockClient.scrape.mockResolvedValue(mockResponse);
142
+ await (0, scrape_1.executeScrape)({
143
+ url: 'https://example.com',
144
+ format: 'markdown',
145
+ screenshot: true,
146
+ onlyMainContent: true,
147
+ waitFor: 3000,
148
+ includeTags: ['article'],
149
+ excludeTags: ['nav'],
150
+ });
151
+ (0, vitest_1.expect)(mockClient.scrape).toHaveBeenCalledWith('https://example.com', {
152
+ formats: ['markdown', 'screenshot'],
153
+ onlyMainContent: true,
154
+ waitFor: 3000,
155
+ includeTags: ['article'],
156
+ excludeTags: ['nav'],
157
+ });
158
+ });
159
+ });
160
+ (0, vitest_1.describe)('Response handling', () => {
161
+ (0, vitest_1.it)('should return success result with data when scrape succeeds', async () => {
162
+ const mockResponse = {
163
+ markdown: '# Test Content',
164
+ url: 'https://example.com',
165
+ };
166
+ mockClient.scrape.mockResolvedValue(mockResponse);
167
+ const result = await (0, scrape_1.executeScrape)({
168
+ url: 'https://example.com',
169
+ });
170
+ (0, vitest_1.expect)(result).toEqual({
171
+ success: true,
172
+ data: mockResponse,
173
+ });
174
+ });
175
+ (0, vitest_1.it)('should handle complex response data', async () => {
176
+ const mockResponse = {
177
+ markdown: '# Test',
178
+ html: '<html>...</html>',
179
+ screenshot: 'base64image...',
180
+ metadata: {
181
+ title: 'Test Page',
182
+ description: 'Test description',
183
+ },
184
+ };
185
+ mockClient.scrape.mockResolvedValue(mockResponse);
186
+ const result = await (0, scrape_1.executeScrape)({
187
+ url: 'https://example.com',
188
+ });
189
+ (0, vitest_1.expect)(result.success).toBe(true);
190
+ (0, vitest_1.expect)(result.data).toEqual(mockResponse);
191
+ });
192
+ (0, vitest_1.it)('should return error result when scrape fails', async () => {
193
+ const errorMessage = 'API Error: Invalid URL';
194
+ mockClient.scrape.mockRejectedValue(new Error(errorMessage));
195
+ const result = await (0, scrape_1.executeScrape)({
196
+ url: 'https://example.com',
197
+ });
198
+ (0, vitest_1.expect)(result).toEqual({
199
+ success: false,
200
+ error: errorMessage,
201
+ });
202
+ });
203
+ (0, vitest_1.it)('should handle non-Error exceptions', async () => {
204
+ mockClient.scrape.mockRejectedValue('String error');
205
+ const result = await (0, scrape_1.executeScrape)({
206
+ url: 'https://example.com',
207
+ });
208
+ (0, vitest_1.expect)(result.success).toBe(false);
209
+ (0, vitest_1.expect)(result.error).toBe('Unknown error occurred');
210
+ });
211
+ });
212
+ (0, vitest_1.describe)('Type safety', () => {
213
+ (0, vitest_1.it)('should accept valid ScrapeFormat types', async () => {
214
+ const formats = [
215
+ 'markdown',
216
+ 'html',
217
+ 'rawHtml',
218
+ 'links',
219
+ ];
220
+ for (const format of formats) {
221
+ mockClient.scrape.mockResolvedValue({ [format]: 'test' });
222
+ const result = await (0, scrape_1.executeScrape)({
223
+ url: 'https://example.com',
224
+ format,
225
+ });
226
+ (0, vitest_1.expect)(result.success).toBe(true);
227
+ }
228
+ });
229
+ });
230
+ });
231
+ //# sourceMappingURL=scrape.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrape.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/scrape.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for job utility functions
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=job.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/job.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for job utility functions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const job_1 = require("../../utils/job");
8
+ (0, vitest_1.describe)('isJobId', () => {
9
+ (0, vitest_1.it)('should return true for valid UUID v4 format', () => {
10
+ (0, vitest_1.expect)((0, job_1.isJobId)('550e8400-e29b-41d4-a716-446655440000')).toBe(true);
11
+ (0, vitest_1.expect)((0, job_1.isJobId)('123e4567-e89b-42d3-a456-426614174000')).toBe(true); // Fixed: version digit must be 4
12
+ (0, vitest_1.expect)((0, job_1.isJobId)('00000000-0000-4000-8000-000000000000')).toBe(true);
13
+ (0, vitest_1.expect)((0, job_1.isJobId)('ffffffff-ffff-4fff-8fff-ffffffffffff')).toBe(true);
14
+ });
15
+ (0, vitest_1.it)('should return false for invalid UUID formats', () => {
16
+ (0, vitest_1.expect)((0, job_1.isJobId)('not-a-uuid')).toBe(false);
17
+ (0, vitest_1.expect)((0, job_1.isJobId)('550e8400-e29b-41d4-a716')).toBe(false);
18
+ (0, vitest_1.expect)((0, job_1.isJobId)('550e8400-e29b-41d4-a716-446655440000-extra')).toBe(false);
19
+ (0, vitest_1.expect)((0, job_1.isJobId)('')).toBe(false);
20
+ });
21
+ (0, vitest_1.it)('should return false for URLs', () => {
22
+ (0, vitest_1.expect)((0, job_1.isJobId)('https://example.com')).toBe(false);
23
+ (0, vitest_1.expect)((0, job_1.isJobId)('http://example.com/page')).toBe(false);
24
+ });
25
+ (0, vitest_1.it)('should be case-insensitive', () => {
26
+ (0, vitest_1.expect)((0, job_1.isJobId)('550E8400-E29B-41D4-A716-446655440000')).toBe(true);
27
+ (0, vitest_1.expect)((0, job_1.isJobId)('550e8400-E29b-41d4-A716-446655440000')).toBe(true);
28
+ });
29
+ (0, vitest_1.it)('should return false for UUID v1 format', () => {
30
+ // UUID v1 has different version number (1 instead of 4)
31
+ (0, vitest_1.expect)((0, job_1.isJobId)('550e8400-e29b-11d4-a716-446655440000')).toBe(false);
32
+ });
33
+ });
34
+ (0, vitest_1.describe)('isValidUrl', () => {
35
+ (0, vitest_1.it)('should return true for valid HTTP URLs', () => {
36
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('http://example.com')).toBe(true);
37
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('https://example.com')).toBe(true);
38
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('https://example.com/path')).toBe(true);
39
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('https://example.com/path?query=value')).toBe(true);
40
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('https://example.com:8080/path')).toBe(true);
41
+ });
42
+ (0, vitest_1.it)('should return false for invalid URLs', () => {
43
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('not-a-url')).toBe(false);
44
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('example.com')).toBe(false);
45
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('')).toBe(false);
46
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('ftp://example.com')).toBe(true); // Still valid URL
47
+ });
48
+ (0, vitest_1.it)('should handle edge cases', () => {
49
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('http://')).toBe(false);
50
+ (0, vitest_1.expect)((0, job_1.isValidUrl)('https://')).toBe(false);
51
+ });
52
+ });
53
+ //# sourceMappingURL=job.test.js.map