From a5d38039f2d55a8dfbe2872e2a61ca92120cf959 Mon Sep 17 00:00:00 2001 From: tractorjuice <129532814+tractorjuice@users.noreply.github.com> Date: Sat, 27 Apr 2024 11:03:27 +0100 Subject: [PATCH 001/230] Add additional file extensions to crawler.ts Add additional file extensions. --- apps/api/src/scraper/WebScraper/crawler.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/api/src/scraper/WebScraper/crawler.ts b/apps/api/src/scraper/WebScraper/crawler.ts index 23cb629..3c7aefa 100644 --- a/apps/api/src/scraper/WebScraper/crawler.ts +++ b/apps/api/src/scraper/WebScraper/crawler.ts @@ -267,6 +267,13 @@ export class WebCrawler { ".docx", ".xlsx", ".xml", + ".pptx", + ".avi", + ".flv", + ".woff", + ".ttf", + ".woff2", + ".webp", ]; return fileExtensions.some((ext) => url.endsWith(ext)); } From 0f694e06082de99384dd89abfbb7fed25018f4d3 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sat, 27 Apr 2024 11:14:52 -0700 Subject: [PATCH 002/230] Update crawler.ts --- apps/api/src/scraper/WebScraper/crawler.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/api/src/scraper/WebScraper/crawler.ts b/apps/api/src/scraper/WebScraper/crawler.ts index 3c7aefa..adc71c5 100644 --- a/apps/api/src/scraper/WebScraper/crawler.ts +++ b/apps/api/src/scraper/WebScraper/crawler.ts @@ -267,7 +267,6 @@ export class WebCrawler { ".docx", ".xlsx", ".xml", - ".pptx", ".avi", ".flv", ".woff", From 1dc6458c6a668a79a277ac161604bbfef18d17e1 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sat, 27 Apr 2024 11:17:10 -0700 Subject: [PATCH 003/230] Update crawler.ts --- apps/api/src/scraper/WebScraper/crawler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/scraper/WebScraper/crawler.ts b/apps/api/src/scraper/WebScraper/crawler.ts index adc71c5..7bf9988 100644 --- a/apps/api/src/scraper/WebScraper/crawler.ts +++ b/apps/api/src/scraper/WebScraper/crawler.ts @@ -272,7 +272,7 @@ export class WebCrawler { ".woff", ".ttf", ".woff2", - ".webp", + ".webp" ]; return fileExtensions.some((ext) => url.endsWith(ext)); } From 3f460af6c5b52bd5bd458807e9b81119db2c6123 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Tue, 7 May 2024 15:29:27 -0300 Subject: [PATCH 004/230] Added idempotency key to crawl route --- .../src/__tests__/e2e_withAuth/index.test.ts | 25 +++++++++++++++++ apps/api/src/controllers/crawl.ts | 10 +++++++ apps/api/src/services/idempotency/create.ts | 22 +++++++++++++++ apps/api/src/services/idempotency/validate.ts | 27 +++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 apps/api/src/services/idempotency/create.ts create mode 100644 apps/api/src/services/idempotency/validate.ts diff --git a/apps/api/src/__tests__/e2e_withAuth/index.test.ts b/apps/api/src/__tests__/e2e_withAuth/index.test.ts index 5e3777b..da49a3a 100644 --- a/apps/api/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/api/src/__tests__/e2e_withAuth/index.test.ts @@ -1,6 +1,7 @@ import request from "supertest"; import { app } from "../../index"; import dotenv from "dotenv"; +import { v4 as uuidv4 } from "uuid"; dotenv.config(); @@ -145,6 +146,30 @@ describe("E2E Tests for API Routes", () => { /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/ ); }); + it('should prevent duplicate requests using the same idempotency key', async () => { + const uniqueIdempotencyKey = uuidv4(); + + // First request with the idempotency key + const firstResponse = await request(TEST_URL) + .post('/v0/crawl') + .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) + .set("Content-Type", "application/json") + .set("x-idempotency-key", uniqueIdempotencyKey) + .send({ url: 'https://mendable.ai' }); + + expect(firstResponse.statusCode).toBe(200); + + // Second request with the same idempotency key + const secondResponse = await request(TEST_URL) + .post('/v0/crawl') + .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) + .set("Content-Type", "application/json") + .set("x-idempotency-key", uniqueIdempotencyKey) + .send({ url: 'https://mendable.ai' }); + + expect(secondResponse.statusCode).toBe(409); + expect(secondResponse.body.error).toBe('Idempotency key already used'); + }); // Additional tests for insufficient credits? }); diff --git a/apps/api/src/controllers/crawl.ts b/apps/api/src/controllers/crawl.ts index e53faed..8d57354 100644 --- a/apps/api/src/controllers/crawl.ts +++ b/apps/api/src/controllers/crawl.ts @@ -7,6 +7,8 @@ import { RateLimiterMode } from "../../src/types"; import { addWebScraperJob } from "../../src/services/queue-jobs"; import { isUrlBlocked } from "../../src/scraper/WebScraper/utils/blocklist"; import { logCrawl } from "../../src/services/logging/crawl_log"; +import { validateIdempotencyKey } from "../../src/services/idempotency/validate"; +import { createIdempotencyKey } from "../../src/services/idempotency/create"; export async function crawlController(req: Request, res: Response) { try { @@ -19,6 +21,14 @@ export async function crawlController(req: Request, res: Response) { return res.status(status).json({ error }); } + if (req.headers["x-idempotency-key"]) { + const isIdempotencyValid = await validateIdempotencyKey(req); + if (!isIdempotencyValid) { + return res.status(409).json({ error: "Idempotency key already used" }); + } + createIdempotencyKey(req); + } + const { success: creditsCheckSuccess, message: creditsCheckMessage } = await checkTeamCredits(team_id, 1); if (!creditsCheckSuccess) { diff --git a/apps/api/src/services/idempotency/create.ts b/apps/api/src/services/idempotency/create.ts new file mode 100644 index 0000000..ec3e18e --- /dev/null +++ b/apps/api/src/services/idempotency/create.ts @@ -0,0 +1,22 @@ +import { Request } from "express"; +import { supabase_service } from "../supabase"; + +export async function createIdempotencyKey( + req: Request, +): Promise { + const idempotencyKey = req.headers['x-idempotency-key'] as string; + if (!idempotencyKey) { + throw new Error("No idempotency key provided in the request headers."); + } + + const { data, error } = await supabase_service + .from("idempotency_keys") + .insert({ key: idempotencyKey }); + + if (error) { + console.error("Failed to create idempotency key:", error); + throw error; + } + + return idempotencyKey; +} diff --git a/apps/api/src/services/idempotency/validate.ts b/apps/api/src/services/idempotency/validate.ts new file mode 100644 index 0000000..ef43739 --- /dev/null +++ b/apps/api/src/services/idempotency/validate.ts @@ -0,0 +1,27 @@ +import { Request } from "express"; +import { supabase_service } from "../supabase"; + +export async function validateIdempotencyKey( + req: Request, +): Promise { + const idempotencyKey = req.headers['x-idempotency-key']; + if (!idempotencyKey) { + // // not returning for missing idempotency key for now + return true; + } + + const { data, error } = await supabase_service + .from("idempotency_keys") + .select("key") + .eq("key", idempotencyKey); + + if (error) { + console.error(error); + } + + if (!data || data.length === 0) { + return true; + } + + return false; +} From 9f2e90be9746f25703e61edae75f8186346f9c75 Mon Sep 17 00:00:00 2001 From: Caleb Peffer <44934913+calebpeffer@users.noreply.github.com> Date: Thu, 9 May 2024 17:52:57 -0700 Subject: [PATCH 005/230] Update README.md Adding keywords to readme to improve github seo. Based on => https://bookface.ycombinator.com/posts/77363 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3b3968f..76a6faa 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 🔥 Firecrawl -Crawl and convert any website into LLM-ready markdown. Built by [Mendable.ai](https://mendable.ai?ref=gfirecrawl) and the firecrawl community. +Crawl and convert any website into LLM-ready markdown. Built by [Mendable.ai](https://mendable.ai?ref=gfirecrawl) and the firecrawl community. Includes powerful search/serp scraping, crawling, and data extraction capabilities. _This repository is in its early development stages. We are still merging custom modules in the mono repo. It's not completely yet ready for full self-host deployment, but you can already run it locally._ From bc6b929b43ffa0385c3243ae284c95919997e707 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Fri, 10 May 2024 12:15:54 -0300 Subject: [PATCH 006/230] [Bug] Fixing /crawl limit --- apps/api/src/scraper/WebScraper/crawler.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/api/src/scraper/WebScraper/crawler.ts b/apps/api/src/scraper/WebScraper/crawler.ts index 0248df2..1b371fd 100644 --- a/apps/api/src/scraper/WebScraper/crawler.ts +++ b/apps/api/src/scraper/WebScraper/crawler.ts @@ -25,7 +25,7 @@ export class WebCrawler { initialUrl, includes, excludes, - maxCrawledLinks, + maxCrawledLinks = 10000, limit = 10000, generateImgAltText = false, maxCrawledDepth = 10, @@ -136,7 +136,7 @@ export class WebCrawler { inProgress?: (progress: Progress) => void ): Promise { const queue = async.queue(async (task: string, callback) => { - if (this.crawledUrls.size >= this.maxCrawledLinks) { + if (this.crawledUrls.size >= Math.min(this.maxCrawledLinks, this.limit)) { if (callback && typeof callback === "function") { callback(); } @@ -147,14 +147,14 @@ export class WebCrawler { if (inProgress && newUrls.length > 0) { inProgress({ current: this.crawledUrls.size, - total: this.maxCrawledLinks, + total: Math.min(this.maxCrawledLinks, this.limit), status: "SCRAPING", currentDocumentUrl: newUrls[newUrls.length - 1], }); } else if (inProgress) { inProgress({ current: this.crawledUrls.size, - total: this.maxCrawledLinks, + total: Math.min(this.maxCrawledLinks, this.limit), status: "SCRAPING", currentDocumentUrl: task, }); From 86b8439844b97c7a35b679500a19e3aa24cf9178 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 13 May 2024 20:51:42 -0700 Subject: [PATCH 007/230] Nick: --- apps/api/src/scraper/WebScraper/crawler.ts | 5 +++-- apps/api/src/scraper/WebScraper/index.ts | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/api/src/scraper/WebScraper/crawler.ts b/apps/api/src/scraper/WebScraper/crawler.ts index 0248df2..ee29069 100644 --- a/apps/api/src/scraper/WebScraper/crawler.ts +++ b/apps/api/src/scraper/WebScraper/crawler.ts @@ -4,7 +4,7 @@ import { URL } from "url"; import { getLinksFromSitemap } from "./sitemap"; import async from "async"; import { Progress } from "../../lib/entities"; -import { scrapWithScrapingBee } from "./single_url"; +import { scrapSingleUrl, scrapWithScrapingBee } from "./single_url"; import robotsParser from "robots-parser"; export class WebCrawler { @@ -196,7 +196,8 @@ export class WebCrawler { let content; // If it is the first link, fetch with scrapingbee if (this.visited.size === 1) { - content = await scrapWithScrapingBee(url, "load"); + const page = await scrapSingleUrl(url, {includeHtml: true}); + content = page.html; } else { const response = await axios.get(url); content = response.data; diff --git a/apps/api/src/scraper/WebScraper/index.ts b/apps/api/src/scraper/WebScraper/index.ts index 7ef0a10..80f2d86 100644 --- a/apps/api/src/scraper/WebScraper/index.ts +++ b/apps/api/src/scraper/WebScraper/index.ts @@ -140,6 +140,7 @@ export class WebScraperDataProvider { generateImgAltText: this.generateImgAltText, }); let links = await crawler.start(inProgress, 5, this.limit, this.maxCrawledDepth); + if (this.returnOnlyUrls) { return this.returnOnlyUrlsResponse(links, inProgress); } @@ -163,6 +164,7 @@ export class WebScraperDataProvider { return this.returnOnlyUrlsResponse(links, inProgress); } + let documents = await this.processLinks(links, inProgress); return this.cacheAndFinalizeDocuments(documents, links); } @@ -237,6 +239,8 @@ export class WebScraperDataProvider { links: string[] ): Promise { await this.setCachedDocuments(documents, links); + documents = this.filterDocsExcludeInclude(documents); + documents = this.filterDepth(documents); documents = this.removeChildLinks(documents); return documents.splice(0, this.limit); } From 8101cbee37f6a54ce9b343f7081717874a323fe1 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 13 May 2024 21:02:47 -0700 Subject: [PATCH 008/230] Update index.ts --- apps/api/src/scraper/WebScraper/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/api/src/scraper/WebScraper/index.ts b/apps/api/src/scraper/WebScraper/index.ts index 80f2d86..a3ea6b6 100644 --- a/apps/api/src/scraper/WebScraper/index.ts +++ b/apps/api/src/scraper/WebScraper/index.ts @@ -240,7 +240,6 @@ export class WebScraperDataProvider { ): Promise { await this.setCachedDocuments(documents, links); documents = this.filterDocsExcludeInclude(documents); - documents = this.filterDepth(documents); documents = this.removeChildLinks(documents); return documents.splice(0, this.limit); } From 26a092f780a0a9e59aba21f6c7a5a92291e178ef Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 13 May 2024 21:04:49 -0700 Subject: [PATCH 009/230] Update index.ts --- apps/api/src/scraper/WebScraper/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/api/src/scraper/WebScraper/index.ts b/apps/api/src/scraper/WebScraper/index.ts index a3ea6b6..5745fdb 100644 --- a/apps/api/src/scraper/WebScraper/index.ts +++ b/apps/api/src/scraper/WebScraper/index.ts @@ -239,7 +239,6 @@ export class WebScraperDataProvider { links: string[] ): Promise { await this.setCachedDocuments(documents, links); - documents = this.filterDocsExcludeInclude(documents); documents = this.removeChildLinks(documents); return documents.splice(0, this.limit); } From 756f54466d37f00850343cc8ed57979a0d587c50 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 20 May 2024 17:24:21 -0700 Subject: [PATCH 010/230] Nick: allowed keywords for now --- apps/api/src/scraper/WebScraper/utils/blocklist.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/api/src/scraper/WebScraper/utils/blocklist.ts b/apps/api/src/scraper/WebScraper/utils/blocklist.ts index a50e42e..ededfc7 100644 --- a/apps/api/src/scraper/WebScraper/utils/blocklist.ts +++ b/apps/api/src/scraper/WebScraper/utils/blocklist.ts @@ -1,6 +1,7 @@ const socialMediaBlocklist = [ 'facebook.com', 'twitter.com', + 'x.com', 'instagram.com', 'linkedin.com', 'pinterest.com', @@ -14,12 +15,18 @@ const socialMediaBlocklist = [ 'telegram.org', ]; -const allowedUrls = [ - 'linkedin.com/pulse' +const allowedKeywords = [ + 'pulse', + 'privacy', + 'terms', + 'policy', + 'user-agreement', + 'legal', + 'help' ]; export function isUrlBlocked(url: string): boolean { - if (allowedUrls.some(allowedUrl => url.includes(allowedUrl))) { + if (allowedKeywords.some(keyword => url.includes(keyword))) { return false; } From 7f64fe884a57441ab1103fab8d8ca44a1e92bfd7 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 20 May 2024 17:26:01 -0700 Subject: [PATCH 011/230] Update blocklist.ts --- apps/api/src/scraper/WebScraper/utils/blocklist.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/api/src/scraper/WebScraper/utils/blocklist.ts b/apps/api/src/scraper/WebScraper/utils/blocklist.ts index ededfc7..c3d37c4 100644 --- a/apps/api/src/scraper/WebScraper/utils/blocklist.ts +++ b/apps/api/src/scraper/WebScraper/utils/blocklist.ts @@ -22,7 +22,14 @@ const allowedKeywords = [ 'policy', 'user-agreement', 'legal', - 'help' + 'help', + 'support', + 'contact', + 'about', + 'careers', + 'blog', + 'press', + 'conditions', ]; export function isUrlBlocked(url: string): boolean { From c47dae13a93d1b54680cb948230173f0de26c68a Mon Sep 17 00:00:00 2001 From: youqiang Date: Tue, 21 May 2024 14:53:57 +0800 Subject: [PATCH 012/230] update: wait until body attached in playwright-service --- apps/playwright-service/main.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/playwright-service/main.py b/apps/playwright-service/main.py index c28bc63..a044597 100644 --- a/apps/playwright-service/main.py +++ b/apps/playwright-service/main.py @@ -5,6 +5,7 @@ from pydantic import BaseModel app = FastAPI() + class UrlModel(BaseModel): url: str wait: int = None @@ -29,9 +30,12 @@ async def shutdown_event(): async def root(body: UrlModel): context = await browser.new_context() page = await context.new_page() - await page.goto(body.url, timeout=15000) # Set max timeout to 15s - if body.wait: # Check if wait parameter is provided in the request body - await page.wait_for_timeout(body.wait) # Convert seconds to milliseconds for playwright + await page.goto( + body.url, + wait_until="load", + timeout=body.wait if body.wait else 15, + ) + await page.wait_for_selector("body", state="attached") page_content = await page.content() await context.close() json_compatible_item_data = {"content": page_content} From f9ae1729b6beeb32bde3d3106baee6cc5bbf3bd6 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Wed, 22 May 2024 09:40:38 -0300 Subject: [PATCH 013/230] Update firecrawl.py --- apps/python-sdk/firecrawl/firecrawl.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 98cb8ed..b946686 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -45,7 +45,7 @@ class FirecrawlApp: ) if response.status_code == 200: response = response.json() - if response['success']: + if response['success'] and 'data' in response: return response['data'] else: raise Exception(f'Failed to scrape URL. Error: {response["error"]}') @@ -70,7 +70,7 @@ class FirecrawlApp: ) if response.status_code == 200: response = response.json() - if response['success'] == True: + if response['success'] and 'data' in response: return response['data'] else: raise Exception(f'Failed to search. Error: {response["error"]}') From 4dfc371241ede6fc615319f783da655e39d2e1fd Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Wed, 22 May 2024 14:38:41 -0300 Subject: [PATCH 014/230] Update index.test.ts --- apps/api/src/__tests__/e2e_withAuth/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/__tests__/e2e_withAuth/index.test.ts b/apps/api/src/__tests__/e2e_withAuth/index.test.ts index 331283e..39825c4 100644 --- a/apps/api/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/api/src/__tests__/e2e_withAuth/index.test.ts @@ -266,7 +266,7 @@ describe("E2E Tests for API Routes", () => { urls.forEach((url: string) => { expect(url.startsWith("https://wwww.mendable.ai/blog/")).toBeFalsy(); }); - }, 60000); // 60 seconds + }, 90000); // 90 seconds it("should return a successful response with a valid API key and limit to 3", async () => { const crawlResponse = await request(TEST_URL) From 3e63985e53bc795c4633b218b71d5851691fc585 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 22 May 2024 10:40:47 -0700 Subject: [PATCH 015/230] Update main.py --- apps/playwright-service/main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/playwright-service/main.py b/apps/playwright-service/main.py index a044597..544f113 100644 --- a/apps/playwright-service/main.py +++ b/apps/playwright-service/main.py @@ -35,7 +35,6 @@ async def root(body: UrlModel): wait_until="load", timeout=body.wait if body.wait else 15, ) - await page.wait_for_selector("body", state="attached") page_content = await page.content() await context.close() json_compatible_item_data = {"content": page_content} From 3aa5f266272039cda4fb6407d57a218623af6e93 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 22 May 2024 10:45:43 -0700 Subject: [PATCH 016/230] Update main.py --- apps/playwright-service/main.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/playwright-service/main.py b/apps/playwright-service/main.py index 544f113..a2f5e52 100644 --- a/apps/playwright-service/main.py +++ b/apps/playwright-service/main.py @@ -33,8 +33,12 @@ async def root(body: UrlModel): await page.goto( body.url, wait_until="load", - timeout=body.wait if body.wait else 15, + timeout=body.timeout if body.timeout else 15000, ) + # Wait != timeout. Wait is the time to wait after the page is loaded - useful in some cases were "load" / "networkidle" is not enough + if body.wait: + await page.wait_for_timeout(body.wait) + # await page.wait_for_selector("body", state="attached") page_content = await page.content() await context.close() json_compatible_item_data = {"content": page_content} From 4e39701644e724dd01bceebf4488aae1ed7b7900 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 22 May 2024 12:59:56 -0700 Subject: [PATCH 017/230] Update main.py --- apps/playwright-service/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/playwright-service/main.py b/apps/playwright-service/main.py index a2f5e52..8344adc 100644 --- a/apps/playwright-service/main.py +++ b/apps/playwright-service/main.py @@ -38,7 +38,7 @@ async def root(body: UrlModel): # Wait != timeout. Wait is the time to wait after the page is loaded - useful in some cases were "load" / "networkidle" is not enough if body.wait: await page.wait_for_timeout(body.wait) - # await page.wait_for_selector("body", state="attached") + page_content = await page.content() await context.close() json_compatible_item_data = {"content": page_content} From 8d041c05b461a8ecd3a90d17f47ce32611b429be Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 23 May 2024 08:00:56 +1000 Subject: [PATCH 018/230] rearranged logic for FIRECRAWL_API_URL It would not use the ENV unless the param was set to None which was counter-intuitive. --- apps/python-sdk/firecrawl/firecrawl.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 98cb8ed..2b7121a 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -4,11 +4,11 @@ import requests import time class FirecrawlApp: - def __init__(self, api_key=None, api_url='https://api.firecrawl.dev'): + def __init__(self, api_key: Optional[str] = None, api_url: Optional[str] = None) -> None: self.api_key = api_key or os.getenv('FIRECRAWL_API_KEY') if self.api_key is None: raise ValueError('No API key provided') - self.api_url = api_url or os.getenv('FIRECRAWL_API_URL') + self.api_url = api_url or os.getenv('FIRECRAWL_API_URL', 'https://api.firecrawl.dev') From 971e1f85c45341645214d0f8ea3fa5de202e78fb Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 23 May 2024 08:03:58 +1000 Subject: [PATCH 019/230] Added module docstring PyLint C0114 - missing-module-docstring --- apps/python-sdk/firecrawl/firecrawl.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 2b7121a..23934cf 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -1,3 +1,15 @@ +""" +FirecrawlApp Module + +This module provides a class `FirecrawlApp` for interacting with the Firecrawl API. +It includes methods to scrape URLs, perform searches, initiate and monitor crawl jobs, +and check the status of these jobs. The module uses requests for HTTP communication +and handles retries for certain HTTP status codes. + +Classes: + - FirecrawlApp: Main class for interacting with the Firecrawl API. +""" + import os from typing import Any, Dict, Optional import requests From 8adf2b71322238823fc5c770723bcaca548311a6 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 23 May 2024 08:20:32 +1000 Subject: [PATCH 020/230] Added Docstrings for functions PyLint C0116: Missing function or method docstring (missing-function-docstring) --- apps/python-sdk/firecrawl/firecrawl.py | 128 ++++++++++++++++++++++++- 1 file changed, 126 insertions(+), 2 deletions(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 23934cf..9aa9359 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -11,11 +11,20 @@ Classes: """ import os -from typing import Any, Dict, Optional -import requests import time +from typing import Any, Dict, Optional + +import requests + class FirecrawlApp: + """ + Initialize the FirecrawlApp instance. + + Args: + api_key (Optional[str]): API key for authenticating with the Firecrawl API. + api_url (Optional[str]): Base URL for the Firecrawl API. + """ def __init__(self, api_key: Optional[str] = None, api_url: Optional[str] = None) -> None: self.api_key = api_key or os.getenv('FIRECRAWL_API_KEY') if self.api_key is None: @@ -25,6 +34,20 @@ class FirecrawlApp: def scrape_url(self, url: str, params: Optional[Dict[str, Any]] = None) -> Any: + """ + Scrape the specified URL using the Firecrawl API. + + Args: + url (str): The URL to scrape. + params (Optional[Dict[str, Any]]): Additional parameters for the scrape request. + + Returns: + Any: The scraped data if the request is successful. + + Raises: + Exception: If the scrape request fails. + """ + headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {self.api_key}' @@ -68,6 +91,19 @@ class FirecrawlApp: raise Exception(f'Failed to scrape URL. Status code: {response.status_code}') def search(self, query, params=None): + """ + Perform a search using the Firecrawl API. + + Args: + query (str): The search query. + params (Optional[Dict[str, Any]]): Additional parameters for the search request. + + Returns: + Any: The search results if the request is successful. + + Raises: + Exception: If the search request fails. + """ headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {self.api_key}' @@ -94,6 +130,21 @@ class FirecrawlApp: raise Exception(f'Failed to search. Status code: {response.status_code}') def crawl_url(self, url, params=None, wait_until_done=True, timeout=2): + """ + Initiate a crawl job for the specified URL using the Firecrawl API. + + Args: + url (str): The URL to crawl. + params (Optional[Dict[str, Any]]): Additional parameters for the crawl request. + wait_until_done (bool): Whether to wait until the crawl job is completed. + timeout (int): Timeout between status checks when waiting for job completion. + + Returns: + Any: The crawl job ID or the crawl results if waiting until completion. + + Raises: + Exception: If the crawl job initiation or monitoring fails. + """ headers = self._prepare_headers() json_data = {'url': url} if params: @@ -109,6 +160,18 @@ class FirecrawlApp: self._handle_error(response, 'start crawl job') def check_crawl_status(self, job_id): + """ + Check the status of a crawl job using the Firecrawl API. + + Args: + job_id (str): The ID of the crawl job. + + Returns: + Any: The status of the crawl job. + + Raises: + Exception: If the status check request fails. + """ headers = self._prepare_headers() response = self._get_request(f'{self.api_url}/v0/crawl/status/{job_id}', headers) if response.status_code == 200: @@ -117,12 +180,34 @@ class FirecrawlApp: self._handle_error(response, 'check crawl status') def _prepare_headers(self): + """ + Prepare the headers for API requests. + + Returns: + Dict[str, str]: The headers including content type and authorization. + """ return { 'Content-Type': 'application/json', 'Authorization': f'Bearer {self.api_key}' } def _post_request(self, url, data, headers, retries=3, backoff_factor=0.5): + """ + Make a POST request with retries. + + Args: + url (str): The URL to send the POST request to. + data (Dict[str, Any]): The JSON data to include in the POST request. + headers (Dict[str, str]): The headers to include in the POST request. + retries (int): Number of retries for the request. + backoff_factor (float): Backoff factor for retries. + + Returns: + requests.Response: The response from the POST request. + + Raises: + requests.RequestException: If the request fails after the specified retries. + """ for attempt in range(retries): response = requests.post(url, headers=headers, json=data) if response.status_code == 502: @@ -132,6 +217,21 @@ class FirecrawlApp: return response def _get_request(self, url, headers, retries=3, backoff_factor=0.5): + """ + Make a GET request with retries. + + Args: + url (str): The URL to send the GET request to. + headers (Dict[str, str]): The headers to include in the GET request. + retries (int): Number of retries for the request. + backoff_factor (float): Backoff factor for retries. + + Returns: + requests.Response: The response from the GET request. + + Raises: + requests.RequestException: If the request fails after the specified retries. + """ for attempt in range(retries): response = requests.get(url, headers=headers) if response.status_code == 502: @@ -141,6 +241,20 @@ class FirecrawlApp: return response def _monitor_job_status(self, job_id, headers, timeout): + """ + Monitor the status of a crawl job until completion. + + Args: + job_id (str): The ID of the crawl job. + headers (Dict[str, str]): The headers to include in the status check requests. + timeout (int): Timeout between status checks. + + Returns: + Any: The crawl results if the job is completed successfully. + + Raises: + Exception: If the job fails or an error occurs during status checks. + """ import time while True: status_response = self._get_request(f'{self.api_url}/v0/crawl/status/{job_id}', headers) @@ -161,6 +275,16 @@ class FirecrawlApp: self._handle_error(status_response, 'check crawl status') def _handle_error(self, response, action): + """ + Handle errors from API responses. + + Args: + response (requests.Response): The response object from the API request. + action (str): Description of the action that was being performed. + + Raises: + Exception: An exception with a message containing the status code and error details from the response. + """ if response.status_code in [402, 408, 409, 500]: error_message = response.json().get('error', 'Unknown error occurred') raise Exception(f'Failed to {action}. Status code: {response.status_code}. Error: {error_message}') From 6216c8532295ba1d8abdd9d944c4708cf66f3036 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 23 May 2024 08:21:32 +1000 Subject: [PATCH 021/230] Time module already imported Pylint W0404: Reimport 'time' (imported line 16) (reimported) C0415: Import outside toplevel (time) (import-outside-toplevel) --- apps/python-sdk/firecrawl/firecrawl.py | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 9aa9359..d96db4e 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -255,7 +255,6 @@ class FirecrawlApp: Raises: Exception: If the job fails or an error occurs during status checks. """ - import time while True: status_response = self._get_request(f'{self.api_url}/v0/crawl/status/{job_id}', headers) if status_response.status_code == 200: From 96b19172a167467a9fba9dfc018fc27e595c9056 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 23 May 2024 08:30:23 +1000 Subject: [PATCH 022/230] Removed trailing whitespace PyLint C0303: Trailing whitespace (trailing-whitespace) --- apps/python-sdk/firecrawl/firecrawl.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index d96db4e..7612e5d 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -30,9 +30,6 @@ class FirecrawlApp: if self.api_key is None: raise ValueError('No API key provided') self.api_url = api_url or os.getenv('FIRECRAWL_API_URL', 'https://api.firecrawl.dev') - - - def scrape_url(self, url: str, params: Optional[Dict[str, Any]] = None) -> Any: """ Scrape the specified URL using the Firecrawl API. @@ -54,7 +51,7 @@ class FirecrawlApp: } # Prepare the base scrape parameters with the URL scrape_params = {'url': url} - + # If there are additional params, process them if params: # Initialize extractorOptions if present @@ -67,7 +64,7 @@ class FirecrawlApp: extractor_options['mode'] = extractor_options.get('mode', 'llm-extraction') # Update the scrape_params with the processed extractorOptions scrape_params['extractorOptions'] = extractor_options - + # Include any other params directly at the top level of scrape_params for key, value in params.items(): if key != 'extractorOptions': @@ -89,7 +86,7 @@ class FirecrawlApp: raise Exception(f'Failed to scrape URL. Status code: {response.status_code}. Error: {error_message}') else: raise Exception(f'Failed to scrape URL. Status code: {response.status_code}') - + def search(self, query, params=None): """ Perform a search using the Firecrawl API. @@ -122,7 +119,7 @@ class FirecrawlApp: return response['data'] else: raise Exception(f'Failed to search. Error: {response["error"]}') - + elif response.status_code in [402, 409, 500]: error_message = response.json().get('error', 'Unknown error occurred') raise Exception(f'Failed to search. Status code: {response.status_code}. Error: {error_message}') @@ -283,7 +280,7 @@ class FirecrawlApp: Raises: Exception: An exception with a message containing the status code and error details from the response. - """ + """ if response.status_code in [402, 408, 409, 500]: error_message = response.json().get('error', 'Unknown error occurred') raise Exception(f'Failed to {action}. Status code: {response.status_code}. Error: {error_message}') From 7d2efe5acb5595c53323565046564927143370de Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 23 May 2024 08:39:19 +1000 Subject: [PATCH 023/230] Added request timeouts connection timeout to 5 seconds and the response timeout to 10 PyLint W3101 --- apps/python-sdk/firecrawl/firecrawl.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 7612e5d..d986407 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -73,7 +73,8 @@ class FirecrawlApp: response = requests.post( f'{self.api_url}/v0/scrape', headers=headers, - json=scrape_params + json=scrape_params, + timeout=(5,10) ) if response.status_code == 200: response = response.json() @@ -111,7 +112,8 @@ class FirecrawlApp: response = requests.post( f'{self.api_url}/v0/search', headers=headers, - json=json_data + json=json_data, + timeout=(5,10) ) if response.status_code == 200: response = response.json() From 48e91c89e7bbd97af388c8edcc3cdc173572d3f5 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 23 May 2024 08:42:07 +1000 Subject: [PATCH 024/230] Removed unnecessary If block PyLint R1731 --- apps/python-sdk/firecrawl/firecrawl.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index d986407..62db7a2 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -264,8 +264,7 @@ class FirecrawlApp: else: raise Exception('Crawl job completed but no data was returned') elif status_data['status'] in ['active', 'paused', 'pending', 'queued']: - if timeout < 2: - timeout = 2 + timeout=max(timeout,2) time.sleep(timeout) # Wait for the specified timeout before checking again else: raise Exception(f'Crawl job failed or was stopped. Status: {status_data["status"]}') From 5c21aed9c783beb6775c551a8a1f631778ca1af7 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 23 May 2024 08:45:56 +1000 Subject: [PATCH 025/230] adding pylintrc to allow longer lines --- apps/python-sdk/.pylintrc | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 apps/python-sdk/.pylintrc diff --git a/apps/python-sdk/.pylintrc b/apps/python-sdk/.pylintrc new file mode 100644 index 0000000..a580885 --- /dev/null +++ b/apps/python-sdk/.pylintrc @@ -0,0 +1,2 @@ +[FORMAT] +max-line-length = 120 \ No newline at end of file From 106c18d11f851595413256210af3d0f7158ba8f9 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 23 May 2024 08:57:53 +1000 Subject: [PATCH 026/230] Use truthiness check for 'success' key in API response PyLint C0121 --- apps/python-sdk/firecrawl/firecrawl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 62db7a2..9e3011c 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -117,7 +117,7 @@ class FirecrawlApp: ) if response.status_code == 200: response = response.json() - if response['success'] == True: + if response['success']: return response['data'] else: raise Exception(f'Failed to search. Error: {response["error"]}') From 184e4678f1ba08bb26863b2351703560c56592e0 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Thu, 23 May 2024 11:47:04 -0300 Subject: [PATCH 027/230] bugfix on idempotency key check --- apps/api/src/controllers/crawl.ts | 7 ++++++- apps/api/src/services/idempotency/validate.ts | 5 +++++ apps/js-sdk/example.js | 4 +++- apps/js-sdk/firecrawl/build/index.js | 16 ++++++---------- apps/js-sdk/firecrawl/src/index.ts | 10 ++++++---- apps/js-sdk/firecrawl/types/index.d.ts | 5 +++-- apps/js-sdk/package-lock.json | 15 ++++++++++++++- apps/js-sdk/package.json | 3 ++- 8 files changed, 45 insertions(+), 20 deletions(-) diff --git a/apps/api/src/controllers/crawl.ts b/apps/api/src/controllers/crawl.ts index 8d57354..5345b4f 100644 --- a/apps/api/src/controllers/crawl.ts +++ b/apps/api/src/controllers/crawl.ts @@ -26,7 +26,12 @@ export async function crawlController(req: Request, res: Response) { if (!isIdempotencyValid) { return res.status(409).json({ error: "Idempotency key already used" }); } - createIdempotencyKey(req); + try { + createIdempotencyKey(req); + } catch (error) { + console.error(error); + return res.status(500).json({ error: error.message }); + } } const { success: creditsCheckSuccess, message: creditsCheckMessage } = diff --git a/apps/api/src/services/idempotency/validate.ts b/apps/api/src/services/idempotency/validate.ts index ef43739..ad6f2c4 100644 --- a/apps/api/src/services/idempotency/validate.ts +++ b/apps/api/src/services/idempotency/validate.ts @@ -1,5 +1,6 @@ import { Request } from "express"; import { supabase_service } from "../supabase"; +import { validate as isUuid } from 'uuid'; export async function validateIdempotencyKey( req: Request, @@ -9,6 +10,10 @@ export async function validateIdempotencyKey( // // not returning for missing idempotency key for now return true; } + if (!isUuid(idempotencyKey)) { + console.error("Invalid idempotency key provided in the request headers."); + return false; + } const { data, error } = await supabase_service .from("idempotency_keys") diff --git a/apps/js-sdk/example.js b/apps/js-sdk/example.js index 7077b4c..e61457a 100644 --- a/apps/js-sdk/example.js +++ b/apps/js-sdk/example.js @@ -1,8 +1,10 @@ +import { v4 as uuidv4 } from 'uuid'; import FirecrawlApp from '@mendable/firecrawl-js'; const app = new FirecrawlApp({apiKey: "YOUR_API_KEY"}); -const crawlResult = await app.crawlUrl('mendable.ai', {crawlerOptions: {excludes: ['blog/*'], limit: 5}}, false); +const idempotencyKey = uuidv4(); // optional +const crawlResult = await app.crawlUrl('mendable.ai', {crawlerOptions: {excludes: ['blog/*'], limit: 5}}, false, 2, idempotencyKey); console.log(crawlResult) const jobId = await crawlResult['jobId']; diff --git a/apps/js-sdk/firecrawl/build/index.js b/apps/js-sdk/firecrawl/build/index.js index 9d8237b..b93c277 100644 --- a/apps/js-sdk/firecrawl/build/index.js +++ b/apps/js-sdk/firecrawl/build/index.js @@ -8,8 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; import axios from 'axios'; -import dotenv from 'dotenv'; -dotenv.config(); /** * Main class for interacting with the Firecrawl API. */ @@ -19,7 +17,7 @@ export default class FirecrawlApp { * @param {FirecrawlAppConfig} config - Configuration options for the FirecrawlApp instance. */ constructor({ apiKey = null }) { - this.apiKey = apiKey || process.env.FIRECRAWL_API_KEY || ''; + this.apiKey = apiKey || ''; if (!this.apiKey) { throw new Error('No API key provided'); } @@ -104,11 +102,12 @@ export default class FirecrawlApp { * @param {Params | null} params - Additional parameters for the crawl request. * @param {boolean} waitUntilDone - Whether to wait for the crawl job to complete. * @param {number} timeout - Timeout in seconds for job status checks. + * @param {string} idempotencyKey - Optional idempotency key for the request. * @returns {Promise} The response from the crawl operation. */ crawlUrl(url_1) { - return __awaiter(this, arguments, void 0, function* (url, params = null, waitUntilDone = true, timeout = 2) { - const headers = this.prepareHeaders(); + return __awaiter(this, arguments, void 0, function* (url, params = null, waitUntilDone = true, timeout = 2, idempotencyKey) { + const headers = this.prepareHeaders(idempotencyKey); let jsonData = { url }; if (params) { jsonData = Object.assign(Object.assign({}, jsonData), params); @@ -162,11 +161,8 @@ export default class FirecrawlApp { * Prepares the headers for an API request. * @returns {AxiosRequestHeaders} The prepared headers. */ - prepareHeaders() { - return { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${this.apiKey}`, - }; + prepareHeaders(idempotencyKey) { + return Object.assign({ 'Content-Type': 'application/json', 'Authorization': `Bearer ${this.apiKey}` }, (idempotencyKey ? { 'x-idempotency-key': idempotencyKey } : {})); } /** * Sends a POST request to the specified URL. diff --git a/apps/js-sdk/firecrawl/src/index.ts b/apps/js-sdk/firecrawl/src/index.ts index aea15f8..67ff67c 100644 --- a/apps/js-sdk/firecrawl/src/index.ts +++ b/apps/js-sdk/firecrawl/src/index.ts @@ -141,10 +141,11 @@ export default class FirecrawlApp { * @param {Params | null} params - Additional parameters for the crawl request. * @param {boolean} waitUntilDone - Whether to wait for the crawl job to complete. * @param {number} timeout - Timeout in seconds for job status checks. + * @param {string} idempotencyKey - Optional idempotency key for the request. * @returns {Promise} The response from the crawl operation. */ - async crawlUrl(url: string, params: Params | null = null, waitUntilDone: boolean = true, timeout: number = 2): Promise { - const headers = this.prepareHeaders(); + async crawlUrl(url: string, params: Params | null = null, waitUntilDone: boolean = true, timeout: number = 2, idempotencyKey?: string): Promise { + const headers = this.prepareHeaders(idempotencyKey); let jsonData: Params = { url }; if (params) { jsonData = { ...jsonData, ...params }; @@ -192,11 +193,12 @@ export default class FirecrawlApp { * Prepares the headers for an API request. * @returns {AxiosRequestHeaders} The prepared headers. */ - prepareHeaders(): AxiosRequestHeaders { + prepareHeaders(idempotencyKey?: string): AxiosRequestHeaders { return { 'Content-Type': 'application/json', 'Authorization': `Bearer ${this.apiKey}`, - } as AxiosRequestHeaders; + ...(idempotencyKey ? { 'x-idempotency-key': idempotencyKey } : {}), + } as AxiosRequestHeaders & { 'x-idempotency-key'?: string }; } /** diff --git a/apps/js-sdk/firecrawl/types/index.d.ts b/apps/js-sdk/firecrawl/types/index.d.ts index 7f79d64..9828f22 100644 --- a/apps/js-sdk/firecrawl/types/index.d.ts +++ b/apps/js-sdk/firecrawl/types/index.d.ts @@ -76,9 +76,10 @@ export default class FirecrawlApp { * @param {Params | null} params - Additional parameters for the crawl request. * @param {boolean} waitUntilDone - Whether to wait for the crawl job to complete. * @param {number} timeout - Timeout in seconds for job status checks. + * @param {string} idempotencyKey - Optional idempotency key for the request. * @returns {Promise} The response from the crawl operation. */ - crawlUrl(url: string, params?: Params | null, waitUntilDone?: boolean, timeout?: number): Promise; + crawlUrl(url: string, params?: Params | null, waitUntilDone?: boolean, timeout?: number, idempotencyKey?: string): Promise; /** * Checks the status of a crawl job using the Firecrawl API. * @param {string} jobId - The job ID of the crawl operation. @@ -89,7 +90,7 @@ export default class FirecrawlApp { * Prepares the headers for an API request. * @returns {AxiosRequestHeaders} The prepared headers. */ - prepareHeaders(): AxiosRequestHeaders; + prepareHeaders(idempotencyKey?: string): AxiosRequestHeaders; /** * Sends a POST request to the specified URL. * @param {string} url - The URL to send the request to. diff --git a/apps/js-sdk/package-lock.json b/apps/js-sdk/package-lock.json index 363f301..aea3322 100644 --- a/apps/js-sdk/package-lock.json +++ b/apps/js-sdk/package-lock.json @@ -10,7 +10,8 @@ "license": "ISC", "dependencies": { "@mendable/firecrawl-js": "^0.0.15", - "axios": "^1.6.8" + "axios": "^1.6.8", + "uuid": "^9.0.1" } }, "node_modules/@mendable/firecrawl-js": { @@ -122,6 +123,18 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } } } } diff --git a/apps/js-sdk/package.json b/apps/js-sdk/package.json index 563e1e3..c0ac6f1 100644 --- a/apps/js-sdk/package.json +++ b/apps/js-sdk/package.json @@ -12,6 +12,7 @@ "license": "ISC", "dependencies": { "@mendable/firecrawl-js": "^0.0.15", - "axios": "^1.6.8" + "axios": "^1.6.8", + "uuid": "^9.0.1" } } From c201ea1986c82b4b9f81a0f3e339fe3d6f18ee47 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Thu, 23 May 2024 12:52:59 -0300 Subject: [PATCH 028/230] added idempotency key to python sdk --- apps/js-sdk/firecrawl/build/index.js | 2 +- apps/js-sdk/firecrawl/package.json | 2 +- apps/python-sdk/example.py | 6 ++++-- apps/python-sdk/firecrawl/firecrawl.py | 14 ++++++++++---- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/js-sdk/firecrawl/build/index.js b/apps/js-sdk/firecrawl/build/index.js index 2a258cf..76edfe5 100644 --- a/apps/js-sdk/firecrawl/build/index.js +++ b/apps/js-sdk/firecrawl/build/index.js @@ -19,7 +19,7 @@ export default class FirecrawlApp { * @param {FirecrawlAppConfig} config - Configuration options for the FirecrawlApp instance. */ constructor({ apiKey = null }) { - this.apiKey = apiKey || ''; + this.apiKey = apiKey || ""; if (!this.apiKey) { throw new Error("No API key provided"); } diff --git a/apps/js-sdk/firecrawl/package.json b/apps/js-sdk/firecrawl/package.json index 3bacdf4..e43f6ea 100644 --- a/apps/js-sdk/firecrawl/package.json +++ b/apps/js-sdk/firecrawl/package.json @@ -1,6 +1,6 @@ { "name": "@mendable/firecrawl-js", - "version": "0.0.21", + "version": "0.0.22", "description": "JavaScript SDK for Firecrawl API", "main": "build/index.js", "types": "types/index.d.ts", diff --git a/apps/python-sdk/example.py b/apps/python-sdk/example.py index d83be6d..d80fa79 100644 --- a/apps/python-sdk/example.py +++ b/apps/python-sdk/example.py @@ -1,4 +1,5 @@ -from firecrawl import FirecrawlApp +import uuid +from firecrawl.firecrawl import FirecrawlApp app = FirecrawlApp(api_key="fc-YOUR_API_KEY") @@ -7,7 +8,8 @@ scrape_result = app.scrape_url('firecrawl.dev') print(scrape_result['markdown']) # Crawl a website: -crawl_result = app.crawl_url('mendable.ai', {'crawlerOptions': {'excludes': ['blog/*']}}) +idempotency_key = str(uuid.uuid4()) # optional idempotency key +crawl_result = app.crawl_url('mendable.ai', {'crawlerOptions': {'excludes': ['blog/*']}}, True, 2, idempotency_key) print(crawl_result) # LLM Extraction: diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 98cb8ed..1f59ec7 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -81,8 +81,8 @@ class FirecrawlApp: else: raise Exception(f'Failed to search. Status code: {response.status_code}') - def crawl_url(self, url, params=None, wait_until_done=True, timeout=2): - headers = self._prepare_headers() + def crawl_url(self, url, params=None, wait_until_done=True, timeout=2, idempotency_key=None): + headers = self._prepare_headers(idempotency_key) json_data = {'url': url} if params: json_data.update(params) @@ -104,10 +104,16 @@ class FirecrawlApp: else: self._handle_error(response, 'check crawl status') - def _prepare_headers(self): + def _prepare_headers(self, idempotency_key=None): + if idempotency_key: + return { + 'Content-Type': 'application/json', + 'Authorization': f'Bearer {self.api_key}', + 'x-idempotency-key': idempotency_key + } return { 'Content-Type': 'application/json', - 'Authorization': f'Bearer {self.api_key}' + 'Authorization': f'Bearer {self.api_key}', } def _post_request(self, url, data, headers, retries=3, backoff_factor=0.5): From 9562c837eb757f49174d05c8ae3869645b7f5859 Mon Sep 17 00:00:00 2001 From: Rafael Miller <150964962+rafaelsideguide@users.noreply.github.com> Date: Fri, 24 May 2024 09:34:43 -0300 Subject: [PATCH 029/230] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 35 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 26 +++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..bb47b47 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,35 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "[BUG]" +labels: bug +assignees: '' + +--- + +**Describe the Bug** +Provide a clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the issue: +1. Configure the environment or settings with '...' +2. Run the command '...' +3. Observe the error or unexpected output at '...' +4. Log output/error message + +**Expected Behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots or copies of the command line output to help explain the issue. + +**Environment (please complete the following information):** +- OS: [e.g. macOS, Linux, Windows] +- Firecrawl Version: [e.g. 1.2.3] +- Node.js Version: [e.g. 14.x] + +**Logs** +If applicable, include detailed logs to help understand the problem. + +**Additional Context** +Add any other context about the problem here, such as configuration specifics, network conditions, data volumes, etc. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..b01699b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,26 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "[Feat]" +labels: '' +assignees: '' + +--- + +**Problem Description** +Describe the issue you're experiencing that has prompted this feature request. For example, "I find it difficult when..." + +**Proposed Feature** +Provide a clear and concise description of the feature you would like implemented. + +**Alternatives Considered** +Discuss any alternative solutions or features you've considered. Why were these alternatives not suitable? + +**Implementation Suggestions** +If you have ideas on how the feature could be implemented, share them here. This could include technical details, API changes, or interaction mechanisms. + +**Use Case** +Explain how this feature would be used and what benefits it would bring. Include specific examples to illustrate how this would improve functionality or user experience. + +**Additional Context** +Add any other context such as comparisons with similar features in other products, or links to prototypes or mockups. From b001aded46a620021f0265db683c17ab3fc46793 Mon Sep 17 00:00:00 2001 From: Jakob Stadlhuber Date: Fri, 24 May 2024 17:41:34 +0200 Subject: [PATCH 030/230] Add proxy and media blocking configurations Updated environment variables and application settings to include proxy configurations and media blocking option. The proxy settings allow users to use a proxy service, while the media blocking is an optional feature that can help save bandwidth. Changes have been made in the .env.example, docker-compose.yaml, and main.py files. --- apps/api/.env.example | 9 ++++++++- apps/playwright-service/main.py | 20 +++++++++++++++++++- docker-compose.yaml | 4 ++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/apps/api/.env.example b/apps/api/.env.example index 659d68f..0ba20e8 100644 --- a/apps/api/.env.example +++ b/apps/api/.env.example @@ -35,4 +35,11 @@ STRIPE_PRICE_ID_SCALE= HYPERDX_API_KEY= HDX_NODE_BETA_MODE=1 -FIRE_ENGINE_BETA_URL= # set if you'd like to use the fire engine closed beta \ No newline at end of file +FIRE_ENGINE_BETA_URL= # set if you'd like to use the fire engine closed beta + +# Proxy Settings (Alternative you can can use a proxy service like oxylabs, which rotates IPs for you on every request) +PROXY_SERVER= +PROXY_USERNAME= +PROXY_PASSWORD= +# set if you'd like to block media requests to save proxy bandwidth +BLOCK_MEDIA= \ No newline at end of file diff --git a/apps/playwright-service/main.py b/apps/playwright-service/main.py index c28bc63..337d283 100644 --- a/apps/playwright-service/main.py +++ b/apps/playwright-service/main.py @@ -2,9 +2,16 @@ from fastapi import FastAPI from playwright.async_api import async_playwright, Browser from fastapi.responses import JSONResponse from pydantic import BaseModel +from os import environ + +PROXY_SERVER = environ.get('PROXY_SERVER', None) +PROXY_USERNAME = environ.get('PROXY_USERNAME', None) +PROXY_PASSWORD = environ.get('PROXY_PASSWORD', None) +BLOCK_MEDIA = environ.get('BLOCK_MEDIA', 'False').upper() == 'TRUE' app = FastAPI() + class UrlModel(BaseModel): url: str wait: int = None @@ -27,7 +34,18 @@ async def shutdown_event(): @app.post("/html") async def root(body: UrlModel): - context = await browser.new_context() + context = None + if PROXY_SERVER and PROXY_USERNAME and PROXY_PASSWORD: + context = await browser.new_context(proxy={"server": PROXY_SERVER, + "username": PROXY_USERNAME, + "password": PROXY_PASSWORD}) + else: + context = await browser.new_context() + + if BLOCK_MEDIA: + await context.route("**/*.{png,jpg,jpeg,gif,svg,mp3,mp4,avi,flac,ogg,wav,webm}", + handler=lambda route, request: route.abort()) + page = await context.new_page() await page.goto(body.url, timeout=15000) # Set max timeout to 15s if body.wait: # Check if wait parameter is provided in the request body diff --git a/docker-compose.yaml b/docker-compose.yaml index 049672d..c95ccc9 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,6 +5,10 @@ services: build: apps/playwright-service environment: - PORT=3000 + - PROXY_SERVER=${PROXY_SERVER} + - PROXY_USERNAME=${PROXY_USERNAME} + - PROXY_PASSWORD=${PROXY_PASSWORD} + - BLOCK_MEDIA=${BLOCK_MEDIA} networks: - backend From 9fc5a0ff98492c9c6bfba517f995e2c36cb2569a Mon Sep 17 00:00:00 2001 From: Jakob Stadlhuber Date: Fri, 24 May 2024 17:45:59 +0200 Subject: [PATCH 031/230] Update comment in .env.example for proxy settings This commit modifies the comment in .env.example to specify that proxy settings are for Playwright. This clarification aims to provide users a more clear context about when and why these proxy settings are used. --- apps/api/.env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/.env.example b/apps/api/.env.example index 0ba20e8..735444b 100644 --- a/apps/api/.env.example +++ b/apps/api/.env.example @@ -37,7 +37,7 @@ HDX_NODE_BETA_MODE=1 FIRE_ENGINE_BETA_URL= # set if you'd like to use the fire engine closed beta -# Proxy Settings (Alternative you can can use a proxy service like oxylabs, which rotates IPs for you on every request) +# Proxy Settings for Playwright (Alternative you can can use a proxy service like oxylabs, which rotates IPs for you on every request) PROXY_SERVER= PROXY_USERNAME= PROXY_PASSWORD= From 53a7ec0f6eee6a1cb22d7ea174b489e042e5bbb3 Mon Sep 17 00:00:00 2001 From: Rafael Miller <150964962+rafaelsideguide@users.noreply.github.com> Date: Fri, 24 May 2024 13:46:16 -0300 Subject: [PATCH 032/230] Removed hard coded timeout --- apps/python-sdk/firecrawl/firecrawl.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 9e3011c..1826605 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -74,7 +74,6 @@ class FirecrawlApp: f'{self.api_url}/v0/scrape', headers=headers, json=scrape_params, - timeout=(5,10) ) if response.status_code == 200: response = response.json() @@ -112,8 +111,7 @@ class FirecrawlApp: response = requests.post( f'{self.api_url}/v0/search', headers=headers, - json=json_data, - timeout=(5,10) + json=json_data ) if response.status_code == 200: response = response.json() From 8c380d70a5f37cf8ac54a090c1159909ba99fa97 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 24 May 2024 09:48:48 -0700 Subject: [PATCH 033/230] Update firecrawl.py --- apps/python-sdk/firecrawl/firecrawl.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/python-sdk/firecrawl/firecrawl.py b/apps/python-sdk/firecrawl/firecrawl.py index 0e4fc3e..f28a057 100644 --- a/apps/python-sdk/firecrawl/firecrawl.py +++ b/apps/python-sdk/firecrawl/firecrawl.py @@ -115,11 +115,8 @@ class FirecrawlApp: ) if response.status_code == 200: response = response.json() -<<<<<<< main - if response['success']: -======= + if response['success'] and 'data' in response: ->>>>>>> main return response['data'] else: raise Exception(f'Failed to search. Error: {response["error"]}') From 397769c7e3579ca2709f127642def7a040249c58 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Fri, 24 May 2024 17:56:27 -0300 Subject: [PATCH 034/230] added python sdk e2e tests with pytest some of them are still missing though --- apps/python-sdk/README.md | 19 ++++ .../__tests__/e2e_withAuth/__init__.py | 0 .../firecrawl/__tests__/e2e_withAuth/test.py | 96 +++++++++++++++++++ apps/python-sdk/setup.py | 1 + 4 files changed, 116 insertions(+) create mode 100644 apps/python-sdk/firecrawl/__tests__/e2e_withAuth/__init__.py create mode 100644 apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py diff --git a/apps/python-sdk/README.md b/apps/python-sdk/README.md index 38ca843..ae09973 100644 --- a/apps/python-sdk/README.md +++ b/apps/python-sdk/README.md @@ -117,6 +117,25 @@ status = app.check_crawl_status(job_id) The SDK handles errors returned by the Firecrawl API and raises appropriate exceptions. If an error occurs during a request, an exception will be raised with a descriptive error message. +## Running the Tests with Pytest + +To ensure the functionality of the Firecrawl Python SDK, we have included end-to-end tests using `pytest`. These tests cover various aspects of the SDK, including URL scraping, web searching, and website crawling. + +### Running the Tests + +To run the tests, execute the following commands: + +Install pytest: +```bash +pip install pytest +``` + +Run: +```bash +pytest firecrawl/__tests__/e2e_withAuth/test.py +``` + + ## Contributing Contributions to the Firecrawl Python SDK are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on the GitHub repository. diff --git a/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/__init__.py b/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py b/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py new file mode 100644 index 0000000..11b66e9 --- /dev/null +++ b/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py @@ -0,0 +1,96 @@ +import pytest +from firecrawl import FirecrawlApp + +TEST_API_KEY = "fc-YOUR_API_KEY" +TEST_URL = "https://firecrawl.dev" + +def test_scrape_url_e2e(): + app = FirecrawlApp(api_key=TEST_API_KEY) + response = app.scrape_url(TEST_URL) + print(response) + assert response is not None + assert 'content' in response + assert "🔥 Firecrawl" in response['content'] + +def test_scrape_url_invalid_api_key(): + invalid_app = FirecrawlApp(api_key="invalid_api_key") + with pytest.raises(Exception) as excinfo: + invalid_app.scrape_url(TEST_URL) + assert "Failed to scrape URL. Status code: 401" in str(excinfo.value) + +def test_crawl_url_e2e(): + app = FirecrawlApp(api_key=TEST_API_KEY) + response = app.crawl_url(TEST_URL, {'crawlerOptions': {'excludes': ['blog/*']}}, True) + assert response is not None + assert len(response) > 0 + assert 'content' in response[0] + assert "🔥 Firecrawl" in response[0]['content'] + +def test_crawl_url_invalid_api_key(): + invalid_app = FirecrawlApp(api_key="invalid_api_key") + with pytest.raises(Exception) as excinfo: + invalid_app.crawl_url(TEST_URL) + assert "Unexpected error occurred while trying to start crawl job. Status code: 401" in str(excinfo.value) + +def test_search_e2e(): + app = FirecrawlApp(api_key=TEST_API_KEY) + response = app.search("test query") + assert response is not None + assert 'content' in response[0] + assert len(response) > 2 + +def test_search_invalid_api_key(): + invalid_app = FirecrawlApp(api_key="invalid_api_key") + with pytest.raises(Exception) as excinfo: + invalid_app.search("test query") + assert "Failed to search. Status code: 401" in str(excinfo.value) + +def test_crawl_with_fast_mode(): + app = FirecrawlApp(api_key=TEST_API_KEY) + response = app.crawl_url(TEST_URL, {'crawlerOptions': {'mode': 'fast'}}, True) + assert response is not None + assert len(response) > 0 + assert 'content' in response[0] + +def test_crawl_with_html_inclusion(): + app = FirecrawlApp(api_key=TEST_API_KEY) + response = app.crawl_url(TEST_URL, {'pageOptions': {'includeHtml': True}}, False) + assert response is not None + assert 'jobId' in response + +def test_crawl_with_pdf_extraction(): + app = FirecrawlApp(api_key=TEST_API_KEY) + response = app.crawl_url("https://arxiv.org/pdf/astro-ph/9301001", + {'crawlerOptions': {'limit': 10, 'excludes': ['list/*', 'login', 'abs/*', 'static/*', 'about/*', 'archive/*']}}, False) + assert response is not None + assert 'jobId' in response + +def test_timeout_during_scraping(): + app = FirecrawlApp(api_key=TEST_API_KEY) + with pytest.raises(Exception) as excinfo: + app.scrape_url(TEST_URL, {'timeout': 1000}) + assert 'Failed to scrape URL. Status code: 408' in str(excinfo.value) + +def test_llm_extraction(): + app = FirecrawlApp(api_key=TEST_API_KEY) + response = app.scrape_url("https://mendable.ai", { + 'extractorOptions': { + 'mode': 'llm-extraction', + 'extractionPrompt': "Based on the information on the page, find what the company's mission is and whether it supports SSO, and whether it is open source", + 'extractionSchema': { + 'type': 'object', + 'properties': { + 'company_mission': {'type': 'string'}, + 'supports_sso': {'type': 'boolean'}, + 'is_open_source': {'type': 'boolean'} + }, + 'required': ['company_mission', 'supports_sso', 'is_open_source'] + } + } + }) + assert response is not None + assert 'llm_extraction' in response + llm_extraction = response['llm_extraction'] + assert 'company_mission' in llm_extraction + assert isinstance(llm_extraction['supports_sso'], bool) + assert isinstance(llm_extraction['is_open_source'], bool) \ No newline at end of file diff --git a/apps/python-sdk/setup.py b/apps/python-sdk/setup.py index 7df520e..6674a89 100644 --- a/apps/python-sdk/setup.py +++ b/apps/python-sdk/setup.py @@ -10,5 +10,6 @@ setup( packages=find_packages(), install_requires=[ 'requests', + 'pytest', ], ) From e5c8719554104dd789e054e6f7a68d0b6dcd3f3f Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 24 May 2024 14:53:04 -0700 Subject: [PATCH 035/230] Update blocklist.ts --- apps/api/src/scraper/WebScraper/utils/blocklist.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/api/src/scraper/WebScraper/utils/blocklist.ts b/apps/api/src/scraper/WebScraper/utils/blocklist.ts index c3d37c4..c6a1232 100644 --- a/apps/api/src/scraper/WebScraper/utils/blocklist.ts +++ b/apps/api/src/scraper/WebScraper/utils/blocklist.ts @@ -1,7 +1,6 @@ const socialMediaBlocklist = [ 'facebook.com', 'twitter.com', - 'x.com', 'instagram.com', 'linkedin.com', 'pinterest.com', From e98434606d77593ea7d0bdd1219e23f20651a35a Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 24 May 2024 15:04:15 -0700 Subject: [PATCH 036/230] Update blocklist.ts --- apps/api/src/scraper/WebScraper/utils/blocklist.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/api/src/scraper/WebScraper/utils/blocklist.ts b/apps/api/src/scraper/WebScraper/utils/blocklist.ts index c6a1232..2a047e4 100644 --- a/apps/api/src/scraper/WebScraper/utils/blocklist.ts +++ b/apps/api/src/scraper/WebScraper/utils/blocklist.ts @@ -1,5 +1,6 @@ const socialMediaBlocklist = [ 'facebook.com', + 'x.com', 'twitter.com', 'instagram.com', 'linkedin.com', @@ -32,9 +33,17 @@ const allowedKeywords = [ ]; export function isUrlBlocked(url: string): boolean { + // Check if the URL contains any allowed keywords if (allowedKeywords.some(keyword => url.includes(keyword))) { return false; } - return socialMediaBlocklist.some(domain => url.includes(domain)); + // Check if the URL matches any domain in the blocklist + return socialMediaBlocklist.some(domain => { + // Create a regular expression to match the exact domain + const domainPattern = new RegExp(`(^|\\.)${domain.replace('.', '\\.')}$`); + // Test the hostname of the URL against the pattern + return domainPattern.test(new URL(url).hostname); + }); } + From 2192978f91879ae620b6a7b1622aef64b820636c Mon Sep 17 00:00:00 2001 From: Keredu Date: Sat, 25 May 2024 00:12:26 +0200 Subject: [PATCH 037/230] Limit on /search is not deterministic --- apps/api/src/controllers/search.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/api/src/controllers/search.ts b/apps/api/src/controllers/search.ts index d98c08d..a73c625 100644 --- a/apps/api/src/controllers/search.ts +++ b/apps/api/src/controllers/search.ts @@ -28,11 +28,13 @@ export async function searchHelper( const tbs = searchOptions.tbs ?? null; const filter = searchOptions.filter ?? null; + const num_results = searchOptions.limit ?? 7; + const num_results_buffer = Math.floor(num_results * 1.5); let res = await search({ query: query, advanced: advanced, - num_results: searchOptions.limit ?? 7, + num_results: num_results_buffer, tbs: tbs, filter: filter, lang: searchOptions.lang ?? "en", @@ -47,6 +49,9 @@ export async function searchHelper( } res = res.filter((r) => !isUrlBlocked(r.url)); + if (res.length > num_results) { + res = res.slice(0, num_results); + } if (res.length === 0) { return { success: true, error: "No search results found", returnCode: 200 }; From 115204e6b6c6437dc5b3409a9f7b384a8a4fe5b8 Mon Sep 17 00:00:00 2001 From: Simon H Date: Sat, 25 May 2024 11:57:49 -0400 Subject: [PATCH 038/230] Feat: Provide more details for 429 error msg - Added better error code for when rate limit exceeded including consumed/remaining points, reset date and retry-after seconds --- apps/api/src/controllers/auth.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/api/src/controllers/auth.ts b/apps/api/src/controllers/auth.ts index b0bfabb..daf0ea6 100644 --- a/apps/api/src/controllers/auth.ts +++ b/apps/api/src/controllers/auth.ts @@ -1,12 +1,12 @@ import { parseApi } from "../../src/lib/parseApi"; -import { getRateLimiter, } from "../../src/services/rate-limiter"; +import { getRateLimiter, } from "../../src/services/rate-limiter"; import { AuthResponse, RateLimiterMode } from "../../src/types"; import { supabase_service } from "../../src/services/supabase"; import { withAuth } from "../../src/lib/withAuth"; import { RateLimiterRedis } from "rate-limiter-flexible"; import { setTraceAttributes } from '@hyperdx/node-opentelemetry'; -export async function authenticateUser(req, res, mode?: RateLimiterMode) : Promise { +export async function authenticateUser(req, res, mode?: RateLimiterMode): Promise { return withAuth(supaAuthenticateUser)(req, res, mode); } function setTrace(team_id: string, api_key: string) { @@ -18,7 +18,7 @@ function setTrace(team_id: string, api_key: string) { } catch (error) { console.error('Error setting trace attributes:', error); } - + } export async function supaAuthenticateUser( req, @@ -97,7 +97,7 @@ export async function supaAuthenticateUser( team_id: team_id, plan: plan } - switch (mode) { + switch (mode) { case RateLimiterMode.Crawl: rateLimiter = getRateLimiter(RateLimiterMode.Crawl, token, subscriptionData.plan); break; @@ -126,9 +126,11 @@ export async function supaAuthenticateUser( await rateLimiter.consume(iptoken); } catch (rateLimiterRes) { console.error(rateLimiterRes); + const secs = Math.round(rateLimiterRes.msBeforeNext / 1000) || 1; + const retryDate = new Date(Date.now() + rateLimiterRes.msBeforeNext); return { success: false, - error: "Rate limit exceeded. Too many requests, try again in 1 minute.", + error: `Rate limit exceeded for mode ${rateLimiter.keyPrefix}. Consumed points: ${rateLimiterRes.consumedPoints}, Remaining points: ${rateLimiterRes.remainingPoints}. Please retry after ${secs}s, resets at ${retryDate}`, status: 429, }; } @@ -155,9 +157,9 @@ export async function supaAuthenticateUser( normalizedApi = parseApi(token); const { data, error } = await supabase_service - .from("api_keys") - .select("*") - .eq("key", normalizedApi); + .from("api_keys") + .select("*") + .eq("key", normalizedApi); if (error || !data || data.length === 0) { return { @@ -170,7 +172,7 @@ export async function supaAuthenticateUser( subscriptionData = data[0]; } - return { success: true, team_id: subscriptionData.team_id }; + return { success: true, team_id: subscriptionData.team_id }; } function getPlanByPriceId(price_id: string) { From e5c6ac23fe521f19de8c20ea8caceaade5c7c9a4 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Sun, 26 May 2024 10:01:35 +1000 Subject: [PATCH 039/230] Added long description to PyPi https://packaging.python.org/en/latest/guides/making-a-pypi-friendly-readme/ --- apps/python-sdk/setup.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/python-sdk/setup.py b/apps/python-sdk/setup.py index 7df520e..f0359d5 100644 --- a/apps/python-sdk/setup.py +++ b/apps/python-sdk/setup.py @@ -1,5 +1,9 @@ +from pathlib import Path from setuptools import setup, find_packages +this_directory = Path(__file__).parent +long_description_content = (this_directory / "README.md").read_text() + setup( name='firecrawl-py', version='0.0.9', @@ -7,6 +11,8 @@ setup( author='Mendable.ai', author_email='nick@mendable.ai', description='Python SDK for Firecrawl API', + long_description=long_description_content, + long_description_content_type="text/markdown", packages=find_packages(), install_requires=[ 'requests', From cd7f260288de324eb11bc6a84a6e020782cb0246 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Sun, 26 May 2024 11:33:28 +1000 Subject: [PATCH 040/230] Added PyPi classifiers These classifiers will help potential users find and understand the purpose and status of the project. use python 3.8 as the base, because that's what module 'requests' needs. --- apps/python-sdk/setup.py | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/apps/python-sdk/setup.py b/apps/python-sdk/setup.py index f0359d5..46b0f59 100644 --- a/apps/python-sdk/setup.py +++ b/apps/python-sdk/setup.py @@ -1,20 +1,42 @@ from pathlib import Path -from setuptools import setup, find_packages + +from setuptools import find_packages, setup this_directory = Path(__file__).parent long_description_content = (this_directory / "README.md").read_text() setup( - name='firecrawl-py', - version='0.0.9', - url='https://github.com/mendableai/firecrawl', - author='Mendable.ai', - author_email='nick@mendable.ai', - description='Python SDK for Firecrawl API', + name="firecrawl-py", + version="0.0.9", + url="https://github.com/mendableai/firecrawl", + author="Mendable.ai", + author_email="nick@mendable.ai", + description="Python SDK for Firecrawl API", long_description=long_description_content, long_description_content_type="text/markdown", packages=find_packages(), install_requires=[ - 'requests', + "requests", + ], + classifiers=[ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Internet", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Indexing/Search", + "Topic :: Software Development", + "Topic :: Software Development :: Libraries", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Text Processing", + "Topic :: Text Processing :: Indexing", ], ) From f00dffbbb1f5f51275e81df6faf58b03b68e76c9 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Sun, 26 May 2024 11:36:29 +1000 Subject: [PATCH 041/230] added misc PyPi keys help potential users find and understand the purpose and status of the project. --- apps/python-sdk/setup.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/python-sdk/setup.py b/apps/python-sdk/setup.py index 46b0f59..f6b798d 100644 --- a/apps/python-sdk/setup.py +++ b/apps/python-sdk/setup.py @@ -38,5 +38,12 @@ setup( "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing", "Topic :: Text Processing :: Indexing", - ], + ], + keywords="SDK API firecrawl", + project_urls={ + "Documentation": "https://github.com/mendableai/firecrawl/docs", + "Source": "https://github.com/mendableai/firecrawl", + "Tracker": "https://github.com/mendableai/firecrawl/issues", + }, + license="MIT", ) From b061e12030f0d77023884364265f932c58c0a4a4 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Sun, 26 May 2024 11:37:47 +1000 Subject: [PATCH 042/230] added python versions requirement this is inline with requests module, a critical dependency --- apps/python-sdk/setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/python-sdk/setup.py b/apps/python-sdk/setup.py index f6b798d..e7139ce 100644 --- a/apps/python-sdk/setup.py +++ b/apps/python-sdk/setup.py @@ -18,6 +18,7 @@ setup( install_requires=[ "requests", ], + python_requires='>=3.8', classifiers=[ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", From 7948c6cee29d426485e9b1ab5e296c1d39c8eec7 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sun, 26 May 2024 18:03:37 -0700 Subject: [PATCH 043/230] Nick: fixed pip issues --- .../build/lib/firecrawl/firecrawl.py | 185 ++++++++++++++++-- .../dist/firecrawl-py-0.0.10.tar.gz | Bin 0 -> 5356 bytes .../python-sdk/dist/firecrawl-py-0.0.9.tar.gz | Bin 4340 -> 0 bytes .../dist/firecrawl_py-0.0.10-py3-none-any.whl | Bin 0 -> 4161 bytes .../dist/firecrawl_py-0.0.9-py3-none-any.whl | Bin 3144 -> 0 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 254 -> 0 bytes .../__pycache__/firecrawl.cpython-311.pyc | Bin 6997 -> 0 bytes .../python-sdk/firecrawl_py.egg-info/PKG-INFO | 2 +- apps/python-sdk/setup.py | 2 +- 9 files changed, 166 insertions(+), 23 deletions(-) create mode 100644 apps/python-sdk/dist/firecrawl-py-0.0.10.tar.gz delete mode 100644 apps/python-sdk/dist/firecrawl-py-0.0.9.tar.gz create mode 100644 apps/python-sdk/dist/firecrawl_py-0.0.10-py3-none-any.whl delete mode 100644 apps/python-sdk/dist/firecrawl_py-0.0.9-py3-none-any.whl delete mode 100644 apps/python-sdk/firecrawl/__pycache__/__init__.cpython-311.pyc delete mode 100644 apps/python-sdk/firecrawl/__pycache__/firecrawl.cpython-311.pyc diff --git a/apps/python-sdk/build/lib/firecrawl/firecrawl.py b/apps/python-sdk/build/lib/firecrawl/firecrawl.py index 98cb8ed..6c0bc41 100644 --- a/apps/python-sdk/build/lib/firecrawl/firecrawl.py +++ b/apps/python-sdk/build/lib/firecrawl/firecrawl.py @@ -1,25 +1,57 @@ +""" +FirecrawlApp Module + +This module provides a class `FirecrawlApp` for interacting with the Firecrawl API. +It includes methods to scrape URLs, perform searches, initiate and monitor crawl jobs, +and check the status of these jobs. The module uses requests for HTTP communication +and handles retries for certain HTTP status codes. + +Classes: + - FirecrawlApp: Main class for interacting with the Firecrawl API. +""" + import os -from typing import Any, Dict, Optional -import requests import time +from typing import Any, Dict, Optional + +import requests + class FirecrawlApp: - def __init__(self, api_key=None, api_url='https://api.firecrawl.dev'): + """ + Initialize the FirecrawlApp instance. + + Args: + api_key (Optional[str]): API key for authenticating with the Firecrawl API. + api_url (Optional[str]): Base URL for the Firecrawl API. + """ + def __init__(self, api_key: Optional[str] = None, api_url: Optional[str] = None) -> None: self.api_key = api_key or os.getenv('FIRECRAWL_API_KEY') if self.api_key is None: raise ValueError('No API key provided') - self.api_url = api_url or os.getenv('FIRECRAWL_API_URL') - - - + self.api_url = api_url or os.getenv('FIRECRAWL_API_URL', 'https://api.firecrawl.dev') def scrape_url(self, url: str, params: Optional[Dict[str, Any]] = None) -> Any: + """ + Scrape the specified URL using the Firecrawl API. + + Args: + url (str): The URL to scrape. + params (Optional[Dict[str, Any]]): Additional parameters for the scrape request. + + Returns: + Any: The scraped data if the request is successful. + + Raises: + Exception: If the scrape request fails. + """ + headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {self.api_key}' } # Prepare the base scrape parameters with the URL scrape_params = {'url': url} - + # If there are additional params, process them if params: # Initialize extractorOptions if present @@ -32,7 +64,7 @@ class FirecrawlApp: extractor_options['mode'] = extractor_options.get('mode', 'llm-extraction') # Update the scrape_params with the processed extractorOptions scrape_params['extractorOptions'] = extractor_options - + # Include any other params directly at the top level of scrape_params for key, value in params.items(): if key != 'extractorOptions': @@ -41,11 +73,11 @@ class FirecrawlApp: response = requests.post( f'{self.api_url}/v0/scrape', headers=headers, - json=scrape_params + json=scrape_params, ) if response.status_code == 200: response = response.json() - if response['success']: + if response['success'] and 'data' in response: return response['data'] else: raise Exception(f'Failed to scrape URL. Error: {response["error"]}') @@ -54,8 +86,21 @@ class FirecrawlApp: raise Exception(f'Failed to scrape URL. Status code: {response.status_code}. Error: {error_message}') else: raise Exception(f'Failed to scrape URL. Status code: {response.status_code}') - + def search(self, query, params=None): + """ + Perform a search using the Firecrawl API. + + Args: + query (str): The search query. + params (Optional[Dict[str, Any]]): Additional parameters for the search request. + + Returns: + Any: The search results if the request is successful. + + Raises: + Exception: If the search request fails. + """ headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {self.api_key}' @@ -70,19 +115,36 @@ class FirecrawlApp: ) if response.status_code == 200: response = response.json() - if response['success'] == True: + + if response['success'] and 'data' in response: return response['data'] else: raise Exception(f'Failed to search. Error: {response["error"]}') - + elif response.status_code in [402, 409, 500]: error_message = response.json().get('error', 'Unknown error occurred') raise Exception(f'Failed to search. Status code: {response.status_code}. Error: {error_message}') else: raise Exception(f'Failed to search. Status code: {response.status_code}') - def crawl_url(self, url, params=None, wait_until_done=True, timeout=2): - headers = self._prepare_headers() + def crawl_url(self, url, params=None, wait_until_done=True, timeout=2, idempotency_key=None): + """ + Initiate a crawl job for the specified URL using the Firecrawl API. + + Args: + url (str): The URL to crawl. + params (Optional[Dict[str, Any]]): Additional parameters for the crawl request. + wait_until_done (bool): Whether to wait until the crawl job is completed. + timeout (int): Timeout between status checks when waiting for job completion. + idempotency_key (Optional[str]): A unique uuid key to ensure idempotency of requests. + + Returns: + Any: The crawl job ID or the crawl results if waiting until completion. + + Raises: + Exception: If the crawl job initiation or monitoring fails. + """ + headers = self._prepare_headers(idempotency_key) json_data = {'url': url} if params: json_data.update(params) @@ -97,6 +159,18 @@ class FirecrawlApp: self._handle_error(response, 'start crawl job') def check_crawl_status(self, job_id): + """ + Check the status of a crawl job using the Firecrawl API. + + Args: + job_id (str): The ID of the crawl job. + + Returns: + Any: The status of the crawl job. + + Raises: + Exception: If the status check request fails. + """ headers = self._prepare_headers() response = self._get_request(f'{self.api_url}/v0/crawl/status/{job_id}', headers) if response.status_code == 200: @@ -104,13 +178,45 @@ class FirecrawlApp: else: self._handle_error(response, 'check crawl status') - def _prepare_headers(self): + def _prepare_headers(self, idempotency_key=None): + """ + Prepare the headers for API requests. + + Args: + idempotency_key (Optional[str]): A unique key to ensure idempotency of requests. + + Returns: + Dict[str, str]: The headers including content type, authorization, and optionally idempotency key. + """ + if idempotency_key: + return { + 'Content-Type': 'application/json', + 'Authorization': f'Bearer {self.api_key}', + 'x-idempotency-key': idempotency_key + } + return { 'Content-Type': 'application/json', - 'Authorization': f'Bearer {self.api_key}' + 'Authorization': f'Bearer {self.api_key}', } def _post_request(self, url, data, headers, retries=3, backoff_factor=0.5): + """ + Make a POST request with retries. + + Args: + url (str): The URL to send the POST request to. + data (Dict[str, Any]): The JSON data to include in the POST request. + headers (Dict[str, str]): The headers to include in the POST request. + retries (int): Number of retries for the request. + backoff_factor (float): Backoff factor for retries. + + Returns: + requests.Response: The response from the POST request. + + Raises: + requests.RequestException: If the request fails after the specified retries. + """ for attempt in range(retries): response = requests.post(url, headers=headers, json=data) if response.status_code == 502: @@ -120,6 +226,21 @@ class FirecrawlApp: return response def _get_request(self, url, headers, retries=3, backoff_factor=0.5): + """ + Make a GET request with retries. + + Args: + url (str): The URL to send the GET request to. + headers (Dict[str, str]): The headers to include in the GET request. + retries (int): Number of retries for the request. + backoff_factor (float): Backoff factor for retries. + + Returns: + requests.Response: The response from the GET request. + + Raises: + requests.RequestException: If the request fails after the specified retries. + """ for attempt in range(retries): response = requests.get(url, headers=headers) if response.status_code == 502: @@ -129,7 +250,20 @@ class FirecrawlApp: return response def _monitor_job_status(self, job_id, headers, timeout): - import time + """ + Monitor the status of a crawl job until completion. + + Args: + job_id (str): The ID of the crawl job. + headers (Dict[str, str]): The headers to include in the status check requests. + timeout (int): Timeout between status checks. + + Returns: + Any: The crawl results if the job is completed successfully. + + Raises: + Exception: If the job fails or an error occurs during status checks. + """ while True: status_response = self._get_request(f'{self.api_url}/v0/crawl/status/{job_id}', headers) if status_response.status_code == 200: @@ -140,8 +274,7 @@ class FirecrawlApp: else: raise Exception('Crawl job completed but no data was returned') elif status_data['status'] in ['active', 'paused', 'pending', 'queued']: - if timeout < 2: - timeout = 2 + timeout=max(timeout,2) time.sleep(timeout) # Wait for the specified timeout before checking again else: raise Exception(f'Crawl job failed or was stopped. Status: {status_data["status"]}') @@ -149,6 +282,16 @@ class FirecrawlApp: self._handle_error(status_response, 'check crawl status') def _handle_error(self, response, action): + """ + Handle errors from API responses. + + Args: + response (requests.Response): The response object from the API request. + action (str): Description of the action that was being performed. + + Raises: + Exception: An exception with a message containing the status code and error details from the response. + """ if response.status_code in [402, 408, 409, 500]: error_message = response.json().get('error', 'Unknown error occurred') raise Exception(f'Failed to {action}. Status code: {response.status_code}. Error: {error_message}') diff --git a/apps/python-sdk/dist/firecrawl-py-0.0.10.tar.gz b/apps/python-sdk/dist/firecrawl-py-0.0.10.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..59e42d15d1c8be849312b82375296c14525340d6 GIT binary patch literal 5356 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 E4^1)K*Z=?k literal 0 HcmV?d00001 diff --git a/apps/python-sdk/dist/firecrawl-py-0.0.9.tar.gz b/apps/python-sdk/dist/firecrawl-py-0.0.9.tar.gz deleted file mode 100644 index 55e0eed7b11f182f42a69f4f864156a6e79ba381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4340 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 diff --git a/apps/python-sdk/dist/firecrawl_py-0.0.10-py3-none-any.whl b/apps/python-sdk/dist/firecrawl_py-0.0.10-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..36676fe13fdd4260d9ca6decb804ef29aae495a8 GIT binary patch literal 4161 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 F^nbsdBE|p! literal 0 HcmV?d00001 diff --git a/apps/python-sdk/dist/firecrawl_py-0.0.9-py3-none-any.whl b/apps/python-sdk/dist/firecrawl_py-0.0.9-py3-none-any.whl deleted file mode 100644 index 83cb5b77411b29a142592767d8f15946d19e22ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3144 zcmai$c{G%L8^^~wB2tzTQ<@~pm@&2t5oO9?msR|MNN5_4{4lbA2(UJiOun06+jBeK*E7 zCfj2`mh&gakpxHQT|7wyPe&>lhR3_Oxp?F8Pd6M`60E{#MAo&aOJDkJpwY^ATYl(izz}G+6tFW_x zKvcQUx5R*$29wW9Yji~I6W~3bP0%XMiAzj)xj-KPp;{B4mZM(T1R4{g9w$doSs+D8 zYeh}P-afM=p=^rMNt~$TiRGvpDeF)yC?WZ}B&mK;Wf`?dcP%Qv5ae1ic;<{tXCjyt zHkwbgS+%#Gb=&TzroSHr7R*YJ!ydlX6lM*s8a>prlT<%je0t1M=T$ZK5u2^5nxX00 zEQNm&ClS8QWS1@%u|E==%X_4GCvNGSRJT(^vB+oqYz-}A1_Y9)?^!=~q7VR|ZWE2l z1W6087|V+vq?bJ&17efZvSB9Nr2<8FiB;lKtixG_M($7T!YT7*Q=`3J2kXAL)ME#! zO&&F&LhpPpzfhBxNFZnVvO$O@VI9p|4z-<~2AY4Vfn(@R!B;K3I@O>O0eGMFoHY_x z^W?K)ijp~X3(5NWmBg%-*~$Wl^P8KsHq$i4CS7$N$>$T4bQH9;4d{brTTg$U-G_*m zIXq~@LLi&~_kDV+`DBBGZH}@!s0^pjBIHy57<~+bH?eWxs-FdGXe*KdwrValvn`hi zfV(-g?Xz`!(GVj9q&y?U@@FaALf?5b6h9#5Lv!B(NRp@`Kz(PnuRXTQ=O9no>hcH@aC+1zW11oqo*9Yi42-TB9IG?9t>papEp16}kF&5H9ZND} z6DQ>jZtRC%qiG2|4}N$ptj7_+kDfD@A|lgXN#)pZjb8b4j60p!@>XxtTG6{DQP%N?ia63lK444tU-#0yMH4uxFd~fY&6Q_oD zRn!GF2ENhNs@PH9>-B=_SW}-#aC-Gs|LHAE?H#9{76Yf)&a+}X2w6&+NV9j)Z3B@o?xyCg1q5O;*^WX?~E3a0&sptlcvdoPvXE%k*_skD>T^ETdCj%P6;>wxEU> zIqo>%(W~t-VsGW!gK)QB;mw~RGY*^MPMydS*8>^@TI*Ny8S+t#HIif=)#RKnjziOLBi#t9n0APW|-wWF-VdiF_}0sGJ1@M-h>+iE=lFUoONh*w?b!YRB9_Rq^Rc132S zERZQcT_v6l*QKz=+Y)`#6%#?0-Nvp6M6sr#N#g}f)AcfkF3r;yE3<`^l?$IQXdXZ`{jF8ySSWY?9C!ANuGeTMV6<+4^D28i^d~ zA!yQO|7@QgawJ-VcqZUl*l9N#h(&vb4WP3eZ_pfd?k3NjuBtb zW$|+kGeW;MnUxEl!*QDXCh+f?v@u2^&4gIS=#Fk-Qx&Do=d3cU>Pz)OPm2yy6%$A+ ztQ2c((h7lIh5_?WcByu$S9Ga&j|#T2VBMb}eZmSVCLOJ2rC0?;CG>kilvyQK;jTts zM?1^37yX<$I?Vl3l=yZ5X6m6LTRAlea-{UT+Po?5crwYCM233%d4CTpLz|h+6FiO( zE&$*)NBe)r#3GMbV2#2%Yy3l00pUY$UAOEK#at3;p=>vDVZ1o7?E=F{)I?FiW&p)* zb#wBsP3XBM^N4(JY*&xaEPRYDy`rRk@|1mu<{Mr`=(gxgD%C;z-E8tmXZ!Q(UAClZ z2f3nZSB%gf_c7;J8~yJcc|G`OT0nl-u`I0tMHM}h{3Yc?g`MFUmC;yTQpwP`8=M0UVj7~Yd)T!AS<8Gj|RS5Ok_DXJH ztw>cv#oq0r$RR|AcHZP$l80O&4A&X|L4G?E{m95*!i!3txj2_dV&vmYpE3F(_}7=K zDW`F9!BzqE*?F!@mt6AAQ7Fpp)WvGwNaAdjnpGy0c~b5SXi19nZdp)ZfhMc*Nmc`p zvcb7PE^cw2{~a(nC;s=76a4M-JrVvKH-AR_TcG?00086!TmFLh4&%hjpBevVc_-}Ru{0ESR8Z`g_ diff --git a/apps/python-sdk/firecrawl/__pycache__/__init__.cpython-311.pyc b/apps/python-sdk/firecrawl/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 605b3df712dacc3f938e664f38e99d9bfcddd4f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmZ3^%ge<81Z`7g(^P=;V-N=hn4pZ$LO{lJh7^Vr#vF!R#wbQch7_h?22JLdj6exZ z##=mYnMJ9|MTzA(js*pNnoPGi(_jKc%s?e889sxI`W31lTAW%`te=;eoS&0eoSc}O zSd^&mlAm0fo0?ZrtnZ##;!&EU57(@pSWr-`Ur2KczG$)vkyGXbZ?q#j-%+12ZEd;|&Jo3)oN*8&CxRaAQTu diff --git a/apps/python-sdk/firecrawl/__pycache__/firecrawl.cpython-311.pyc b/apps/python-sdk/firecrawl/__pycache__/firecrawl.cpython-311.pyc deleted file mode 100644 index 7c98fa33cdb39232d3c4b0ad07ee506b91bb20d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6997 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 Date: Sun, 26 May 2024 18:07:21 -0700 Subject: [PATCH 044/230] Update auth.ts --- apps/api/src/controllers/auth.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/controllers/auth.ts b/apps/api/src/controllers/auth.ts index daf0ea6..a335f8c 100644 --- a/apps/api/src/controllers/auth.ts +++ b/apps/api/src/controllers/auth.ts @@ -130,7 +130,7 @@ export async function supaAuthenticateUser( const retryDate = new Date(Date.now() + rateLimiterRes.msBeforeNext); return { success: false, - error: `Rate limit exceeded for mode ${rateLimiter.keyPrefix}. Consumed points: ${rateLimiterRes.consumedPoints}, Remaining points: ${rateLimiterRes.remainingPoints}. Please retry after ${secs}s, resets at ${retryDate}`, + error: `Rate limit exceeded. Consumed points: ${rateLimiterRes.consumedPoints}, Remaining points: ${rateLimiterRes.remainingPoints}. Please retry after ${secs}s, resets at ${retryDate}`, status: 429, }; } From ed4226fd1f5843402880d0befedf7027ea8a8dad Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sun, 26 May 2024 18:11:54 -0700 Subject: [PATCH 045/230] Update setup.py --- apps/python-sdk/setup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/python-sdk/setup.py b/apps/python-sdk/setup.py index e7139ce..4709284 100644 --- a/apps/python-sdk/setup.py +++ b/apps/python-sdk/setup.py @@ -23,7 +23,7 @@ setup( "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", + "License :: OSI Approved :: AGPL 3.0 License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", @@ -42,9 +42,9 @@ setup( ], keywords="SDK API firecrawl", project_urls={ - "Documentation": "https://github.com/mendableai/firecrawl/docs", + "Documentation": "https://docs.firecrawl.dev", "Source": "https://github.com/mendableai/firecrawl", "Tracker": "https://github.com/mendableai/firecrawl/issues", }, - license="MIT", + license="AGPL 3.0 License", ) From 1de53cc4d0b98b8d61b9c8a592aba1c60840e2b6 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sun, 26 May 2024 18:15:05 -0700 Subject: [PATCH 046/230] Nick: fixes --- .../dist/firecrawl-py-0.0.10.tar.gz | Bin 5356 -> 0 bytes .../dist/firecrawl-py-0.0.11.tar.gz | Bin 0 -> 6486 bytes .../dist/firecrawl_py-0.0.10-py3-none-any.whl | Bin 4161 -> 0 bytes .../dist/firecrawl_py-0.0.11-py3-none-any.whl | Bin 0 -> 6212 bytes .../python-sdk/firecrawl_py.egg-info/PKG-INFO | 155 +++++++++++++++++- apps/python-sdk/setup.py | 6 +- 6 files changed, 157 insertions(+), 4 deletions(-) delete mode 100644 apps/python-sdk/dist/firecrawl-py-0.0.10.tar.gz create mode 100644 apps/python-sdk/dist/firecrawl-py-0.0.11.tar.gz delete mode 100644 apps/python-sdk/dist/firecrawl_py-0.0.10-py3-none-any.whl create mode 100644 apps/python-sdk/dist/firecrawl_py-0.0.11-py3-none-any.whl diff --git a/apps/python-sdk/dist/firecrawl-py-0.0.10.tar.gz b/apps/python-sdk/dist/firecrawl-py-0.0.10.tar.gz deleted file mode 100644 index 59e42d15d1c8be849312b82375296c14525340d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5356 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 E4^1)K*Z=?k diff --git a/apps/python-sdk/dist/firecrawl-py-0.0.11.tar.gz b/apps/python-sdk/dist/firecrawl-py-0.0.11.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..3dd82a93beece2dabb027ac75c62aa679d2f1a0f GIT binary patch literal 6486 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 P80hKjTOHCB64L(xRtnh| literal 0 HcmV?d00001 diff --git a/apps/python-sdk/dist/firecrawl_py-0.0.10-py3-none-any.whl b/apps/python-sdk/dist/firecrawl_py-0.0.10-py3-none-any.whl deleted file mode 100644 index 36676fe13fdd4260d9ca6decb804ef29aae495a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4161 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 F^nbsdBE|p! diff --git a/apps/python-sdk/dist/firecrawl_py-0.0.11-py3-none-any.whl b/apps/python-sdk/dist/firecrawl_py-0.0.11-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..4d7e3aacd02369253784efb5ab05decd52cdf692 GIT binary patch literal 6212 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 literal 0 HcmV?d00001 diff --git a/apps/python-sdk/firecrawl_py.egg-info/PKG-INFO b/apps/python-sdk/firecrawl_py.egg-info/PKG-INFO index 16af620..7d4b835 100644 --- a/apps/python-sdk/firecrawl_py.egg-info/PKG-INFO +++ b/apps/python-sdk/firecrawl_py.egg-info/PKG-INFO @@ -1,7 +1,160 @@ Metadata-Version: 2.1 Name: firecrawl-py -Version: 0.0.10 +Version: 0.0.11 Summary: Python SDK for Firecrawl API Home-page: https://github.com/mendableai/firecrawl Author: Mendable.ai Author-email: nick@mendable.ai +License: GNU General Public License v3 (GPLv3) +Project-URL: Documentation, https://docs.firecrawl.dev +Project-URL: Source, https://github.com/mendableai/firecrawl +Project-URL: Tracker, https://github.com/mendableai/firecrawl/issues +Keywords: SDK API firecrawl +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Natural Language :: English +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Topic :: Internet +Classifier: Topic :: Internet :: WWW/HTTP +Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search +Classifier: Topic :: Software Development +Classifier: Topic :: Software Development :: Libraries +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing +Classifier: Topic :: Text Processing :: Indexing +Requires-Python: >=3.8 +Description-Content-Type: text/markdown + +# Firecrawl Python SDK + +The Firecrawl Python SDK is a library that allows you to easily scrape and crawl websites, and output the data in a format ready for use with language models (LLMs). It provides a simple and intuitive interface for interacting with the Firecrawl API. + +## Installation + +To install the Firecrawl Python SDK, you can use pip: + +```bash +pip install firecrawl-py +``` + +## Usage + +1. Get an API key from [firecrawl.dev](https://firecrawl.dev) +2. Set the API key as an environment variable named `FIRECRAWL_API_KEY` or pass it as a parameter to the `FirecrawlApp` class. + + +Here's an example of how to use the SDK: + +```python +from firecrawl import FirecrawlApp + +# Initialize the FirecrawlApp with your API key +app = FirecrawlApp(api_key='your_api_key') + +# Scrape a single URL +url = 'https://mendable.ai' +scraped_data = app.scrape_url(url) + +# Crawl a website +crawl_url = 'https://mendable.ai' +params = { + 'pageOptions': { + 'onlyMainContent': True + } +} +crawl_result = app.crawl_url(crawl_url, params=params) +``` + +### Scraping a URL + +To scrape a single URL, use the `scrape_url` method. It takes the URL as a parameter and returns the scraped data as a dictionary. + +```python +url = 'https://example.com' +scraped_data = app.scrape_url(url) +``` +### Extracting structured data from a URL + +With LLM extraction, you can easily extract structured data from any URL. We support pydantic schemas to make it easier for you too. Here is how you to use it: + +```python +class ArticleSchema(BaseModel): + title: str + points: int + by: str + commentsURL: str + +class TopArticlesSchema(BaseModel): + top: List[ArticleSchema] = Field(..., max_items=5, description="Top 5 stories") + +data = app.scrape_url('https://news.ycombinator.com', { + 'extractorOptions': { + 'extractionSchema': TopArticlesSchema.model_json_schema(), + 'mode': 'llm-extraction' + }, + 'pageOptions':{ + 'onlyMainContent': True + } +}) +print(data["llm_extraction"]) +``` + +### Search for a query + +Used to search the web, get the most relevant results, scrap each page and return the markdown. + +```python +query = 'what is mendable?' +search_result = app.search(query) +``` + +### Crawling a Website + +To crawl a website, use the `crawl_url` method. It takes the starting URL and optional parameters as arguments. The `params` argument allows you to specify additional options for the crawl job, such as the maximum number of pages to crawl, allowed domains, and the output format. + +The `wait_until_done` parameter determines whether the method should wait for the crawl job to complete before returning the result. If set to `True`, the method will periodically check the status of the crawl job until it is completed or the specified `timeout` (in seconds) is reached. If set to `False`, the method will return immediately with the job ID, and you can manually check the status of the crawl job using the `check_crawl_status` method. + +```python +crawl_url = 'https://example.com' +params = { + 'crawlerOptions': { + 'excludes': ['blog/*'], + 'includes': [], # leave empty for all pages + 'limit': 1000, + }, + 'pageOptions': { + 'onlyMainContent': True + } +} +crawl_result = app.crawl_url(crawl_url, params=params, wait_until_done=True, timeout=5) +``` + +If `wait_until_done` is set to `True`, the `crawl_url` method will return the crawl result once the job is completed. If the job fails or is stopped, an exception will be raised. + +### Checking Crawl Status + +To check the status of a crawl job, use the `check_crawl_status` method. It takes the job ID as a parameter and returns the current status of the crawl job. + +```python +job_id = crawl_result['jobId'] +status = app.check_crawl_status(job_id) +``` + +## Error Handling + +The SDK handles errors returned by the Firecrawl API and raises appropriate exceptions. If an error occurs during a request, an exception will be raised with a descriptive error message. + +## Contributing + +Contributions to the Firecrawl Python SDK are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on the GitHub repository. + +## License + +The Firecrawl Python SDK is open-source and released under the [MIT License](https://opensource.org/licenses/MIT). diff --git a/apps/python-sdk/setup.py b/apps/python-sdk/setup.py index 2e47bd8..63b5c9f 100644 --- a/apps/python-sdk/setup.py +++ b/apps/python-sdk/setup.py @@ -7,7 +7,7 @@ long_description_content = (this_directory / "README.md").read_text() setup( name="firecrawl-py", - version="0.0.10", + version="0.0.11", url="https://github.com/mendableai/firecrawl", author="Mendable.ai", author_email="nick@mendable.ai", @@ -23,7 +23,7 @@ setup( "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", - "License :: OSI Approved :: AGPL 3.0 License", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", @@ -46,5 +46,5 @@ setup( "Source": "https://github.com/mendableai/firecrawl", "Tracker": "https://github.com/mendableai/firecrawl/issues", }, - license="AGPL 3.0 License", + license="GNU General Public License v3 (GPLv3)", ) From 1ef307cb6fa2513cfa0b4e267c27785e28afb1d5 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 27 May 2024 10:01:12 -0700 Subject: [PATCH 047/230] Nick: checks --- apps/api/fly.toml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/api/fly.toml b/apps/api/fly.toml index ca619d1..0656a2c 100644 --- a/apps/api/fly.toml +++ b/apps/api/fly.toml @@ -27,6 +27,13 @@ kill_timeout = '5s' hard_limit = 200 soft_limit = 100 +[[http_service.checks]] + grace_period = "10s" + interval = "30s" + method = "GET" + timeout = "5s" + path = "/" + [[services]] protocol = 'tcp' internal_port = 8080 From 63772ea7110c49fa91b64c62bae6e7fff9240bcd Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 14:14:00 -0300 Subject: [PATCH 048/230] added github action workflow --- .github/workflows/python-tests.yml | 31 ++++ apps/js-sdk/firecrawl/.env.example | 3 + apps/js-sdk/firecrawl/package-lock.json | 43 ++++- apps/js-sdk/firecrawl/package.json | 7 +- .../src/__tests__/e2e_withAuth/index.test.ts | 147 +++++++++++++++ apps/js-sdk/firecrawl/src/index.ts | 12 +- .../__tests__/e2e_withAuth/.env.example | 3 + .../firecrawl/__tests__/e2e_withAuth/test.py | 168 +++++++++++++----- apps/python-sdk/setup.py | 1 + 9 files changed, 354 insertions(+), 61 deletions(-) create mode 100644 .github/workflows/python-tests.yml create mode 100644 apps/js-sdk/firecrawl/.env.example create mode 100644 apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts create mode 100644 apps/python-sdk/firecrawl/__tests__/e2e_withAuth/.env.example diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml new file mode 100644 index 0000000..9c3783b --- /dev/null +++ b/.github/workflows/python-tests.yml @@ -0,0 +1,31 @@ +name: Run Python SDK E2E Tests + +on: + pull_request: + branches: + - main +env: + TEST_API_KEY: ${{ secrets.TEST_API_KEY }} +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10"] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python setup.py + working-directory: ./apps/python-sdk + - name: Test with pytest + run: | + cd apps/python-sdk + pytest firecrawl/__tests__/e2e_withAuth/test.py + working-directory: ./apps/python-sdk diff --git a/apps/js-sdk/firecrawl/.env.example b/apps/js-sdk/firecrawl/.env.example new file mode 100644 index 0000000..6b1780b --- /dev/null +++ b/apps/js-sdk/firecrawl/.env.example @@ -0,0 +1,3 @@ +API_URL=http://localhost:3002 +TEST_API_KEY=fc-YOUR_API_KEY + diff --git a/apps/js-sdk/firecrawl/package-lock.json b/apps/js-sdk/firecrawl/package-lock.json index 6b085be..fec326b 100644 --- a/apps/js-sdk/firecrawl/package-lock.json +++ b/apps/js-sdk/firecrawl/package-lock.json @@ -1,22 +1,25 @@ { "name": "@mendable/firecrawl-js", - "version": "0.0.17-beta.8", + "version": "0.0.22", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@mendable/firecrawl-js", - "version": "0.0.17-beta.8", + "version": "0.0.22", "license": "MIT", "dependencies": { "axios": "^1.6.8", + "uuid": "^9.0.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.0" }, "devDependencies": { "@jest/globals": "^29.7.0", "@types/axios": "^0.14.0", - "@types/node": "^20.12.7", + "@types/jest": "^29.5.12", + "@types/node": "^20.12.12", + "@types/uuid": "^9.0.8", "jest": "^29.7.0", "ts-jest": "^29.1.2", "typescript": "^5.4.5" @@ -1046,10 +1049,20 @@ "@types/istanbul-lib-report": "*" } }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, "node_modules/@types/node": { - "version": "20.12.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", - "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -1061,6 +1074,12 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, "node_modules/@types/yargs": { "version": "17.0.32", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", @@ -3641,6 +3660,18 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-to-istanbul": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", diff --git a/apps/js-sdk/firecrawl/package.json b/apps/js-sdk/firecrawl/package.json index e43f6ea..a9fdaaf 100644 --- a/apps/js-sdk/firecrawl/package.json +++ b/apps/js-sdk/firecrawl/package.json @@ -9,7 +9,7 @@ "build": "tsc", "publish": "npm run build && npm publish --access public", "publish-beta": "npm run build && npm publish --access public --tag beta", - "test": "jest src/**/*.test.ts" + "test": "jest src/__tests__/**/*.test.ts" }, "repository": { "type": "git", @@ -19,6 +19,7 @@ "license": "MIT", "dependencies": { "axios": "^1.6.8", + "uuid": "^9.0.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.0" }, @@ -29,7 +30,9 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/axios": "^0.14.0", - "@types/node": "^20.12.7", + "@types/jest": "^29.5.12", + "@types/node": "^20.12.12", + "@types/uuid": "^9.0.8", "jest": "^29.7.0", "ts-jest": "^29.1.2", "typescript": "^5.4.5" diff --git a/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts new file mode 100644 index 0000000..13f5347 --- /dev/null +++ b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts @@ -0,0 +1,147 @@ +import FirecrawlApp from '../../index'; +import { v4 as uuidv4 } from 'uuid'; +import dotenv from 'dotenv'; + +dotenv.config(); + +const TEST_API_KEY = process.env.TEST_API_KEY; +const API_URL = process.env.API_URL; + +describe('FirecrawlApp E2E Tests', () => { + test('should throw error for no API key', () => { + expect(() => { + new FirecrawlApp({ apiKey: null, apiUrl: API_URL }); + }).toThrow("No API key provided"); + }); + + test('should throw error for invalid API key on scrape', async () => { + const invalidApp = new FirecrawlApp({ apiKey: "invalid_api_key", apiUrl: API_URL }); + await expect(invalidApp.scrapeUrl('https://firecrawl.dev')).rejects.toThrow("Request failed with status code 401"); + }); + + test('should throw error for blocklisted URL on scrape', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const blocklistedUrl = "https://facebook.com/fake-test"; + await expect(app.scrapeUrl(blocklistedUrl)).rejects.toThrow("Request failed with status code 403"); + }); + + test('should return successful response with valid preview token', async () => { + const app = new FirecrawlApp({ apiKey: "this_is_just_a_preview_token", apiUrl: API_URL }); + const response = await app.scrapeUrl('https://firecrawl.dev'); + expect(response).not.toBeNull(); + expect(response.data.content).toContain("🔥 Firecrawl"); + }, 10000); // 10 seconds timeout + + test('should return successful response for valid scrape', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const response = await app.scrapeUrl('https://firecrawl.dev'); + expect(response).not.toBeNull(); + expect(response.data.content).toContain("🔥 Firecrawl"); + expect(response.data).toHaveProperty('markdown'); + expect(response.data).toHaveProperty('metadata'); + expect(response.data).not.toHaveProperty('html'); + }, 10000); // 10 seconds timeout + + test('should return successful response with valid API key and include HTML', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const response = await app.scrapeUrl('https://firecrawl.dev', { pageOptions: { includeHtml: true } }); + expect(response).not.toBeNull(); + expect(response.data.content).toContain("🔥 Firecrawl"); + expect(response.data.markdown).toContain("🔥 Firecrawl"); + expect(response.data.html).toContain(" { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const response = await app.scrapeUrl('https://arxiv.org/pdf/astro-ph/9301001.pdf'); + expect(response).not.toBeNull(); + expect(response.data.content).toContain('We present spectrophotometric observations of the Broad Line Radio Galaxy'); + }, 30000); // 30 seconds timeout + + test('should return successful response for valid scrape with PDF file without explicit extension', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const response = await app.scrapeUrl('https://arxiv.org/pdf/astro-ph/9301001'); + await new Promise(resolve => setTimeout(resolve, 6000)); // wait for 6 seconds + expect(response).not.toBeNull(); + expect(response.data.content).toContain('We present spectrophotometric observations of the Broad Line Radio Galaxy'); + }, 30000); // 30 seconds timeout + + test('should throw error for invalid API key on crawl', async () => { + const invalidApp = new FirecrawlApp({ apiKey: "invalid_api_key", apiUrl: API_URL }); + await expect(invalidApp.crawlUrl('https://firecrawl.dev')).rejects.toThrow("Request failed with status code 401"); + }); + + test('should throw error for blocklisted URL on crawl', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const blocklistedUrl = "https://twitter.com/fake-test"; + await expect(app.crawlUrl(blocklistedUrl)).rejects.toThrow("Request failed with status code 403"); + }); + + test('should return successful response for crawl and wait for completion', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const response = await app.crawlUrl('https://firecrawl.dev', { crawlerOptions: { excludes: ['blog/*'] } }, true); + expect(response).not.toBeNull(); + expect(response[0].content).toContain("🔥 Firecrawl"); + }, 60000); // 60 seconds timeout + + test('should handle idempotency key for crawl', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const uniqueIdempotencyKey = uuidv4(); + const response = await app.crawlUrl('https://firecrawl.dev', { crawlerOptions: { excludes: ['blog/*'] } }, true, 2, uniqueIdempotencyKey); + expect(response).not.toBeNull(); + expect(response[0].content).toContain("🔥 Firecrawl"); + + await expect(app.crawlUrl('https://firecrawl.dev', { crawlerOptions: { excludes: ['blog/*'] } }, true, 2, uniqueIdempotencyKey)).rejects.toThrow("Request failed with status code 409"); + }, 30000); // 30 seconds timeout + + test('should check crawl status', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const response = await app.crawlUrl('https://firecrawl.dev', { crawlerOptions: { excludes: ['blog/*'] } }, false); + expect(response).not.toBeNull(); + expect(response.jobId).toBeDefined(); + + await new Promise(resolve => setTimeout(resolve, 10000)); // wait for 10 seconds + const statusResponse = await app.checkCrawlStatus(response.jobId); + expect(statusResponse).not.toBeNull(); + expect(statusResponse.status).toBe('completed'); + expect(statusResponse.data.length).toBeGreaterThan(0); + }, 30000); // 30 seconds timeout + + test('should return successful response for search', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const response = await app.search("test query"); + expect(response).not.toBeNull(); + expect(response.data[0].content).toBeDefined(); + expect(response.data.length).toBeGreaterThan(2); + }, 30000); // 30 seconds timeout + + test('should throw error for invalid API key on search', async () => { + const invalidApp = new FirecrawlApp({ apiKey: "invalid_api_key", apiUrl: API_URL }); + await expect(invalidApp.search("test query")).rejects.toThrow("Request failed with status code 401"); + }); + + test('should perform LLM extraction', async () => { + const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); + const response = await app.scrapeUrl("https://mendable.ai", { + extractorOptions: { + mode: 'llm-extraction', + extractionPrompt: "Based on the information on the page, find what the company's mission is and whether it supports SSO, and whether it is open source", + extractionSchema: { + type: 'object', + properties: { + company_mission: { type: 'string' }, + supports_sso: { type: 'boolean' }, + is_open_source: { type: 'boolean' } + }, + required: ['company_mission', 'supports_sso', 'is_open_source'] + } + } + }); + expect(response).not.toBeNull(); + expect(response.data.llm_extraction).toBeDefined(); + const llmExtraction = response.data.llm_extraction; + expect(llmExtraction.company_mission).toBeDefined(); + expect(typeof llmExtraction.supports_sso).toBe('boolean'); + expect(typeof llmExtraction.is_open_source).toBe('boolean'); + }, 30000); // 30 seconds timeout +}); diff --git a/apps/js-sdk/firecrawl/src/index.ts b/apps/js-sdk/firecrawl/src/index.ts index 0bdcf7c..2a07f60 100644 --- a/apps/js-sdk/firecrawl/src/index.ts +++ b/apps/js-sdk/firecrawl/src/index.ts @@ -6,6 +6,7 @@ import { zodToJsonSchema } from "zod-to-json-schema"; */ export interface FirecrawlAppConfig { apiKey?: string | null; + apiUrl?: string | null; } /** @@ -63,6 +64,7 @@ export interface JobStatusResponse { */ export default class FirecrawlApp { private apiKey: string; + private apiUrl: string = "https://api.firecrawl.dev"; /** * Initializes a new instance of the FirecrawlApp class. @@ -107,7 +109,7 @@ export default class FirecrawlApp { } try { const response: AxiosResponse = await axios.post( - "https://api.firecrawl.dev/v0/scrape", + this.apiUrl + "/v0/scrape", jsonData, { headers }, ); @@ -147,7 +149,7 @@ export default class FirecrawlApp { } try { const response: AxiosResponse = await axios.post( - "https://api.firecrawl.dev/v0/search", + this.apiUrl + "/v0/search", jsonData, { headers } ); @@ -190,7 +192,7 @@ export default class FirecrawlApp { } try { const response: AxiosResponse = await this.postRequest( - "https://api.firecrawl.dev/v0/crawl", + this.apiUrl + "/v0/crawl", jsonData, headers ); @@ -220,7 +222,7 @@ export default class FirecrawlApp { const headers: AxiosRequestHeaders = this.prepareHeaders(); try { const response: AxiosResponse = await this.getRequest( - `https://api.firecrawl.dev/v0/crawl/status/${jobId}`, + this.apiUrl + `/v0/crawl/status/${jobId}`, headers ); if (response.status === 200) { @@ -292,7 +294,7 @@ export default class FirecrawlApp { ): Promise { while (true) { const statusResponse: AxiosResponse = await this.getRequest( - `https://api.firecrawl.dev/v0/crawl/status/${jobId}`, + this.apiUrl + `/v0/crawl/status/${jobId}`, headers ); if (statusResponse.status === 200) { diff --git a/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/.env.example b/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/.env.example new file mode 100644 index 0000000..904887b --- /dev/null +++ b/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/.env.example @@ -0,0 +1,3 @@ +API_URL=http://localhost:3002 +ABSOLUTE_FIRECRAWL_PATH=/Users/user/firecrawl/apps/python-sdk/firecrawl/firecrawl.py +TEST_API_KEY=fc-YOUR_API_KEY \ No newline at end of file diff --git a/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py b/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py index 11b66e9..1a3b641 100644 --- a/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py +++ b/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py @@ -1,78 +1,150 @@ +import importlib.util import pytest -from firecrawl import FirecrawlApp +import time +import os +from uuid import uuid4 +from dotenv import load_dotenv -TEST_API_KEY = "fc-YOUR_API_KEY" -TEST_URL = "https://firecrawl.dev" +load_dotenv() -def test_scrape_url_e2e(): - app = FirecrawlApp(api_key=TEST_API_KEY) - response = app.scrape_url(TEST_URL) - print(response) +API_URL = "http://127.0.0.1:3002"; +ABSOLUTE_FIRECRAWL_PATH = "./apps/python-sdk/firecrawl/firecrawl.py" +TEST_API_KEY = os.getenv('TEST_API_KEY') + +print(f"ABSOLUTE_FIRECRAWL_PATH: {ABSOLUTE_FIRECRAWL_PATH}") + +spec = importlib.util.spec_from_file_location("FirecrawlApp", ABSOLUTE_FIRECRAWL_PATH) +firecrawl = importlib.util.module_from_spec(spec) +spec.loader.exec_module(firecrawl) +FirecrawlApp = firecrawl.FirecrawlApp + +def test_no_api_key(): + with pytest.raises(Exception) as excinfo: + invalid_app = FirecrawlApp(api_url=API_URL) + assert "No API key provided" in str(excinfo.value) + +def test_scrape_url_invalid_api_key(): + invalid_app = FirecrawlApp(api_url=API_URL, api_key="invalid_api_key") + with pytest.raises(Exception) as excinfo: + invalid_app.scrape_url('https://firecrawl.dev') + assert "Failed to scrape URL. Status code: 401" in str(excinfo.value) + +def test_blocklisted_url(): + blocklisted_url = "https://facebook.com/fake-test" + app = FirecrawlApp(api_url=API_URL, api_key=TEST_API_KEY) + with pytest.raises(Exception) as excinfo: + app.scrape_url(blocklisted_url) + assert "Failed to scrape URL. Status code: 403" in str(excinfo.value) + +def test_successful_response_with_valid_preview_token(): + app = FirecrawlApp(api_url=API_URL, api_key="this_is_just_a_preview_token") + response = app.scrape_url('https://firecrawl.dev') assert response is not None assert 'content' in response assert "🔥 Firecrawl" in response['content'] -def test_scrape_url_invalid_api_key(): - invalid_app = FirecrawlApp(api_key="invalid_api_key") - with pytest.raises(Exception) as excinfo: - invalid_app.scrape_url(TEST_URL) - assert "Failed to scrape URL. Status code: 401" in str(excinfo.value) +def test_scrape_url_e2e(): + app = FirecrawlApp(api_url=API_URL, api_key=TEST_API_KEY) + response = app.scrape_url('https://firecrawl.dev') + assert response is not None + assert 'content' in response + assert 'markdown' in response + assert 'metadata' in response + assert 'html' not in response + assert "🔥 Firecrawl" in response['content'] -def test_crawl_url_e2e(): - app = FirecrawlApp(api_key=TEST_API_KEY) - response = app.crawl_url(TEST_URL, {'crawlerOptions': {'excludes': ['blog/*']}}, True) +def test_successful_response_with_valid_api_key_and_include_html(): + app = FirecrawlApp(api_url=API_URL, api_key=TEST_API_KEY) + response = app.scrape_url('https://firecrawl.dev', {'pageOptions': {'includeHtml': True}}) + assert response is not None + assert 'content' in response + assert 'markdown' in response + assert 'html' in response + assert 'metadata' in response + assert "🔥 Firecrawl" in response['content'] + assert "🔥 Firecrawl" in response['markdown'] + assert " 0 + assert 'content' in response[0] + assert "🔥 Firecrawl" in response[0]['content'] + +def test_crawl_url_with_idempotency_key_e2e(): + app = FirecrawlApp(api_url=API_URL, api_key=TEST_API_KEY) + uniqueIdempotencyKey = str(uuid4()) + response = app.crawl_url('https://firecrawl.dev', {'crawlerOptions': {'excludes': ['blog/*']}}, True, 2, uniqueIdempotencyKey) assert response is not None assert len(response) > 0 assert 'content' in response[0] assert "🔥 Firecrawl" in response[0]['content'] -def test_crawl_url_invalid_api_key(): - invalid_app = FirecrawlApp(api_key="invalid_api_key") with pytest.raises(Exception) as excinfo: - invalid_app.crawl_url(TEST_URL) - assert "Unexpected error occurred while trying to start crawl job. Status code: 401" in str(excinfo.value) + app.crawl_url('https://firecrawl.dev', {'crawlerOptions': {'excludes': ['blog/*']}}, True, 2, uniqueIdempotencyKey) + assert "Failed to start crawl job. Status code: 409. Error: Idempotency key already used" in str(excinfo.value) + +def test_check_crawl_status_e2e(): + app = FirecrawlApp(api_url=API_URL, api_key=TEST_API_KEY) + response = app.crawl_url('https://firecrawl.dev', {'crawlerOptions': {'excludes': ['blog/*']}}, False) + assert response is not None + assert 'jobId' in response + + time.sleep(30) # wait for 30 seconds + status_response = app.check_crawl_status(response['jobId']) + assert status_response is not None + assert 'status' in status_response + assert status_response['status'] == 'completed' + assert 'data' in status_response + assert len(status_response['data']) > 0 def test_search_e2e(): - app = FirecrawlApp(api_key=TEST_API_KEY) + app = FirecrawlApp(api_url=API_URL, api_key=TEST_API_KEY) response = app.search("test query") assert response is not None assert 'content' in response[0] assert len(response) > 2 def test_search_invalid_api_key(): - invalid_app = FirecrawlApp(api_key="invalid_api_key") + invalid_app = FirecrawlApp(api_url=API_URL, api_key="invalid_api_key") with pytest.raises(Exception) as excinfo: invalid_app.search("test query") assert "Failed to search. Status code: 401" in str(excinfo.value) -def test_crawl_with_fast_mode(): - app = FirecrawlApp(api_key=TEST_API_KEY) - response = app.crawl_url(TEST_URL, {'crawlerOptions': {'mode': 'fast'}}, True) - assert response is not None - assert len(response) > 0 - assert 'content' in response[0] - -def test_crawl_with_html_inclusion(): - app = FirecrawlApp(api_key=TEST_API_KEY) - response = app.crawl_url(TEST_URL, {'pageOptions': {'includeHtml': True}}, False) - assert response is not None - assert 'jobId' in response - -def test_crawl_with_pdf_extraction(): - app = FirecrawlApp(api_key=TEST_API_KEY) - response = app.crawl_url("https://arxiv.org/pdf/astro-ph/9301001", - {'crawlerOptions': {'limit': 10, 'excludes': ['list/*', 'login', 'abs/*', 'static/*', 'about/*', 'archive/*']}}, False) - assert response is not None - assert 'jobId' in response - -def test_timeout_during_scraping(): - app = FirecrawlApp(api_key=TEST_API_KEY) - with pytest.raises(Exception) as excinfo: - app.scrape_url(TEST_URL, {'timeout': 1000}) - assert 'Failed to scrape URL. Status code: 408' in str(excinfo.value) - def test_llm_extraction(): - app = FirecrawlApp(api_key=TEST_API_KEY) + app = FirecrawlApp(api_url=API_URL, api_key=TEST_API_KEY) response = app.scrape_url("https://mendable.ai", { 'extractorOptions': { 'mode': 'llm-extraction', diff --git a/apps/python-sdk/setup.py b/apps/python-sdk/setup.py index 6674a89..726cafa 100644 --- a/apps/python-sdk/setup.py +++ b/apps/python-sdk/setup.py @@ -11,5 +11,6 @@ setup( install_requires=[ 'requests', 'pytest', + 'python-dotenv', ], ) From 19decd1062c08e0b6e42c6d9152a376cfd645457 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 14:21:33 -0300 Subject: [PATCH 049/230] fixing workflow --- .github/workflows/python-tests.yml | 2 +- apps/python-sdk/requirements.txt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 apps/python-sdk/requirements.txt diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 9c3783b..327fcb2 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -22,7 +22,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python setup.py + pip install -r requirements.txt working-directory: ./apps/python-sdk - name: Test with pytest run: | diff --git a/apps/python-sdk/requirements.txt b/apps/python-sdk/requirements.txt new file mode 100644 index 0000000..1bed588 --- /dev/null +++ b/apps/python-sdk/requirements.txt @@ -0,0 +1,3 @@ +requests +pytest +python-dotenv \ No newline at end of file From c410dbe5bdec5b172118b049cb4aa055d7835ab5 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 14:24:30 -0300 Subject: [PATCH 050/230] Update python-tests.yml --- .github/workflows/python-tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 327fcb2..9bd9ddb 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -26,6 +26,5 @@ jobs: working-directory: ./apps/python-sdk - name: Test with pytest run: | - cd apps/python-sdk pytest firecrawl/__tests__/e2e_withAuth/test.py working-directory: ./apps/python-sdk From a9b68d95d88518b75a6551bede75ce7191c82eca Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 14:28:44 -0300 Subject: [PATCH 051/230] Update test.py --- apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py b/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py index 1a3b641..86ce1f9 100644 --- a/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py +++ b/apps/python-sdk/firecrawl/__tests__/e2e_withAuth/test.py @@ -8,7 +8,7 @@ from dotenv import load_dotenv load_dotenv() API_URL = "http://127.0.0.1:3002"; -ABSOLUTE_FIRECRAWL_PATH = "./apps/python-sdk/firecrawl/firecrawl.py" +ABSOLUTE_FIRECRAWL_PATH = "firecrawl/firecrawl.py" TEST_API_KEY = os.getenv('TEST_API_KEY') print(f"ABSOLUTE_FIRECRAWL_PATH: {ABSOLUTE_FIRECRAWL_PATH}") From f32c16258a5aacf7cb15825df11509810fa63927 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 14:32:34 -0300 Subject: [PATCH 052/230] missing node setup --- .github/workflows/python-tests.yml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 9bd9ddb..4e154b8 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -13,8 +13,25 @@ jobs: matrix: python-version: ["3.10"] - steps: + steps: - uses: actions/checkout@v3 + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: "20" + - name: Install pnpm + run: npm install -g pnpm + - name: Install dependencies for API + run: pnpm install + working-directory: ./apps/api + - name: Start the application + run: npm start & + working-directory: ./apps/api + id: start_app + - name: Start workers + run: npm run workers & + working-directory: ./apps/api + id: start_workers - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: From 952ccd8755dc334755a90e7a680b76386d86b192 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 14:34:39 -0300 Subject: [PATCH 053/230] envs --- .github/workflows/python-tests.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 4e154b8..1a7c1df 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -5,7 +5,27 @@ on: branches: - main env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + BULL_AUTH_KEY: ${{ secrets.BULL_AUTH_KEY }} + FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} + HOST: ${{ secrets.HOST }} + LLAMAPARSE_API_KEY: ${{ secrets.LLAMAPARSE_API_KEY }} + LOGTAIL_KEY: ${{ secrets.LOGTAIL_KEY }} + POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} + POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }} + NUM_WORKERS_PER_QUEUE: ${{ secrets.NUM_WORKERS_PER_QUEUE }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + PLAYWRIGHT_MICROSERVICE_URL: ${{ secrets.PLAYWRIGHT_MICROSERVICE_URL }} + PORT: ${{ secrets.PORT }} + REDIS_URL: ${{ secrets.REDIS_URL }} + SCRAPING_BEE_API_KEY: ${{ secrets.SCRAPING_BEE_API_KEY }} + SUPABASE_ANON_TOKEN: ${{ secrets.SUPABASE_ANON_TOKEN }} + SUPABASE_SERVICE_TOKEN: ${{ secrets.SUPABASE_SERVICE_TOKEN }} + SUPABASE_URL: ${{ secrets.SUPABASE_URL }} TEST_API_KEY: ${{ secrets.TEST_API_KEY }} + HYPERDX_API_KEY: ${{ secrets.HYPERDX_API_KEY }} + HDX_NODE_BETA_MODE: 1 + jobs: build: runs-on: ubuntu-latest From d0c4b24a0ef29fa2a090e91e2c4a40c355367a5d Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 14:36:32 -0300 Subject: [PATCH 054/230] missing redis --- .github/workflows/python-tests.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 1a7c1df..9b2145d 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -25,16 +25,21 @@ env: TEST_API_KEY: ${{ secrets.TEST_API_KEY }} HYPERDX_API_KEY: ${{ secrets.HYPERDX_API_KEY }} HDX_NODE_BETA_MODE: 1 - + jobs: build: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.10"] + python-version: ["3.10"] + services: + redis: + image: redis + ports: + - 6379:6379 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: From 127d2db1dd1d8aeec259d2d3e7cc51c4124d975e Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 15:54:09 -0300 Subject: [PATCH 055/230] added js/ts sdk tests --- .github/workflows/fly.yml | 16 ++++++ .github/workflows/js-sdk.yml | 57 +++++++++++++++++++ .../{python-tests.yml => python-sdk.yml} | 4 +- .../src/__tests__/e2e_withAuth/index.test.ts | 1 - 4 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/js-sdk.yml rename .github/workflows/{python-tests.yml => python-sdk.yml} (96%) diff --git a/.github/workflows/fly.yml b/.github/workflows/fly.yml index 09d81af..6285831 100644 --- a/.github/workflows/fly.yml +++ b/.github/workflows/fly.yml @@ -94,6 +94,22 @@ jobs: run: | npm run test working-directory: ./apps/test-suite + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install Python dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + working-directory: ./apps/python-sdk + - name: Run E2E tests for Python SDK + run: | + pytest firecrawl/__tests__/e2e_withAuth/test.py + working-directory: ./apps/python-sdk + - name: Run E2E tests for JavaScript SDK + run: npm run tests + working-directory: ./apps/js-sdk/firecrawl deploy: name: Deploy app diff --git a/.github/workflows/js-sdk.yml b/.github/workflows/js-sdk.yml new file mode 100644 index 0000000..86f0ba1 --- /dev/null +++ b/.github/workflows/js-sdk.yml @@ -0,0 +1,57 @@ +name: Run JavaScript SDK E2E Tests + +on: + pull_request: + branches: + - main +env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + BULL_AUTH_KEY: ${{ secrets.BULL_AUTH_KEY }} + FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} + HOST: ${{ secrets.HOST }} + LLAMAPARSE_API_KEY: ${{ secrets.LLAMAPARSE_API_KEY }} + LOGTAIL_KEY: ${{ secrets.LOGTAIL_KEY }} + POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} + POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }} + NUM_WORKERS_PER_QUEUE: ${{ secrets.NUM_WORKERS_PER_QUEUE }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + PLAYWRIGHT_MICROSERVICE_URL: ${{ secrets.PLAYWRIGHT_MICROSERVICE_URL }} + PORT: ${{ secrets.PORT }} + REDIS_URL: ${{ secrets.REDIS_URL }} + SCRAPING_BEE_API_KEY: ${{ secrets.SCRAPING_BEE_API_KEY }} + SUPABASE_ANON_TOKEN: ${{ secrets.SUPABASE_ANON_TOKEN }} + SUPABASE_SERVICE_TOKEN: ${{ secrets.SUPABASE_SERVICE_TOKEN }} + SUPABASE_URL: ${{ secrets.SUPABASE_URL }} + TEST_API_KEY: ${{ secrets.TEST_API_KEY }} + HYPERDX_API_KEY: ${{ secrets.HYPERDX_API_KEY }} + HDX_NODE_BETA_MODE: 1 + +jobs: + build: + runs-on: ubuntu-latest + services: + redis: + image: redis + ports: + - 6379:6379 + + steps: + - uses: actions/checkout@v3 + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: "20" + - name: Install pnpm + run: npm install -g pnpm + - name: Install dependencies for API + run: pnpm install + working-directory: ./apps/api + - name: Start the application + run: npm start & + working-directory: ./apps/api + - name: Start workers + run: npm run workers & + working-directory: ./apps/api + - name: Run E2E tests for JavaScript SDK + run: npm run tests + working-directory: ./apps/js-sdk/firecrawl \ No newline at end of file diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-sdk.yml similarity index 96% rename from .github/workflows/python-tests.yml rename to .github/workflows/python-sdk.yml index 9b2145d..1308cde 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-sdk.yml @@ -61,12 +61,12 @@ jobs: uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - - name: Install dependencies + - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt working-directory: ./apps/python-sdk - - name: Test with pytest + - name: Run E2E tests for Python SDK run: | pytest firecrawl/__tests__/e2e_withAuth/test.py working-directory: ./apps/python-sdk diff --git a/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts index 13f5347..f06538b 100644 --- a/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts @@ -61,7 +61,6 @@ describe('FirecrawlApp E2E Tests', () => { test('should return successful response for valid scrape with PDF file without explicit extension', async () => { const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); const response = await app.scrapeUrl('https://arxiv.org/pdf/astro-ph/9301001'); - await new Promise(resolve => setTimeout(resolve, 6000)); // wait for 6 seconds expect(response).not.toBeNull(); expect(response.data.content).toContain('We present spectrophotometric observations of the Broad Line Radio Galaxy'); }, 30000); // 30 seconds timeout From e87d39e6ecafd587517df963578b480504198eac Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 15:55:48 -0300 Subject: [PATCH 056/230] typo --- .github/workflows/fly.yml | 2 +- .github/workflows/js-sdk.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/fly.yml b/.github/workflows/fly.yml index 6285831..1976d8f 100644 --- a/.github/workflows/fly.yml +++ b/.github/workflows/fly.yml @@ -108,7 +108,7 @@ jobs: pytest firecrawl/__tests__/e2e_withAuth/test.py working-directory: ./apps/python-sdk - name: Run E2E tests for JavaScript SDK - run: npm run tests + run: npm run test working-directory: ./apps/js-sdk/firecrawl deploy: diff --git a/.github/workflows/js-sdk.yml b/.github/workflows/js-sdk.yml index 86f0ba1..82aa42c 100644 --- a/.github/workflows/js-sdk.yml +++ b/.github/workflows/js-sdk.yml @@ -53,5 +53,5 @@ jobs: run: npm run workers & working-directory: ./apps/api - name: Run E2E tests for JavaScript SDK - run: npm run tests + run: npm run test working-directory: ./apps/js-sdk/firecrawl \ No newline at end of file From 6b58da1c96040963611ee0a2cf8b30fde5d9732d Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 16:01:48 -0300 Subject: [PATCH 057/230] jest --- .github/workflows/fly.yml | 3 +++ .github/workflows/js-sdk.yml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/fly.yml b/.github/workflows/fly.yml index 1976d8f..deddc9f 100644 --- a/.github/workflows/fly.yml +++ b/.github/workflows/fly.yml @@ -107,6 +107,9 @@ jobs: run: | pytest firecrawl/__tests__/e2e_withAuth/test.py working-directory: ./apps/python-sdk + - name: Install dependencies for JavaScript SDK + run: pnpm install + working-directory: ./apps/js-sdk/firecrawl - name: Run E2E tests for JavaScript SDK run: npm run test working-directory: ./apps/js-sdk/firecrawl diff --git a/.github/workflows/js-sdk.yml b/.github/workflows/js-sdk.yml index 82aa42c..3c914cc 100644 --- a/.github/workflows/js-sdk.yml +++ b/.github/workflows/js-sdk.yml @@ -52,6 +52,9 @@ jobs: - name: Start workers run: npm run workers & working-directory: ./apps/api + - name: Install dependencies for JavaScript SDK + run: pnpm install + working-directory: ./apps/js-sdk/firecrawl - name: Run E2E tests for JavaScript SDK run: npm run test working-directory: ./apps/js-sdk/firecrawl \ No newline at end of file From 41c4ef6a82919baba396549479c354d0175d886f Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 16:23:57 -0300 Subject: [PATCH 058/230] dotenv was missing --- apps/js-sdk/firecrawl/package-lock.json | 23 +++++++++++++++ apps/js-sdk/firecrawl/package.json | 2 ++ apps/js-sdk/package-lock.json | 38 ++++++++++++++++--------- apps/js-sdk/package.json | 3 +- 4 files changed, 51 insertions(+), 15 deletions(-) diff --git a/apps/js-sdk/firecrawl/package-lock.json b/apps/js-sdk/firecrawl/package-lock.json index fec326b..b1cebde 100644 --- a/apps/js-sdk/firecrawl/package-lock.json +++ b/apps/js-sdk/firecrawl/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "axios": "^1.6.8", + "dotenv": "^16.4.5", "uuid": "^9.0.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.0" @@ -17,6 +18,7 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/axios": "^0.14.0", + "@types/dotenv": "^8.2.0", "@types/jest": "^29.5.12", "@types/node": "^20.12.12", "@types/uuid": "^9.0.8", @@ -1016,6 +1018,16 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", + "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "dotenv": "*" + } + }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -1621,6 +1633,17 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.748", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.748.tgz", diff --git a/apps/js-sdk/firecrawl/package.json b/apps/js-sdk/firecrawl/package.json index a9fdaaf..a1c42a0 100644 --- a/apps/js-sdk/firecrawl/package.json +++ b/apps/js-sdk/firecrawl/package.json @@ -19,6 +19,7 @@ "license": "MIT", "dependencies": { "axios": "^1.6.8", + "dotenv": "^16.4.5", "uuid": "^9.0.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.0" @@ -30,6 +31,7 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/axios": "^0.14.0", + "@types/dotenv": "^8.2.0", "@types/jest": "^29.5.12", "@types/node": "^20.12.12", "@types/uuid": "^9.0.8", diff --git a/apps/js-sdk/package-lock.json b/apps/js-sdk/package-lock.json index 5167653..c59a371 100644 --- a/apps/js-sdk/package-lock.json +++ b/apps/js-sdk/package-lock.json @@ -11,9 +11,10 @@ "dependencies": { "@mendable/firecrawl-js": "^0.0.19", "axios": "^1.6.8", - "uuid": "^9.0.1", + "dotenv": "^16.4.5", "ts-node": "^10.9.2", "typescript": "^5.4.5", + "uuid": "^9.0.1", "zod": "^3.23.8" }, "devDependencies": { @@ -531,6 +532,17 @@ "node": ">=0.3.1" } }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/esbuild": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", @@ -744,6 +756,18 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "peer": true }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -772,18 +796,6 @@ "peerDependencies": { "zod": "^3.23.3" } - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } } } } diff --git a/apps/js-sdk/package.json b/apps/js-sdk/package.json index df9f99e..0e93fe3 100644 --- a/apps/js-sdk/package.json +++ b/apps/js-sdk/package.json @@ -11,9 +11,8 @@ "author": "", "license": "ISC", "dependencies": { - "axios": "^1.6.8", - "uuid": "^9.0.1", "@mendable/firecrawl-js": "^0.0.19", + "axios": "^1.6.8", "ts-node": "^10.9.2", "typescript": "^5.4.5", "zod": "^3.23.8" From d5c83803cd9adb61209934d6c6e707ad1e757ab6 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 16:35:01 -0300 Subject: [PATCH 059/230] fixing idempotency test --- .../firecrawl/src/__tests__/e2e_withAuth/index.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts index f06538b..8f2e137 100644 --- a/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts @@ -86,12 +86,12 @@ describe('FirecrawlApp E2E Tests', () => { test('should handle idempotency key for crawl', async () => { const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); const uniqueIdempotencyKey = uuidv4(); - const response = await app.crawlUrl('https://firecrawl.dev', { crawlerOptions: { excludes: ['blog/*'] } }, true, 2, uniqueIdempotencyKey); + const response = await app.crawlUrl('https://firecrawl.dev', { crawlerOptions: { excludes: ['blog/*'] } }, false, 2, uniqueIdempotencyKey); expect(response).not.toBeNull(); - expect(response[0].content).toContain("🔥 Firecrawl"); + expect(response.jobId).toBeDefined(); await expect(app.crawlUrl('https://firecrawl.dev', { crawlerOptions: { excludes: ['blog/*'] } }, true, 2, uniqueIdempotencyKey)).rejects.toThrow("Request failed with status code 409"); - }, 30000); // 30 seconds timeout + }); test('should check crawl status', async () => { const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); From 71187b03a207a4a5bdfd69c0db4ca0cbeeba5592 Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Mon, 27 May 2024 16:48:08 -0300 Subject: [PATCH 060/230] added timeout --- apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts index 8f2e137..c9db6a9 100644 --- a/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts @@ -78,7 +78,7 @@ describe('FirecrawlApp E2E Tests', () => { test('should return successful response for crawl and wait for completion', async () => { const app = new FirecrawlApp({ apiKey: TEST_API_KEY, apiUrl: API_URL }); - const response = await app.crawlUrl('https://firecrawl.dev', { crawlerOptions: { excludes: ['blog/*'] } }, true); + const response = await app.crawlUrl('https://firecrawl.dev', { crawlerOptions: { excludes: ['blog/*'] } }, true, 30); expect(response).not.toBeNull(); expect(response[0].content).toContain("🔥 Firecrawl"); }, 60000); // 60 seconds timeout From 41b98f15a8db4e5799ce8145d15aac9443d55bfe Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 27 May 2024 22:57:13 -0700 Subject: [PATCH 061/230] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 2aaeeeb..07d937e 100644 --- a/README.md +++ b/README.md @@ -402,7 +402,6 @@ const searchResults = await app.search(query, { ``` - ## Contributing We love contributions! Please read our [contributing guide](CONTRIBUTING.md) before submitting a pull request. From 1b3547dcf2944fb3dfdd11c57edba05c91b4bc5f Mon Sep 17 00:00:00 2001 From: Nicolas Date: Tue, 28 May 2024 12:56:24 -0700 Subject: [PATCH 062/230] Nick: --- apps/api/openapi.json | 5 +++ .../src/__tests__/e2e_withAuth/index.test.ts | 20 +++++++++++ apps/api/src/controllers/scrape.ts | 2 +- apps/api/src/lib/entities.ts | 1 + apps/api/src/scraper/WebScraper/single_url.ts | 34 +++++++++++++------ 5 files changed, 50 insertions(+), 12 deletions(-) diff --git a/apps/api/openapi.json b/apps/api/openapi.json index b483bc4..ab452ff 100644 --- a/apps/api/openapi.json +++ b/apps/api/openapi.json @@ -50,6 +50,11 @@ "type": "boolean", "description": "Include the raw HTML content of the page. Will output a html key in the response.", "default": false + }, + "waitFor": { + "type": "integer", + "description": "Wait x amount of milliseconds for the page to load to fetch content", + "default": 0 } } }, diff --git a/apps/api/src/__tests__/e2e_withAuth/index.test.ts b/apps/api/src/__tests__/e2e_withAuth/index.test.ts index e039531..797c6f2 100644 --- a/apps/api/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/api/src/__tests__/e2e_withAuth/index.test.ts @@ -134,6 +134,26 @@ describe("E2E Tests for API Routes", () => { expect(response.body.data).toHaveProperty('metadata'); expect(response.body.data.content).toContain('We present spectrophotometric observations of the Broad Line Radio Galaxy'); }, 60000); // 60 seconds + + it("should return a successful response with a valid API key and waitFor option", async () => { + const startTime = Date.now(); + const response = await request(TEST_URL) + .post("/v0/scrape") + .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) + .set("Content-Type", "application/json") + .send({ url: "https://firecrawl.dev", pageOptions: { waitFor: 7000 } }); + const endTime = Date.now(); + const duration = endTime - startTime; + + expect(response.statusCode).toBe(200); + expect(response.body).toHaveProperty("data"); + expect(response.body.data).toHaveProperty("content"); + expect(response.body.data).toHaveProperty("markdown"); + expect(response.body.data).toHaveProperty("metadata"); + expect(response.body.data).not.toHaveProperty("html"); + expect(response.body.data.content).toContain("🔥 Firecrawl"); + expect(duration).toBeGreaterThanOrEqual(7000); + }, 12000); // 12 seconds timeout }); describe("POST /v0/crawl", () => { diff --git a/apps/api/src/controllers/scrape.ts b/apps/api/src/controllers/scrape.ts index 0b3f146..f01e7e4 100644 --- a/apps/api/src/controllers/scrape.ts +++ b/apps/api/src/controllers/scrape.ts @@ -102,7 +102,7 @@ export async function scrapeController(req: Request, res: Response) { return res.status(status).json({ error }); } const crawlerOptions = req.body.crawlerOptions ?? {}; - const pageOptions = req.body.pageOptions ?? { onlyMainContent: false, includeHtml: false }; + const pageOptions = req.body.pageOptions ?? { onlyMainContent: false, includeHtml: false, waitFor: 0 }; const extractorOptions = req.body.extractorOptions ?? { mode: "markdown" } diff --git a/apps/api/src/lib/entities.ts b/apps/api/src/lib/entities.ts index ab0a0ef..1bd774d 100644 --- a/apps/api/src/lib/entities.ts +++ b/apps/api/src/lib/entities.ts @@ -15,6 +15,7 @@ export type PageOptions = { includeHtml?: boolean; fallback?: boolean; fetchPageContent?: boolean; + waitFor?: number; }; export type ExtractorOptions = { diff --git a/apps/api/src/scraper/WebScraper/single_url.ts b/apps/api/src/scraper/WebScraper/single_url.ts index 419bdba..7022504 100644 --- a/apps/api/src/scraper/WebScraper/single_url.ts +++ b/apps/api/src/scraper/WebScraper/single_url.ts @@ -44,18 +44,21 @@ export async function generateRequestParams( } export async function scrapWithFireEngine( url: string, + waitFor: number = 0, options?: any ): Promise { try { const reqParams = await generateRequestParams(url); - const wait_playwright = reqParams["params"]?.wait ?? 0; + // If the user has passed a wait parameter in the request, use that + const waitParam = reqParams["params"]?.wait ?? waitFor; + console.log(`[Fire-Engine] Scraping ${url} with wait: ${waitParam}`); const response = await fetch(process.env.FIRE_ENGINE_BETA_URL+ "/scrape", { method: "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ url: url, wait: wait_playwright }), + body: JSON.stringify({ url: url, wait: waitParam }), }); if (!response.ok) { @@ -115,17 +118,18 @@ export async function scrapWithScrapingBee( } } -export async function scrapWithPlaywright(url: string): Promise { +export async function scrapWithPlaywright(url: string, waitFor: number = 0): Promise { try { const reqParams = await generateRequestParams(url); - const wait_playwright = reqParams["params"]?.wait ?? 0; + // If the user has passed a wait parameter in the request, use that + const waitParam = reqParams["params"]?.wait ?? waitFor; const response = await fetch(process.env.PLAYWRIGHT_MICROSERVICE_URL, { method: "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ url: url, wait: wait_playwright }), + body: JSON.stringify({ url: url, wait: waitParam }), }); if (!response.ok) { @@ -178,7 +182,7 @@ export async function scrapWithFetch(url: string): Promise { * @param defaultScraper The default scraper to use if the URL does not have a specific scraper order defined * @returns The order of scrapers to be used for scraping a URL */ -function getScrapingFallbackOrder(defaultScraper?: string) { +function getScrapingFallbackOrder(defaultScraper?: string, isWaitPresent: boolean = false) { const availableScrapers = baseScrapers.filter(scraper => { switch (scraper) { case "scrapingBee": @@ -193,16 +197,22 @@ function getScrapingFallbackOrder(defaultScraper?: string) { } }); - const defaultOrder = ["scrapingBee", "fire-engine", "playwright", "scrapingBeeLoad", "fetch"]; + let defaultOrder = ["scrapingBee", "fire-engine", "playwright", "scrapingBeeLoad", "fetch"]; + + if (isWaitPresent) { + defaultOrder = ["fire-engine", "playwright", ...defaultOrder.filter(scraper => scraper !== "fire-engine" && scraper !== "playwright")]; + } + const filteredDefaultOrder = defaultOrder.filter((scraper: typeof baseScrapers[number]) => availableScrapers.includes(scraper)); const uniqueScrapers = new Set(defaultScraper ? [defaultScraper, ...filteredDefaultOrder, ...availableScrapers] : [...filteredDefaultOrder, ...availableScrapers]); const scrapersInOrder = Array.from(uniqueScrapers); + console.log(`Scrapers in order: ${scrapersInOrder}`); return scrapersInOrder as typeof baseScrapers[number][]; } export async function scrapSingleUrl( urlToScrap: string, - pageOptions: PageOptions = { onlyMainContent: true, includeHtml: false }, + pageOptions: PageOptions = { onlyMainContent: true, includeHtml: false, waitFor: 0}, existingHtml: string = "" ): Promise { urlToScrap = urlToScrap.trim(); @@ -227,7 +237,9 @@ export async function scrapSingleUrl( switch (method) { case "fire-engine": if (process.env.FIRE_ENGINE_BETA_URL) { - text = await scrapWithFireEngine(url); + console.log(`Scraping ${url} with Fire Engine`); + + text = await scrapWithFireEngine(url, pageOptions.waitFor); } break; case "scrapingBee": @@ -241,7 +253,7 @@ export async function scrapSingleUrl( break; case "playwright": if (process.env.PLAYWRIGHT_MICROSERVICE_URL) { - text = await scrapWithPlaywright(url); + text = await scrapWithPlaywright(url, pageOptions.waitFor); } break; case "scrapingBeeLoad": @@ -268,7 +280,7 @@ export async function scrapSingleUrl( console.error(`Invalid URL key, trying: ${urlToScrap}`); } const defaultScraper = urlSpecificParams[urlKey]?.defaultScraper ?? ""; - const scrapersInOrder = getScrapingFallbackOrder(defaultScraper) + const scrapersInOrder = getScrapingFallbackOrder(defaultScraper, pageOptions && pageOptions.waitFor && pageOptions.waitFor > 0) for (const scraper of scrapersInOrder) { // If exists text coming from crawler, use it From 0f43a1290607446705c3064bb129267abb166dc2 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Tue, 28 May 2024 17:17:12 -0700 Subject: [PATCH 063/230] Update index.test.ts --- .../src/__tests__/e2e_withAuth/index.test.ts | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/apps/api/src/__tests__/e2e_withAuth/index.test.ts b/apps/api/src/__tests__/e2e_withAuth/index.test.ts index 797c6f2..0838cb4 100644 --- a/apps/api/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/api/src/__tests__/e2e_withAuth/index.test.ts @@ -135,25 +135,26 @@ describe("E2E Tests for API Routes", () => { expect(response.body.data.content).toContain('We present spectrophotometric observations of the Broad Line Radio Galaxy'); }, 60000); // 60 seconds - it("should return a successful response with a valid API key and waitFor option", async () => { - const startTime = Date.now(); - const response = await request(TEST_URL) - .post("/v0/scrape") - .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) - .set("Content-Type", "application/json") - .send({ url: "https://firecrawl.dev", pageOptions: { waitFor: 7000 } }); - const endTime = Date.now(); - const duration = endTime - startTime; + // TODO: add this test back once we nail the waitFor option to be more deterministic + // it("should return a successful response with a valid API key and waitFor option", async () => { + // const startTime = Date.now(); + // const response = await request(TEST_URL) + // .post("/v0/scrape") + // .set("Authorization", `Bearer ${process.env.TEST_API_KEY}`) + // .set("Content-Type", "application/json") + // .send({ url: "https://firecrawl.dev", pageOptions: { waitFor: 7000 } }); + // const endTime = Date.now(); + // const duration = endTime - startTime; - expect(response.statusCode).toBe(200); - expect(response.body).toHaveProperty("data"); - expect(response.body.data).toHaveProperty("content"); - expect(response.body.data).toHaveProperty("markdown"); - expect(response.body.data).toHaveProperty("metadata"); - expect(response.body.data).not.toHaveProperty("html"); - expect(response.body.data.content).toContain("🔥 Firecrawl"); - expect(duration).toBeGreaterThanOrEqual(7000); - }, 12000); // 12 seconds timeout + // expect(response.statusCode).toBe(200); + // expect(response.body).toHaveProperty("data"); + // expect(response.body.data).toHaveProperty("content"); + // expect(response.body.data).toHaveProperty("markdown"); + // expect(response.body.data).toHaveProperty("metadata"); + // expect(response.body.data).not.toHaveProperty("html"); + // expect(response.body.data.content).toContain("🔥 Firecrawl"); + // expect(duration).toBeGreaterThanOrEqual(4000); + // }, 12000); // 12 seconds timeout }); describe("POST /v0/crawl", () => { From c20c38721d82fa5558287c6cc1f7b553c0371ef7 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Tue, 28 May 2024 17:17:20 -0700 Subject: [PATCH 064/230] Update index.test.ts --- apps/api/src/__tests__/e2e_withAuth/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/__tests__/e2e_withAuth/index.test.ts b/apps/api/src/__tests__/e2e_withAuth/index.test.ts index 0838cb4..6c24b60 100644 --- a/apps/api/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/api/src/__tests__/e2e_withAuth/index.test.ts @@ -153,7 +153,7 @@ describe("E2E Tests for API Routes", () => { // expect(response.body.data).toHaveProperty("metadata"); // expect(response.body.data).not.toHaveProperty("html"); // expect(response.body.data.content).toContain("🔥 Firecrawl"); - // expect(duration).toBeGreaterThanOrEqual(4000); + // expect(duration).toBeGreaterThanOrEqual(7000); // }, 12000); // 12 seconds timeout }); From ee9a2184e2bdd39338bac058aa758af3dfe3600c Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Wed, 29 May 2024 13:39:43 -0300 Subject: [PATCH 065/230] Added custom scraping conditions for readme docs --- apps/api/src/scraper/WebScraper/single_url.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/apps/api/src/scraper/WebScraper/single_url.ts b/apps/api/src/scraper/WebScraper/single_url.ts index 7022504..4dfe79f 100644 --- a/apps/api/src/scraper/WebScraper/single_url.ts +++ b/apps/api/src/scraper/WebScraper/single_url.ts @@ -210,6 +210,14 @@ function getScrapingFallbackOrder(defaultScraper?: string, isWaitPresent: boolea return scrapersInOrder as typeof baseScrapers[number][]; } +async function handleCustomScraping(text: string, url: string): Promise { + if (text.includes(' Date: Wed, 29 May 2024 18:56:57 -0400 Subject: [PATCH 066/230] init commit --- apps/api/src/controllers/scrape.ts | 2 +- apps/api/src/lib/entities.ts | 1 + apps/api/src/scraper/WebScraper/single_url.ts | 60 ++++++++++++------- 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/apps/api/src/controllers/scrape.ts b/apps/api/src/controllers/scrape.ts index f01e7e4..b554165 100644 --- a/apps/api/src/controllers/scrape.ts +++ b/apps/api/src/controllers/scrape.ts @@ -102,7 +102,7 @@ export async function scrapeController(req: Request, res: Response) { return res.status(status).json({ error }); } const crawlerOptions = req.body.crawlerOptions ?? {}; - const pageOptions = req.body.pageOptions ?? { onlyMainContent: false, includeHtml: false, waitFor: 0 }; + const pageOptions = req.body.pageOptions ?? { onlyMainContent: false, includeHtml: false, waitFor: 0, screenshot: false }; const extractorOptions = req.body.extractorOptions ?? { mode: "markdown" } diff --git a/apps/api/src/lib/entities.ts b/apps/api/src/lib/entities.ts index 1bd774d..23469f0 100644 --- a/apps/api/src/lib/entities.ts +++ b/apps/api/src/lib/entities.ts @@ -16,6 +16,7 @@ export type PageOptions = { fallback?: boolean; fetchPageContent?: boolean; waitFor?: number; + screenshot?: boolean; }; export type ExtractorOptions = { diff --git a/apps/api/src/scraper/WebScraper/single_url.ts b/apps/api/src/scraper/WebScraper/single_url.ts index 4dfe79f..7e33827 100644 --- a/apps/api/src/scraper/WebScraper/single_url.ts +++ b/apps/api/src/scraper/WebScraper/single_url.ts @@ -45,12 +45,14 @@ export async function generateRequestParams( export async function scrapWithFireEngine( url: string, waitFor: number = 0, + screenshot: boolean = false, options?: any -): Promise { +): Promise<[string, string]> { try { const reqParams = await generateRequestParams(url); // If the user has passed a wait parameter in the request, use that const waitParam = reqParams["params"]?.wait ?? waitFor; + const screenshotParam = reqParams["params"]?.screenshot ?? screenshot; console.log(`[Fire-Engine] Scraping ${url} with wait: ${waitParam}`); const response = await fetch(process.env.FIRE_ENGINE_BETA_URL+ "/scrape", { @@ -58,27 +60,28 @@ export async function scrapWithFireEngine( headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ url: url, wait: waitParam }), + body: JSON.stringify({ url: url, wait: waitParam, screenshot: screenshotParam }), }); if (!response.ok) { console.error( `[Fire-Engine] Error fetching url: ${url} with status: ${response.status}` ); - return ""; + return ["", ""]; } const contentType = response.headers['content-type']; if (contentType && contentType.includes('application/pdf')) { - return fetchAndProcessPdf(url); + return [await fetchAndProcessPdf(url), ""]; } else { const data = await response.json(); const html = data.content; - return html ?? ""; + const screenshot = data.screenshot; + return [html ?? "", screenshot ?? ""]; } } catch (error) { console.error(`[Fire-Engine][c] Error fetching url: ${url} -> ${error}`); - return ""; + return ["", ""]; } } @@ -182,7 +185,7 @@ export async function scrapWithFetch(url: string): Promise { * @param defaultScraper The default scraper to use if the URL does not have a specific scraper order defined * @returns The order of scrapers to be used for scraping a URL */ -function getScrapingFallbackOrder(defaultScraper?: string, isWaitPresent: boolean = false) { +function getScrapingFallbackOrder(defaultScraper?: string, isWaitPresent: boolean = false, isScreenshotPresent: boolean = false) { const availableScrapers = baseScrapers.filter(scraper => { switch (scraper) { case "scrapingBee": @@ -199,7 +202,7 @@ function getScrapingFallbackOrder(defaultScraper?: string, isWaitPresent: boolea let defaultOrder = ["scrapingBee", "fire-engine", "playwright", "scrapingBeeLoad", "fetch"]; - if (isWaitPresent) { + if (isWaitPresent || isScreenshotPresent) { defaultOrder = ["fire-engine", "playwright", ...defaultOrder.filter(scraper => scraper !== "fire-engine" && scraper !== "playwright")]; } @@ -210,7 +213,7 @@ function getScrapingFallbackOrder(defaultScraper?: string, isWaitPresent: boolea return scrapersInOrder as typeof baseScrapers[number][]; } -async function handleCustomScraping(text: string, url: string): Promise { +async function handleCustomScraping(text: string, url: string): Promise<[string, string] | null> { if (text.includes(' { urlToScrap = urlToScrap.trim(); @@ -242,12 +245,13 @@ export async function scrapSingleUrl( method: typeof baseScrapers[number] ) => { let text = ""; + let screenshot = ""; switch (method) { case "fire-engine": if (process.env.FIRE_ENGINE_BETA_URL) { console.log(`Scraping ${url} with Fire Engine`); - text = await scrapWithFireEngine(url, pageOptions.waitFor); + [text, screenshot] = await scrapWithFireEngine(url, pageOptions.waitFor, pageOptions.screenshot); } break; case "scrapingBee": @@ -277,16 +281,17 @@ export async function scrapSingleUrl( // Check for custom scraping conditions const customScrapedContent = await handleCustomScraping(text, url); if (customScrapedContent) { - text = customScrapedContent; + text = customScrapedContent[0]; + screenshot = customScrapedContent[1]; } //* TODO: add an optional to return markdown or structured/extracted content let cleanedHtml = removeUnwantedElements(text, pageOptions); - return [await parseMarkdown(cleanedHtml), text]; + return [await parseMarkdown(cleanedHtml), text, screenshot]; }; try { - let [text, html] = ["", ""]; + let [text, html, screenshot] = ["", "", ""]; let urlKey = urlToScrap; try { urlKey = new URL(urlToScrap).hostname.replace(/^www\./, ""); @@ -294,7 +299,7 @@ export async function scrapSingleUrl( console.error(`Invalid URL key, trying: ${urlToScrap}`); } const defaultScraper = urlSpecificParams[urlKey]?.defaultScraper ?? ""; - const scrapersInOrder = getScrapingFallbackOrder(defaultScraper, pageOptions && pageOptions.waitFor && pageOptions.waitFor > 0) + const scrapersInOrder = getScrapingFallbackOrder(defaultScraper, pageOptions && pageOptions.waitFor && pageOptions.waitFor > 0, pageOptions && pageOptions.screenshot && pageOptions.screenshot === true) for (const scraper of scrapersInOrder) { // If exists text coming from crawler, use it @@ -304,7 +309,7 @@ export async function scrapSingleUrl( html = existingHtml; break; } - [text, html] = await attemptScraping(urlToScrap, scraper); + [text, html, screenshot] = await attemptScraping(urlToScrap, scraper); if (text && text.trim().length >= 100) break; const nextScraperIndex = scrapersInOrder.indexOf(scraper) + 1; if (nextScraperIndex < scrapersInOrder.length) { @@ -318,12 +323,23 @@ export async function scrapSingleUrl( const soup = cheerio.load(html); const metadata = extractMetadata(soup, urlToScrap); - const document: Document = { - content: text, - markdown: text, - html: pageOptions.includeHtml ? html : undefined, - metadata: { ...metadata, sourceURL: urlToScrap }, - }; + + let document: Document; + if(screenshot && screenshot.length > 0) { + document = { + content: text, + markdown: text, + html: pageOptions.includeHtml ? html : undefined, + metadata: { ...metadata, screenshot_base64: screenshot, sourceURL: urlToScrap, }, + } + }else{ + document = { + content: text, + markdown: text, + html: pageOptions.includeHtml ? html : undefined, + metadata: { ...metadata, sourceURL: urlToScrap, }, + } + } return document; } catch (error) { From 37915e11e85d363483794f8f1ad3ff3519dd61f3 Mon Sep 17 00:00:00 2001 From: Eric Ciarla Date: Wed, 29 May 2024 21:18:24 -0400 Subject: [PATCH 067/230] Final push --- apps/api/src/scraper/WebScraper/single_url.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/api/src/scraper/WebScraper/single_url.ts b/apps/api/src/scraper/WebScraper/single_url.ts index 7e33827..4f521e8 100644 --- a/apps/api/src/scraper/WebScraper/single_url.ts +++ b/apps/api/src/scraper/WebScraper/single_url.ts @@ -53,7 +53,7 @@ export async function scrapWithFireEngine( // If the user has passed a wait parameter in the request, use that const waitParam = reqParams["params"]?.wait ?? waitFor; const screenshotParam = reqParams["params"]?.screenshot ?? screenshot; - console.log(`[Fire-Engine] Scraping ${url} with wait: ${waitParam}`); + console.log(`[Fire-Engine] Scraping ${url} with wait: ${waitParam} and screenshot: ${screenshotParam}`); const response = await fetch(process.env.FIRE_ENGINE_BETA_URL+ "/scrape", { method: "POST", @@ -330,7 +330,7 @@ export async function scrapSingleUrl( content: text, markdown: text, html: pageOptions.includeHtml ? html : undefined, - metadata: { ...metadata, screenshot_base64: screenshot, sourceURL: urlToScrap, }, + metadata: { ...metadata, screenshot: screenshot, sourceURL: urlToScrap, }, } }else{ document = { From 6c939d534d26342e936b97f3a88f936d96a39dc4 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 29 May 2024 19:43:51 -0700 Subject: [PATCH 068/230] Nick: small refactor --- apps/api/src/lib/entities.ts | 5 +++++ apps/api/src/scraper/WebScraper/single_url.ts | 19 ++++++++++--------- apps/api/src/types.ts | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/apps/api/src/lib/entities.ts b/apps/api/src/lib/entities.ts index 23469f0..48d3e89 100644 --- a/apps/api/src/lib/entities.ts +++ b/apps/api/src/lib/entities.ts @@ -106,4 +106,9 @@ export class SearchResult { toString(): string { return `SearchResult(url=${this.url}, title=${this.title}, description=${this.description})`; } +} + +export interface FireEngineResponse { + html: string; + screenshot: string; } \ No newline at end of file diff --git a/apps/api/src/scraper/WebScraper/single_url.ts b/apps/api/src/scraper/WebScraper/single_url.ts index 4f521e8..c7f9469 100644 --- a/apps/api/src/scraper/WebScraper/single_url.ts +++ b/apps/api/src/scraper/WebScraper/single_url.ts @@ -2,7 +2,7 @@ import * as cheerio from "cheerio"; import { ScrapingBeeClient } from "scrapingbee"; import { extractMetadata } from "./utils/metadata"; import dotenv from "dotenv"; -import { Document, PageOptions } from "../../lib/entities"; +import { Document, PageOptions, FireEngineResponse } from "../../lib/entities"; import { parseMarkdown } from "../../lib/html-to-markdown"; import { excludeNonMainTags } from "./utils/excludeTags"; import { urlSpecificParams } from "./utils/custom/website_params"; @@ -47,7 +47,7 @@ export async function scrapWithFireEngine( waitFor: number = 0, screenshot: boolean = false, options?: any -): Promise<[string, string]> { +): Promise { try { const reqParams = await generateRequestParams(url); // If the user has passed a wait parameter in the request, use that @@ -67,21 +67,21 @@ export async function scrapWithFireEngine( console.error( `[Fire-Engine] Error fetching url: ${url} with status: ${response.status}` ); - return ["", ""]; + return { html: "", screenshot: "" }; } const contentType = response.headers['content-type']; if (contentType && contentType.includes('application/pdf')) { - return [await fetchAndProcessPdf(url), ""]; + return { html: await fetchAndProcessPdf(url), screenshot: "" }; } else { const data = await response.json(); const html = data.content; const screenshot = data.screenshot; - return [html ?? "", screenshot ?? ""]; + return { html: html ?? "", screenshot: screenshot ?? "" }; } } catch (error) { console.error(`[Fire-Engine][c] Error fetching url: ${url} -> ${error}`); - return ["", ""]; + return { html: "", screenshot: "" }; } } @@ -213,7 +213,7 @@ function getScrapingFallbackOrder(defaultScraper?: string, isWaitPresent: boolea return scrapersInOrder as typeof baseScrapers[number][]; } -async function handleCustomScraping(text: string, url: string): Promise<[string, string] | null> { +async function handleCustomScraping(text: string, url: string): Promise { if (text.includes(' Date: Thu, 30 May 2024 08:25:13 -0300 Subject: [PATCH 069/230] Update index.ts --- apps/js-sdk/firecrawl/src/index.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/js-sdk/firecrawl/src/index.ts b/apps/js-sdk/firecrawl/src/index.ts index 2a07f60..5e26d9e 100644 --- a/apps/js-sdk/firecrawl/src/index.ts +++ b/apps/js-sdk/firecrawl/src/index.ts @@ -174,7 +174,7 @@ export default class FirecrawlApp { * @param {string} url - The URL to crawl. * @param {Params | null} params - Additional parameters for the crawl request. * @param {boolean} waitUntilDone - Whether to wait for the crawl job to complete. - * @param {number} timeout - Timeout in seconds for job status checks. + * @param {number} pollInterval - Time in seconds for job status checks. * @param {string} idempotencyKey - Optional idempotency key for the request. * @returns {Promise} The response from the crawl operation. */ @@ -182,7 +182,7 @@ export default class FirecrawlApp { url: string, params: Params | null = null, waitUntilDone: boolean = true, - timeout: number = 2, + pollInterval: number = 2, idempotencyKey?: string ): Promise { const headers = this.prepareHeaders(idempotencyKey); @@ -199,7 +199,7 @@ export default class FirecrawlApp { if (response.status === 200) { const jobId: string = response.data.jobId; if (waitUntilDone) { - return this.monitorJobStatus(jobId, headers, timeout); + return this.monitorJobStatus(jobId, headers, pollInterval); } else { return { success: true, jobId }; } @@ -290,7 +290,7 @@ export default class FirecrawlApp { async monitorJobStatus( jobId: string, headers: AxiosRequestHeaders, - timeout: number + checkInterval: number ): Promise { while (true) { const statusResponse: AxiosResponse = await this.getRequest( @@ -308,10 +308,10 @@ export default class FirecrawlApp { } else if ( ["active", "paused", "pending", "queued"].includes(statusData.status) ) { - if (timeout < 2) { - timeout = 2; + if (checkInterval < 2) { + checkInterval = 2; } - await new Promise((resolve) => setTimeout(resolve, timeout * 1000)); // Wait for the specified timeout before checking again + await new Promise((resolve) => setTimeout(resolve, checkInterval * 1000)); // Wait for the specified timeout before checking again } else { throw new Error( `Crawl job failed or was stopped. Status: ${statusData.status}` From 2b763d848bf529c14097e2564e0295e6e3506b1e Mon Sep 17 00:00:00 2001 From: rafaelsideguide <150964962+rafaelsideguide@users.noreply.github.com> Date: Thu, 30 May 2024 08:44:38 -0300 Subject: [PATCH 070/230] improved js response and test for getting partial_data --- .../src/__tests__/e2e_withAuth/index.test.ts | 13 +++++++++++-- apps/js-sdk/firecrawl/src/index.ts | 8 +++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts index c9db6a9..7cb532c 100644 --- a/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/js-sdk/firecrawl/src/__tests__/e2e_withAuth/index.test.ts @@ -99,8 +99,17 @@ describe('FirecrawlApp E2E Tests', () => { expect(response).not.toBeNull(); expect(response.jobId).toBeDefined(); - await new Promise(resolve => setTimeout(resolve, 10000)); // wait for 10 seconds - const statusResponse = await app.checkCrawlStatus(response.jobId); + let statusResponse = await app.checkCrawlStatus(response.jobId); + const maxChecks = 15; + let checks = 0; + + while (statusResponse.status === 'active' && checks < maxChecks) { + await new Promise(resolve => setTimeout(resolve, 1000)); + expect(statusResponse.partial_data).not.toBeNull(); + statusResponse = await app.checkCrawlStatus(response.jobId); + checks++; + } + expect(statusResponse).not.toBeNull(); expect(statusResponse.status).toBe('completed'); expect(statusResponse.data.length).toBeGreaterThan(0); diff --git a/apps/js-sdk/firecrawl/src/index.ts b/apps/js-sdk/firecrawl/src/index.ts index 2a07f60..7329556 100644 --- a/apps/js-sdk/firecrawl/src/index.ts +++ b/apps/js-sdk/firecrawl/src/index.ts @@ -56,6 +56,7 @@ export interface JobStatusResponse { status: string; jobId?: string; data?: any; + partial_data?: any, error?: string; } @@ -226,7 +227,12 @@ export default class FirecrawlApp { headers ); if (response.status === 200) { - return response.data; + return { + success: true, + status: response.data.status, + data: response.data.data, + partial_data: !response.data.data ? response.data.partial_data : undefined, + }; } else { this.handleError(response, "check crawl status"); } From dec225d36815ec04523134b2012f2733a0703065 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Tue, 28 May 2024 20:08:41 +1000 Subject: [PATCH 071/230] Move version to __init__.py Setup.py does not need to be edited when building the package. --- apps/python-sdk/firecrawl/__init__.py | 2 ++ apps/python-sdk/setup.py | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/apps/python-sdk/firecrawl/__init__.py b/apps/python-sdk/firecrawl/__init__.py index e7f8063..6899915 100644 --- a/apps/python-sdk/firecrawl/__init__.py +++ b/apps/python-sdk/firecrawl/__init__.py @@ -1 +1,3 @@ from .firecrawl import FirecrawlApp + +__version__ = "0.0.11" diff --git a/apps/python-sdk/setup.py b/apps/python-sdk/setup.py index beee059..4978559 100644 --- a/apps/python-sdk/setup.py +++ b/apps/python-sdk/setup.py @@ -1,3 +1,4 @@ +import re from pathlib import Path from setuptools import find_packages, setup @@ -5,9 +6,19 @@ from setuptools import find_packages, setup this_directory = Path(__file__).parent long_description_content = (this_directory / "README.md").read_text() + +def get_version(): + """Dynamically set version""" + version_file = (this_directory / "firecrawl" / "__init__.py").read_text() + version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M) + if version_match: + return version_match.group(1) + raise RuntimeError("Unable to find version string.") + + setup( name="firecrawl-py", - version="0.0.11", + version=get_version(), url="https://github.com/mendableai/firecrawl", author="Mendable.ai", author_email="nick@mendable.ai", @@ -20,7 +31,7 @@ setup( 'pytest', 'python-dotenv', ], - python_requires='>=3.8', + python_requires=">=3.8", classifiers=[ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", @@ -41,7 +52,7 @@ setup( "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing", "Topic :: Text Processing :: Indexing", - ], + ], keywords="SDK API firecrawl", project_urls={ "Documentation": "https://docs.firecrawl.dev", From 5c4b3e8f8a0c01c4104c6b1106cec668e119f725 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Tue, 28 May 2024 20:12:44 +1000 Subject: [PATCH 072/230] Initial pyproject.toml This will enable building using 'python -m build', without impacting the utility of setup.py, also provide a base for other build tools and automation. --- apps/python-sdk/pyproject.toml | 48 ++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 apps/python-sdk/pyproject.toml diff --git a/apps/python-sdk/pyproject.toml b/apps/python-sdk/pyproject.toml new file mode 100644 index 0000000..25fa7c1 --- /dev/null +++ b/apps/python-sdk/pyproject.toml @@ -0,0 +1,48 @@ +[build-system] +requires = ["setuptools>=42", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +dynamic = ["version"] +name = "firecrawl-py" +description = "Python SDK for Firecrawl API" +readme = {file="README.md", content-type = "text/markdown"} +requires-python = ">=3.8" +dependencies = [ + "requests", +] +authors = [{name = "Mendable.ai",email = "nick@mendable.ai"}] +maintainers = [{name = "Mendable.ai",email = "nick@mendable.ai"}] +license = {text = "GNU General Public License v3 (GPLv3)"} + +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Internet", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Indexing/Search", + "Topic :: Software Development", + "Topic :: Software Development :: Libraries", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Text Processing", + "Topic :: Text Processing :: Indexing", +] + +keywords = ["SDK", "API", "firecrawl"] + +[project.urls] +"Documentation" = "https://docs.firecrawl.dev" +"Source" = "https://github.com/mendableai/firecrawl" +"Tracker" = "https://github.com/mendableai/firecrawl/issues" + +[tool.setuptools.packages.find] +where = ["."] \ No newline at end of file From 9f8792f00c1469a2037a4d5caa1c59558611654d Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 30 May 2024 09:02:55 +1000 Subject: [PATCH 073/230] Script to check local vs published versions This script is for use with Github workflows --- .../scripts/check_version_has_incremented.py | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 .github/scripts/check_version_has_incremented.py diff --git a/.github/scripts/check_version_has_incremented.py b/.github/scripts/check_version_has_incremented.py new file mode 100644 index 0000000..87e5cc6 --- /dev/null +++ b/.github/scripts/check_version_has_incremented.py @@ -0,0 +1,88 @@ +""" +checks local verions against published verions. + +Usage: + +python .github\scripts\check_version_has_incremented.py js .\apps\js-sdk\firecrawl @mendable/firecrawl-js +Local version: 0.0.22 +Published version: 0.0.21 +true + +python .github\scripts\check_version_has_incremented.py python .\apps\python-sdk\firecrawl firecrawl-py +Local version: 0.0.11 +Published version: 0.0.11 +false + +""" +import json +import os +import re +import sys +from pathlib import Path + +import requests +from packaging.version import Version +from packaging.version import parse as parse_version + + +def get_python_version(file_path: str) -> str: + """Extract version string from Python file.""" + version_file = Path(file_path).read_text() + version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M) + if version_match: + return version_match.group(1).strip() + raise RuntimeError("Unable to find version string.") + +def get_pypi_version(package_name: str) -> str: + """Get latest version of Python package from PyPI.""" + response = requests.get(f"https://pypi.org/pypi/{package_name}/json") + version = response.json()['info']['version'] + return version.strip() + +def get_js_version(file_path: str) -> str: + """Extract version string from package.json.""" + with open(file_path, 'r') as file: + package_json = json.load(file) + if 'version' in package_json: + return package_json['version'].strip() + raise RuntimeError("Unable to find version string in package.json.") + +def get_npm_version(package_name: str) -> str: + """Get latest version of JavaScript package from npm.""" + response = requests.get(f"https://registry.npmjs.org/{package_name}/latest") + version = response.json()['version'] + return version.strip() + +def is_version_incremented(local_version: str, published_version: str) -> bool: + """Compare local and published versions.""" + local_version_parsed: Version = parse_version(local_version) + published_version_parsed: Version = parse_version(published_version) + return local_version_parsed > published_version_parsed + +if __name__ == "__main__": + package_type = sys.argv[1] + package_path = sys.argv[2] + package_name = sys.argv[3] + + if package_type == "python": + # Get current version from __init__.py + current_version = get_python_version(os.path.join(package_path, '__init__.py')) + # Get published version from PyPI + published_version = get_pypi_version(package_name) + elif package_type == "js": + # Get current version from package.json + current_version = get_js_version(os.path.join(package_path, 'package.json')) + # Get published version from npm + published_version = get_npm_version(package_name) + else: + raise ValueError("Invalid package type. Use 'python' or 'js'.") + + # Print versions for debugging + print(f"Local version: {current_version}") + print(f"Published version: {published_version}") + + # Compare versions and print result + if is_version_incremented(current_version, published_version): + print("true") + else: + print("false") From 677102e6769556c25c8e60805969405b52ba4e8c Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Thu, 30 May 2024 09:02:55 +1000 Subject: [PATCH 074/230] Script to check local vs published versions This script is for use with Github workflows --- .../scripts/check_version_has_incremented.py | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 .github/scripts/check_version_has_incremented.py diff --git a/.github/scripts/check_version_has_incremented.py b/.github/scripts/check_version_has_incremented.py new file mode 100644 index 0000000..87e5cc6 --- /dev/null +++ b/.github/scripts/check_version_has_incremented.py @@ -0,0 +1,88 @@ +""" +checks local verions against published verions. + +Usage: + +python .github\scripts\check_version_has_incremented.py js .\apps\js-sdk\firecrawl @mendable/firecrawl-js +Local version: 0.0.22 +Published version: 0.0.21 +true + +python .github\scripts\check_version_has_incremented.py python .\apps\python-sdk\firecrawl firecrawl-py +Local version: 0.0.11 +Published version: 0.0.11 +false + +""" +import json +import os +import re +import sys +from pathlib import Path + +import requests +from packaging.version import Version +from packaging.version import parse as parse_version + + +def get_python_version(file_path: str) -> str: + """Extract version string from Python file.""" + version_file = Path(file_path).read_text() + version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M) + if version_match: + return version_match.group(1).strip() + raise RuntimeError("Unable to find version string.") + +def get_pypi_version(package_name: str) -> str: + """Get latest version of Python package from PyPI.""" + response = requests.get(f"https://pypi.org/pypi/{package_name}/json") + version = response.json()['info']['version'] + return version.strip() + +def get_js_version(file_path: str) -> str: + """Extract version string from package.json.""" + with open(file_path, 'r') as file: + package_json = json.load(file) + if 'version' in package_json: + return package_json['version'].strip() + raise RuntimeError("Unable to find version string in package.json.") + +def get_npm_version(package_name: str) -> str: + """Get latest version of JavaScript package from npm.""" + response = requests.get(f"https://registry.npmjs.org/{package_name}/latest") + version = response.json()['version'] + return version.strip() + +def is_version_incremented(local_version: str, published_version: str) -> bool: + """Compare local and published versions.""" + local_version_parsed: Version = parse_version(local_version) + published_version_parsed: Version = parse_version(published_version) + return local_version_parsed > published_version_parsed + +if __name__ == "__main__": + package_type = sys.argv[1] + package_path = sys.argv[2] + package_name = sys.argv[3] + + if package_type == "python": + # Get current version from __init__.py + current_version = get_python_version(os.path.join(package_path, '__init__.py')) + # Get published version from PyPI + published_version = get_pypi_version(package_name) + elif package_type == "js": + # Get current version from package.json + current_version = get_js_version(os.path.join(package_path, 'package.json')) + # Get published version from npm + published_version = get_npm_version(package_name) + else: + raise ValueError("Invalid package type. Use 'python' or 'js'.") + + # Print versions for debugging + print(f"Local version: {current_version}") + print(f"Published version: {published_version}") + + # Compare versions and print result + if is_version_incremented(current_version, published_version): + print("true") + else: + print("false") From ace46f340b83970b714964fd2d908d9d8150fc3a Mon Sep 17 00:00:00 2001 From: Nicolas Date: Thu, 30 May 2024 14:31:36 -0700 Subject: [PATCH 075/230] Nick: new limits, new pricing --- apps/api/.env.example | 7 + apps/api/src/controllers/auth.ts | 10 +- apps/api/src/controllers/scrape.ts | 2 +- apps/api/src/index.ts | 3 + .../src/services/billing/credit_billing.ts | 2 +- apps/api/src/services/rate-limiter.ts | 166 ++++++------------ 6 files changed, 71 insertions(+), 119 deletions(-) diff --git a/apps/api/.env.example b/apps/api/.env.example index 735444b..7934903 100644 --- a/apps/api/.env.example +++ b/apps/api/.env.example @@ -31,6 +31,13 @@ POSTHOG_HOST= # set if you'd like to send posthog events like job logs STRIPE_PRICE_ID_STANDARD= STRIPE_PRICE_ID_SCALE= +STRIPE_PRICE_ID_STARTER= +STRIPE_PRICE_ID_HOBBY= +STRIPE_PRICE_ID_HOBBY_YEARLY= +STRIPE_PRICE_ID_STANDARD_NEW= +STRIPE_PRICE_ID_STANDARD_NEW_YEARLY= +STRIPE_PRICE_ID_GROWTH= +STRIPE_PRICE_ID_GROWTH_YEARLY= HYPERDX_API_KEY= HDX_NODE_BETA_MODE=1 diff --git a/apps/api/src/controllers/auth.ts b/apps/api/src/controllers/auth.ts index a335f8c..33e9695 100644 --- a/apps/api/src/controllers/auth.ts +++ b/apps/api/src/controllers/auth.ts @@ -177,11 +177,19 @@ export async function supaAuthenticateUser( function getPlanByPriceId(price_id: string) { switch (price_id) { + case process.env.STRIPE_PRICE_ID_STARTER: + return 'starter'; case process.env.STRIPE_PRICE_ID_STANDARD: return 'standard'; case process.env.STRIPE_PRICE_ID_SCALE: return 'scale'; + case process.env.STRIPE_PRICE_ID_HOBBY || process.env.STRIPE_PRICE_ID_HOBBY_YEARLY: + return 'hobby'; + case process.env.STRIPE_PRICE_ID_STANDARD_NEW || process.env.STRIPE_PRICE_ID_STANDARD_NEW_YEARLY: + return 'standard-new'; + case process.env.STRIPE_PRICE_ID_GROWTH || process.env.STRIPE_PRICE_ID_GROWTH_YEARLY: + return 'growth'; default: - return 'starter'; + return 'free'; } } \ No newline at end of file diff --git a/apps/api/src/controllers/scrape.ts b/apps/api/src/controllers/scrape.ts index f01e7e4..2049900 100644 --- a/apps/api/src/controllers/scrape.ts +++ b/apps/api/src/controllers/scrape.ts @@ -64,7 +64,7 @@ export async function scrapeHelper( } let creditsToBeBilled = filteredDocs.length; - const creditsPerLLMExtract = 5; + const creditsPerLLMExtract = 50; if (extractorOptions.mode === "llm-extraction") { creditsToBeBilled = creditsToBeBilled + (creditsPerLLMExtract * filteredDocs.length); diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 326728e..0246a1e 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -168,3 +168,6 @@ app.get('/serverHealthCheck/notify', async (req, res) => { app.get("/is-production", (req, res) => { res.send({ isProduction: global.isProduction }); }); + + +// /workers health check, cant act as load balancer, just has to be a pre deploy thing \ No newline at end of file diff --git a/apps/api/src/services/billing/credit_billing.ts b/apps/api/src/services/billing/credit_billing.ts index 4703a7f..c0230d4 100644 --- a/apps/api/src/services/billing/credit_billing.ts +++ b/apps/api/src/services/billing/credit_billing.ts @@ -1,7 +1,7 @@ import { withAuth } from "../../lib/withAuth"; import { supabase_service } from "../supabase"; -const FREE_CREDITS = 300; +const FREE_CREDITS = 500; export async function billTeam(team_id: string, credits: number) { return withAuth(supaBillTeam)(team_id, credits); diff --git a/apps/api/src/services/rate-limiter.ts b/apps/api/src/services/rate-limiter.ts index 5fa0964..6e09310 100644 --- a/apps/api/src/services/rate-limiter.ts +++ b/apps/api/src/services/rate-limiter.ts @@ -2,133 +2,67 @@ import { RateLimiterRedis } from "rate-limiter-flexible"; import * as redis from "redis"; import { RateLimiterMode } from "../../src/types"; -const MAX_CRAWLS_PER_MINUTE_STARTER = 3; -const MAX_CRAWLS_PER_MINUTE_STANDARD = 5; -const MAX_CRAWLS_PER_MINUTE_SCALE = 20; - -const MAX_SCRAPES_PER_MINUTE_STARTER = 20; -const MAX_SCRAPES_PER_MINUTE_STANDARD = 40; -const MAX_SCRAPES_PER_MINUTE_SCALE = 50; - -const MAX_SEARCHES_PER_MINUTE_STARTER = 20; -const MAX_SEARCHES_PER_MINUTE_STANDARD = 40; -const MAX_SEARCHES_PER_MINUTE_SCALE = 50; - -const MAX_REQUESTS_PER_MINUTE_PREVIEW = 5; -const MAX_REQUESTS_PER_MINUTE_ACCOUNT = 20; -const MAX_REQUESTS_PER_MINUTE_CRAWL_STATUS = 150; +const RATE_LIMITS = { + crawl: { + free: 1, + starter: 3, + standard: 5, + scale: 20, + hobby: 3, + standardNew: 10, + growth: 50, + }, + scrape: { + free: 5, + starter: 20, + standardOld: 40, + scale: 50, + hobby: 10, + standardNew: 50, + growth: 500, + }, + search: { + free: 5, + starter: 20, + standard: 40, + scale: 50, + hobby: 10, + standardNew: 50, + growth: 500, + }, + preview: 5, + account: 20, + crawlStatus: 150, + testSuite: 10000, +}; export const redisClient = redis.createClient({ url: process.env.REDIS_URL, legacyMode: true, }); -export const previewRateLimiter = new RateLimiterRedis({ +const createRateLimiter = (keyPrefix, points) => new RateLimiterRedis({ storeClient: redisClient, - keyPrefix: "preview", - points: MAX_REQUESTS_PER_MINUTE_PREVIEW, + keyPrefix, + points, duration: 60, // Duration in seconds }); -export const serverRateLimiter = new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "server", - points: MAX_REQUESTS_PER_MINUTE_ACCOUNT, - duration: 60, // Duration in seconds -}); +export const previewRateLimiter = createRateLimiter("preview", RATE_LIMITS.preview); +export const serverRateLimiter = createRateLimiter("server", RATE_LIMITS.account); +export const crawlStatusRateLimiter = createRateLimiter("crawl-status", RATE_LIMITS.crawlStatus); +export const testSuiteRateLimiter = createRateLimiter("test-suite", RATE_LIMITS.testSuite); -export const crawlStatusRateLimiter = new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "crawl-status", - points: MAX_REQUESTS_PER_MINUTE_CRAWL_STATUS, - duration: 60, // Duration in seconds -}); - -export const testSuiteRateLimiter = new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "test-suite", - points: 10000, - duration: 60, // Duration in seconds -}); - - -export function getRateLimiter(mode: RateLimiterMode, token: string, plan?: string){ - // Special test suite case. TODO: Change this later. - if (token.includes("5089cefa58") || token.includes("6254cf9")){ +export function getRateLimiter(mode: RateLimiterMode, token: string, plan?: string) { + if (token.includes("5089cefa58") || token.includes("6254cf9")) { return testSuiteRateLimiter; } - switch (mode) { - case RateLimiterMode.Preview: - return previewRateLimiter; - case RateLimiterMode.CrawlStatus: - return crawlStatusRateLimiter; - case RateLimiterMode.Crawl: - if (plan === "standard"){ - return new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "crawl-standard", - points: MAX_CRAWLS_PER_MINUTE_STANDARD, - duration: 60, // Duration in seconds - }); - } else if (plan === "scale"){ - return new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "crawl-scale", - points: MAX_CRAWLS_PER_MINUTE_SCALE, - duration: 60, // Duration in seconds - }); - } - return new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "crawl-starter", - points: MAX_CRAWLS_PER_MINUTE_STARTER, - duration: 60, // Duration in seconds - }); - case RateLimiterMode.Scrape: - if (plan === "standard"){ - return new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "scrape-standard", - points: MAX_SCRAPES_PER_MINUTE_STANDARD, - duration: 60, // Duration in seconds - }); - } else if (plan === "scale"){ - return new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "scrape-scale", - points: MAX_SCRAPES_PER_MINUTE_SCALE, - duration: 60, // Duration in seconds - }); - } - return new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "scrape-starter", - points: MAX_SCRAPES_PER_MINUTE_STARTER, - duration: 60, // Duration in seconds - }); - case RateLimiterMode.Search: - if (plan === "standard"){ - return new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "search-standard", - points: MAX_SEARCHES_PER_MINUTE_STANDARD, - duration: 60, // Duration in seconds - }); - } else if (plan === "scale"){ - return new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "search-scale", - points: MAX_SEARCHES_PER_MINUTE_SCALE, - duration: 60, // Duration in seconds - }); - } - return new RateLimiterRedis({ - storeClient: redisClient, - keyPrefix: "search-starter", - points: MAX_SEARCHES_PER_MINUTE_STARTER, - duration: 60, // Duration in seconds - }); - default: - return serverRateLimiter; - } + + const rateLimitConfig = RATE_LIMITS[mode]; + if (!rateLimitConfig) return serverRateLimiter; + + const planKey = plan ? plan.replace("-", "") : "starter"; + const points = rateLimitConfig[planKey] || rateLimitConfig.free; + + return createRateLimiter(`${mode}-${planKey}`, points); } From 33f10a7f91e3c06201291d9e9173bfe7d76e4e29 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Thu, 30 May 2024 14:42:32 -0700 Subject: [PATCH 076/230] Nick: fixes --- apps/api/src/controllers/auth.ts | 7 ++++--- apps/api/src/services/rate-limiter.ts | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/api/src/controllers/auth.ts b/apps/api/src/controllers/auth.ts index 33e9695..2154504 100644 --- a/apps/api/src/controllers/auth.ts +++ b/apps/api/src/controllers/auth.ts @@ -104,12 +104,13 @@ export async function supaAuthenticateUser( case RateLimiterMode.Scrape: rateLimiter = getRateLimiter(RateLimiterMode.Scrape, token, subscriptionData.plan); break; + case RateLimiterMode.Search: + rateLimiter = getRateLimiter(RateLimiterMode.Search, token, subscriptionData.plan); + break; case RateLimiterMode.CrawlStatus: rateLimiter = getRateLimiter(RateLimiterMode.CrawlStatus, token); break; - case RateLimiterMode.Search: - rateLimiter = getRateLimiter(RateLimiterMode.Search, token); - break; + case RateLimiterMode.Preview: rateLimiter = getRateLimiter(RateLimiterMode.Preview, token); break; diff --git a/apps/api/src/services/rate-limiter.ts b/apps/api/src/services/rate-limiter.ts index 6e09310..a0a6f16 100644 --- a/apps/api/src/services/rate-limiter.ts +++ b/apps/api/src/services/rate-limiter.ts @@ -62,7 +62,7 @@ export function getRateLimiter(mode: RateLimiterMode, token: string, plan?: stri if (!rateLimitConfig) return serverRateLimiter; const planKey = plan ? plan.replace("-", "") : "starter"; - const points = rateLimitConfig[planKey] || rateLimitConfig.free; + const points = rateLimitConfig[planKey] || rateLimitConfig.preview; return createRateLimiter(`${mode}-${planKey}`, points); } From 6ceb7ff50a9c73888a49da2bd0dee70ead23579b Mon Sep 17 00:00:00 2001 From: Nicolas Date: Thu, 30 May 2024 14:46:55 -0700 Subject: [PATCH 077/230] Nick: --- apps/api/src/controllers/auth.ts | 3 ++- apps/api/src/controllers/scrape.ts | 12 ++++++++---- apps/api/src/types.ts | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/apps/api/src/controllers/auth.ts b/apps/api/src/controllers/auth.ts index 2154504..bd246d7 100644 --- a/apps/api/src/controllers/auth.ts +++ b/apps/api/src/controllers/auth.ts @@ -29,6 +29,7 @@ export async function supaAuthenticateUser( team_id?: string; error?: string; status?: number; + plan?: string; }> { const authHeader = req.headers.authorization; if (!authHeader) { @@ -173,7 +174,7 @@ export async function supaAuthenticateUser( subscriptionData = data[0]; } - return { success: true, team_id: subscriptionData.team_id }; + return { success: true, team_id: subscriptionData.team_id, plan: subscriptionData.plan ?? ""}; } function getPlanByPriceId(price_id: string) { diff --git a/apps/api/src/controllers/scrape.ts b/apps/api/src/controllers/scrape.ts index 2049900..8314e49 100644 --- a/apps/api/src/controllers/scrape.ts +++ b/apps/api/src/controllers/scrape.ts @@ -15,7 +15,8 @@ export async function scrapeHelper( crawlerOptions: any, pageOptions: PageOptions, extractorOptions: ExtractorOptions, - timeout: number + timeout: number, + plan?: string ): Promise<{ success: boolean; error?: string; @@ -64,7 +65,9 @@ export async function scrapeHelper( } let creditsToBeBilled = filteredDocs.length; - const creditsPerLLMExtract = 50; + const creditsPerLLMExtract = plan === "starter" ? 5 : 50; + + if (extractorOptions.mode === "llm-extraction") { creditsToBeBilled = creditsToBeBilled + (creditsPerLLMExtract * filteredDocs.length); @@ -93,7 +96,7 @@ export async function scrapeHelper( export async function scrapeController(req: Request, res: Response) { try { // make sure to authenticate user first, Bearer - const { success, team_id, error, status } = await authenticateUser( + const { success, team_id, error, status, plan } = await authenticateUser( req, res, RateLimiterMode.Scrape @@ -129,7 +132,8 @@ export async function scrapeController(req: Request, res: Response) { crawlerOptions, pageOptions, extractorOptions, - timeout + timeout, + plan ); const endTime = new Date().getTime(); const timeTakenInSeconds = (endTime - startTime) / 1000; diff --git a/apps/api/src/types.ts b/apps/api/src/types.ts index b9b5463..d6a737e 100644 --- a/apps/api/src/types.ts +++ b/apps/api/src/types.ts @@ -57,6 +57,7 @@ export interface AuthResponse { team_id?: string; error?: string; status?: number; + plan?: string; } From 6860ace4affbd4c4195bc3391862573b0ad32800 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Thu, 30 May 2024 15:07:49 -0700 Subject: [PATCH 078/230] Nick: --- apps/api/src/__tests__/e2e_withAuth/index.test.ts | 2 +- apps/api/src/services/rate-limiter.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/api/src/__tests__/e2e_withAuth/index.test.ts b/apps/api/src/__tests__/e2e_withAuth/index.test.ts index 6c24b60..8346839 100644 --- a/apps/api/src/__tests__/e2e_withAuth/index.test.ts +++ b/apps/api/src/__tests__/e2e_withAuth/index.test.ts @@ -1004,7 +1004,7 @@ describe("E2E Tests for API Routes", () => { describe("Rate Limiter", () => { it("should return 429 when rate limit is exceeded for preview token", async () => { - for (let i = 0; i < 5; i++) { + for (let i = 0; i < 4; i++) { const response = await request(TEST_URL) .post("/v0/scrape") .set("Authorization", `Bearer this_is_just_a_preview_token`) diff --git a/apps/api/src/services/rate-limiter.ts b/apps/api/src/services/rate-limiter.ts index a0a6f16..d7e34d9 100644 --- a/apps/api/src/services/rate-limiter.ts +++ b/apps/api/src/services/rate-limiter.ts @@ -57,6 +57,7 @@ export function getRateLimiter(mode: RateLimiterMode, token: string, plan?: stri if (token.includes("5089cefa58") || token.includes("6254cf9")) { return testSuiteRateLimiter; } + const rateLimitConfig = RATE_LIMITS[mode]; if (!rateLimitConfig) return serverRateLimiter; From aa8133ca7f8a3f0f5829eec0c7755e043c00dace Mon Sep 17 00:00:00 2001 From: Nicolas Date: Thu, 30 May 2024 16:07:14 -0700 Subject: [PATCH 079/230] Update load-testing-example.ts --- apps/api/src/lib/load-testing-example.ts | 76 ++++++++++++------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/apps/api/src/lib/load-testing-example.ts b/apps/api/src/lib/load-testing-example.ts index 6fd56fc..01b61db 100644 --- a/apps/api/src/lib/load-testing-example.ts +++ b/apps/api/src/lib/load-testing-example.ts @@ -1,42 +1,42 @@ -import { scrapWithFireEngine } from "../../src/scraper/WebScraper/single_url"; +// import { scrapWithFireEngine } from "../../src/scraper/WebScraper/single_url"; -const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); +// const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); -const scrapInBatches = async ( - urls: string[], - batchSize: number, - delayMs: number -) => { - let successCount = 0; - let errorCount = 0; +// const scrapInBatches = async ( +// urls: string[], +// batchSize: number, +// delayMs: number +// ) => { +// let successCount = 0; +// let errorCount = 0; - for (let i = 0; i < urls.length; i += batchSize) { - const batch = urls - .slice(i, i + batchSize) - .map((url) => scrapWithFireEngine(url)); - try { - const results = await Promise.all(batch); - results.forEach((data, index) => { - if (data.trim() === "") { - errorCount++; - } else { - successCount++; - console.log( - `Scraping result ${i + index + 1}:`, - data.trim().substring(0, 20) + "..." - ); - } - }); - } catch (error) { - console.error("Error during scraping:", error); - } - await delay(delayMs); - } +// for (let i = 0; i < urls.length; i += batchSize) { +// const batch = urls +// .slice(i, i + batchSize) +// .map((url) => scrapWithFireEngine(url)); +// try { +// const results = await Promise.all(batch); +// results.forEach((data, index) => { +// if (data.trim() === "") { +// errorCount++; +// } else { +// successCount++; +// console.log( +// `Scraping result ${i + index + 1}:`, +// data.trim().substring(0, 20) + "..." +// ); +// } +// }); +// } catch (error) { +// console.error("Error during scraping:", error); +// } +// await delay(delayMs); +// } - console.log(`Total successful scrapes: ${successCount}`); - console.log(`Total errored scrapes: ${errorCount}`); -}; -function run() { - const urls = Array.from({ length: 200 }, () => "https://scrapethissite.com"); - scrapInBatches(urls, 10, 1000); -} +// console.log(`Total successful scrapes: ${successCount}`); +// console.log(`Total errored scrapes: ${errorCount}`); +// }; +// function run() { +// const urls = Array.from({ length: 200 }, () => "https://scrapethissite.com"); +// scrapInBatches(urls, 10, 1000); +// } From 2139129296f4f8a57f3cf4b898ecc290c6375a7d Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 31 May 2024 11:39:55 -0700 Subject: [PATCH 080/230] Nick: v12 --- apps/api/src/controllers/auth.ts | 2 +- .../build/lib/firecrawl/firecrawl.py | 2 +- .../dist/firecrawl-py-0.0.11.tar.gz | Bin 6486 -> 0 bytes .../dist/firecrawl-py-0.0.12.tar.gz | Bin 0 -> 6754 bytes .../dist/firecrawl_py-0.0.11-py3-none-any.whl | Bin 6212 -> 0 bytes .../dist/firecrawl_py-0.0.12-py3-none-any.whl | Bin 0 -> 6407 bytes apps/python-sdk/firecrawl/firecrawl.py | 2 +- .../python-sdk/firecrawl_py.egg-info/PKG-INFO | 21 +++++++++++++++++- .../firecrawl_py.egg-info/requires.txt | 2 ++ apps/python-sdk/setup.py | 2 +- 10 files changed, 26 insertions(+), 5 deletions(-) delete mode 100644 apps/python-sdk/dist/firecrawl-py-0.0.11.tar.gz create mode 100644 apps/python-sdk/dist/firecrawl-py-0.0.12.tar.gz delete mode 100644 apps/python-sdk/dist/firecrawl_py-0.0.11-py3-none-any.whl create mode 100644 apps/python-sdk/dist/firecrawl_py-0.0.12-py3-none-any.whl diff --git a/apps/api/src/controllers/auth.ts b/apps/api/src/controllers/auth.ts index bd246d7..b7eecd8 100644 --- a/apps/api/src/controllers/auth.ts +++ b/apps/api/src/controllers/auth.ts @@ -132,7 +132,7 @@ export async function supaAuthenticateUser( const retryDate = new Date(Date.now() + rateLimiterRes.msBeforeNext); return { success: false, - error: `Rate limit exceeded. Consumed points: ${rateLimiterRes.consumedPoints}, Remaining points: ${rateLimiterRes.remainingPoints}. Please retry after ${secs}s, resets at ${retryDate}`, + error: `Rate limit exceeded. Consumed points: ${rateLimiterRes.consumedPoints}, Remaining points: ${rateLimiterRes.remainingPoints}. Upgrade your plan at https://firecrawl.dev/pricing for increased rate limits or please retry after ${secs}s, resets at ${retryDate}`, status: 429, }; } diff --git a/apps/python-sdk/build/lib/firecrawl/firecrawl.py b/apps/python-sdk/build/lib/firecrawl/firecrawl.py index 6c0bc41..3f50c79 100644 --- a/apps/python-sdk/build/lib/firecrawl/firecrawl.py +++ b/apps/python-sdk/build/lib/firecrawl/firecrawl.py @@ -273,7 +273,7 @@ class FirecrawlApp: return status_data['data'] else: raise Exception('Crawl job completed but no data was returned') - elif status_data['status'] in ['active', 'paused', 'pending', 'queued']: + elif status_data['status'] in ['active', 'paused', 'pending', 'queued', 'waiting']: timeout=max(timeout,2) time.sleep(timeout) # Wait for the specified timeout before checking again else: diff --git a/apps/python-sdk/dist/firecrawl-py-0.0.11.tar.gz b/apps/python-sdk/dist/firecrawl-py-0.0.11.tar.gz deleted file mode 100644 index 3dd82a93beece2dabb027ac75c62aa679d2f1a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6486 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 P80hKjTOHCB64L(xRtnh| diff --git a/apps/python-sdk/dist/firecrawl-py-0.0.12.tar.gz b/apps/python-sdk/dist/firecrawl-py-0.0.12.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..83cd72218ad5d077ab60e7b4eded13c825e9b3b0 GIT binary patch literal 6754 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 diff --git a/apps/python-sdk/dist/firecrawl_py-0.0.12-py3-none-any.whl b/apps/python-sdk/dist/firecrawl_py-0.0.12-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..b96c8f48c27f0fbec2e8eddda8459106952ad83a GIT binary patch literal 6407 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

SN9g>2XN3#&MPB1hSw7VM(*%? z51K>67|8E(N%OYFF4Okr*7BS_12?JogGoC1ul2n|8(GNp1N zb(OY?HS@sTRP=gk+zq=LY|JqXE7d4H+EN=TG+OG8c?2ue1wdD8RZ%mEGPxwem&wKz zeuc3O!0ykXt77_nflKP!RdKNg%X;BLMws5-U|XkRNPB2ASlcT5)b3rZ=N;yjY->rs#vl6ZE3N={UR zS!JM-*a`h+P}JKVt>fZ9<8G`2EFq_7%)IiIvWy0l+N(P!^VJAE?<;8C3363 z{6^cIf)PlMy24M)JyA`G9p}hW_^5g#gTw}AXe^#|jeO^FP2hlFX~>34 zL4<|rgl}(@MngjP05|9B#Vz-yHwWG@i3J+VNWJ01+tY0un79J3xC_8rO^P}9mQf0@ zizxidk*yhT#>~SE^3X*t%+EtTajC2o`XqQby7VU|SKW$n|L3-HTKV?`|zDL z7CHA?SmxR0Xv%m!*?x>OYc*t{!%`A*aqp84opdWUgFSZ*ePq}sjX=AfB!wH4En&N@6kW&U7JWe_1I6V+c*=J&MOO4ZEP-V~^B zZCv#B=H@22aAxm8xEQMoX_7Kl(Uf0gb=l685U}jz2cQ-N+@weg0A}*|(yX_1r6S|) z^0}Cpe)j!)TbdBT)s^h;tfdd&gs^C zU6(wY->^vE-7kfGEvrhlJjAH+aEw|a$fQl5gSG4%UC|vZ(5XnspVM;Ri25!Nc2(7W zSeDWf&!irGCM-r$gUCp@*JR0>VpQjS`w8=2ISQn2gZ+)E-!B2Z*DH7O(2gOvQ*j-N zJ@oulML=3}8-+7>pE7S%9sWqbq?D(Izg-D$xWRaWa9<__B0#UL@r0I+vcax|1CfMG zgEY7GX1h`S1NwKj#xE{KFvubnksD4cBgZ(8FMf)1E^W=Bf%$%{n>T4%7#WS{bj8Hr zb?{oPd*k-ZOhq&TkwK6_f=#@cYQAB(|n(s;n4^=rPV!B2iUb@_@8A6(?C57 zmrOB+d_97c@S{>RTJ(B*&?Sbr@)%Ei&(Mfak<@XFrNx(g5DHi1t9{!dx{^8U<=X37sJvy{MiuS)c zwYSm|67rZM(h5Uk*mA5)!-FGVRXHZPmz|Y{bZ(y}lXws3Z|VwF*jQSQ1? z?y+@X{|Nio8Ot>Gb5_|Qn0&SBb1;*_22e)6UiEnq&-Bp1h}@LIVCniQ;&0;Qxr3iz zJ&JlvK>^JFRh+AXqoJ*tyO}MUtEcOqDeKDb(5a6f30V;UfW^o9Bd+~3P5no2sw(kD zNmV>_NFiHH1Q2-SlZ}#!u~CV}rAZxU@XO499G)7EUV6HHq25$)KeGL>UPi5*uo%JF z^Q%K3D&HGdCrwP_23>vz8(%&qqYGj-a%2xubg*HU;8vdDNp-AdPV-R?QckhVy)|pu zq13$bi_EE@-teFH+?zTcA)m`f^J}M>h_(ujI?$MGwBN)8^ebPTI0}ELrjrB6GETeG zG_6m;rK*fbtBy_~uua>kB$JQrT&D-0Ekzuhq=jD1X-e}cjUM7sxj6EW1fgmihAj!A zdnu7GO78^^Xjkz8t9J8df?u?L`MTqhB$$YrQk)-;QYNGs^kk_|Ut=xkG%xm>&xO!o zLxB8QZ&r0XRZKGrCnO!5~42lH<-{;>=G z_k{90^Y`ibi`n@2{eP387o9sd_l^YORB{}23+{{J2Pd)NOjxCWv0zk>fg X1IltJsDHeL`gs3%oE Date: Fri, 31 May 2024 15:39:54 -0700 Subject: [PATCH 081/230] Nick: --- apps/api/src/lib/entities.ts | 1 + apps/api/src/scraper/WebScraper/single_url.ts | 128 +++++++++++++----- apps/playwright-service/main.py | 45 +++--- 3 files changed, 123 insertions(+), 51 deletions(-) diff --git a/apps/api/src/lib/entities.ts b/apps/api/src/lib/entities.ts index 48d3e89..dd5fc72 100644 --- a/apps/api/src/lib/entities.ts +++ b/apps/api/src/lib/entities.ts @@ -17,6 +17,7 @@ export type PageOptions = { fetchPageContent?: boolean; waitFor?: number; screenshot?: boolean; + headers?: Record; }; export type ExtractorOptions = { diff --git a/apps/api/src/scraper/WebScraper/single_url.ts b/apps/api/src/scraper/WebScraper/single_url.ts index c7f9469..3a04004 100644 --- a/apps/api/src/scraper/WebScraper/single_url.ts +++ b/apps/api/src/scraper/WebScraper/single_url.ts @@ -18,7 +18,6 @@ const baseScrapers = [ "fetch", ] as const; - export async function generateRequestParams( url: string, wait_browser: string = "domcontentloaded", @@ -46,6 +45,7 @@ export async function scrapWithFireEngine( url: string, waitFor: number = 0, screenshot: boolean = false, + headers?: Record, options?: any ): Promise { try { @@ -53,14 +53,21 @@ export async function scrapWithFireEngine( // If the user has passed a wait parameter in the request, use that const waitParam = reqParams["params"]?.wait ?? waitFor; const screenshotParam = reqParams["params"]?.screenshot ?? screenshot; - console.log(`[Fire-Engine] Scraping ${url} with wait: ${waitParam} and screenshot: ${screenshotParam}`); + console.log( + `[Fire-Engine] Scraping ${url} with wait: ${waitParam} and screenshot: ${screenshotParam}` + ); - const response = await fetch(process.env.FIRE_ENGINE_BETA_URL+ "/scrape", { + const response = await fetch(process.env.FIRE_ENGINE_BETA_URL + "/scrape", { method: "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ url: url, wait: waitParam, screenshot: screenshotParam }), + body: JSON.stringify({ + url: url, + wait: waitParam, + screenshot: screenshotParam, + headers: headers, + }), }); if (!response.ok) { @@ -70,8 +77,8 @@ export async function scrapWithFireEngine( return { html: "", screenshot: "" }; } - const contentType = response.headers['content-type']; - if (contentType && contentType.includes('application/pdf')) { + const contentType = response.headers["content-type"]; + if (contentType && contentType.includes("application/pdf")) { return { html: await fetchAndProcessPdf(url), screenshot: "" }; } else { const data = await response.json(); @@ -106,9 +113,9 @@ export async function scrapWithScrapingBee( ); return ""; } - - const contentType = response.headers['content-type']; - if (contentType && contentType.includes('application/pdf')) { + + const contentType = response.headers["content-type"]; + if (contentType && contentType.includes("application/pdf")) { return fetchAndProcessPdf(url); } else { const decoder = new TextDecoder(); @@ -121,7 +128,10 @@ export async function scrapWithScrapingBee( } } -export async function scrapWithPlaywright(url: string, waitFor: number = 0): Promise { +export async function scrapWithPlaywright( + url: string, + waitFor: number = 0 +): Promise { try { const reqParams = await generateRequestParams(url); // If the user has passed a wait parameter in the request, use that @@ -142,8 +152,8 @@ export async function scrapWithPlaywright(url: string, waitFor: number = 0): Pro return ""; } - const contentType = response.headers['content-type']; - if (contentType && contentType.includes('application/pdf')) { + const contentType = response.headers["content-type"]; + if (contentType && contentType.includes("application/pdf")) { return fetchAndProcessPdf(url); } else { const data = await response.json(); @@ -166,8 +176,8 @@ export async function scrapWithFetch(url: string): Promise { return ""; } - const contentType = response.headers['content-type']; - if (contentType && contentType.includes('application/pdf')) { + const contentType = response.headers["content-type"]; + if (contentType && contentType.includes("application/pdf")) { return fetchAndProcessPdf(url); } else { const text = await response.text(); @@ -185,8 +195,13 @@ export async function scrapWithFetch(url: string): Promise { * @param defaultScraper The default scraper to use if the URL does not have a specific scraper order defined * @returns The order of scrapers to be used for scraping a URL */ -function getScrapingFallbackOrder(defaultScraper?: string, isWaitPresent: boolean = false, isScreenshotPresent: boolean = false) { - const availableScrapers = baseScrapers.filter(scraper => { +function getScrapingFallbackOrder( + defaultScraper?: string, + isWaitPresent: boolean = false, + isScreenshotPresent: boolean = false, + isHeadersPresent: boolean = false +) { + const availableScrapers = baseScrapers.filter((scraper) => { switch (scraper) { case "scrapingBee": case "scrapingBeeLoad": @@ -200,22 +215,46 @@ function getScrapingFallbackOrder(defaultScraper?: string, isWaitPresent: boolea } }); - let defaultOrder = ["scrapingBee", "fire-engine", "playwright", "scrapingBeeLoad", "fetch"]; - - if (isWaitPresent || isScreenshotPresent) { - defaultOrder = ["fire-engine", "playwright", ...defaultOrder.filter(scraper => scraper !== "fire-engine" && scraper !== "playwright")]; + let defaultOrder = [ + "scrapingBee", + "fire-engine", + "playwright", + "scrapingBeeLoad", + "fetch", + ]; + + if (isWaitPresent || isScreenshotPresent || isHeadersPresent) { + defaultOrder = [ + "fire-engine", + "playwright", + ...defaultOrder.filter( + (scraper) => scraper !== "fire-engine" && scraper !== "playwright" + ), + ]; } - const filteredDefaultOrder = defaultOrder.filter((scraper: typeof baseScrapers[number]) => availableScrapers.includes(scraper)); - const uniqueScrapers = new Set(defaultScraper ? [defaultScraper, ...filteredDefaultOrder, ...availableScrapers] : [...filteredDefaultOrder, ...availableScrapers]); + const filteredDefaultOrder = defaultOrder.filter( + (scraper: (typeof baseScrapers)[number]) => + availableScrapers.includes(scraper) + ); + const uniqueScrapers = new Set( + defaultScraper + ? [defaultScraper, ...filteredDefaultOrder, ...availableScrapers] + : [...filteredDefaultOrder, ...availableScrapers] + ); const scrapersInOrder = Array.from(uniqueScrapers); console.log(`Scrapers in order: ${scrapersInOrder}`); - return scrapersInOrder as typeof baseScrapers[number][]; + return scrapersInOrder as (typeof baseScrapers)[number][]; } -async function handleCustomScraping(text: string, url: string): Promise { +async function handleCustomScraping( + text: string, + url: string +): Promise { if (text.includes(' { urlToScrap = urlToScrap.trim(); @@ -242,7 +286,7 @@ export async function scrapSingleUrl( const attemptScraping = async ( url: string, - method: typeof baseScrapers[number] + method: (typeof baseScrapers)[number] ) => { let text = ""; let screenshot = ""; @@ -250,7 +294,12 @@ export async function scrapSingleUrl( case "fire-engine": if (process.env.FIRE_ENGINE_BETA_URL) { console.log(`Scraping ${url} with Fire Engine`); - const response = await scrapWithFireEngine(url, pageOptions.waitFor, pageOptions.screenshot); + const response = await scrapWithFireEngine( + url, + pageOptions.waitFor, + pageOptions.screenshot, + pageOptions.headers + ); text = response.html; screenshot = response.screenshot; } @@ -300,7 +349,12 @@ export async function scrapSingleUrl( console.error(`Invalid URL key, trying: ${urlToScrap}`); } const defaultScraper = urlSpecificParams[urlKey]?.defaultScraper ?? ""; - const scrapersInOrder = getScrapingFallbackOrder(defaultScraper, pageOptions && pageOptions.waitFor && pageOptions.waitFor > 0, pageOptions && pageOptions.screenshot && pageOptions.screenshot === true) + const scrapersInOrder = getScrapingFallbackOrder( + defaultScraper, + pageOptions && pageOptions.waitFor && pageOptions.waitFor > 0, + pageOptions && pageOptions.screenshot && pageOptions.screenshot === true, + pageOptions && pageOptions.headers && pageOptions.headers !== undefined + ); for (const scraper of scrapersInOrder) { // If exists text coming from crawler, use it @@ -326,20 +380,24 @@ export async function scrapSingleUrl( const metadata = extractMetadata(soup, urlToScrap); let document: Document; - if(screenshot && screenshot.length > 0) { + if (screenshot && screenshot.length > 0) { document = { content: text, markdown: text, html: pageOptions.includeHtml ? html : undefined, - metadata: { ...metadata, screenshot: screenshot, sourceURL: urlToScrap, }, - } - }else{ + metadata: { + ...metadata, + screenshot: screenshot, + sourceURL: urlToScrap, + }, + }; + } else { document = { content: text, markdown: text, html: pageOptions.includeHtml ? html : undefined, - metadata: { ...metadata, sourceURL: urlToScrap, }, - } + metadata: { ...metadata, sourceURL: urlToScrap }, + }; } return document; diff --git a/apps/playwright-service/main.py b/apps/playwright-service/main.py index 9cb0c4e..b4ac715 100644 --- a/apps/playwright-service/main.py +++ b/apps/playwright-service/main.py @@ -4,10 +4,10 @@ from fastapi.responses import JSONResponse from pydantic import BaseModel from os import environ -PROXY_SERVER = environ.get('PROXY_SERVER', None) -PROXY_USERNAME = environ.get('PROXY_USERNAME', None) -PROXY_PASSWORD = environ.get('PROXY_PASSWORD', None) -BLOCK_MEDIA = environ.get('BLOCK_MEDIA', 'False').upper() == 'TRUE' +PROXY_SERVER = environ.get("PROXY_SERVER", None) +PROXY_USERNAME = environ.get("PROXY_USERNAME", None) +PROXY_PASSWORD = environ.get("PROXY_PASSWORD", None) +BLOCK_MEDIA = environ.get("BLOCK_MEDIA", "False").upper() == "TRUE" app = FastAPI() @@ -15,6 +15,8 @@ app = FastAPI() class UrlModel(BaseModel): url: str wait: int = None + wait_until: str = "load" + headers: dict = None browser: Browser = None @@ -36,26 +38,37 @@ async def shutdown_event(): async def root(body: UrlModel): context = None if PROXY_SERVER and PROXY_USERNAME and PROXY_PASSWORD: - context = await browser.new_context(proxy={"server": PROXY_SERVER, - "username": PROXY_USERNAME, - "password": PROXY_PASSWORD}) + context = await browser.new_context( + proxy={ + "server": PROXY_SERVER, + "username": PROXY_USERNAME, + "password": PROXY_PASSWORD, + } + ) else: context = await browser.new_context() if BLOCK_MEDIA: - await context.route("**/*.{png,jpg,jpeg,gif,svg,mp3,mp4,avi,flac,ogg,wav,webm}", - handler=lambda route, request: route.abort()) + await context.route( + "**/*.{png,jpg,jpeg,gif,svg,mp3,mp4,avi,flac,ogg,wav,webm}", + handler=lambda route, request: route.abort(), + ) page = await context.new_page() + + # Set headers if provided + if body.headers: + await page.set_extra_http_headers(body.headers) + await page.goto( body.url, - wait_until="load", - timeout=body.timeout if body.timeout else 15000, - ) - # Wait != timeout. Wait is the time to wait after the page is loaded - useful in some cases were "load" / "networkidle" is not enough - if body.wait: - await page.wait_for_timeout(body.wait) - + timeout=15000, + wait_until=body.wait_until if body.wait_until else "load", + ) # Set max timeout to 15s + if body.wait: # Check if wait parameter is provided in the request body + await page.wait_for_timeout( + body.wait + ) # Convert seconds to milliseconds for playwright page_content = await page.content() await context.close() json_compatible_item_data = {"content": page_content} From 3b8059edb64ba4ef2362e72a6c740ad64ed5b6e1 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 31 May 2024 15:43:06 -0700 Subject: [PATCH 082/230] Update single_url.ts --- apps/api/src/scraper/WebScraper/single_url.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/api/src/scraper/WebScraper/single_url.ts b/apps/api/src/scraper/WebScraper/single_url.ts index 3a04004..b73d121 100644 --- a/apps/api/src/scraper/WebScraper/single_url.ts +++ b/apps/api/src/scraper/WebScraper/single_url.ts @@ -130,7 +130,8 @@ export async function scrapWithScrapingBee( export async function scrapWithPlaywright( url: string, - waitFor: number = 0 + waitFor: number = 0, + headers?: Record ): Promise { try { const reqParams = await generateRequestParams(url); @@ -142,7 +143,7 @@ export async function scrapWithPlaywright( headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ url: url, wait: waitParam }), + body: JSON.stringify({ url: url, wait: waitParam, headers: headers }), }); if (!response.ok) { @@ -315,7 +316,7 @@ export async function scrapSingleUrl( break; case "playwright": if (process.env.PLAYWRIGHT_MICROSERVICE_URL) { - text = await scrapWithPlaywright(url, pageOptions.waitFor); + text = await scrapWithPlaywright(url, pageOptions.waitFor, pageOptions.headers); } break; case "scrapingBeeLoad": From 8cb62dde9287c8a5dac1d81f2eede5147762936b Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 31 May 2024 16:09:39 -0700 Subject: [PATCH 083/230] Update website_params.ts --- .../WebScraper/utils/custom/website_params.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/apps/api/src/scraper/WebScraper/utils/custom/website_params.ts b/apps/api/src/scraper/WebScraper/utils/custom/website_params.ts index 9094fc3..01f6614 100644 --- a/apps/api/src/scraper/WebScraper/utils/custom/website_params.ts +++ b/apps/api/src/scraper/WebScraper/utils/custom/website_params.ts @@ -141,5 +141,23 @@ export const urlSpecificParams = { accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", }, + }, + "firecrawl.dev":{ + defaultScraper: "fire-engine", + params: { + + }, + headers: { + "User-Agent": + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", + "sec-fetch-site": "same-origin", + "sec-fetch-mode": "cors", + "sec-fetch-dest": "empty", + referer: "https://www.google.com/", + "accept-language": "en-US,en;q=0.9", + "accept-encoding": "gzip, deflate, br", + accept: + "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + }, } }; From 2a39b5382b3f7985aa06b5205fa783191841506c Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Sat, 1 Jun 2024 13:10:14 +1000 Subject: [PATCH 084/230] Add timeout to class and provide default. --- apps/playwright-service/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/playwright-service/main.py b/apps/playwright-service/main.py index 9cb0c4e..805c53f 100644 --- a/apps/playwright-service/main.py +++ b/apps/playwright-service/main.py @@ -15,6 +15,7 @@ app = FastAPI() class UrlModel(BaseModel): url: str wait: int = None + timeout: int = 15000 browser: Browser = None @@ -50,7 +51,7 @@ async def root(body: UrlModel): await page.goto( body.url, wait_until="load", - timeout=body.timeout if body.timeout else 15000, + timeout=body.timeout, ) # Wait != timeout. Wait is the time to wait after the page is loaded - useful in some cases were "load" / "networkidle" is not enough if body.wait: From c516140bfb5750a5ac7132eceaa11e5e242599ea Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Sat, 1 Jun 2024 13:24:40 +1000 Subject: [PATCH 085/230] Various Linting Pylint C0114: Missing module docstring C0115: Missing class docstring C0116: Missing function or method docstring C0303: Trailing whitespace Import ordering --- apps/playwright-service/main.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/apps/playwright-service/main.py b/apps/playwright-service/main.py index 805c53f..a2a6d75 100644 --- a/apps/playwright-service/main.py +++ b/apps/playwright-service/main.py @@ -1,9 +1,15 @@ -from fastapi import FastAPI -from playwright.async_api import async_playwright, Browser -from fastapi.responses import JSONResponse -from pydantic import BaseModel +""" +This module provides a FastAPI application that uses Playwright to fetch and return +the HTML content of a specified URL. It supports optional proxy settings and media blocking. +""" + from os import environ +from fastapi import FastAPI +from fastapi.responses import JSONResponse +from playwright.async_api import Browser, async_playwright +from pydantic import BaseModel + PROXY_SERVER = environ.get('PROXY_SERVER', None) PROXY_USERNAME = environ.get('PROXY_USERNAME', None) PROXY_PASSWORD = environ.get('PROXY_PASSWORD', None) @@ -11,30 +17,37 @@ BLOCK_MEDIA = environ.get('BLOCK_MEDIA', 'False').upper() == 'TRUE' app = FastAPI() - class UrlModel(BaseModel): + """Model representing the URL and associated parameters for the request.""" url: str wait: int = None timeout: int = 15000 - browser: Browser = None - @app.on_event("startup") async def startup_event(): + """Event handler for application startup to initialize the browser.""" global browser playwright = await async_playwright().start() browser = await playwright.chromium.launch() - @app.on_event("shutdown") async def shutdown_event(): + """Event handler for application shutdown to close the browser.""" await browser.close() - @app.post("/html") async def root(body: UrlModel): + """ + Endpoint to fetch and return HTML content of a given URL. + + Args: + body (UrlModel): The URL model containing the target URL, wait time, and timeout. + + Returns: + JSONResponse: The HTML content of the page. + """ context = None if PROXY_SERVER and PROXY_USERNAME and PROXY_PASSWORD: context = await browser.new_context(proxy={"server": PROXY_SERVER, @@ -56,7 +69,7 @@ async def root(body: UrlModel): # Wait != timeout. Wait is the time to wait after the page is loaded - useful in some cases were "load" / "networkidle" is not enough if body.wait: await page.wait_for_timeout(body.wait) - + page_content = await page.content() await context.close() json_compatible_item_data = {"content": page_content} From 1eacad4ef34ad22f3521e4e9d7f47b24102a6797 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Sat, 1 Jun 2024 13:46:16 +1000 Subject: [PATCH 086/230] Clarifying wait type and name --- apps/playwright-service/main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/playwright-service/main.py b/apps/playwright-service/main.py index a2a6d75..3c1ff19 100644 --- a/apps/playwright-service/main.py +++ b/apps/playwright-service/main.py @@ -20,7 +20,7 @@ app = FastAPI() class UrlModel(BaseModel): """Model representing the URL and associated parameters for the request.""" url: str - wait: int = None + wait_after_load: int = 0 timeout: int = 15000 browser: Browser = None @@ -67,8 +67,8 @@ async def root(body: UrlModel): timeout=body.timeout, ) # Wait != timeout. Wait is the time to wait after the page is loaded - useful in some cases were "load" / "networkidle" is not enough - if body.wait: - await page.wait_for_timeout(body.wait) + if body.wait_after_load > 0: + await page.wait_for_timeout(body.wait_after_load) page_content = await page.content() await context.close() From 14896a9fdda7c62e6d51c01f61c88210c7a77d2f Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Sat, 1 Jun 2024 19:03:16 +1000 Subject: [PATCH 087/230] Fix PLAYWRIGHT_MICROSERVICE_URL It needs to end in html, otherwise scrape will 404 --- apps/api/.env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/.env.example b/apps/api/.env.example index 7934903..a6eaae3 100644 --- a/apps/api/.env.example +++ b/apps/api/.env.example @@ -3,7 +3,7 @@ NUM_WORKERS_PER_QUEUE=8 PORT=3002 HOST=0.0.0.0 REDIS_URL=redis://localhost:6379 -PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000 +PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html ## To turn on DB authentication, you need to set up supabase. USE_DB_AUTHENTICATION=true From deefe65cbe115c15d4f9eeae16b87bf66c234167 Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Sat, 1 Jun 2024 19:16:56 +1000 Subject: [PATCH 088/230] Change the way the playwright response is parsed Was failing with a Type Error, but actually looked ok. This fixes the type error, and stop scraper fallback. --- apps/api/src/scraper/WebScraper/single_url.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/api/src/scraper/WebScraper/single_url.ts b/apps/api/src/scraper/WebScraper/single_url.ts index c7f9469..70b4aa6 100644 --- a/apps/api/src/scraper/WebScraper/single_url.ts +++ b/apps/api/src/scraper/WebScraper/single_url.ts @@ -146,12 +146,18 @@ export async function scrapWithPlaywright(url: string, waitFor: number = 0): Pro if (contentType && contentType.includes('application/pdf')) { return fetchAndProcessPdf(url); } else { - const data = await response.json(); - const html = data.content; - return html ?? ""; + const textData = await response.text(); + try { + const data = JSON.parse(textData); + const html = data.content; + return html ?? ""; + } catch (jsonError) { + console.error(`[Playwright] Error parsing JSON response for url: ${url} -> ${jsonError}`); + return ""; + } } } catch (error) { - console.error(`[Playwright][c] Error fetching url: ${url} -> ${error}`); + console.error(`[Playwright] Error fetching url: ${url} -> ${error}`); return ""; } } From fde522c3e16ec57ebf156eb6fc11137850982c43 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sun, 2 Jun 2024 20:23:45 -0700 Subject: [PATCH 089/230] Update single_url.ts --- apps/api/src/scraper/WebScraper/single_url.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/api/src/scraper/WebScraper/single_url.ts b/apps/api/src/scraper/WebScraper/single_url.ts index b73d121..56514c0 100644 --- a/apps/api/src/scraper/WebScraper/single_url.ts +++ b/apps/api/src/scraper/WebScraper/single_url.ts @@ -268,6 +268,7 @@ export async function scrapSingleUrl( includeHtml: false, waitFor: 0, screenshot: false, + headers: {} }, existingHtml: string = "" ): Promise { From ea04fe2e3f4736c9227db01597e90040e09f5132 Mon Sep 17 00:00:00 2001 From: Eric Ciarla Date: Sun, 2 Jun 2024 20:38:05 -0700 Subject: [PATCH 090/230] Add Roast My Website Example --- {tutorials => examples}/contradiction-testing-using-llms.mdx | 0 {tutorials => examples}/data-extraction-using-llms.mdx | 0 {tutorials => examples}/rag-llama3.mdx | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {tutorials => examples}/contradiction-testing-using-llms.mdx (100%) rename {tutorials => examples}/data-extraction-using-llms.mdx (100%) rename {tutorials => examples}/rag-llama3.mdx (100%) diff --git a/tutorials/contradiction-testing-using-llms.mdx b/examples/contradiction-testing-using-llms.mdx similarity index 100% rename from tutorials/contradiction-testing-using-llms.mdx rename to examples/contradiction-testing-using-llms.mdx diff --git a/tutorials/data-extraction-using-llms.mdx b/examples/data-extraction-using-llms.mdx similarity index 100% rename from tutorials/data-extraction-using-llms.mdx rename to examples/data-extraction-using-llms.mdx diff --git a/tutorials/rag-llama3.mdx b/examples/rag-llama3.mdx similarity index 100% rename from tutorials/rag-llama3.mdx rename to examples/rag-llama3.mdx From 3ea801d9ddbd44495098e85b3bc99d86d9fc79d4 Mon Sep 17 00:00:00 2001 From: Eric Ciarla Date: Sun, 2 Jun 2024 20:40:19 -0700 Subject: [PATCH 091/230] Commit Roast My Website --- examples/roastmywebsite/.eslintrc.json | 3 + examples/roastmywebsite/.gitignore | 38 + examples/roastmywebsite/README.md | 5 + examples/roastmywebsite/components.json | 17 + examples/roastmywebsite/next.config.mjs | 11 + examples/roastmywebsite/package-lock.json | 6617 +++++++++++++++++ examples/roastmywebsite/package.json | 53 + examples/roastmywebsite/postcss.config.mjs | 8 + .../public/android-chrome-192x192.png | Bin 0 -> 8008 bytes .../public/android-chrome-512x512.png | Bin 0 -> 24002 bytes .../public/apple-touch-icon.png | Bin 0 -> 7151 bytes examples/roastmywebsite/public/bgd.png | Bin 0 -> 454317 bytes .../roastmywebsite/public/favicon-16x16.png | Bin 0 -> 492 bytes .../roastmywebsite/public/favicon-32x32.png | Bin 0 -> 997 bytes examples/roastmywebsite/public/favicon.ico | Bin 0 -> 15406 bytes examples/roastmywebsite/public/next.svg | 1 + examples/roastmywebsite/public/og.png | Bin 0 -> 267818 bytes .../roastmywebsite/public/site.webmanifest | 1 + examples/roastmywebsite/public/vercel.svg | 1 + examples/roastmywebsite/src/app/favicon.ico | Bin 0 -> 15406 bytes examples/roastmywebsite/src/app/globals.css | 10 + .../src/app/hooks/useGithubStars.ts | 5 + examples/roastmywebsite/src/app/layout.tsx | 68 + examples/roastmywebsite/src/app/page.tsx | 16 + .../src/components/github-button.tsx | 20 + .../roastmywebsite/src/components/main.tsx | 113 + .../src/components/ui/button.tsx | 56 + .../src/components/ui/dialog.tsx | 122 + .../src/components/ui/dropdown-menu.tsx | 200 + .../src/components/ui/input.tsx | 25 + .../src/components/ui/select.tsx | 160 + .../src/components/ui/sonner.tsx | 31 + .../src/components/ui/switch.tsx | 29 + .../src/components/ui/textarea.tsx | 24 + examples/roastmywebsite/src/lib/LLM/llm.ts | 75 + .../src/lib/LLM/testing_constants.ts | 0 examples/roastmywebsite/src/lib/utils.ts | 6 + .../src/pages/api/roastWebsite.ts | 76 + examples/roastmywebsite/tailwind.config.ts | 137 + examples/roastmywebsite/tsconfig.json | 26 + 40 files changed, 7954 insertions(+) create mode 100644 examples/roastmywebsite/.eslintrc.json create mode 100644 examples/roastmywebsite/.gitignore create mode 100644 examples/roastmywebsite/README.md create mode 100644 examples/roastmywebsite/components.json create mode 100644 examples/roastmywebsite/next.config.mjs create mode 100644 examples/roastmywebsite/package-lock.json create mode 100644 examples/roastmywebsite/package.json create mode 100644 examples/roastmywebsite/postcss.config.mjs create mode 100644 examples/roastmywebsite/public/android-chrome-192x192.png create mode 100644 examples/roastmywebsite/public/android-chrome-512x512.png create mode 100644 examples/roastmywebsite/public/apple-touch-icon.png create mode 100644 examples/roastmywebsite/public/bgd.png create mode 100644 examples/roastmywebsite/public/favicon-16x16.png create mode 100644 examples/roastmywebsite/public/favicon-32x32.png create mode 100644 examples/roastmywebsite/public/favicon.ico create mode 100644 examples/roastmywebsite/public/next.svg create mode 100644 examples/roastmywebsite/public/og.png create mode 100644 examples/roastmywebsite/public/site.webmanifest create mode 100644 examples/roastmywebsite/public/vercel.svg create mode 100644 examples/roastmywebsite/src/app/favicon.ico create mode 100644 examples/roastmywebsite/src/app/globals.css create mode 100644 examples/roastmywebsite/src/app/hooks/useGithubStars.ts create mode 100644 examples/roastmywebsite/src/app/layout.tsx create mode 100644 examples/roastmywebsite/src/app/page.tsx create mode 100644 examples/roastmywebsite/src/components/github-button.tsx create mode 100644 examples/roastmywebsite/src/components/main.tsx create mode 100644 examples/roastmywebsite/src/components/ui/button.tsx create mode 100644 examples/roastmywebsite/src/components/ui/dialog.tsx create mode 100644 examples/roastmywebsite/src/components/ui/dropdown-menu.tsx create mode 100644 examples/roastmywebsite/src/components/ui/input.tsx create mode 100644 examples/roastmywebsite/src/components/ui/select.tsx create mode 100644 examples/roastmywebsite/src/components/ui/sonner.tsx create mode 100644 examples/roastmywebsite/src/components/ui/switch.tsx create mode 100644 examples/roastmywebsite/src/components/ui/textarea.tsx create mode 100644 examples/roastmywebsite/src/lib/LLM/llm.ts create mode 100644 examples/roastmywebsite/src/lib/LLM/testing_constants.ts create mode 100644 examples/roastmywebsite/src/lib/utils.ts create mode 100644 examples/roastmywebsite/src/pages/api/roastWebsite.ts create mode 100644 examples/roastmywebsite/tailwind.config.ts create mode 100644 examples/roastmywebsite/tsconfig.json diff --git a/examples/roastmywebsite/.eslintrc.json b/examples/roastmywebsite/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/examples/roastmywebsite/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/examples/roastmywebsite/.gitignore b/examples/roastmywebsite/.gitignore new file mode 100644 index 0000000..037062b --- /dev/null +++ b/examples/roastmywebsite/.gitignore @@ -0,0 +1,38 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts +.env +node_modules diff --git a/examples/roastmywebsite/README.md b/examples/roastmywebsite/README.md new file mode 100644 index 0000000..b6ee0e8 --- /dev/null +++ b/examples/roastmywebsite/README.md @@ -0,0 +1,5 @@ +# Roast My Website 🔥 + +Welcome to Roast My Website, the ultimate tool for putting your website through the wringer! This repository harnesses the power of Firecrawl to scrape and capture screenshots of websites, and then unleashes the latest LLM vision models to mercilessly roast them. + +Check it out at roastmywebsite.ai 😈 diff --git a/examples/roastmywebsite/components.json b/examples/roastmywebsite/components.json new file mode 100644 index 0000000..5fe3279 --- /dev/null +++ b/examples/roastmywebsite/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app/globals.css", + "baseColor": "zinc", + "cssVariables": false, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} \ No newline at end of file diff --git a/examples/roastmywebsite/next.config.mjs b/examples/roastmywebsite/next.config.mjs new file mode 100644 index 0000000..c279590 --- /dev/null +++ b/examples/roastmywebsite/next.config.mjs @@ -0,0 +1,11 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + env: { + G1: process.env.G1, + G2: process.env.G2, + G3: process.env.G3, + G4: process.env.G4, + }, +}; + +export default nextConfig; diff --git a/examples/roastmywebsite/package-lock.json b/examples/roastmywebsite/package-lock.json new file mode 100644 index 0000000..9764464 --- /dev/null +++ b/examples/roastmywebsite/package-lock.json @@ -0,0 +1,6617 @@ +{ + "name": "roastmywebsite", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "roastmywebsite", + "version": "0.1.0", + "dependencies": { + "@dqbd/tiktoken": "^1.0.15", + "@headlessui/react": "^2.0.4", + "@headlessui/tailwindcss": "^0.2.0", + "@mendable/firecrawl-js": "^0.0.21", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", + "@remixicon/react": "^4.2.0", + "@tremor/react": "^3.17.2", + "@vercel/analytics": "^1.3.1", + "axios": "^1.7.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cubic-spline": "^3.0.3", + "html2canvas": "^1.4.1", + "image-size": "^1.1.1", + "lucide": "^0.379.0", + "lucide-react": "^0.379.0", + "next": "14.2.3", + "next-themes": "^0.3.0", + "openai": "^4.47.3", + "react": "^18", + "react-dom": "^18", + "sonner": "^1.4.41", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7", + "tiktoken": "^1.0.15" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.7", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.3", + "postcss": "^8", + "tailwindcss": "^3.4.3", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", + "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@dqbd/tiktoken": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@dqbd/tiktoken/-/tiktoken-1.0.15.tgz", + "integrity": "sha512-a6I67K1xUkuqcuwulobIJiLikkoE7egMaviI1Jg5bxSn2V7QGqXsGE3jTKr8UIOU/o74mAAd5TkeXFNBtaKF4A==" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", + "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", + "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.19.2.tgz", + "integrity": "sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==", + "dependencies": { + "@floating-ui/react-dom": "^1.3.0", + "aria-hidden": "^1.1.3", + "tabbable": "^6.0.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-1.3.0.tgz", + "integrity": "sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==", + "dependencies": { + "@floating-ui/dom": "^1.2.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" + }, + "node_modules/@headlessui/react": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.0.4.tgz", + "integrity": "sha512-16d/rOLeYsFsmPlRmXGu8DCBzrWD0zV1Ccx3n73wN87yFu8Y9+X04zflv8EJEt9TAYRyLKOmQXUnOnqQl6NgpA==", + "dependencies": { + "@floating-ui/react": "^0.26.13", + "@react-aria/focus": "^3.16.2", + "@react-aria/interactions": "^3.21.1", + "@tanstack/react-virtual": "3.5.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^18", + "react-dom": "^18" + } + }, + "node_modules/@headlessui/react/node_modules/@floating-ui/react": { + "version": "0.26.16", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.16.tgz", + "integrity": "sha512-HEf43zxZNAI/E781QIVpYSF3K2VH4TTYZpqecjdsFkjsaU1EbaWcM++kw0HXFffj7gDUcBFevX8s0rQGQpxkow==", + "dependencies": { + "@floating-ui/react-dom": "^2.1.0", + "@floating-ui/utils": "^0.2.0", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@headlessui/react/node_modules/@floating-ui/react-dom": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz", + "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@headlessui/tailwindcss": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@headlessui/tailwindcss/-/tailwindcss-0.2.0.tgz", + "integrity": "sha512-fpL830Fln1SykOCboExsWr3JIVeQKieLJ3XytLe/tt1A0XzqUthOftDmjcCYLW62w7mQI7wXcoPXr3tZ9QfGxw==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "tailwindcss": "^3.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mendable/firecrawl-js": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@mendable/firecrawl-js/-/firecrawl-js-0.0.21.tgz", + "integrity": "sha512-0geMb1CilorUowVugcVWZeM2a4PCH/iAxCbqPDpt66tEQ40r9217r7U1g3BRHnF/KDA6NvHM7wNIw/HqtUc6uw==", + "dependencies": { + "axios": "^1.6.8", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.23.0" + } + }, + "node_modules/@next/env": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", + "integrity": "sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.3.tgz", + "integrity": "sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==", + "dev": true, + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz", + "integrity": "sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", + "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", + "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", + "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", + "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", + "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", + "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", + "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", + "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", + "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz", + "integrity": "sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-menu": "2.0.6", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.6.tgz", + "integrity": "sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", + "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/react-dom": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz", + "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", + "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz", + "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.0.3.tgz", + "integrity": "sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-use-size": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.1.tgz", + "integrity": "sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ==", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.21.3", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.3.tgz", + "integrity": "sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA==", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", + "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.1.tgz", + "integrity": "sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q==", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.1.tgz", + "integrity": "sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/shared": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.1.tgz", + "integrity": "sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@remixicon/react": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@remixicon/react/-/react-4.2.0.tgz", + "integrity": "sha512-eGhKpZ88OU0qkcY9pJu6khBmItDV82nU130E6C68yc+FbljueHlUYy/4CrJsmf860RIDMay2Rpzl27OSJ81miw==", + "peerDependencies": { + "react": ">=18.2.0" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", + "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==", + "dev": true + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz", + "integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==", + "dev": true, + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + } + }, + "node_modules/@tanstack/react-virtual": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.5.0.tgz", + "integrity": "sha512-rtvo7KwuIvqK9zb0VZ5IL7fiJAEnG+0EiFZz8FUOs+2mhGqdGmjKIaT1XU7Zq0eFqL0jonLlhbayJI/J2SA/Bw==", + "dependencies": { + "@tanstack/virtual-core": "3.5.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.5.0.tgz", + "integrity": "sha512-KnPRCkQTyqhanNC0K63GBG3wA8I+D1fQuVnAvcBF8f13akOKeQp1gSbu6f77zCxhEk727iV5oQnbHLYzHrECLg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tremor/react": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/@tremor/react/-/react-3.17.2.tgz", + "integrity": "sha512-zQovHBTonoeJbVk23VAqDeu9yL8N9N2884WYtLr0QvEo4kfC/YUYHkwyg5R7i8ahiJcYbR5zbCG8r9Y4Oqg9qQ==", + "dependencies": { + "@floating-ui/react": "^0.19.2", + "@headlessui/react": "^1.7.19", + "@headlessui/tailwindcss": "^0.2.0", + "date-fns": "^3.6.0", + "react-day-picker": "^8.10.1", + "react-transition-state": "^2.1.1", + "recharts": "^2.12.7", + "tailwind-merge": "^1.14.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/@tremor/react/node_modules/@headlessui/react": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.19.tgz", + "integrity": "sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==", + "dependencies": { + "@tanstack/react-virtual": "^3.0.0-beta.60", + "client-only": "^0.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, + "node_modules/@tremor/react/node_modules/tailwind-merge": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-1.14.0.tgz", + "integrity": "sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "devOptional": true + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "devOptional": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", + "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vercel/analytics": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.3.1.tgz", + "integrity": "sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==", + "dependencies": { + "server-only": "^0.0.1" + }, + "peerDependencies": { + "next": ">= 13", + "react": "^18 || ^19" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001621", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", + "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "dependencies": { + "clsx": "2.0.0" + }, + "funding": { + "url": "https://joebell.co.uk" + } + }, + "node_modules/class-variance-authority/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/cubic-spline": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/cubic-spline/-/cubic-spline-3.0.3.tgz", + "integrity": "sha512-yAvcHgrpf/k83pZiO4+R2reWOJlufgjpQhmDD3OXa8YMbjmRgjtUK8pcFOCZvJwqXaMD1isZdL7Z4ghqDPN/yw==" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/enhanced-resolve": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.3.tgz", + "integrity": "sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "14.2.3", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/lucide": { + "version": "0.379.0", + "resolved": "https://registry.npmjs.org/lucide/-/lucide-0.379.0.tgz", + "integrity": "sha512-2F7ycF+CAZCLusl4iuhhd0nlS5pTMHwdgY4qehZy5qN14tR+db2GX9nhNzhW3mg73wiDlkrue1khgG1BxVNAZg==" + }, + "node_modules/lucide-react": { + "version": "0.379.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.379.0.tgz", + "integrity": "sha512-KcdeVPqmhRldldAAgptb8FjIunM2x2Zy26ZBh1RsEUcdLIvsEmbcw7KpzFYUy5BbpGeWhPu9Z9J5YXfStiXwhg==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/next": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.3.tgz", + "integrity": "sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==", + "dependencies": { + "@next/env": "14.2.3", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.3", + "@next/swc-darwin-x64": "14.2.3", + "@next/swc-linux-arm64-gnu": "14.2.3", + "@next/swc-linux-arm64-musl": "14.2.3", + "@next/swc-linux-x64-gnu": "14.2.3", + "@next/swc-linux-x64-musl": "14.2.3", + "@next/swc-win32-arm64-msvc": "14.2.3", + "@next/swc-win32-ia32-msvc": "14.2.3", + "@next/swc-win32-x64-msvc": "14.2.3" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", + "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18", + "react-dom": "^16.8 || ^17 || ^18" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/openai": { + "version": "4.47.3", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.47.3.tgz", + "integrity": "sha512-470d4ibH5kizXflCzgur22GpM4nOjrg7WQ9jTOa3dNKEn248oBy4+pjOyfcFR4V4YUn/YlDNjp6h83PbviCCKQ==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7", + "web-streams-polyfill": "^3.2.1" + }, + "bin": { + "openai": "bin/cli" + } + }, + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-day-picker": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz", + "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "date-fns": "^2.28.0 || ^3.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/react-transition-state": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-transition-state/-/react-transition-state-2.1.1.tgz", + "integrity": "sha512-kQx5g1FVu9knoz1T1WkapjUgFz08qQ/g1OmuWGi3/AoEFfS0kStxrPlZx81urjCXdz2d+1DqLpU6TyLW/Ro04Q==", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recharts": { + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.7.tgz", + "integrity": "sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ==", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^16.10.2", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sonner": { + "version": "1.4.41", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.4.41.tgz", + "integrity": "sha512-uG511ggnnsw6gcn/X+YKkWPo5ep9il9wYi3QJxHsYe7yTZ4+cOd1wuodOUmOpFuXL+/RE3R04LczdNCDygTDgQ==", + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, + "node_modules/tailwind-merge": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz", + "integrity": "sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==", + "dependencies": { + "@babel/runtime": "^7.24.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiktoken": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.15.tgz", + "integrity": "sha512-sCsrq/vMWUSEW29CJLNmPvWxlVp7yh2tlkAjpJltIKqp5CKf98ZNpdeHRmAlPVFlGEbswDc6SmI8vz64W/qErw==" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.0.tgz", + "integrity": "sha512-az0uJ243PxsRIa2x1WmNE/pnuA05gUq/JB8Lwe1EDCCL/Fz9MgjYQ0fPlyc2Tcv6aF2ZA7WM5TWaRZVEFaAIag==", + "peerDependencies": { + "zod": "^3.23.3" + } + } + } +} diff --git a/examples/roastmywebsite/package.json b/examples/roastmywebsite/package.json new file mode 100644 index 0000000..c8a30ce --- /dev/null +++ b/examples/roastmywebsite/package.json @@ -0,0 +1,53 @@ +{ + "name": "roastmywebsite", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@dqbd/tiktoken": "^1.0.15", + "@headlessui/react": "^2.0.4", + "@headlessui/tailwindcss": "^0.2.0", + "@mendable/firecrawl-js": "^0.0.21", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", + "@remixicon/react": "^4.2.0", + "@tremor/react": "^3.17.2", + "@vercel/analytics": "^1.3.1", + "axios": "^1.7.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cubic-spline": "^3.0.3", + "html2canvas": "^1.4.1", + "image-size": "^1.1.1", + "lucide": "^0.379.0", + "lucide-react": "^0.379.0", + "next": "14.2.3", + "next-themes": "^0.3.0", + "openai": "^4.47.3", + "react": "^18", + "react-dom": "^18", + "sonner": "^1.4.41", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7", + "tiktoken": "^1.0.15" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.7", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.3", + "postcss": "^8", + "tailwindcss": "^3.4.3", + "typescript": "^5" + } +} diff --git a/examples/roastmywebsite/postcss.config.mjs b/examples/roastmywebsite/postcss.config.mjs new file mode 100644 index 0000000..1a69fd2 --- /dev/null +++ b/examples/roastmywebsite/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/examples/roastmywebsite/public/android-chrome-192x192.png b/examples/roastmywebsite/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..8f34d171adce17e310ed607a84e839061a75d23b GIT binary patch literal 8008 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 literal 0 HcmV?d00001 diff --git a/examples/roastmywebsite/public/apple-touch-icon.png b/examples/roastmywebsite/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6fccaa8e551da5026c6dc678f391d977b36cda61 GIT binary patch literal 7151 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 literal 0 HcmV?d00001 diff --git a/examples/roastmywebsite/public/bgd.png b/examples/roastmywebsite/public/bgd.png new file mode 100644 index 0000000000000000000000000000000000000000..90bf32da238062b7e618a19ab89f18e71b024a4b GIT binary patch literal 454317 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�%B&T~Z)t!S?6{lstz1{Ua!H|WdGw6|)ob@U8BxcoE{>5P7na2rCb0ob zKN}utVr~v+Ow_`+7=&xodb@jJ6B1tWPA4-bWNZJg=W!-tZo!OYwb2=7&|r-^U#Bem zdBawvKT^&aqfY-~jwU#Tgt5$1?%D}Yxa-+G8K}Vb{V$(f6527?m7r`0_<#hHI^i7Y z+J<~Pp)jK;K>2@|dJBgr0Bx4?%D;BZUGTVK>-0- z>E5Ngk&XqH?xkVt<2~m*&-?ukbKk$YuDNC=_nBD{4}%`Dppfip>N{<6{-V>OS@jSO z<;To0POX;jm-k%;ILnGTTg|TDz7DtT$H*5}cj%H|{n7usgAN|Nq$9iuqa9~szuyhl zbo+rbLt|IRI`TUBzRq!wvUr`dx;=5Cv;8M|O%v;55N%tCyN)vF9%yv(JQe>SzWrOe z@)PE?OMl2!lC1JPz|ew_j-x`2BiO`QqpkgVU9EV&?+ zD9W}RdX54-xWG#2Xj+eq)hs0HM5uG{vKzG7$(oEo`*5NArVsI{IjO?$&2{pC^?f3EjCa<>(}F+yCGMXZB1Ye20jSSkIuDi~>7%{O%Gc74SkiNX z3%v@mcH|uC6m9VO)ue~JY6tYKVyMxpm&3Sk1C)6{s_JCnSZwq@TYnIJRq)i_s`9x= z!M5^2dY)>PT_Z)%|2}7Vl<=G9SNd6Fov-$(iQ`;L>6Xcse`wYAl?pjq5M&7@Yh^>X zNxP*l>2DalEp;qw{^E$3-%F1?Fc!R6>MXWJZ(E>Z7#!w0WB1$NK2e%pS!IRJba zWyoNL`)zXus-?-(1g0!K%`}pT$QyrO!^Q5X6Cwdh6kYfmMiB27>5|n}Xedo|{ettlKqkm`6>bEi*OdG?|S=FmFHvCoRw1uUsY- z;X~A6*#1OoVs&JwNbYXZX%tUp-B;nA>PAQ>O=j=|GVF)h_|uuk<~4t2f&2P5bSQ~? z?|gJ+2^=uwWDwT&rka=RUos(MtH(o=U)D|ANMF_cpeqRe*Sp0AuO+fyT<& zTYW>INoX$5#u}HiB}6^vVBgtNH9L$scE(h*%Oz2K#umRE*(GLA9g$#;s;6pZqy5%@ z9)-oXOuzd-i^HXoF;D=Fi z)T_$ALpq0a1m&Zy;7wr*9+`DBfW2}eM$h!Lumz$3q4hzv%}?^Wed}O=Sz+A-!dSNS zn+4}_f%3bfOJc{ccl7-Z9I_TX zMlv8uMQu_c5LhZo+gh}4!(4E~xG~5s6r6!|F-{)4P0>FVudAxxQ849I0XM9EMF?1F zQ_C$=B53in{O|k?uCn7H{j$|dEI-t7<$tQL`YCw4YjLf8sU0~;gtG=s(W<|SJA0Ci2JX- zytUSMym7*;&a-_Q_WnU zD12_q*|SxL-V5$Q)?d)O+yyLj4RW$R-HHX11Oi4@gierPYV{B%iJ>qDfmO=$*BA8( zmmd;&xm#G%O#S{L%a%ji#Ji?%7-;Btl1l|JXw@MmwR@!*tE>g@G1+^9gKdNUw`vy7B;;B^jsY!J*^SuhR= zbv|LsQFg}X>Z*HB?NKHBvM(oo%zmPpgKM`)V+mm!2hA&`^P`m}0TOpuirik9GT_sh zXi-wEsxGqA?v>R(;AEG?NH;RR9JIoRBRl?jOYDcDfO~o)+8B=GmZW)0Eg$H%{G#(L zP5jj}h_=kARecg(9SR|D(AXe#y;FwCw`V;Y-mz?K{7_$A*vq%iJUA>w?=ii-RZvySp1P2V_>OlP8ri<{FXwlLFpDBO9^GRNSVK6

$uZxYHwW#FQj*!a+2(MGHTNEM+X~qq)qWo*m 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�m%;-kp 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%0Di?t&4HoOY972M0D)24o(U)RrN%B|QK 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�Kqn@M-Lgf(DPx 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 T2g*hP00000NkvXXu0mjfVu0Ab literal 0 HcmV?d00001 diff --git a/examples/roastmywebsite/public/favicon.ico b/examples/roastmywebsite/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..950c27747db9b7d81bbc953853fc7eeee9ae26c3 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/examples/roastmywebsite/public/next.svg b/examples/roastmywebsite/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/examples/roastmywebsite/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/roastmywebsite/public/og.png b/examples/roastmywebsite/public/og.png new file mode 100644 index 0000000000000000000000000000000000000000..e832de0ea292dda5a2e5205ce10624dbe14b7d29 GIT binary patch literal 267818 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

MB9OC2aZNU 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 \ No newline at end of file diff --git a/examples/roastmywebsite/src/app/favicon.ico b/examples/roastmywebsite/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..950c27747db9b7d81bbc953853fc7eeee9ae26c3 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/examples/roastmywebsite/src/app/globals.css b/examples/roastmywebsite/src/app/globals.css new file mode 100644 index 0000000..e67a573 --- /dev/null +++ b/examples/roastmywebsite/src/app/globals.css @@ -0,0 +1,10 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + + + +.fill-tremor-content-emphasis { + fill: rgb(113 113 122) !important; +} + diff --git a/examples/roastmywebsite/src/app/hooks/useGithubStars.ts b/examples/roastmywebsite/src/app/hooks/useGithubStars.ts new file mode 100644 index 0000000..2e3d495 --- /dev/null +++ b/examples/roastmywebsite/src/app/hooks/useGithubStars.ts @@ -0,0 +1,5 @@ +export async function useGithubStars() { + const res = await fetch("https://api.github.com/repos/mendableai/firecrawl"); + const data = await res.json(); + return data.stargazers_count; +} diff --git a/examples/roastmywebsite/src/app/layout.tsx b/examples/roastmywebsite/src/app/layout.tsx new file mode 100644 index 0000000..7100d80 --- /dev/null +++ b/examples/roastmywebsite/src/app/layout.tsx @@ -0,0 +1,68 @@ +import type { Metadata } from "next"; +import { Gloria_Hallelujah } from "next/font/google"; +import "./globals.css"; +import { Toaster } from "sonner"; +import { Analytics } from "@vercel/analytics/react"; +import { useEffect, useState } from "react"; +import Head from "next/head"; + + +const inter = Gloria_Hallelujah({ weight: "400", subsets: ["latin"] }); +// const inter = Inter({ subsets: ["latin"] }); + +const meta = { + title: "Roast My Website", + description: + "Welcome to Roast My Website, the ultimate tool for putting your website through the wringer! This repository harnesses the power of Firecrawl to scrape and capture screenshots of websites, and then unleashes the latest LLM vision models to mercilessly roast them. 😈", + cardImage: "/og.png", + robots: "follow, index", + favicon: "/favicon.ico", + url: "https://www.roastmywebsite.ai/", +}; + +export async function generateMetadata(): Promise { + return { + title: meta.title, + description: meta.description, + referrer: "origin-when-cross-origin", + keywords: ["Roast My Website", "Roast", "Website", "GitHub", "Firecrawl"], + authors: [ + { name: "Roast My Website", url: "https://www.roastmywebsite.ai/" }, + ], + creator: "Roast My Website", + publisher: "Roast My Website", + robots: meta.robots, + icons: { icon: meta.favicon }, + metadataBase: new URL(meta.url), + openGraph: { + url: meta.url, + title: meta.title, + description: meta.description, + images: [meta.cardImage], + type: "website", + siteName: meta.title, + }, + twitter: { + card: "summary_large_image", + site: "@Vercel", + creator: "@Vercel", + title: meta.title, + description: meta.description, + images: [meta.cardImage], + }, + }; +} + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + {children} + + + + ); +} diff --git a/examples/roastmywebsite/src/app/page.tsx b/examples/roastmywebsite/src/app/page.tsx new file mode 100644 index 0000000..5b28d64 --- /dev/null +++ b/examples/roastmywebsite/src/app/page.tsx @@ -0,0 +1,16 @@ +// pages/index.tsx +import MainComponent from "@/components/main"; +import { useGithubStars } from "./hooks/useGithubStars"; +import GithubButton from "@/components/github-button"; + +export default async function Home() { + const githubStars = await useGithubStars(); + return ( +
+
+ +
+ +
+ ); +} diff --git a/examples/roastmywebsite/src/components/github-button.tsx b/examples/roastmywebsite/src/components/github-button.tsx new file mode 100644 index 0000000..2795e23 --- /dev/null +++ b/examples/roastmywebsite/src/components/github-button.tsx @@ -0,0 +1,20 @@ +"use client"; +import { Github } from "lucide-react"; +import { Button } from "./ui/button"; + +export default function GithubButton({ githubStars }: { githubStars: number }) { + return ( + + ); +} diff --git a/examples/roastmywebsite/src/components/main.tsx b/examples/roastmywebsite/src/components/main.tsx new file mode 100644 index 0000000..63b9a4a --- /dev/null +++ b/examples/roastmywebsite/src/components/main.tsx @@ -0,0 +1,113 @@ +"use client"; + +import { useEffect, useRef, useState } from "react"; +import { Theme, allThemes } from "@/lib/theme"; +import html2canvas from "html2canvas"; +import { Button } from "@/components/ui/button"; +import { Input } from "./ui/input"; +import { Github } from "lucide-react"; + +export default function MainComponent() { + const [roastUrl, setRoastUrl] = useState(""); + const [loading, setLoading] = useState(false); + const [roastData, setRoastData] = useState(""); + + const [spiceLevel, setSpiceLevel] = useState(2); + + return ( +
+ ); +} diff --git a/examples/roastmywebsite/src/components/ui/button.tsx b/examples/roastmywebsite/src/components/ui/button.tsx new file mode 100644 index 0000000..bd6bc89 --- /dev/null +++ b/examples/roastmywebsite/src/components/ui/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-zinc-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-zinc-950 dark:focus-visible:ring-zinc-300", + { + variants: { + variant: { + default: "bg-zinc-900 text-zinc-50 hover:bg-zinc-900/90 dark:bg-zinc-50 dark:text-zinc-900 dark:hover:bg-zinc-50/90", + destructive: + "bg-red-500 text-zinc-50 hover:bg-red-500/90 dark:bg-red-900 dark:text-zinc-50 dark:hover:bg-red-900/90", + outline: + "border border-zinc-200 bg-white hover:bg-zinc-100 hover:text-zinc-900 dark:border-zinc-800 dark:bg-zinc-950 dark:hover:bg-zinc-800 dark:hover:text-zinc-50", + secondary: + "bg-zinc-100 text-zinc-900 hover:bg-zinc-100/80 dark:bg-zinc-800 dark:text-zinc-50 dark:hover:bg-zinc-800/80", + ghost: "hover:bg-zinc-100 hover:text-zinc-900 dark:hover:bg-zinc-800 dark:hover:text-zinc-50", + link: "text-zinc-900 underline-offset-4 hover:underline dark:text-zinc-50", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/examples/roastmywebsite/src/components/ui/dialog.tsx b/examples/roastmywebsite/src/components/ui/dialog.tsx new file mode 100644 index 0000000..e69a6ad --- /dev/null +++ b/examples/roastmywebsite/src/components/ui/dialog.tsx @@ -0,0 +1,122 @@ +"use client" + +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { X } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} diff --git a/examples/roastmywebsite/src/components/ui/dropdown-menu.tsx b/examples/roastmywebsite/src/components/ui/dropdown-menu.tsx new file mode 100644 index 0000000..a5bc042 --- /dev/null +++ b/examples/roastmywebsite/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,200 @@ +"use client" + +import * as React from "react" +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" +import { Check, ChevronRight, Circle } from "lucide-react" + +import { cn } from "@/lib/utils" + +const DropdownMenu = DropdownMenuPrimitive.Root + +const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger + +const DropdownMenuGroup = DropdownMenuPrimitive.Group + +const DropdownMenuPortal = DropdownMenuPrimitive.Portal + +const DropdownMenuSub = DropdownMenuPrimitive.Sub + +const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup + +const DropdownMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)) +DropdownMenuSubTrigger.displayName = + DropdownMenuPrimitive.SubTrigger.displayName + +const DropdownMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSubContent.displayName = + DropdownMenuPrimitive.SubContent.displayName + +const DropdownMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + + + +)) +DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName + +const DropdownMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName + +const DropdownMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuCheckboxItem.displayName = + DropdownMenuPrimitive.CheckboxItem.displayName + +const DropdownMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName + +const DropdownMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName + +const DropdownMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName + +const DropdownMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +DropdownMenuShortcut.displayName = "DropdownMenuShortcut" + +export { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, +} diff --git a/examples/roastmywebsite/src/components/ui/input.tsx b/examples/roastmywebsite/src/components/ui/input.tsx new file mode 100644 index 0000000..c9a4382 --- /dev/null +++ b/examples/roastmywebsite/src/components/ui/input.tsx @@ -0,0 +1,25 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +export interface InputProps + extends React.InputHTMLAttributes {} + +const Input = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/examples/roastmywebsite/src/components/ui/select.tsx b/examples/roastmywebsite/src/components/ui/select.tsx new file mode 100644 index 0000000..610c5de --- /dev/null +++ b/examples/roastmywebsite/src/components/ui/select.tsx @@ -0,0 +1,160 @@ +"use client" + +import * as React from "react" +import * as SelectPrimitive from "@radix-ui/react-select" +import { Check, ChevronDown, ChevronUp } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Select = SelectPrimitive.Root + +const SelectGroup = SelectPrimitive.Group + +const SelectValue = SelectPrimitive.Value + +const SelectTrigger = React.forwardRef< + React.ElementRef, + Omit, 'noIcon'> & { noIcon?: boolean } +>(({ className, children, noIcon, ...props }, ref) => ( + span]:line-clamp-1 dark:border-zinc-800 dark:bg-zinc-950 dark:ring-offset-zinc-950 dark:placeholder:text-zinc-400 dark:focus:ring-zinc-300", + className + )} + {...props} + > + {children} + + {noIcon ? <> : } + + +)) +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName + +const SelectScrollUpButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName + +const SelectScrollDownButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +SelectScrollDownButton.displayName = + SelectPrimitive.ScrollDownButton.displayName + +const SelectContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, position = "popper", ...props }, ref) => ( + + + + + {children} + + + + +)) +SelectContent.displayName = SelectPrimitive.Content.displayName + +const SelectLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectLabel.displayName = SelectPrimitive.Label.displayName + +const SelectItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + + {children} + +)) +SelectItem.displayName = SelectPrimitive.Item.displayName + +const SelectSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectSeparator.displayName = SelectPrimitive.Separator.displayName + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, + SelectScrollUpButton, + SelectScrollDownButton, +} diff --git a/examples/roastmywebsite/src/components/ui/sonner.tsx b/examples/roastmywebsite/src/components/ui/sonner.tsx new file mode 100644 index 0000000..9f71edf --- /dev/null +++ b/examples/roastmywebsite/src/components/ui/sonner.tsx @@ -0,0 +1,31 @@ +"use client" + +import { useTheme } from "next-themes" +import { Toaster as Sonner } from "sonner" + +type ToasterProps = React.ComponentProps + +const Toaster = ({ ...props }: ToasterProps) => { + const { theme = "system" } = useTheme() + + return ( + + ) +} + +export { Toaster } diff --git a/examples/roastmywebsite/src/components/ui/switch.tsx b/examples/roastmywebsite/src/components/ui/switch.tsx new file mode 100644 index 0000000..b7e6fb6 --- /dev/null +++ b/examples/roastmywebsite/src/components/ui/switch.tsx @@ -0,0 +1,29 @@ +"use client" + +import * as React from "react" +import * as SwitchPrimitives from "@radix-ui/react-switch" + +import { cn } from "@/lib/utils" + +const Switch = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +Switch.displayName = SwitchPrimitives.Root.displayName + +export { Switch } diff --git a/examples/roastmywebsite/src/components/ui/textarea.tsx b/examples/roastmywebsite/src/components/ui/textarea.tsx new file mode 100644 index 0000000..4a42d9a --- /dev/null +++ b/examples/roastmywebsite/src/components/ui/textarea.tsx @@ -0,0 +1,24 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +export interface TextareaProps + extends React.TextareaHTMLAttributes {} + +const Textarea = React.forwardRef( + ({ className, ...props }, ref) => { + return ( +
+
+
+

+ + Roast + +
{" "} + My Website +

+
+ setRoastUrl(e.target.value)} + /> + +
+
+ + +
+ {loading ? ( +
+

Preparing your roast...

+
+ ) : ( + roastData && ( +
+

{roastData}

+
+ ) + )} +
+
+
+