@dealcrawl/sdk 2.0.0

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 (166) hide show
  1. package/README.md +540 -0
  2. package/dist/sdk/src/client.d.ts +285 -0
  3. package/dist/sdk/src/client.d.ts.map +1 -0
  4. package/dist/sdk/src/client.js +336 -0
  5. package/dist/sdk/src/client.js.map +1 -0
  6. package/dist/sdk/src/error.d.ts +54 -0
  7. package/dist/sdk/src/error.d.ts.map +1 -0
  8. package/dist/sdk/src/error.js +115 -0
  9. package/dist/sdk/src/error.js.map +1 -0
  10. package/dist/sdk/src/index.d.ts +58 -0
  11. package/dist/sdk/src/index.d.ts.map +1 -0
  12. package/dist/sdk/src/index.js +65 -0
  13. package/dist/sdk/src/index.js.map +1 -0
  14. package/dist/sdk/src/resources/account.d.ts +143 -0
  15. package/dist/sdk/src/resources/account.d.ts.map +1 -0
  16. package/dist/sdk/src/resources/account.js +186 -0
  17. package/dist/sdk/src/resources/account.js.map +1 -0
  18. package/dist/sdk/src/resources/crawl.d.ts +87 -0
  19. package/dist/sdk/src/resources/crawl.d.ts.map +1 -0
  20. package/dist/sdk/src/resources/crawl.js +205 -0
  21. package/dist/sdk/src/resources/crawl.js.map +1 -0
  22. package/dist/sdk/src/resources/data.d.ts +157 -0
  23. package/dist/sdk/src/resources/data.d.ts.map +1 -0
  24. package/dist/sdk/src/resources/data.js +239 -0
  25. package/dist/sdk/src/resources/data.js.map +1 -0
  26. package/dist/sdk/src/resources/dork.d.ts +104 -0
  27. package/dist/sdk/src/resources/dork.d.ts.map +1 -0
  28. package/dist/sdk/src/resources/dork.js +163 -0
  29. package/dist/sdk/src/resources/dork.js.map +1 -0
  30. package/dist/sdk/src/resources/extract.d.ts +105 -0
  31. package/dist/sdk/src/resources/extract.d.ts.map +1 -0
  32. package/dist/sdk/src/resources/extract.js +246 -0
  33. package/dist/sdk/src/resources/extract.js.map +1 -0
  34. package/dist/sdk/src/resources/index.d.ts +14 -0
  35. package/dist/sdk/src/resources/index.d.ts.map +1 -0
  36. package/dist/sdk/src/resources/index.js +14 -0
  37. package/dist/sdk/src/resources/index.js.map +1 -0
  38. package/dist/sdk/src/resources/keys.d.ts +124 -0
  39. package/dist/sdk/src/resources/keys.d.ts.map +1 -0
  40. package/dist/sdk/src/resources/keys.js +168 -0
  41. package/dist/sdk/src/resources/keys.js.map +1 -0
  42. package/dist/sdk/src/resources/scrape.d.ts +53 -0
  43. package/dist/sdk/src/resources/scrape.d.ts.map +1 -0
  44. package/dist/sdk/src/resources/scrape.js +85 -0
  45. package/dist/sdk/src/resources/scrape.js.map +1 -0
  46. package/dist/sdk/src/resources/status.d.ts +100 -0
  47. package/dist/sdk/src/resources/status.d.ts.map +1 -0
  48. package/dist/sdk/src/resources/status.js +133 -0
  49. package/dist/sdk/src/resources/status.js.map +1 -0
  50. package/dist/sdk/src/resources/webhooks.d.ts +126 -0
  51. package/dist/sdk/src/resources/webhooks.d.ts.map +1 -0
  52. package/dist/sdk/src/resources/webhooks.js +167 -0
  53. package/dist/sdk/src/resources/webhooks.js.map +1 -0
  54. package/dist/sdk/src/types/config.d.ts +45 -0
  55. package/dist/sdk/src/types/config.d.ts.map +1 -0
  56. package/dist/sdk/src/types/config.js +10 -0
  57. package/dist/sdk/src/types/config.js.map +1 -0
  58. package/dist/sdk/src/types/index.d.ts +8 -0
  59. package/dist/sdk/src/types/index.d.ts.map +1 -0
  60. package/dist/sdk/src/types/index.js +8 -0
  61. package/dist/sdk/src/types/index.js.map +1 -0
  62. package/dist/sdk/src/types/options.d.ts +286 -0
  63. package/dist/sdk/src/types/options.d.ts.map +1 -0
  64. package/dist/sdk/src/types/options.js +6 -0
  65. package/dist/sdk/src/types/options.js.map +1 -0
  66. package/dist/sdk/src/types/responses.d.ts +385 -0
  67. package/dist/sdk/src/types/responses.d.ts.map +1 -0
  68. package/dist/sdk/src/types/responses.js +6 -0
  69. package/dist/sdk/src/types/responses.js.map +1 -0
  70. package/dist/sdk/src/utils/polling.d.ts +57 -0
  71. package/dist/sdk/src/utils/polling.d.ts.map +1 -0
  72. package/dist/sdk/src/utils/polling.js +110 -0
  73. package/dist/sdk/src/utils/polling.js.map +1 -0
  74. package/dist/sdk/src/utils/request.d.ts +47 -0
  75. package/dist/sdk/src/utils/request.d.ts.map +1 -0
  76. package/dist/sdk/src/utils/request.js +161 -0
  77. package/dist/sdk/src/utils/request.js.map +1 -0
  78. package/dist/shared/src/constants/errors.d.ts +26 -0
  79. package/dist/shared/src/constants/errors.d.ts.map +1 -0
  80. package/dist/shared/src/constants/errors.js +39 -0
  81. package/dist/shared/src/constants/errors.js.map +1 -0
  82. package/dist/shared/src/constants/http.d.ts +26 -0
  83. package/dist/shared/src/constants/http.d.ts.map +1 -0
  84. package/dist/shared/src/constants/http.js +26 -0
  85. package/dist/shared/src/constants/http.js.map +1 -0
  86. package/dist/shared/src/constants/index.d.ts +4 -0
  87. package/dist/shared/src/constants/index.d.ts.map +1 -0
  88. package/dist/shared/src/constants/index.js +5 -0
  89. package/dist/shared/src/constants/index.js.map +1 -0
  90. package/dist/shared/src/constants/limits.d.ts +52 -0
  91. package/dist/shared/src/constants/limits.d.ts.map +1 -0
  92. package/dist/shared/src/constants/limits.js +43 -0
  93. package/dist/shared/src/constants/limits.js.map +1 -0
  94. package/dist/shared/src/index.d.ts +5 -0
  95. package/dist/shared/src/index.d.ts.map +1 -0
  96. package/dist/shared/src/index.js +11 -0
  97. package/dist/shared/src/index.js.map +1 -0
  98. package/dist/shared/src/lib/index.d.ts +2 -0
  99. package/dist/shared/src/lib/index.d.ts.map +1 -0
  100. package/dist/shared/src/lib/index.js +2 -0
  101. package/dist/shared/src/lib/index.js.map +1 -0
  102. package/dist/shared/src/lib/redis.d.ts +14 -0
  103. package/dist/shared/src/lib/redis.d.ts.map +1 -0
  104. package/dist/shared/src/lib/redis.js +60 -0
  105. package/dist/shared/src/lib/redis.js.map +1 -0
  106. package/dist/shared/src/types/api-key.types.d.ts +94 -0
  107. package/dist/shared/src/types/api-key.types.d.ts.map +1 -0
  108. package/dist/shared/src/types/api-key.types.js +30 -0
  109. package/dist/shared/src/types/api-key.types.js.map +1 -0
  110. package/dist/shared/src/types/api.types.d.ts +38 -0
  111. package/dist/shared/src/types/api.types.d.ts.map +1 -0
  112. package/dist/shared/src/types/api.types.js +2 -0
  113. package/dist/shared/src/types/api.types.js.map +1 -0
  114. package/dist/shared/src/types/client.types.d.ts +73 -0
  115. package/dist/shared/src/types/client.types.d.ts.map +1 -0
  116. package/dist/shared/src/types/client.types.js +9 -0
  117. package/dist/shared/src/types/client.types.js.map +1 -0
  118. package/dist/shared/src/types/crawl.types.d.ts +65 -0
  119. package/dist/shared/src/types/crawl.types.d.ts.map +1 -0
  120. package/dist/shared/src/types/crawl.types.js +2 -0
  121. package/dist/shared/src/types/crawl.types.js.map +1 -0
  122. package/dist/shared/src/types/deal.types.d.ts +210 -0
  123. package/dist/shared/src/types/deal.types.d.ts.map +1 -0
  124. package/dist/shared/src/types/deal.types.js +6 -0
  125. package/dist/shared/src/types/deal.types.js.map +1 -0
  126. package/dist/shared/src/types/dork.types.d.ts +29 -0
  127. package/dist/shared/src/types/dork.types.d.ts.map +1 -0
  128. package/dist/shared/src/types/dork.types.js +2 -0
  129. package/dist/shared/src/types/dork.types.js.map +1 -0
  130. package/dist/shared/src/types/index.d.ts +8 -0
  131. package/dist/shared/src/types/index.d.ts.map +1 -0
  132. package/dist/shared/src/types/index.js +9 -0
  133. package/dist/shared/src/types/index.js.map +1 -0
  134. package/dist/shared/src/types/scrape.types.d.ts +151 -0
  135. package/dist/shared/src/types/scrape.types.d.ts.map +1 -0
  136. package/dist/shared/src/types/scrape.types.js +2 -0
  137. package/dist/shared/src/types/scrape.types.js.map +1 -0
  138. package/dist/shared/src/utils/date.d.ts +7 -0
  139. package/dist/shared/src/utils/date.d.ts.map +1 -0
  140. package/dist/shared/src/utils/date.js +25 -0
  141. package/dist/shared/src/utils/date.js.map +1 -0
  142. package/dist/shared/src/utils/hash.d.ts +4 -0
  143. package/dist/shared/src/utils/hash.d.ts.map +1 -0
  144. package/dist/shared/src/utils/hash.js +21 -0
  145. package/dist/shared/src/utils/hash.js.map +1 -0
  146. package/dist/shared/src/utils/index.d.ts +7 -0
  147. package/dist/shared/src/utils/index.d.ts.map +1 -0
  148. package/dist/shared/src/utils/index.js +8 -0
  149. package/dist/shared/src/utils/index.js.map +1 -0
  150. package/dist/shared/src/utils/logger.d.ts +66 -0
  151. package/dist/shared/src/utils/logger.d.ts.map +1 -0
  152. package/dist/shared/src/utils/logger.js +268 -0
  153. package/dist/shared/src/utils/logger.js.map +1 -0
  154. package/dist/shared/src/utils/retry.d.ts +11 -0
  155. package/dist/shared/src/utils/retry.d.ts.map +1 -0
  156. package/dist/shared/src/utils/retry.js +36 -0
  157. package/dist/shared/src/utils/retry.js.map +1 -0
  158. package/dist/shared/src/utils/url-validator.d.ts +37 -0
  159. package/dist/shared/src/utils/url-validator.d.ts.map +1 -0
  160. package/dist/shared/src/utils/url-validator.js +179 -0
  161. package/dist/shared/src/utils/url-validator.js.map +1 -0
  162. package/dist/shared/src/utils/url.d.ts +6 -0
  163. package/dist/shared/src/utils/url.d.ts.map +1 -0
  164. package/dist/shared/src/utils/url.js +56 -0
  165. package/dist/shared/src/utils/url.js.map +1 -0
  166. package/package.json +49 -0
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Webhooks Resource
3
+ * Handles webhook CRUD operations
4
+ */
5
+ import type { RequestContext } from "../types/config";
6
+ import type { CreateWebhookOptions, UpdateWebhookOptions } from "../types/options";
7
+ import type { CreateWebhookResponse, ListWebhooksResponse, WebhookItem, UpdateWebhookResponse, DeleteWebhookResponse, TestWebhookResponse } from "../types/responses";
8
+ /**
9
+ * Webhooks resource class
10
+ * Provides methods for managing webhooks
11
+ */
12
+ export declare class WebhooksResource {
13
+ private ctx;
14
+ constructor(ctx: RequestContext);
15
+ /**
16
+ * Create a new webhook
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const webhook = await client.webhooks.create({
21
+ * event: "deal.found",
22
+ * url: "https://my-server.com/webhooks/deals",
23
+ * secret: "my-webhook-secret",
24
+ * minDealScore: 70
25
+ * });
26
+ * console.log(webhook.webhookId);
27
+ * ```
28
+ */
29
+ create(options: CreateWebhookOptions): Promise<CreateWebhookResponse>;
30
+ /**
31
+ * List all webhooks
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const webhooks = await client.webhooks.list();
36
+ * webhooks.webhooks.forEach(w => {
37
+ * console.log(w.event, w.url, w.active);
38
+ * });
39
+ * ```
40
+ */
41
+ list(): Promise<ListWebhooksResponse>;
42
+ /**
43
+ * Get a webhook by ID
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * const webhook = await client.webhooks.get("webhook_abc123");
48
+ * console.log(webhook.event);
49
+ * ```
50
+ */
51
+ get(webhookId: string): Promise<WebhookItem>;
52
+ /**
53
+ * Update a webhook
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const updated = await client.webhooks.update("webhook_abc123", {
58
+ * minDealScore: 80,
59
+ * active: false
60
+ * });
61
+ * ```
62
+ */
63
+ update(webhookId: string, options: UpdateWebhookOptions): Promise<UpdateWebhookResponse>;
64
+ /**
65
+ * Delete a webhook
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * await client.webhooks.delete("webhook_abc123");
70
+ * ```
71
+ */
72
+ delete(webhookId: string): Promise<DeleteWebhookResponse>;
73
+ /**
74
+ * Test a webhook by sending a test payload
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * const result = await client.webhooks.test("webhook_abc123");
79
+ * if (result.delivered) {
80
+ * console.log(`Delivered in ${result.responseTime}ms`);
81
+ * } else {
82
+ * console.log(`Failed: ${result.error}`);
83
+ * }
84
+ * ```
85
+ */
86
+ test(webhookId: string): Promise<TestWebhookResponse>;
87
+ /**
88
+ * Enable a webhook
89
+ * Convenience method for activating a webhook
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * await client.webhooks.enable("webhook_abc123");
94
+ * ```
95
+ */
96
+ enable(webhookId: string): Promise<UpdateWebhookResponse>;
97
+ /**
98
+ * Disable a webhook
99
+ * Convenience method for deactivating a webhook
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * await client.webhooks.disable("webhook_abc123");
104
+ * ```
105
+ */
106
+ disable(webhookId: string): Promise<UpdateWebhookResponse>;
107
+ /**
108
+ * Get active webhooks only
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * const active = await client.webhooks.getActive();
113
+ * ```
114
+ */
115
+ getActive(): Promise<WebhookItem[]>;
116
+ /**
117
+ * Get webhooks by event type
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * const dealWebhooks = await client.webhooks.getByEvent("deal.found");
122
+ * ```
123
+ */
124
+ getByEvent(event: CreateWebhookOptions["event"]): Promise<WebhookItem[]>;
125
+ }
126
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../../../src/resources/webhooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAG5B;;;GAGG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,cAAc;IAEvC;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAY3E;;;;;;;;;;OAUG;IACG,IAAI,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAK3C;;;;;;;;OAQG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQlD;;;;;;;;;;OAUG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAejC;;;;;;;OAOG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ/D;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ3D;;;;;;;;OAQG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI/D;;;;;;;;OAQG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhE;;;;;;;OAOG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAKzC;;;;;;;OAOG;IACG,UAAU,CACd,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,GACnC,OAAO,CAAC,WAAW,EAAE,CAAC;CAI1B"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Webhooks Resource
3
+ * Handles webhook CRUD operations
4
+ */
5
+ import { get, post, patch, del } from "../utils/request";
6
+ /**
7
+ * Webhooks resource class
8
+ * Provides methods for managing webhooks
9
+ */
10
+ export class WebhooksResource {
11
+ ctx;
12
+ constructor(ctx) {
13
+ this.ctx = ctx;
14
+ }
15
+ /**
16
+ * Create a new webhook
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const webhook = await client.webhooks.create({
21
+ * event: "deal.found",
22
+ * url: "https://my-server.com/webhooks/deals",
23
+ * secret: "my-webhook-secret",
24
+ * minDealScore: 70
25
+ * });
26
+ * console.log(webhook.webhookId);
27
+ * ```
28
+ */
29
+ async create(options) {
30
+ const result = await post(this.ctx, "/v1/webhooks", {
31
+ event: options.event,
32
+ url: options.url,
33
+ secret: options.secret,
34
+ minDealScore: options.minDealScore,
35
+ categories: options.categories,
36
+ active: options.active,
37
+ });
38
+ return result.data;
39
+ }
40
+ /**
41
+ * List all webhooks
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const webhooks = await client.webhooks.list();
46
+ * webhooks.webhooks.forEach(w => {
47
+ * console.log(w.event, w.url, w.active);
48
+ * });
49
+ * ```
50
+ */
51
+ async list() {
52
+ const result = await get(this.ctx, "/v1/webhooks");
53
+ return result.data;
54
+ }
55
+ /**
56
+ * Get a webhook by ID
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const webhook = await client.webhooks.get("webhook_abc123");
61
+ * console.log(webhook.event);
62
+ * ```
63
+ */
64
+ async get(webhookId) {
65
+ const result = await get(this.ctx, `/v1/webhooks/${webhookId}`);
66
+ return result.data;
67
+ }
68
+ /**
69
+ * Update a webhook
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * const updated = await client.webhooks.update("webhook_abc123", {
74
+ * minDealScore: 80,
75
+ * active: false
76
+ * });
77
+ * ```
78
+ */
79
+ async update(webhookId, options) {
80
+ const result = await patch(this.ctx, `/v1/webhooks/${webhookId}`, {
81
+ url: options.url,
82
+ secret: options.secret,
83
+ minDealScore: options.minDealScore,
84
+ categories: options.categories,
85
+ active: options.active,
86
+ });
87
+ return result.data;
88
+ }
89
+ /**
90
+ * Delete a webhook
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * await client.webhooks.delete("webhook_abc123");
95
+ * ```
96
+ */
97
+ async delete(webhookId) {
98
+ const result = await del(this.ctx, `/v1/webhooks/${webhookId}`);
99
+ return result.data;
100
+ }
101
+ /**
102
+ * Test a webhook by sending a test payload
103
+ *
104
+ * @example
105
+ * ```ts
106
+ * const result = await client.webhooks.test("webhook_abc123");
107
+ * if (result.delivered) {
108
+ * console.log(`Delivered in ${result.responseTime}ms`);
109
+ * } else {
110
+ * console.log(`Failed: ${result.error}`);
111
+ * }
112
+ * ```
113
+ */
114
+ async test(webhookId) {
115
+ const result = await post(this.ctx, `/v1/webhooks/${webhookId}/test`);
116
+ return result.data;
117
+ }
118
+ /**
119
+ * Enable a webhook
120
+ * Convenience method for activating a webhook
121
+ *
122
+ * @example
123
+ * ```ts
124
+ * await client.webhooks.enable("webhook_abc123");
125
+ * ```
126
+ */
127
+ async enable(webhookId) {
128
+ return this.update(webhookId, { active: true });
129
+ }
130
+ /**
131
+ * Disable a webhook
132
+ * Convenience method for deactivating a webhook
133
+ *
134
+ * @example
135
+ * ```ts
136
+ * await client.webhooks.disable("webhook_abc123");
137
+ * ```
138
+ */
139
+ async disable(webhookId) {
140
+ return this.update(webhookId, { active: false });
141
+ }
142
+ /**
143
+ * Get active webhooks only
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * const active = await client.webhooks.getActive();
148
+ * ```
149
+ */
150
+ async getActive() {
151
+ const all = await this.list();
152
+ return all.webhooks.filter((w) => w.active);
153
+ }
154
+ /**
155
+ * Get webhooks by event type
156
+ *
157
+ * @example
158
+ * ```ts
159
+ * const dealWebhooks = await client.webhooks.getByEvent("deal.found");
160
+ * ```
161
+ */
162
+ async getByEvent(event) {
163
+ const all = await this.list();
164
+ return all.webhooks.filter((w) => w.event === event);
165
+ }
166
+ }
167
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../../../src/resources/webhooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { RateLimitInfo } from "@dealcrawl/shared";
2
+ /**
3
+ * SDK Configuration options
4
+ */
5
+ export interface DealCrawlConfig {
6
+ /** API key for authentication (required) */
7
+ apiKey: string;
8
+ /** Base URL for the API (default: https://api.dealcrawl.dev) */
9
+ baseUrl?: string;
10
+ /** Default timeout for requests in milliseconds (default: 30000) */
11
+ timeout?: number;
12
+ /** Maximum number of retries for failed requests (default: 3) */
13
+ maxRetries?: number;
14
+ /** Delay between retries in milliseconds (default: 1000) */
15
+ retryDelay?: number;
16
+ /** Callback when rate limit is hit */
17
+ onRateLimit?: (info: RateLimitInfo) => void;
18
+ }
19
+ /**
20
+ * Internal request context passed to resources
21
+ */
22
+ export interface RequestContext {
23
+ /** Base URL for API requests */
24
+ baseUrl: string;
25
+ /** API key for authentication */
26
+ apiKey: string;
27
+ /** Default timeout in milliseconds */
28
+ timeout: number;
29
+ /** Maximum number of retries */
30
+ maxRetries: number;
31
+ /** Delay between retries in milliseconds */
32
+ retryDelay: number;
33
+ /** Rate limit callback */
34
+ onRateLimit?: (info: RateLimitInfo) => void;
35
+ }
36
+ /**
37
+ * Default configuration values
38
+ */
39
+ export declare const DEFAULT_CONFIG: {
40
+ readonly baseUrl: "https://api.dealcrawl.dev";
41
+ readonly timeout: 30000;
42
+ readonly maxRetries: 3;
43
+ readonly retryDelay: 1000;
44
+ };
45
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IAEf,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAEhB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IAEnB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IAEnB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Default configuration values
3
+ */
4
+ export const DEFAULT_CONFIG = {
5
+ baseUrl: "https://api.dealcrawl.dev",
6
+ timeout: 30000,
7
+ maxRetries: 3,
8
+ retryDelay: 1000,
9
+ };
10
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/types/config.ts"],"names":[],"mappings":"AAgDA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,2BAA2B;IACpC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,IAAI;CACR,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Types barrel export
3
+ * Re-exports all types from the SDK
4
+ */
5
+ export * from "./config";
6
+ export * from "./options";
7
+ export * from "./responses";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Types barrel export
3
+ * Re-exports all types from the SDK
4
+ */
5
+ export * from "./config";
6
+ export * from "./options";
7
+ export * from "./responses";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * SDK Request Options Types
3
+ * These types define the options for SDK methods
4
+ */
5
+ /** Screenshot capture options */
6
+ export interface ScreenshotOptions {
7
+ /** Enable screenshot capture */
8
+ enabled: boolean;
9
+ /** Capture full page or viewport only (default: false) */
10
+ fullPage?: boolean;
11
+ /** Viewport width in pixels (default: 1280, min: 320, max: 3840) */
12
+ width?: number;
13
+ /** Viewport height in pixels (default: 720, min: 240, max: 2160) */
14
+ height?: number;
15
+ /** Image format (default: png) */
16
+ format?: "png" | "jpeg" | "webp";
17
+ /** JPEG/WebP quality 0-100 (default: 80, only for jpeg/webp) */
18
+ quality?: number;
19
+ }
20
+ /** Options for scraping a single page */
21
+ export interface ScrapeOptions {
22
+ /** URL to scrape (required) */
23
+ url: string;
24
+ /** Detect signals like prices, discounts, urgency (default: true) */
25
+ detectSignals?: boolean;
26
+ /** Extract content using AI */
27
+ extractWithAI?: boolean;
28
+ /** Extract deal-specific information (product, price, discount, urgency) */
29
+ extractDeal?: boolean;
30
+ /** Use advanced AI model (GPT-4o) for complex pages - higher cost, better quality */
31
+ useAdvancedModel?: boolean;
32
+ /** Minimum deal score threshold (0-100) - only returns deals above this score */
33
+ minDealScore?: number;
34
+ /** Screenshot configuration */
35
+ screenshot?: ScreenshotOptions;
36
+ /** HTML tags to exclude from content (e.g., ["nav", "footer", "aside", "script"]) */
37
+ excludeTags?: string[];
38
+ /** CSS selectors to exclude from content (e.g., [".sidebar", "#comments"]) */
39
+ excludeSelectors?: string[];
40
+ /** Only extract main content area (default: true) */
41
+ onlyMainContent?: boolean;
42
+ /** Custom headers for the request */
43
+ headers?: Record<string, string>;
44
+ /** Timeout in milliseconds (default: 30000, max: 120000) */
45
+ timeout?: number;
46
+ }
47
+ /** Options for crawling a website */
48
+ export interface CrawlOptions {
49
+ /** Starting URL for the crawl (required) */
50
+ url: string;
51
+ /** Alias for url - Starting URL for the crawl */
52
+ startUrl?: string;
53
+ /** Prompt to guide the crawl (optional) */
54
+ prompt?: string;
55
+ /** Maximum depth to crawl (default: 3, max: 5) */
56
+ maxDepth?: number;
57
+ /** Maximum pages to crawl (default: 100, max: 1000) */
58
+ maxPages?: number;
59
+ /** Delay between requests in ms (default: 1000, min: 100, max: 10000) */
60
+ delayMs?: number;
61
+ /** Detect signals on crawled pages (default: true) */
62
+ detectSignals?: boolean;
63
+ /** Extract content using AI */
64
+ extractWithAI?: boolean;
65
+ /** Extract deal-specific information from each page */
66
+ extractDeal?: boolean;
67
+ /** Minimum deal score threshold (0-100) */
68
+ minDealScore?: number;
69
+ /** Prioritize pages likely to contain deals (default: true) */
70
+ prioritizeDealPages?: boolean;
71
+ /** Follow links to external domains (default: false) */
72
+ followExternalLinks?: boolean;
73
+ /** List of allowed domains to crawl */
74
+ allowedDomains?: string[];
75
+ /** URL patterns to exclude from crawling */
76
+ excludePatterns?: string[];
77
+ }
78
+ /** Crawl template identifier */
79
+ export type CrawlTemplateId = "ecommerce" | "blog" | "docs" | "marketplace" | "custom";
80
+ /** Crawl template definition */
81
+ export interface CrawlTemplate {
82
+ id: CrawlTemplateId;
83
+ name: string;
84
+ description: string;
85
+ defaultOptions: Partial<CrawlOptions>;
86
+ }
87
+ /** LLM model options for extraction */
88
+ export type ExtractModel = "gpt-4o-mini" | "gpt-4o" | "claude-3-haiku" | "claude-3-sonnet";
89
+ /** Options for structured data extraction */
90
+ export interface ExtractOptions {
91
+ /** URL to extract data from (required) */
92
+ url: string;
93
+ /** JSON Schema for structured extraction */
94
+ schema?: Record<string, unknown>;
95
+ /** Natural language prompt for extraction */
96
+ prompt?: string;
97
+ /** Extract only main content or full page (default: true) */
98
+ onlyMainContent?: boolean;
99
+ /** HTML tags to exclude from content */
100
+ excludeTags?: string[];
101
+ /** CSS selectors to exclude from content */
102
+ excludeSelectors?: string[];
103
+ /** LLM model to use (default: gpt-4o-mini) */
104
+ model?: ExtractModel;
105
+ /** Temperature for LLM (0-1, default: 0.1) */
106
+ temperature?: number;
107
+ /** Webhook configuration for async notification */
108
+ webhook?: {
109
+ url: string;
110
+ headers?: Record<string, string>;
111
+ };
112
+ /** Custom headers for the scrape request */
113
+ headers?: Record<string, string>;
114
+ /** Timeout in milliseconds */
115
+ timeout?: number;
116
+ }
117
+ /** Options for Google Dork searches */
118
+ export interface DorkOptions {
119
+ /** Search query (required) */
120
+ query: string;
121
+ /** Limit search to specific site */
122
+ site?: string;
123
+ /** Search for specific file types */
124
+ fileType?: string;
125
+ /** Search for term in URL */
126
+ inUrl?: string;
127
+ /** Search for term in title */
128
+ inTitle?: string;
129
+ /** Maximum results to return (default: 10, max: 100) */
130
+ maxResults?: number;
131
+ /** Region code (2 letter ISO code) */
132
+ region?: string;
133
+ }
134
+ /** Options for getting job deals */
135
+ export interface GetDealsOptions {
136
+ /** Minimum deal score to filter by */
137
+ minScore?: number;
138
+ /** Maximum number of deals to return (default: 50, max: 100) */
139
+ limit?: number;
140
+ }
141
+ /** Job status filter options */
142
+ export type JobStatusFilter = "pending" | "active" | "completed" | "failed" | "delayed" | "paused";
143
+ /** Job type filter options */
144
+ export type JobTypeFilter = "scrape" | "crawl" | "dork" | "extract";
145
+ /** Sort order */
146
+ export type SortOrder = "asc" | "desc";
147
+ /** Options for listing jobs */
148
+ export interface ListJobsOptions {
149
+ /** Page number (default: 1) */
150
+ page?: number;
151
+ /** Items per page (default: 20, max: 100) */
152
+ limit?: number;
153
+ /** Filter by job status */
154
+ status?: JobStatusFilter;
155
+ /** Filter by job type */
156
+ type?: JobTypeFilter;
157
+ /** Sort field */
158
+ sortBy?: "created_at" | "updated_at" | "status";
159
+ /** Sort order */
160
+ sortOrder?: SortOrder;
161
+ /** Filter from date (ISO string) */
162
+ fromDate?: string;
163
+ /** Filter to date (ISO string) */
164
+ toDate?: string;
165
+ }
166
+ /** Options for listing deals */
167
+ export interface ListDealsOptions {
168
+ /** Page number (default: 1) */
169
+ page?: number;
170
+ /** Items per page (default: 20, max: 100) */
171
+ limit?: number;
172
+ /** Minimum deal score */
173
+ minScore?: number;
174
+ /** Maximum price */
175
+ maxPrice?: number;
176
+ /** Filter by category */
177
+ category?: string;
178
+ /** Filter by merchant name */
179
+ merchant?: string;
180
+ /** Filter by sync status to DealUp */
181
+ synced?: boolean;
182
+ /** Sort field */
183
+ sortBy?: "deal_score" | "current_price" | "discount_percent" | "created_at";
184
+ /** Sort order */
185
+ sortOrder?: SortOrder;
186
+ }
187
+ /** Export format options */
188
+ export type ExportFormat = "json" | "csv";
189
+ /** Options for exporting jobs */
190
+ export interface ExportJobsOptions {
191
+ /** Export format (default: json) */
192
+ format?: ExportFormat;
193
+ /** Filter by job status */
194
+ status?: JobStatusFilter;
195
+ /** Filter by job type */
196
+ type?: JobTypeFilter;
197
+ /** Filter from date (ISO string) */
198
+ fromDate?: string;
199
+ /** Filter to date (ISO string) */
200
+ toDate?: string;
201
+ }
202
+ /** Options for exporting deals */
203
+ export interface ExportDealsOptions {
204
+ /** Export format (default: json) */
205
+ format?: ExportFormat;
206
+ /** Minimum deal score */
207
+ minScore?: number;
208
+ /** Maximum price */
209
+ maxPrice?: number;
210
+ /** Filter by category */
211
+ category?: string;
212
+ /** Include raw signals in export */
213
+ includeRawSignals?: boolean;
214
+ }
215
+ /** Webhook event types */
216
+ export type WebhookEvent = "deal.found" | "deal.synced" | "crawl.completed" | "crawl.failed";
217
+ /** Options for creating a webhook */
218
+ export interface CreateWebhookOptions {
219
+ /** Event type to subscribe to */
220
+ event: WebhookEvent;
221
+ /** URL to receive webhook notifications */
222
+ url: string;
223
+ /** Secret for signature verification */
224
+ secret?: string;
225
+ /** Only notify for deals above this score (default: 70) */
226
+ minDealScore?: number;
227
+ /** Filter by product categories */
228
+ categories?: string[];
229
+ /** Active status (default: true) */
230
+ active?: boolean;
231
+ }
232
+ /** Options for updating a webhook */
233
+ export interface UpdateWebhookOptions {
234
+ /** New URL */
235
+ url?: string;
236
+ /** New secret */
237
+ secret?: string;
238
+ /** New minimum deal score */
239
+ minDealScore?: number;
240
+ /** New categories filter */
241
+ categories?: string[];
242
+ /** Active status */
243
+ active?: boolean;
244
+ }
245
+ /** API key scope */
246
+ export type ApiKeyScope = "scrape:read" | "scrape:write" | "crawl:read" | "crawl:write" | "dork:read" | "dork:write" | "data:read" | "data:write" | "webhooks:manage" | "keys:manage" | "account:read" | "account:write";
247
+ /** Options for creating an API key */
248
+ export interface CreateApiKeyOptions {
249
+ /** Key name/description */
250
+ name: string;
251
+ /** Scopes for the key */
252
+ scopes?: ApiKeyScope[];
253
+ /** Days until expiration (optional) */
254
+ expiresInDays?: number;
255
+ /** IP allowlist (optional) */
256
+ ipAllowlist?: string[];
257
+ }
258
+ /** Options for rotating an API key */
259
+ export interface RotateApiKeyOptions {
260
+ /** New name for the rotated key */
261
+ newName?: string;
262
+ }
263
+ /** Options for listing API keys */
264
+ export interface ListApiKeysOptions {
265
+ /** Include revoked keys */
266
+ includeRevoked?: boolean;
267
+ }
268
+ /** Options for getting API key stats */
269
+ export interface GetApiKeyStatsOptions {
270
+ /** Number of days to get stats for (default: 30) */
271
+ days?: number;
272
+ }
273
+ /** Product category */
274
+ export type ProductCategory = "courses" | "software" | "physical" | "services" | "other";
275
+ /** Options for updating preferences */
276
+ export interface UpdatePreferencesOptions {
277
+ /** Preferred product categories */
278
+ preferredCategories?: ProductCategory[];
279
+ /** Minimum deal score for notifications */
280
+ minDealScore?: number;
281
+ /** Auto-sync deals to DealUp */
282
+ autoSync?: boolean;
283
+ /** Enable webhook notifications */
284
+ webhookEnabled?: boolean;
285
+ }
286
+ //# sourceMappingURL=options.d.ts.map