firecrawl-cli 1.0.1-beta.2 → 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 +6 -1
  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 +34 -1
  39. package/dist/utils/output.js.map +1 -1
  40. package/package.json +1 -1
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for authentication utilities
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const vitest_1 = require("vitest");
40
+ const auth_1 = require("../../utils/auth");
41
+ const config_1 = require("../../utils/config");
42
+ const credentials = __importStar(require("../../utils/credentials"));
43
+ // Mock credentials module
44
+ vitest_1.vi.mock('../../utils/credentials', () => ({
45
+ loadCredentials: vitest_1.vi.fn(),
46
+ saveCredentials: vitest_1.vi.fn(),
47
+ getConfigDirectoryPath: vitest_1.vi.fn().mockReturnValue('/mock/config/path'),
48
+ }));
49
+ (0, vitest_1.describe)('Authentication Utilities', () => {
50
+ const originalEnv = process.env;
51
+ (0, vitest_1.beforeEach)(() => {
52
+ (0, config_1.resetConfig)();
53
+ vitest_1.vi.clearAllMocks();
54
+ // Clear env vars
55
+ delete process.env.FIRECRAWL_API_KEY;
56
+ delete process.env.FIRECRAWL_API_URL;
57
+ // Mock loadCredentials to return null by default
58
+ vitest_1.vi.mocked(credentials.loadCredentials).mockReturnValue(null);
59
+ });
60
+ (0, vitest_1.afterEach)(() => {
61
+ process.env = originalEnv;
62
+ });
63
+ (0, vitest_1.describe)('isAuthenticated', () => {
64
+ (0, vitest_1.it)('should return true when API key is set in config', () => {
65
+ (0, config_1.initializeConfig)({
66
+ apiKey: 'fc-test-api-key',
67
+ apiUrl: 'https://api.firecrawl.dev',
68
+ });
69
+ (0, vitest_1.expect)((0, auth_1.isAuthenticated)()).toBe(true);
70
+ });
71
+ (0, vitest_1.it)('should return true when API key is set via environment variable', () => {
72
+ process.env.FIRECRAWL_API_KEY = 'fc-env-api-key';
73
+ (0, config_1.initializeConfig)({});
74
+ (0, vitest_1.expect)((0, auth_1.isAuthenticated)()).toBe(true);
75
+ });
76
+ (0, vitest_1.it)('should return true when API key is in stored credentials', () => {
77
+ vitest_1.vi.mocked(credentials.loadCredentials).mockReturnValue({
78
+ apiKey: 'fc-stored-api-key',
79
+ });
80
+ (0, config_1.initializeConfig)({});
81
+ (0, vitest_1.expect)((0, auth_1.isAuthenticated)()).toBe(true);
82
+ });
83
+ (0, vitest_1.it)('should return false when no API key is set', () => {
84
+ (0, config_1.initializeConfig)({});
85
+ (0, vitest_1.expect)((0, auth_1.isAuthenticated)()).toBe(false);
86
+ });
87
+ (0, vitest_1.it)('should return false when API key is empty string', () => {
88
+ (0, config_1.initializeConfig)({
89
+ apiKey: '',
90
+ });
91
+ (0, vitest_1.expect)((0, auth_1.isAuthenticated)()).toBe(false);
92
+ });
93
+ });
94
+ (0, vitest_1.describe)('Authentication priority', () => {
95
+ (0, vitest_1.it)('should prioritize provided API key over env var', () => {
96
+ process.env.FIRECRAWL_API_KEY = 'fc-env-key';
97
+ (0, config_1.initializeConfig)({
98
+ apiKey: 'fc-provided-key',
99
+ });
100
+ (0, vitest_1.expect)((0, auth_1.isAuthenticated)()).toBe(true);
101
+ });
102
+ (0, vitest_1.it)('should prioritize env var over stored credentials', () => {
103
+ process.env.FIRECRAWL_API_KEY = 'fc-env-key';
104
+ vitest_1.vi.mocked(credentials.loadCredentials).mockReturnValue({
105
+ apiKey: 'fc-stored-key',
106
+ });
107
+ (0, config_1.initializeConfig)({});
108
+ (0, vitest_1.expect)((0, auth_1.isAuthenticated)()).toBe(true);
109
+ });
110
+ (0, vitest_1.it)('should fall back to stored credentials when no other source', () => {
111
+ vitest_1.vi.mocked(credentials.loadCredentials).mockReturnValue({
112
+ apiKey: 'fc-stored-key',
113
+ });
114
+ (0, config_1.initializeConfig)({});
115
+ (0, vitest_1.expect)((0, auth_1.isAuthenticated)()).toBe(true);
116
+ });
117
+ });
118
+ });
119
+ //# sourceMappingURL=auth.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/auth.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for credentials utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=credentials.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/credentials.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for credentials utilities
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const vitest_1 = require("vitest");
40
+ const fs = __importStar(require("fs"));
41
+ const os = __importStar(require("os"));
42
+ const credentials_1 = require("../../utils/credentials");
43
+ // Mock fs module
44
+ vitest_1.vi.mock('fs', () => ({
45
+ existsSync: vitest_1.vi.fn(),
46
+ readFileSync: vitest_1.vi.fn(),
47
+ writeFileSync: vitest_1.vi.fn(),
48
+ unlinkSync: vitest_1.vi.fn(),
49
+ mkdirSync: vitest_1.vi.fn(),
50
+ chmodSync: vitest_1.vi.fn(),
51
+ }));
52
+ // Mock os module
53
+ vitest_1.vi.mock('os', () => ({
54
+ homedir: vitest_1.vi.fn(),
55
+ platform: vitest_1.vi.fn(),
56
+ }));
57
+ (0, vitest_1.describe)('Credentials Utilities', () => {
58
+ (0, vitest_1.beforeEach)(() => {
59
+ vitest_1.vi.clearAllMocks();
60
+ vitest_1.vi.mocked(os.homedir).mockReturnValue('/home/testuser');
61
+ });
62
+ (0, vitest_1.afterEach)(() => {
63
+ vitest_1.vi.clearAllMocks();
64
+ });
65
+ (0, vitest_1.describe)('getConfigDirectoryPath', () => {
66
+ (0, vitest_1.it)('should return macOS config path', () => {
67
+ vitest_1.vi.mocked(os.platform).mockReturnValue('darwin');
68
+ const configPath = (0, credentials_1.getConfigDirectoryPath)();
69
+ (0, vitest_1.expect)(configPath).toBe('/home/testuser/Library/Application Support/firecrawl-cli');
70
+ });
71
+ (0, vitest_1.it)('should return Windows config path', () => {
72
+ vitest_1.vi.mocked(os.platform).mockReturnValue('win32');
73
+ const configPath = (0, credentials_1.getConfigDirectoryPath)();
74
+ (0, vitest_1.expect)(configPath).toBe('/home/testuser/AppData/Roaming/firecrawl-cli');
75
+ });
76
+ (0, vitest_1.it)('should return Linux config path', () => {
77
+ vitest_1.vi.mocked(os.platform).mockReturnValue('linux');
78
+ const configPath = (0, credentials_1.getConfigDirectoryPath)();
79
+ (0, vitest_1.expect)(configPath).toBe('/home/testuser/.config/firecrawl-cli');
80
+ });
81
+ (0, vitest_1.it)('should return Linux config path for unknown platforms', () => {
82
+ vitest_1.vi.mocked(os.platform).mockReturnValue('freebsd');
83
+ const configPath = (0, credentials_1.getConfigDirectoryPath)();
84
+ (0, vitest_1.expect)(configPath).toBe('/home/testuser/.config/firecrawl-cli');
85
+ });
86
+ });
87
+ (0, vitest_1.describe)('loadCredentials', () => {
88
+ (0, vitest_1.beforeEach)(() => {
89
+ vitest_1.vi.mocked(os.platform).mockReturnValue('darwin');
90
+ });
91
+ (0, vitest_1.it)('should return null when credentials file does not exist', () => {
92
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(false);
93
+ const result = (0, credentials_1.loadCredentials)();
94
+ (0, vitest_1.expect)(result).toBeNull();
95
+ });
96
+ (0, vitest_1.it)('should return credentials when file exists and is valid', () => {
97
+ const mockCredentials = {
98
+ apiKey: 'fc-test-api-key',
99
+ apiUrl: 'https://api.firecrawl.dev',
100
+ };
101
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(true);
102
+ vitest_1.vi.mocked(fs.readFileSync).mockReturnValue(JSON.stringify(mockCredentials));
103
+ const result = (0, credentials_1.loadCredentials)();
104
+ (0, vitest_1.expect)(result).toEqual(mockCredentials);
105
+ });
106
+ (0, vitest_1.it)('should return null when file is corrupted (invalid JSON)', () => {
107
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(true);
108
+ vitest_1.vi.mocked(fs.readFileSync).mockReturnValue('not valid json');
109
+ const result = (0, credentials_1.loadCredentials)();
110
+ (0, vitest_1.expect)(result).toBeNull();
111
+ });
112
+ (0, vitest_1.it)('should return null when file read fails', () => {
113
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(true);
114
+ vitest_1.vi.mocked(fs.readFileSync).mockImplementation(() => {
115
+ throw new Error('Permission denied');
116
+ });
117
+ const result = (0, credentials_1.loadCredentials)();
118
+ (0, vitest_1.expect)(result).toBeNull();
119
+ });
120
+ });
121
+ (0, vitest_1.describe)('saveCredentials', () => {
122
+ (0, vitest_1.beforeEach)(() => {
123
+ vitest_1.vi.mocked(os.platform).mockReturnValue('darwin');
124
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(false);
125
+ });
126
+ (0, vitest_1.it)('should create config directory if it does not exist', () => {
127
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(false);
128
+ (0, credentials_1.saveCredentials)({ apiKey: 'fc-test-key' });
129
+ (0, vitest_1.expect)(fs.mkdirSync).toHaveBeenCalledWith(vitest_1.expect.stringContaining('firecrawl-cli'), { recursive: true, mode: 0o700 });
130
+ });
131
+ (0, vitest_1.it)('should save credentials to file', () => {
132
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(true);
133
+ (0, credentials_1.saveCredentials)({
134
+ apiKey: 'fc-test-key',
135
+ apiUrl: 'https://api.firecrawl.dev',
136
+ });
137
+ (0, vitest_1.expect)(fs.writeFileSync).toHaveBeenCalledWith(vitest_1.expect.stringContaining('credentials.json'), vitest_1.expect.any(String), 'utf-8');
138
+ });
139
+ (0, vitest_1.it)('should merge with existing credentials', () => {
140
+ const existingCredentials = {
141
+ apiKey: 'fc-old-key',
142
+ apiUrl: 'https://old-api.example.com',
143
+ };
144
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(true);
145
+ vitest_1.vi.mocked(fs.readFileSync).mockReturnValue(JSON.stringify(existingCredentials));
146
+ (0, credentials_1.saveCredentials)({ apiKey: 'fc-new-key' });
147
+ // Check that writeFileSync was called with merged data
148
+ (0, vitest_1.expect)(fs.writeFileSync).toHaveBeenCalled();
149
+ const writtenData = JSON.parse(vitest_1.vi.mocked(fs.writeFileSync).mock.calls[0][1]);
150
+ (0, vitest_1.expect)(writtenData.apiKey).toBe('fc-new-key');
151
+ (0, vitest_1.expect)(writtenData.apiUrl).toBe('https://old-api.example.com');
152
+ });
153
+ (0, vitest_1.it)('should set secure file permissions', () => {
154
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(true);
155
+ (0, credentials_1.saveCredentials)({ apiKey: 'fc-test-key' });
156
+ (0, vitest_1.expect)(fs.chmodSync).toHaveBeenCalledWith(vitest_1.expect.stringContaining('credentials.json'), 0o600);
157
+ });
158
+ (0, vitest_1.it)('should throw error when save fails', () => {
159
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(true);
160
+ vitest_1.vi.mocked(fs.writeFileSync).mockImplementation(() => {
161
+ throw new Error('Disk full');
162
+ });
163
+ (0, vitest_1.expect)(() => (0, credentials_1.saveCredentials)({ apiKey: 'fc-test-key' })).toThrow('Failed to save credentials: Disk full');
164
+ });
165
+ });
166
+ (0, vitest_1.describe)('deleteCredentials', () => {
167
+ (0, vitest_1.beforeEach)(() => {
168
+ vitest_1.vi.mocked(os.platform).mockReturnValue('darwin');
169
+ });
170
+ (0, vitest_1.it)('should delete credentials file when it exists', () => {
171
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(true);
172
+ (0, credentials_1.deleteCredentials)();
173
+ (0, vitest_1.expect)(fs.unlinkSync).toHaveBeenCalledWith(vitest_1.expect.stringContaining('credentials.json'));
174
+ });
175
+ (0, vitest_1.it)('should not throw when credentials file does not exist', () => {
176
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(false);
177
+ (0, vitest_1.expect)(() => (0, credentials_1.deleteCredentials)()).not.toThrow();
178
+ (0, vitest_1.expect)(fs.unlinkSync).not.toHaveBeenCalled();
179
+ });
180
+ (0, vitest_1.it)('should throw error when delete fails', () => {
181
+ vitest_1.vi.mocked(fs.existsSync).mockReturnValue(true);
182
+ vitest_1.vi.mocked(fs.unlinkSync).mockImplementation(() => {
183
+ throw new Error('Permission denied');
184
+ });
185
+ (0, vitest_1.expect)(() => (0, credentials_1.deleteCredentials)()).toThrow('Failed to delete credentials: Permission denied');
186
+ });
187
+ });
188
+ });
189
+ //# sourceMappingURL=credentials.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/credentials.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for option parsing utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=options.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/options.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for option parsing utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const options_1 = require("../../utils/options");
8
+ (0, vitest_1.describe)('Option Parsing Utilities', () => {
9
+ (0, vitest_1.describe)('parseFormats', () => {
10
+ (0, vitest_1.describe)('Single format parsing', () => {
11
+ (0, vitest_1.it)('should parse single markdown format', () => {
12
+ (0, vitest_1.expect)((0, options_1.parseFormats)('markdown')).toEqual(['markdown']);
13
+ });
14
+ (0, vitest_1.it)('should parse single html format', () => {
15
+ (0, vitest_1.expect)((0, options_1.parseFormats)('html')).toEqual(['html']);
16
+ });
17
+ (0, vitest_1.it)('should parse single rawHtml format', () => {
18
+ (0, vitest_1.expect)((0, options_1.parseFormats)('rawHtml')).toEqual(['rawHtml']);
19
+ });
20
+ (0, vitest_1.it)('should parse single links format', () => {
21
+ (0, vitest_1.expect)((0, options_1.parseFormats)('links')).toEqual(['links']);
22
+ });
23
+ (0, vitest_1.it)('should parse single images format', () => {
24
+ (0, vitest_1.expect)((0, options_1.parseFormats)('images')).toEqual(['images']);
25
+ });
26
+ (0, vitest_1.it)('should parse single screenshot format', () => {
27
+ (0, vitest_1.expect)((0, options_1.parseFormats)('screenshot')).toEqual(['screenshot']);
28
+ });
29
+ (0, vitest_1.it)('should parse single summary format', () => {
30
+ (0, vitest_1.expect)((0, options_1.parseFormats)('summary')).toEqual(['summary']);
31
+ });
32
+ (0, vitest_1.it)('should parse single json format', () => {
33
+ (0, vitest_1.expect)((0, options_1.parseFormats)('json')).toEqual(['json']);
34
+ });
35
+ (0, vitest_1.it)('should parse single branding format', () => {
36
+ (0, vitest_1.expect)((0, options_1.parseFormats)('branding')).toEqual(['branding']);
37
+ });
38
+ (0, vitest_1.it)('should parse single changeTracking format', () => {
39
+ (0, vitest_1.expect)((0, options_1.parseFormats)('changeTracking')).toEqual(['changeTracking']);
40
+ });
41
+ (0, vitest_1.it)('should parse single attributes format', () => {
42
+ (0, vitest_1.expect)((0, options_1.parseFormats)('attributes')).toEqual(['attributes']);
43
+ });
44
+ });
45
+ (0, vitest_1.describe)('Multiple format parsing', () => {
46
+ (0, vitest_1.it)('should parse comma-separated formats', () => {
47
+ (0, vitest_1.expect)((0, options_1.parseFormats)('markdown,links')).toEqual(['markdown', 'links']);
48
+ });
49
+ (0, vitest_1.it)('should parse multiple formats with spaces', () => {
50
+ (0, vitest_1.expect)((0, options_1.parseFormats)('markdown, links, images')).toEqual([
51
+ 'markdown',
52
+ 'links',
53
+ 'images',
54
+ ]);
55
+ });
56
+ (0, vitest_1.it)('should handle all common formats together', () => {
57
+ (0, vitest_1.expect)((0, options_1.parseFormats)('markdown,html,links,images,screenshot')).toEqual([
58
+ 'markdown',
59
+ 'html',
60
+ 'links',
61
+ 'images',
62
+ 'screenshot',
63
+ ]);
64
+ });
65
+ });
66
+ (0, vitest_1.describe)('Case insensitivity', () => {
67
+ (0, vitest_1.it)('should handle lowercase input', () => {
68
+ (0, vitest_1.expect)((0, options_1.parseFormats)('markdown')).toEqual(['markdown']);
69
+ });
70
+ (0, vitest_1.it)('should handle uppercase input', () => {
71
+ (0, vitest_1.expect)((0, options_1.parseFormats)('MARKDOWN')).toEqual(['markdown']);
72
+ });
73
+ (0, vitest_1.it)('should handle mixed case input', () => {
74
+ (0, vitest_1.expect)((0, options_1.parseFormats)('MarkDown')).toEqual(['markdown']);
75
+ });
76
+ (0, vitest_1.it)('should handle mixed case for camelCase formats', () => {
77
+ (0, vitest_1.expect)((0, options_1.parseFormats)('rawhtml')).toEqual(['rawHtml']);
78
+ (0, vitest_1.expect)((0, options_1.parseFormats)('RAWHTML')).toEqual(['rawHtml']);
79
+ (0, vitest_1.expect)((0, options_1.parseFormats)('RawHtml')).toEqual(['rawHtml']);
80
+ });
81
+ (0, vitest_1.it)('should handle mixed case for changeTracking', () => {
82
+ (0, vitest_1.expect)((0, options_1.parseFormats)('changetracking')).toEqual(['changeTracking']);
83
+ (0, vitest_1.expect)((0, options_1.parseFormats)('CHANGETRACKING')).toEqual(['changeTracking']);
84
+ });
85
+ });
86
+ (0, vitest_1.describe)('Deduplication', () => {
87
+ (0, vitest_1.it)('should remove duplicate formats', () => {
88
+ (0, vitest_1.expect)((0, options_1.parseFormats)('markdown,markdown,links')).toEqual([
89
+ 'markdown',
90
+ 'links',
91
+ ]);
92
+ });
93
+ (0, vitest_1.it)('should remove duplicates with different cases', () => {
94
+ (0, vitest_1.expect)((0, options_1.parseFormats)('markdown,MARKDOWN,Markdown')).toEqual([
95
+ 'markdown',
96
+ ]);
97
+ });
98
+ (0, vitest_1.it)('should preserve order of first occurrence', () => {
99
+ (0, vitest_1.expect)((0, options_1.parseFormats)('links,markdown,links,html')).toEqual([
100
+ 'links',
101
+ 'markdown',
102
+ 'html',
103
+ ]);
104
+ });
105
+ });
106
+ (0, vitest_1.describe)('Error handling', () => {
107
+ (0, vitest_1.it)('should throw error for invalid format', () => {
108
+ (0, vitest_1.expect)(() => (0, options_1.parseFormats)('invalid')).toThrow(/Invalid format\(s\): invalid/);
109
+ });
110
+ (0, vitest_1.it)('should throw error for multiple invalid formats', () => {
111
+ (0, vitest_1.expect)(() => (0, options_1.parseFormats)('invalid1,invalid2')).toThrow(/Invalid format\(s\): invalid1, invalid2/);
112
+ });
113
+ (0, vitest_1.it)('should throw error showing valid formats', () => {
114
+ (0, vitest_1.expect)(() => (0, options_1.parseFormats)('invalid')).toThrow(/Valid formats are:/);
115
+ });
116
+ (0, vitest_1.it)('should list invalid formats among valid ones', () => {
117
+ (0, vitest_1.expect)(() => (0, options_1.parseFormats)('markdown,invalid,links')).toThrow(/Invalid format\(s\): invalid/);
118
+ });
119
+ });
120
+ (0, vitest_1.describe)('Edge cases', () => {
121
+ (0, vitest_1.it)('should handle empty format parts', () => {
122
+ (0, vitest_1.expect)((0, options_1.parseFormats)('markdown,,links')).toEqual(['markdown', 'links']);
123
+ });
124
+ (0, vitest_1.it)('should handle whitespace-only parts', () => {
125
+ (0, vitest_1.expect)((0, options_1.parseFormats)('markdown, ,links')).toEqual([
126
+ 'markdown',
127
+ 'links',
128
+ ]);
129
+ });
130
+ (0, vitest_1.it)('should handle leading/trailing whitespace', () => {
131
+ (0, vitest_1.expect)((0, options_1.parseFormats)(' markdown , links ')).toEqual([
132
+ 'markdown',
133
+ 'links',
134
+ ]);
135
+ });
136
+ });
137
+ });
138
+ (0, vitest_1.describe)('parseScrapeOptions', () => {
139
+ (0, vitest_1.it)('should parse basic scrape options', () => {
140
+ const options = {
141
+ url: 'https://example.com',
142
+ format: 'markdown',
143
+ };
144
+ const result = (0, options_1.parseScrapeOptions)(options);
145
+ (0, vitest_1.expect)(result.url).toBe('https://example.com');
146
+ (0, vitest_1.expect)(result.formats).toEqual(['markdown']);
147
+ });
148
+ (0, vitest_1.it)('should parse multiple formats', () => {
149
+ const options = {
150
+ url: 'https://example.com',
151
+ format: 'markdown,links,images',
152
+ };
153
+ const result = (0, options_1.parseScrapeOptions)(options);
154
+ (0, vitest_1.expect)(result.formats).toEqual(['markdown', 'links', 'images']);
155
+ });
156
+ (0, vitest_1.it)('should parse onlyMainContent option', () => {
157
+ const options = {
158
+ url: 'https://example.com',
159
+ onlyMainContent: true,
160
+ };
161
+ const result = (0, options_1.parseScrapeOptions)(options);
162
+ (0, vitest_1.expect)(result.onlyMainContent).toBe(true);
163
+ });
164
+ (0, vitest_1.it)('should parse waitFor option', () => {
165
+ const options = {
166
+ url: 'https://example.com',
167
+ waitFor: 3000,
168
+ };
169
+ const result = (0, options_1.parseScrapeOptions)(options);
170
+ (0, vitest_1.expect)(result.waitFor).toBe(3000);
171
+ });
172
+ (0, vitest_1.it)('should parse screenshot option', () => {
173
+ const options = {
174
+ url: 'https://example.com',
175
+ screenshot: true,
176
+ };
177
+ const result = (0, options_1.parseScrapeOptions)(options);
178
+ (0, vitest_1.expect)(result.screenshot).toBe(true);
179
+ });
180
+ (0, vitest_1.it)('should parse includeTags from comma-separated string', () => {
181
+ const options = {
182
+ url: 'https://example.com',
183
+ includeTags: 'article, main, section',
184
+ };
185
+ const result = (0, options_1.parseScrapeOptions)(options);
186
+ (0, vitest_1.expect)(result.includeTags).toEqual(['article', 'main', 'section']);
187
+ });
188
+ (0, vitest_1.it)('should parse excludeTags from comma-separated string', () => {
189
+ const options = {
190
+ url: 'https://example.com',
191
+ excludeTags: 'nav, footer, .ad',
192
+ };
193
+ const result = (0, options_1.parseScrapeOptions)(options);
194
+ (0, vitest_1.expect)(result.excludeTags).toEqual(['nav', 'footer', '.ad']);
195
+ });
196
+ (0, vitest_1.it)('should parse apiKey option', () => {
197
+ const options = {
198
+ url: 'https://example.com',
199
+ apiKey: 'fc-test-api-key',
200
+ };
201
+ const result = (0, options_1.parseScrapeOptions)(options);
202
+ (0, vitest_1.expect)(result.apiKey).toBe('fc-test-api-key');
203
+ });
204
+ (0, vitest_1.it)('should parse output option', () => {
205
+ const options = {
206
+ url: 'https://example.com',
207
+ output: '.firecrawl/example.md',
208
+ };
209
+ const result = (0, options_1.parseScrapeOptions)(options);
210
+ (0, vitest_1.expect)(result.output).toBe('.firecrawl/example.md');
211
+ });
212
+ (0, vitest_1.it)('should parse pretty option', () => {
213
+ const options = {
214
+ url: 'https://example.com',
215
+ pretty: true,
216
+ };
217
+ const result = (0, options_1.parseScrapeOptions)(options);
218
+ (0, vitest_1.expect)(result.pretty).toBe(true);
219
+ });
220
+ (0, vitest_1.it)('should parse timing option', () => {
221
+ const options = {
222
+ url: 'https://example.com',
223
+ timing: true,
224
+ };
225
+ const result = (0, options_1.parseScrapeOptions)(options);
226
+ (0, vitest_1.expect)(result.timing).toBe(true);
227
+ });
228
+ (0, vitest_1.it)('should handle undefined format', () => {
229
+ const options = {
230
+ url: 'https://example.com',
231
+ };
232
+ const result = (0, options_1.parseScrapeOptions)(options);
233
+ (0, vitest_1.expect)(result.formats).toBeUndefined();
234
+ });
235
+ (0, vitest_1.it)('should handle all options together', () => {
236
+ const options = {
237
+ url: 'https://example.com',
238
+ format: 'markdown,links',
239
+ onlyMainContent: true,
240
+ waitFor: 2000,
241
+ screenshot: true,
242
+ includeTags: 'article,main',
243
+ excludeTags: 'nav,footer',
244
+ apiKey: 'fc-test-key',
245
+ output: '.firecrawl/output.json',
246
+ pretty: true,
247
+ timing: true,
248
+ };
249
+ const result = (0, options_1.parseScrapeOptions)(options);
250
+ (0, vitest_1.expect)(result).toEqual({
251
+ url: 'https://example.com',
252
+ formats: ['markdown', 'links'],
253
+ onlyMainContent: true,
254
+ waitFor: 2000,
255
+ screenshot: true,
256
+ includeTags: ['article', 'main'],
257
+ excludeTags: ['nav', 'footer'],
258
+ apiKey: 'fc-test-key',
259
+ output: '.firecrawl/output.json',
260
+ pretty: true,
261
+ timing: true,
262
+ });
263
+ });
264
+ });
265
+ });
266
+ //# sourceMappingURL=options.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/options.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for output utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=output.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/output.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}