firecrawl-cli 0.0.6 → 1.0.0-beta.1
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/README.md +426 -6
- package/dist/commands/config.d.ts +13 -4
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +42 -53
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/login.d.ts +15 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +81 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +9 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +33 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/search.d.ts +13 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +241 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/index.js +218 -29
- package/dist/index.js.map +1 -1
- package/dist/types/search.d.ts +103 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +6 -0
- package/dist/types/search.js.map +1 -0
- package/dist/utils/auth.d.ts +55 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +346 -0
- package/dist/utils/auth.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Login command implementation
|
|
4
|
+
* Handles both manual API key entry and browser-based authentication
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.handleLoginCommand = handleLoginCommand;
|
|
8
|
+
const credentials_1 = require("../utils/credentials");
|
|
9
|
+
const config_1 = require("../utils/config");
|
|
10
|
+
const auth_1 = require("../utils/auth");
|
|
11
|
+
const DEFAULT_API_URL = 'https://api.firecrawl.dev';
|
|
12
|
+
const WEB_URL = 'https://firecrawl.dev';
|
|
13
|
+
/**
|
|
14
|
+
* Main login command handler
|
|
15
|
+
*/
|
|
16
|
+
async function handleLoginCommand(options = {}) {
|
|
17
|
+
const apiUrl = options.apiUrl?.replace(/\/$/, '') || DEFAULT_API_URL;
|
|
18
|
+
const webUrl = options.webUrl?.replace(/\/$/, '') || WEB_URL;
|
|
19
|
+
// If already authenticated, let them know
|
|
20
|
+
if ((0, auth_1.isAuthenticated)() && !options.apiKey && !options.method) {
|
|
21
|
+
console.log('You are already logged in.');
|
|
22
|
+
console.log(`Credentials stored at: ${(0, credentials_1.getConfigDirectoryPath)()}`);
|
|
23
|
+
console.log('\nTo login with a different account, run:');
|
|
24
|
+
console.log(' firecrawl logout');
|
|
25
|
+
console.log(' firecrawl login');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// If API key provided directly, save it
|
|
29
|
+
if (options.apiKey) {
|
|
30
|
+
if (!options.apiKey.startsWith('fc-')) {
|
|
31
|
+
console.error('Error: Invalid API key format. API keys should start with "fc-"');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
(0, credentials_1.saveCredentials)({
|
|
36
|
+
apiKey: options.apiKey,
|
|
37
|
+
apiUrl: apiUrl,
|
|
38
|
+
});
|
|
39
|
+
console.log('✓ Login successful!');
|
|
40
|
+
(0, config_1.updateConfig)({
|
|
41
|
+
apiKey: options.apiKey,
|
|
42
|
+
apiUrl: apiUrl,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('Error saving credentials:', error instanceof Error ? error.message : 'Unknown error');
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
let result;
|
|
53
|
+
if (options.method === 'manual') {
|
|
54
|
+
result = await (0, auth_1.manualLogin)();
|
|
55
|
+
}
|
|
56
|
+
else if (options.method === 'browser') {
|
|
57
|
+
result = await (0, auth_1.browserLogin)(webUrl);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
result = await (0, auth_1.interactiveLogin)(webUrl);
|
|
61
|
+
}
|
|
62
|
+
// Save credentials
|
|
63
|
+
(0, credentials_1.saveCredentials)({
|
|
64
|
+
apiKey: result.apiKey,
|
|
65
|
+
apiUrl: result.apiUrl || apiUrl,
|
|
66
|
+
});
|
|
67
|
+
console.log('\n✓ Login successful!');
|
|
68
|
+
if (result.teamName) {
|
|
69
|
+
console.log(` Team: ${result.teamName}`);
|
|
70
|
+
}
|
|
71
|
+
(0, config_1.updateConfig)({
|
|
72
|
+
apiKey: result.apiKey,
|
|
73
|
+
apiUrl: result.apiUrl || apiUrl,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error('\nError:', error instanceof Error ? error.message : 'Unknown error');
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBzD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Logout command implementation
|
|
4
|
+
* Clears stored credentials
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.handleLogoutCommand = handleLogoutCommand;
|
|
8
|
+
const credentials_1 = require("../utils/credentials");
|
|
9
|
+
const config_1 = require("../utils/config");
|
|
10
|
+
/**
|
|
11
|
+
* Main logout command handler
|
|
12
|
+
*/
|
|
13
|
+
async function handleLogoutCommand() {
|
|
14
|
+
const credentials = (0, credentials_1.loadCredentials)();
|
|
15
|
+
if (!credentials || !credentials.apiKey) {
|
|
16
|
+
console.log('No credentials found. You are not logged in.');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
(0, credentials_1.deleteCredentials)();
|
|
21
|
+
// Clear the global config
|
|
22
|
+
(0, config_1.updateConfig)({
|
|
23
|
+
apiKey: '',
|
|
24
|
+
apiUrl: '',
|
|
25
|
+
});
|
|
26
|
+
console.log('✓ Logged out successfully');
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error('Error logging out:', error instanceof Error ? error.message : 'Unknown error');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAYH,kDAwBC;AAlCD,sDAI8B;AAC9B,4CAA+C;AAE/C;;GAEG;AACI,KAAK,UAAU,mBAAmB;IACvC,MAAM,WAAW,GAAG,IAAA,6BAAe,GAAE,CAAC;IAEtC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,IAAA,+BAAiB,GAAE,CAAC;QACpB,0BAA0B;QAC1B,IAAA,qBAAY,EAAC;YACX,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,oBAAoB,EACpB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CACzD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search command implementation
|
|
3
|
+
*/
|
|
4
|
+
import type { SearchOptions, SearchResult } from '../types/search';
|
|
5
|
+
/**
|
|
6
|
+
* Execute search command
|
|
7
|
+
*/
|
|
8
|
+
export declare function executeSearch(options: SearchOptions): Promise<SearchResult>;
|
|
9
|
+
/**
|
|
10
|
+
* Handle search command output
|
|
11
|
+
*/
|
|
12
|
+
export declare function handleSearchCommand(options: SearchOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EAKb,MAAM,iBAAiB,CAAC;AAIzB;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CAmHvB;AA+FD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Search command implementation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.executeSearch = executeSearch;
|
|
7
|
+
exports.handleSearchCommand = handleSearchCommand;
|
|
8
|
+
const client_1 = require("../utils/client");
|
|
9
|
+
const output_1 = require("../utils/output");
|
|
10
|
+
/**
|
|
11
|
+
* Execute search command
|
|
12
|
+
*/
|
|
13
|
+
async function executeSearch(options) {
|
|
14
|
+
try {
|
|
15
|
+
const app = (0, client_1.getClient)({ apiKey: options.apiKey });
|
|
16
|
+
// Build search options for the SDK
|
|
17
|
+
const searchParams = {
|
|
18
|
+
limit: options.limit,
|
|
19
|
+
};
|
|
20
|
+
// Add sources if specified
|
|
21
|
+
if (options.sources && options.sources.length > 0) {
|
|
22
|
+
searchParams.sources = options.sources.map((source) => ({
|
|
23
|
+
type: source,
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
// Add categories if specified
|
|
27
|
+
if (options.categories && options.categories.length > 0) {
|
|
28
|
+
searchParams.categories = options.categories.map((category) => ({
|
|
29
|
+
type: category,
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
// Add time-based search parameter
|
|
33
|
+
if (options.tbs) {
|
|
34
|
+
searchParams.tbs = options.tbs;
|
|
35
|
+
}
|
|
36
|
+
// Add location parameter
|
|
37
|
+
if (options.location) {
|
|
38
|
+
searchParams.location = options.location;
|
|
39
|
+
}
|
|
40
|
+
// Add country parameter
|
|
41
|
+
if (options.country) {
|
|
42
|
+
searchParams.country = options.country;
|
|
43
|
+
}
|
|
44
|
+
// Add timeout parameter
|
|
45
|
+
if (options.timeout !== undefined) {
|
|
46
|
+
searchParams.timeout = options.timeout;
|
|
47
|
+
}
|
|
48
|
+
// Add ignoreInvalidURLs parameter
|
|
49
|
+
if (options.ignoreInvalidUrls !== undefined) {
|
|
50
|
+
searchParams.ignoreInvalidURLs = options.ignoreInvalidUrls;
|
|
51
|
+
}
|
|
52
|
+
// Add scrape options if scraping is enabled
|
|
53
|
+
if (options.scrape) {
|
|
54
|
+
const scrapeOptions = {};
|
|
55
|
+
// Add formats
|
|
56
|
+
if (options.scrapeFormats && options.scrapeFormats.length > 0) {
|
|
57
|
+
scrapeOptions.formats = options.scrapeFormats.map((format) => ({
|
|
58
|
+
type: format,
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Default to markdown if scraping is enabled but no formats specified
|
|
63
|
+
scrapeOptions.formats = [{ type: 'markdown' }];
|
|
64
|
+
}
|
|
65
|
+
// Add onlyMainContent if specified
|
|
66
|
+
if (options.onlyMainContent !== undefined) {
|
|
67
|
+
scrapeOptions.onlyMainContent = options.onlyMainContent;
|
|
68
|
+
}
|
|
69
|
+
searchParams.scrapeOptions = scrapeOptions;
|
|
70
|
+
}
|
|
71
|
+
// Execute search
|
|
72
|
+
const result = await app.search(options.query, searchParams);
|
|
73
|
+
// Handle the response - the SDK returns the data directly or wrapped
|
|
74
|
+
const data = {};
|
|
75
|
+
// Check if result has the expected structure
|
|
76
|
+
if (result) {
|
|
77
|
+
// Handle web results
|
|
78
|
+
if (result.web || result.data?.web) {
|
|
79
|
+
data.web = (result.web ||
|
|
80
|
+
result.data?.web);
|
|
81
|
+
}
|
|
82
|
+
// Handle image results
|
|
83
|
+
if (result.images || result.data?.images) {
|
|
84
|
+
data.images = (result.images ||
|
|
85
|
+
result.data?.images);
|
|
86
|
+
}
|
|
87
|
+
// Handle news results
|
|
88
|
+
if (result.news || result.data?.news) {
|
|
89
|
+
data.news = (result.news ||
|
|
90
|
+
result.data?.news);
|
|
91
|
+
}
|
|
92
|
+
// If result is an array (legacy format), treat as web results
|
|
93
|
+
if (Array.isArray(result)) {
|
|
94
|
+
data.web = result;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
success: true,
|
|
99
|
+
data,
|
|
100
|
+
warning: result?.warning,
|
|
101
|
+
id: result?.id,
|
|
102
|
+
creditsUsed: result?.creditsUsed,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
return {
|
|
107
|
+
success: false,
|
|
108
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Format search data in human-readable way
|
|
114
|
+
*/
|
|
115
|
+
function formatSearchReadable(data, options) {
|
|
116
|
+
const lines = [];
|
|
117
|
+
// Format web results
|
|
118
|
+
if (data.web && data.web.length > 0) {
|
|
119
|
+
if (options.sources && options.sources.length > 1) {
|
|
120
|
+
lines.push('=== Web Results ===');
|
|
121
|
+
lines.push('');
|
|
122
|
+
}
|
|
123
|
+
for (const result of data.web) {
|
|
124
|
+
lines.push(`${result.title || 'Untitled'}`);
|
|
125
|
+
lines.push(` URL: ${result.url}`);
|
|
126
|
+
if (result.description) {
|
|
127
|
+
lines.push(` ${result.description}`);
|
|
128
|
+
}
|
|
129
|
+
if (result.category) {
|
|
130
|
+
lines.push(` Category: ${result.category}`);
|
|
131
|
+
}
|
|
132
|
+
if (result.markdown) {
|
|
133
|
+
lines.push('');
|
|
134
|
+
lines.push(' --- Content ---');
|
|
135
|
+
// Indent markdown content
|
|
136
|
+
const indentedMarkdown = result.markdown
|
|
137
|
+
.split('\n')
|
|
138
|
+
.map((line) => ` ${line}`)
|
|
139
|
+
.join('\n');
|
|
140
|
+
lines.push(indentedMarkdown);
|
|
141
|
+
lines.push(' --- End Content ---');
|
|
142
|
+
}
|
|
143
|
+
lines.push('');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Format image results
|
|
147
|
+
if (data.images && data.images.length > 0) {
|
|
148
|
+
if (lines.length > 0) {
|
|
149
|
+
lines.push('');
|
|
150
|
+
}
|
|
151
|
+
lines.push('=== Image Results ===');
|
|
152
|
+
lines.push('');
|
|
153
|
+
for (const result of data.images) {
|
|
154
|
+
lines.push(`${result.title || 'Untitled'}`);
|
|
155
|
+
lines.push(` Image URL: ${result.imageUrl}`);
|
|
156
|
+
lines.push(` Source: ${result.url}`);
|
|
157
|
+
if (result.imageWidth && result.imageHeight) {
|
|
158
|
+
lines.push(` Size: ${result.imageWidth}x${result.imageHeight}`);
|
|
159
|
+
}
|
|
160
|
+
lines.push('');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Format news results
|
|
164
|
+
if (data.news && data.news.length > 0) {
|
|
165
|
+
if (lines.length > 0) {
|
|
166
|
+
lines.push('');
|
|
167
|
+
}
|
|
168
|
+
lines.push('=== News Results ===');
|
|
169
|
+
lines.push('');
|
|
170
|
+
for (const result of data.news) {
|
|
171
|
+
lines.push(`${result.title || 'Untitled'}`);
|
|
172
|
+
lines.push(` URL: ${result.url}`);
|
|
173
|
+
if (result.date) {
|
|
174
|
+
lines.push(` Date: ${result.date}`);
|
|
175
|
+
}
|
|
176
|
+
if (result.snippet) {
|
|
177
|
+
lines.push(` ${result.snippet}`);
|
|
178
|
+
}
|
|
179
|
+
if (result.markdown) {
|
|
180
|
+
lines.push('');
|
|
181
|
+
lines.push(' --- Content ---');
|
|
182
|
+
const indentedMarkdown = result.markdown
|
|
183
|
+
.split('\n')
|
|
184
|
+
.map((line) => ` ${line}`)
|
|
185
|
+
.join('\n');
|
|
186
|
+
lines.push(indentedMarkdown);
|
|
187
|
+
lines.push(' --- End Content ---');
|
|
188
|
+
}
|
|
189
|
+
lines.push('');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return lines.join('\n');
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Handle search command output
|
|
196
|
+
*/
|
|
197
|
+
async function handleSearchCommand(options) {
|
|
198
|
+
const result = await executeSearch(options);
|
|
199
|
+
if (!result.success) {
|
|
200
|
+
console.error('Error:', result.error);
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
if (!result.data) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
// Check if there are any results
|
|
207
|
+
const hasResults = (result.data.web && result.data.web.length > 0) ||
|
|
208
|
+
(result.data.images && result.data.images.length > 0) ||
|
|
209
|
+
(result.data.news && result.data.news.length > 0);
|
|
210
|
+
if (!hasResults) {
|
|
211
|
+
console.log('No results found.');
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
let outputContent;
|
|
215
|
+
// Use JSON format if --json or --pretty flag is set
|
|
216
|
+
// --pretty implies JSON output
|
|
217
|
+
if (options.json || options.pretty) {
|
|
218
|
+
const jsonOutput = {
|
|
219
|
+
success: true,
|
|
220
|
+
data: result.data,
|
|
221
|
+
};
|
|
222
|
+
if (result.warning) {
|
|
223
|
+
jsonOutput.warning = result.warning;
|
|
224
|
+
}
|
|
225
|
+
if (result.id) {
|
|
226
|
+
jsonOutput.id = result.id;
|
|
227
|
+
}
|
|
228
|
+
if (result.creditsUsed !== undefined) {
|
|
229
|
+
jsonOutput.creditsUsed = result.creditsUsed;
|
|
230
|
+
}
|
|
231
|
+
outputContent = options.pretty
|
|
232
|
+
? JSON.stringify(jsonOutput, null, 2)
|
|
233
|
+
: JSON.stringify(jsonOutput);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// Default to human-readable format
|
|
237
|
+
outputContent = formatSearchReadable(result.data, options);
|
|
238
|
+
}
|
|
239
|
+
(0, output_1.writeOutput)(outputContent, options.output, !!options.output);
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|