Nick: fixed v0 backwards compatibility node sdk types

This commit is contained in:
Nicolas 2024-08-27 19:10:58 -03:00
parent 88239d7211
commit 38ed845b93
2 changed files with 12 additions and 8 deletions

View File

@ -1,4 +1,4 @@
import FirecrawlApp, { CrawlResponseV0, FirecrawlDocumentV0, JobStatusResponseV0, ScrapeResponseV0, SearchResponseV0 } from '../../index'; import FirecrawlApp, { CrawlResponseV0, CrawlStatusResponse, CrawlStatusResponseV0, FirecrawlDocumentV0, ScrapeResponseV0, SearchResponseV0 } from '../../index';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import dotenv from 'dotenv'; import dotenv from 'dotenv';
import { describe, test, expect } from '@jest/globals'; import { describe, test, expect } from '@jest/globals';
@ -79,8 +79,9 @@ describe('FirecrawlApp E2E Tests', () => {
test.concurrent('should return successful response for crawl and wait for completion', async () => { test.concurrent('should return successful response for crawl and wait for completion', async () => {
const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL, version: "v0" }); const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL, version: "v0" });
const response = await app.crawlUrl('https://roastmywebsite.ai', { crawlerOptions: { excludes: ['blog/*'] } }, true, 30) as CrawlResponseV0; const response = await app.crawlUrl('https://roastmywebsite.ai', { crawlerOptions: { excludes: ['blog/*'] } }, true, 10) as FirecrawlDocumentV0[];
expect(response).not.toBeNull(); expect(response).not.toBeNull();
console.log({response});
expect(response[0].content).toContain("_Roast_"); expect(response[0].content).toContain("_Roast_");
}, 60000); // 60 seconds timeout }, 60000); // 60 seconds timeout
@ -96,7 +97,7 @@ describe('FirecrawlApp E2E Tests', () => {
test.concurrent('should check crawl status', async () => { test.concurrent('should check crawl status', async () => {
const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL, version: "v0" }); const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL, version: "v0" });
const response: any = await app.crawlUrl('https://roastmywebsite.ai', { crawlerOptions: { excludes: ['blog/*'] } }, false) as JobStatusResponseV0; const response: any = await app.crawlUrl('https://roastmywebsite.ai', { crawlerOptions: { excludes: ['blog/*'] } }, false) as CrawlResponseV0;
expect(response).not.toBeNull(); expect(response).not.toBeNull();
expect(response.jobId).toBeDefined(); expect(response.jobId).toBeDefined();
@ -105,10 +106,10 @@ describe('FirecrawlApp E2E Tests', () => {
let checks = 0; let checks = 0;
while (statusResponse.status === 'active' && checks < maxChecks) { while (statusResponse.status === 'active' && checks < maxChecks) {
await new Promise(resolve => setTimeout(resolve, 1000)); await new Promise(resolve => setTimeout(resolve, 5000));
expect(statusResponse.partial_data).not.toBeNull(); expect(statusResponse.partial_data).not.toBeNull();
expect(statusResponse.current).toBeGreaterThanOrEqual(1); // expect(statusResponse.current).toBeGreaterThanOrEqual(1);
statusResponse = await app.checkCrawlStatus(response.jobId) as CrawlResponseV0; statusResponse = await app.checkCrawlStatus(response.jobId) as CrawlStatusResponseV0;
checks++; checks++;
} }
@ -117,6 +118,8 @@ describe('FirecrawlApp E2E Tests', () => {
expect(statusResponse.status).toBe('completed'); expect(statusResponse.status).toBe('completed');
expect(statusResponse.total).toEqual(statusResponse.current); expect(statusResponse.total).toEqual(statusResponse.current);
expect(statusResponse.current_step).not.toBeNull(); expect(statusResponse.current_step).not.toBeNull();
expect(statusResponse.current).toBeGreaterThanOrEqual(1);
expect(statusResponse?.data?.length).toBeGreaterThan(0); expect(statusResponse?.data?.length).toBeGreaterThan(0);
}, 35000); // 35 seconds timeout }, 35000); // 35 seconds timeout

View File

@ -260,6 +260,7 @@ export interface CrawlStatusResponseV0 {
error?: string; error?: string;
} }
/** /**
* Parameters for mapping operations. * Parameters for mapping operations.
* Defines options for mapping URLs during a crawl. * Defines options for mapping URLs during a crawl.
@ -452,7 +453,7 @@ export default class FirecrawlApp {
waitUntilDone: boolean = true, waitUntilDone: boolean = true,
pollInterval: number = 2, pollInterval: number = 2,
idempotencyKey?: string idempotencyKey?: string
): Promise<CrawlResponse | CrawlResponseV0 | CrawlStatusResponse | CrawlStatusResponseV0> { ): Promise<CrawlResponse | CrawlResponseV0 | CrawlStatusResponse | CrawlStatusResponseV0 | FirecrawlDocumentV0[]> {
const headers = this.prepareHeaders(idempotencyKey); const headers = this.prepareHeaders(idempotencyKey);
let jsonData: any = { url, ...params }; let jsonData: any = { url, ...params };
try { try {
@ -639,7 +640,7 @@ export default class FirecrawlApp {
headers: AxiosRequestHeaders, headers: AxiosRequestHeaders,
checkInterval: number, checkInterval: number,
checkUrl?: string checkUrl?: string
): Promise<CrawlStatusResponse | CrawlStatusResponseV0> { ): Promise<CrawlStatusResponse | FirecrawlDocumentV0[]> {
let apiUrl: string = ''; let apiUrl: string = '';
while (true) { while (true) {
if (this.version == 'v1') { if (this.version == 'v1') {