diff --git a/packages/types/package.json b/packages/types/package.json new file mode 100644 index 0000000..fd07ecd --- /dev/null +++ b/packages/types/package.json @@ -0,0 +1,13 @@ +{ + "name": "@trawl/types", + "version": "0.1.0", + "private": true, + "main": "./src/index.ts", + "types": "./src/index.ts", + "scripts": { + "typecheck": "tsc --noEmit" + }, + "devDependencies": { + "typescript": "^6.0.3" + } +} diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts new file mode 100644 index 0000000..1e2df4b --- /dev/null +++ b/packages/types/src/index.ts @@ -0,0 +1,85 @@ +export interface Cookie { + name: string + value: string + domain: string + path: string + expires: number + httpOnly: boolean + secure: boolean + sameSite?: string +} + +export interface ScrapeRequest { + url: string + maxTimeout?: number + skipHttp?: boolean + maxTier?: 1 | 2 | 3 | 4 + sessionId?: string +} + +export interface TierResult { + tier: 1 | 2 | 3 | 4 + status: "success" | "blocked" | "needs-js" | "timeout" | "error" | "skipped" + durationMs: number + reason?: string +} + +export interface ScrapeResult { + url: string + html: string + cookies: Cookie[] + userAgent: string + statusCode: number + tier: 1 | 2 | 3 | 4 + sessionCached: boolean + timings: TierResult[] + totalMs: number + captchasSolved?: string[] // captcha types solved during this request (e.g. ['turnstile', 'recaptcha-v2']) +} + +export interface SessionData { + cookies: Cookie[] + userAgent: string + savedAt: number +} + +export interface PoolBrowser { + id: number + busy: boolean + lastDomain?: string + lastUsedAt?: number + restartCount: number + healthy: boolean +} + +export interface PoolStats { + total: number + busy: number + available: number + restarts: number + avgRestarts: number +} + +export interface FlareSolverrRequest { + cmd: "request.get" | "request.post" + url: string + maxTimeout?: number + postData?: string + headers?: Record +} + +export interface FlareSolverrResponse { + status: "ok" | "error" + message: string + startTimestamp: number + endTimestamp: number + version: "2.0.0" + solution: { + url: string + status: number + headers: Record + response: string + cookies: Cookie[] + userAgent: string + } +} diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json new file mode 100644 index 0000000..49e05ce --- /dev/null +++ b/packages/types/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src" + }, + "include": ["src"] +}