@dealcrawl/sdk 2.1.0 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/index.d.mts +2335 -0
  2. package/dist/index.d.ts +2314 -37
  3. package/dist/index.js +2280 -64
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +2260 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +13 -5
  8. package/dist/client.d.ts +0 -285
  9. package/dist/client.d.ts.map +0 -1
  10. package/dist/client.js +0 -336
  11. package/dist/client.js.map +0 -1
  12. package/dist/error.d.ts +0 -55
  13. package/dist/error.d.ts.map +0 -1
  14. package/dist/error.js +0 -128
  15. package/dist/error.js.map +0 -1
  16. package/dist/index.d.ts.map +0 -1
  17. package/dist/resources/account.d.ts +0 -143
  18. package/dist/resources/account.d.ts.map +0 -1
  19. package/dist/resources/account.js +0 -186
  20. package/dist/resources/account.js.map +0 -1
  21. package/dist/resources/crawl.d.ts +0 -101
  22. package/dist/resources/crawl.d.ts.map +0 -1
  23. package/dist/resources/crawl.js +0 -234
  24. package/dist/resources/crawl.js.map +0 -1
  25. package/dist/resources/data.d.ts +0 -157
  26. package/dist/resources/data.d.ts.map +0 -1
  27. package/dist/resources/data.js +0 -245
  28. package/dist/resources/data.js.map +0 -1
  29. package/dist/resources/dork.d.ts +0 -104
  30. package/dist/resources/dork.d.ts.map +0 -1
  31. package/dist/resources/dork.js +0 -163
  32. package/dist/resources/dork.js.map +0 -1
  33. package/dist/resources/extract.d.ts +0 -105
  34. package/dist/resources/extract.d.ts.map +0 -1
  35. package/dist/resources/extract.js +0 -246
  36. package/dist/resources/extract.js.map +0 -1
  37. package/dist/resources/index.d.ts +0 -14
  38. package/dist/resources/index.d.ts.map +0 -1
  39. package/dist/resources/index.js +0 -14
  40. package/dist/resources/index.js.map +0 -1
  41. package/dist/resources/keys.d.ts +0 -124
  42. package/dist/resources/keys.d.ts.map +0 -1
  43. package/dist/resources/keys.js +0 -168
  44. package/dist/resources/keys.js.map +0 -1
  45. package/dist/resources/scrape.d.ts +0 -53
  46. package/dist/resources/scrape.d.ts.map +0 -1
  47. package/dist/resources/scrape.js +0 -85
  48. package/dist/resources/scrape.js.map +0 -1
  49. package/dist/resources/status.d.ts +0 -100
  50. package/dist/resources/status.d.ts.map +0 -1
  51. package/dist/resources/status.js +0 -133
  52. package/dist/resources/status.js.map +0 -1
  53. package/dist/resources/webhooks.d.ts +0 -126
  54. package/dist/resources/webhooks.d.ts.map +0 -1
  55. package/dist/resources/webhooks.js +0 -167
  56. package/dist/resources/webhooks.js.map +0 -1
  57. package/dist/types/config.d.ts +0 -45
  58. package/dist/types/config.d.ts.map +0 -1
  59. package/dist/types/config.js +0 -10
  60. package/dist/types/config.js.map +0 -1
  61. package/dist/types/index.d.ts +0 -8
  62. package/dist/types/index.d.ts.map +0 -1
  63. package/dist/types/index.js +0 -8
  64. package/dist/types/index.js.map +0 -1
  65. package/dist/types/options.d.ts +0 -328
  66. package/dist/types/options.d.ts.map +0 -1
  67. package/dist/types/options.js +0 -6
  68. package/dist/types/options.js.map +0 -1
  69. package/dist/types/responses.d.ts +0 -422
  70. package/dist/types/responses.d.ts.map +0 -1
  71. package/dist/types/responses.js +0 -6
  72. package/dist/types/responses.js.map +0 -1
  73. package/dist/types/shared.d.ts +0 -234
  74. package/dist/types/shared.d.ts.map +0 -1
  75. package/dist/types/shared.js +0 -37
  76. package/dist/types/shared.js.map +0 -1
  77. package/dist/utils/polling.d.ts +0 -57
  78. package/dist/utils/polling.d.ts.map +0 -1
  79. package/dist/utils/polling.js +0 -110
  80. package/dist/utils/polling.js.map +0 -1
  81. package/dist/utils/request.d.ts +0 -47
  82. package/dist/utils/request.d.ts.map +0 -1
  83. package/dist/utils/request.js +0 -192
  84. package/dist/utils/request.js.map +0 -1
@@ -1,37 +0,0 @@
1
- /**
2
- * Types imported from @dealcrawl/shared
3
- * Bundled here to make SDK self-contained (no external dependency)
4
- */
5
- // ============================================
6
- // ERROR CODES
7
- // ============================================
8
- export const ERROR_CODES = {
9
- // Authentication
10
- INVALID_API_KEY: "INVALID_API_KEY",
11
- MISSING_API_KEY: "MISSING_API_KEY",
12
- API_KEY_EXPIRED: "API_KEY_EXPIRED",
13
- ACCOUNT_SUSPENDED: "ACCOUNT_SUSPENDED",
14
- // Rate limiting
15
- RATE_LIMIT_EXCEEDED: "RATE_LIMIT_EXCEEDED",
16
- QUOTA_EXCEEDED: "QUOTA_EXCEEDED",
17
- // Validation
18
- INVALID_URL: "INVALID_URL",
19
- INVALID_REQUEST: "INVALID_REQUEST",
20
- MISSING_REQUIRED_FIELD: "MISSING_REQUIRED_FIELD",
21
- // Job errors
22
- JOB_NOT_FOUND: "JOB_NOT_FOUND",
23
- JOB_FAILED: "JOB_FAILED",
24
- JOB_TIMEOUT: "JOB_TIMEOUT",
25
- // Scraping errors
26
- FETCH_FAILED: "FETCH_FAILED",
27
- PARSE_FAILED: "PARSE_FAILED",
28
- BLOCKED_BY_ROBOTS: "BLOCKED_BY_ROBOTS",
29
- CAPTCHA_DETECTED: "CAPTCHA_DETECTED",
30
- SITE_UNREACHABLE: "SITE_UNREACHABLE",
31
- // System errors
32
- INTERNAL_ERROR: "INTERNAL_ERROR",
33
- SERVICE_UNAVAILABLE: "SERVICE_UNAVAILABLE",
34
- REDIS_ERROR: "REDIS_ERROR",
35
- DATABASE_ERROR: "DATABASE_ERROR",
36
- };
37
- //# sourceMappingURL=shared.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/types/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,iBAAiB;IACjB,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IAEtC,gBAAgB;IAChB,mBAAmB,EAAE,qBAAqB;IAC1C,cAAc,EAAE,gBAAgB;IAEhC,aAAa;IACb,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAClC,sBAAsB,EAAE,wBAAwB;IAEhD,aAAa;IACb,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAE1B,kBAAkB;IAClB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IAEpC,gBAAgB;IAChB,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;CACxB,CAAC"}
@@ -1,57 +0,0 @@
1
- /**
2
- * Polling Utilities
3
- * Helpers for waiting on async job completion
4
- */
5
- import type { RequestContext } from "../types/config";
6
- import type { JobStatusResponse } from "../types/responses";
7
- /** Options for waiting on a job */
8
- export interface WaitOptions {
9
- /** Polling interval in milliseconds (default: 2000) */
10
- pollInterval?: number;
11
- /** Maximum time to wait in milliseconds (default: 300000 = 5 minutes) */
12
- timeout?: number;
13
- /** Callback on each poll */
14
- onProgress?: (status: JobStatusResponse) => void;
15
- /** Callback on status change */
16
- onStatusChange?: (newStatus: string, oldStatus: string) => void;
17
- /** AbortSignal for cancellation */
18
- signal?: AbortSignal;
19
- }
20
- /** Result of waiting for a job */
21
- export interface WaitResult<T = unknown> {
22
- /** Job ID */
23
- jobId: string;
24
- /** Final status */
25
- status: "completed" | "failed";
26
- /** Result data (if completed) */
27
- result?: T;
28
- /** Error message (if failed) */
29
- error?: string;
30
- /** Total time waited in ms */
31
- waitTime: number;
32
- }
33
- /**
34
- * Wait for a job to complete
35
- * Polls the status endpoint until the job is done
36
- */
37
- export declare function waitForResult<T = unknown>(ctx: RequestContext, jobId: string, options?: WaitOptions): Promise<WaitResult<T>>;
38
- /**
39
- * Wait for multiple jobs to complete
40
- * Returns when all jobs are done (either completed or failed)
41
- */
42
- export declare function waitForAll<T = unknown>(ctx: RequestContext, jobIds: string[], options?: WaitOptions): Promise<WaitResult<T>[]>;
43
- /**
44
- * Wait for any job to complete
45
- * Returns as soon as one job finishes
46
- */
47
- export declare function waitForAny<T = unknown>(ctx: RequestContext, jobIds: string[], options?: WaitOptions): Promise<WaitResult<T>>;
48
- /**
49
- * Poll with custom condition
50
- * Generic polling utility
51
- */
52
- export declare function pollUntil<T>(fetchFn: () => Promise<T>, conditionFn: (data: T) => boolean, options?: {
53
- pollInterval?: number;
54
- timeout?: number;
55
- signal?: AbortSignal;
56
- }): Promise<T>;
57
- //# sourceMappingURL=polling.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../src/utils/polling.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjD,gCAAgC;IAChC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,kCAAkC;AAClC,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,aAAa;IACb,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,CAAC,GAAG,OAAO,EAC7C,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAwExB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,OAAO,EAC1C,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAG1B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,OAAO,EAC1C,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAGxB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,EACjC,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACjB,GACL,OAAO,CAAC,CAAC,CAAC,CAqBZ"}
@@ -1,110 +0,0 @@
1
- /**
2
- * Polling Utilities
3
- * Helpers for waiting on async job completion
4
- */
5
- import { DealCrawlError, ERROR_CODES } from "../error";
6
- import { get } from "./request";
7
- /**
8
- * Wait for a job to complete
9
- * Polls the status endpoint until the job is done
10
- */
11
- export async function waitForResult(ctx, jobId, options = {}) {
12
- const { pollInterval = 2000, timeout = 300000, // 5 minutes
13
- onProgress, onStatusChange, signal, } = options;
14
- const startTime = Date.now();
15
- let lastStatus = null;
16
- while (true) {
17
- // Check for abort
18
- if (signal?.aborted) {
19
- throw new DealCrawlError({
20
- code: ERROR_CODES.JOB_TIMEOUT,
21
- message: "Wait cancelled by user",
22
- statusCode: 0,
23
- });
24
- }
25
- // Check timeout
26
- const elapsed = Date.now() - startTime;
27
- if (elapsed >= timeout) {
28
- throw new DealCrawlError({
29
- code: ERROR_CODES.JOB_TIMEOUT,
30
- message: `Job did not complete within ${timeout}ms`,
31
- statusCode: 408,
32
- details: { jobId, elapsed },
33
- });
34
- }
35
- // Fetch status
36
- const { data: status } = await get(ctx, `/v1/status/${jobId}`);
37
- // Call progress callback
38
- if (onProgress) {
39
- onProgress(status);
40
- }
41
- // Call status change callback
42
- if (onStatusChange && lastStatus !== null && lastStatus !== status.status) {
43
- onStatusChange(status.status, lastStatus);
44
- }
45
- lastStatus = status.status;
46
- // Check if done
47
- if (status.status === "completed") {
48
- return {
49
- jobId,
50
- status: "completed",
51
- result: status.result,
52
- waitTime: Date.now() - startTime,
53
- };
54
- }
55
- if (status.status === "failed") {
56
- return {
57
- jobId,
58
- status: "failed",
59
- error: status.error,
60
- waitTime: Date.now() - startTime,
61
- };
62
- }
63
- // Wait before next poll
64
- await sleep(pollInterval);
65
- }
66
- }
67
- /**
68
- * Wait for multiple jobs to complete
69
- * Returns when all jobs are done (either completed or failed)
70
- */
71
- export async function waitForAll(ctx, jobIds, options = {}) {
72
- const promises = jobIds.map((jobId) => waitForResult(ctx, jobId, options));
73
- return Promise.all(promises);
74
- }
75
- /**
76
- * Wait for any job to complete
77
- * Returns as soon as one job finishes
78
- */
79
- export async function waitForAny(ctx, jobIds, options = {}) {
80
- const promises = jobIds.map((jobId) => waitForResult(ctx, jobId, options));
81
- return Promise.race(promises);
82
- }
83
- /**
84
- * Poll with custom condition
85
- * Generic polling utility
86
- */
87
- export async function pollUntil(fetchFn, conditionFn, options = {}) {
88
- const { pollInterval = 2000, timeout = 300000, signal } = options;
89
- const startTime = Date.now();
90
- while (true) {
91
- if (signal?.aborted) {
92
- throw new Error("Polling cancelled");
93
- }
94
- if (Date.now() - startTime >= timeout) {
95
- throw new Error(`Polling timeout after ${timeout}ms`);
96
- }
97
- const data = await fetchFn();
98
- if (conditionFn(data)) {
99
- return data;
100
- }
101
- await sleep(pollInterval);
102
- }
103
- }
104
- /**
105
- * Sleep helper
106
- */
107
- function sleep(ms) {
108
- return new Promise((resolve) => setTimeout(resolve, ms));
109
- }
110
- //# sourceMappingURL=polling.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polling.js","sourceRoot":"","sources":["../../src/utils/polling.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import type { RateLimitInfo } from "../types/shared";
2
- import type { RequestContext } from "../types/config";
3
- /**
4
- * Request options for the HTTP helper
5
- */
6
- export interface RequestOptions {
7
- /** HTTP method */
8
- method?: "GET" | "POST" | "PATCH" | "DELETE";
9
- /** Request body (will be JSON stringified) */
10
- body?: unknown;
11
- /** Query parameters */
12
- query?: Record<string, string | number | boolean | undefined>;
13
- /** Request timeout in milliseconds (overrides default) */
14
- timeout?: number;
15
- /** AbortSignal for request cancellation */
16
- signal?: AbortSignal;
17
- }
18
- /**
19
- * Response wrapper with rate limit info
20
- */
21
- export interface RequestResult<T> {
22
- /** Response data */
23
- data: T;
24
- /** Rate limit information from headers */
25
- rateLimit: RateLimitInfo;
26
- }
27
- /**
28
- * Make an HTTP request with authentication, error handling, and retries
29
- */
30
- export declare function request<T>(ctx: RequestContext, path: string, options?: RequestOptions): Promise<RequestResult<T>>;
31
- /**
32
- * Convenience method for GET requests
33
- */
34
- export declare function get<T>(ctx: RequestContext, path: string, query?: Record<string, string | number | boolean | undefined>): Promise<RequestResult<T>>;
35
- /**
36
- * Convenience method for POST requests
37
- */
38
- export declare function post<T>(ctx: RequestContext, path: string, body?: unknown): Promise<RequestResult<T>>;
39
- /**
40
- * Convenience method for PATCH requests
41
- */
42
- export declare function patch<T>(ctx: RequestContext, path: string, body?: unknown): Promise<RequestResult<T>>;
43
- /**
44
- * Convenience method for DELETE requests
45
- */
46
- export declare function del<T>(ctx: RequestContext, path: string, body?: unknown): Promise<RequestResult<T>>;
47
- //# sourceMappingURL=request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAE7C,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAE9D,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,oBAAoB;IACpB,IAAI,EAAE,CAAC,CAAC;IAER,0CAA0C;IAC1C,SAAS,EAAE,aAAa,CAAC;CAC1B;AAoCD;;GAEG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CA4K3B;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EACnB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAC5D,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAE3B;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAE3B;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EACrB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAE3B;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EACnB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAE3B"}
@@ -1,192 +0,0 @@
1
- import { DealCrawlError, ERROR_CODES } from "../error";
2
- /**
3
- * Build query string from object
4
- */
5
- function buildQueryString(params) {
6
- const entries = Object.entries(params)
7
- .filter(([, value]) => value !== undefined)
8
- .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
9
- return entries.length > 0 ? `?${entries.join("&")}` : "";
10
- }
11
- /**
12
- * Parse rate limit headers from response
13
- */
14
- function parseRateLimitHeaders(headers) {
15
- return {
16
- limit: parseInt(headers.get("X-RateLimit-Limit") || "0", 10) || 0,
17
- remaining: parseInt(headers.get("X-RateLimit-Remaining") || "0", 10) || 0,
18
- reset: parseInt(headers.get("X-RateLimit-Reset") || "0", 10) || 0,
19
- };
20
- }
21
- /**
22
- * Sleep helper for retries
23
- */
24
- function sleep(ms) {
25
- return new Promise((resolve) => setTimeout(resolve, ms));
26
- }
27
- /**
28
- * Make an HTTP request with authentication, error handling, and retries
29
- */
30
- export async function request(ctx, path, options = {}) {
31
- const { method = "GET", body, query, timeout, signal } = options;
32
- // Build URL with query string
33
- const queryString = query ? buildQueryString(query) : "";
34
- const url = `${ctx.baseUrl}${path}${queryString}`;
35
- const timeoutMs = timeout ?? ctx.timeout;
36
- // Track current controller for external signal handling
37
- let currentController = null;
38
- // Named handler for external abort signal
39
- const onAbort = () => {
40
- if (currentController) {
41
- currentController.abort();
42
- }
43
- };
44
- // Attach external signal listener once (if provided)
45
- if (signal) {
46
- signal.addEventListener("abort", onAbort);
47
- }
48
- // Cleanup external signal listener (called at end of all retries)
49
- const cleanupExternalSignal = () => {
50
- if (signal) {
51
- signal.removeEventListener("abort", onAbort);
52
- }
53
- };
54
- let lastError = null;
55
- let attempt = 0;
56
- while (attempt <= ctx.maxRetries) {
57
- // Create a new AbortController and timeout for each attempt
58
- const controller = new AbortController();
59
- currentController = controller;
60
- const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
61
- // Cleanup function for this specific attempt - idempotent
62
- let attemptCleanupDone = false;
63
- const cleanupAttempt = () => {
64
- if (attemptCleanupDone)
65
- return;
66
- attemptCleanupDone = true;
67
- clearTimeout(timeoutId);
68
- currentController = null;
69
- };
70
- try {
71
- const response = await fetch(url, {
72
- method,
73
- headers: {
74
- "Content-Type": "application/json",
75
- Authorization: `Bearer ${ctx.apiKey}`,
76
- },
77
- body: body ? JSON.stringify(body) : undefined,
78
- signal: controller.signal,
79
- });
80
- cleanupAttempt();
81
- // Parse rate limit headers
82
- const rateLimit = parseRateLimitHeaders(response.headers);
83
- // Handle rate limiting
84
- if (response.status === 429) {
85
- const retryAfter = parseInt(response.headers.get("Retry-After") || "60", 10);
86
- // Notify callback
87
- if (ctx.onRateLimit) {
88
- ctx.onRateLimit(rateLimit);
89
- }
90
- throw new DealCrawlError({
91
- code: ERROR_CODES.RATE_LIMIT_EXCEEDED,
92
- message: "Rate limit exceeded",
93
- statusCode: 429,
94
- retryAfter,
95
- details: { rateLimit },
96
- });
97
- }
98
- // Handle errors
99
- if (!response.ok) {
100
- let errorBody = {};
101
- try {
102
- errorBody = (await response.json());
103
- }
104
- catch {
105
- // Response might not be JSON
106
- }
107
- // Extract Retry-After header if present
108
- const retryAfterHeader = response.headers.get("Retry-After");
109
- throw DealCrawlError.fromResponse(response.status, errorBody, retryAfterHeader);
110
- }
111
- // Parse response
112
- let data;
113
- const contentType = response.headers.get("Content-Type") || "";
114
- if (contentType.includes("application/json")) {
115
- data = (await response.json());
116
- }
117
- else if (contentType.includes("text/csv") ||
118
- contentType.includes("text/plain")) {
119
- data = (await response.text());
120
- }
121
- else {
122
- data = (await response.json());
123
- }
124
- cleanupExternalSignal();
125
- return { data, rateLimit };
126
- }
127
- catch (error) {
128
- cleanupAttempt();
129
- // Handle abort/timeout
130
- if (error instanceof Error && error.name === "AbortError") {
131
- cleanupExternalSignal();
132
- throw new DealCrawlError({
133
- code: ERROR_CODES.JOB_TIMEOUT,
134
- message: `Request timeout after ${timeoutMs}ms`,
135
- statusCode: 408,
136
- });
137
- }
138
- // Handle DealCrawlError
139
- if (error instanceof DealCrawlError) {
140
- lastError = error;
141
- // Retry if error is retryable and we have attempts left
142
- if (error.isRetryable() && attempt < ctx.maxRetries) {
143
- attempt++;
144
- await sleep(ctx.retryDelay * attempt); // Exponential backoff
145
- continue;
146
- }
147
- cleanupExternalSignal();
148
- throw error;
149
- }
150
- // Handle network errors
151
- cleanupExternalSignal();
152
- throw new DealCrawlError({
153
- code: ERROR_CODES.FETCH_FAILED,
154
- message: error instanceof Error ? error.message : "Network request failed",
155
- statusCode: 0,
156
- });
157
- }
158
- }
159
- // Should not reach here, but throw last error if we do
160
- cleanupExternalSignal();
161
- throw (lastError ??
162
- new DealCrawlError({
163
- code: ERROR_CODES.INTERNAL_ERROR,
164
- message: "Request failed after retries",
165
- statusCode: 500,
166
- }));
167
- }
168
- /**
169
- * Convenience method for GET requests
170
- */
171
- export function get(ctx, path, query) {
172
- return request(ctx, path, { method: "GET", query });
173
- }
174
- /**
175
- * Convenience method for POST requests
176
- */
177
- export function post(ctx, path, body) {
178
- return request(ctx, path, { method: "POST", body });
179
- }
180
- /**
181
- * Convenience method for PATCH requests
182
- */
183
- export function patch(ctx, path, body) {
184
- return request(ctx, path, { method: "PATCH", body });
185
- }
186
- /**
187
- * Convenience method for DELETE requests
188
- */
189
- export function del(ctx, path, body) {
190
- return request(ctx, path, { method: "DELETE", body });
191
- }
192
- //# sourceMappingURL=request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"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"}