renderscreenshot 1.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 (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +366 -0
  3. package/dist/cjs/cache.js +125 -0
  4. package/dist/cjs/cache.js.map +1 -0
  5. package/dist/cjs/client.js +304 -0
  6. package/dist/cjs/client.js.map +1 -0
  7. package/dist/cjs/errors.js +85 -0
  8. package/dist/cjs/errors.js.map +1 -0
  9. package/dist/cjs/index.js +44 -0
  10. package/dist/cjs/index.js.map +1 -0
  11. package/dist/cjs/options.js +659 -0
  12. package/dist/cjs/options.js.map +1 -0
  13. package/dist/cjs/types.js +3 -0
  14. package/dist/cjs/types.js.map +1 -0
  15. package/dist/cjs/webhooks.js +152 -0
  16. package/dist/cjs/webhooks.js.map +1 -0
  17. package/dist/esm/cache.js +121 -0
  18. package/dist/esm/cache.js.map +1 -0
  19. package/dist/esm/client.js +300 -0
  20. package/dist/esm/client.js.map +1 -0
  21. package/dist/esm/errors.js +81 -0
  22. package/dist/esm/errors.js.map +1 -0
  23. package/dist/esm/index.js +34 -0
  24. package/dist/esm/index.js.map +1 -0
  25. package/dist/esm/options.js +655 -0
  26. package/dist/esm/options.js.map +1 -0
  27. package/dist/esm/types.js +2 -0
  28. package/dist/esm/types.js.map +1 -0
  29. package/dist/esm/webhooks.js +147 -0
  30. package/dist/esm/webhooks.js.map +1 -0
  31. package/dist/types/cache.d.ts +96 -0
  32. package/dist/types/cache.d.ts.map +1 -0
  33. package/dist/types/client.d.ts +147 -0
  34. package/dist/types/client.d.ts.map +1 -0
  35. package/dist/types/errors.d.ts +51 -0
  36. package/dist/types/errors.d.ts.map +1 -0
  37. package/dist/types/index.d.ts +35 -0
  38. package/dist/types/index.d.ts.map +1 -0
  39. package/dist/types/options.d.ts +265 -0
  40. package/dist/types/options.d.ts.map +1 -0
  41. package/dist/types/types.d.ts +249 -0
  42. package/dist/types/types.d.ts.map +1 -0
  43. package/dist/types/webhooks.d.ts +60 -0
  44. package/dist/types/webhooks.d.ts.map +1 -0
  45. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyWebhook = verifyWebhook;
4
+ exports.parseWebhook = parseWebhook;
5
+ exports.extractWebhookHeaders = extractWebhookHeaders;
6
+ const node_crypto_1 = require("node:crypto");
7
+ /**
8
+ * Verify a webhook signature
9
+ *
10
+ * Webhooks are signed using HMAC-SHA256 with the format:
11
+ * `sha256=hmac(secret, "${timestamp}.${payload}")`
12
+ *
13
+ * @param payload - The raw request body as a string
14
+ * @param signature - The X-Webhook-Signature header value
15
+ * @param timestamp - The X-Webhook-Timestamp header value
16
+ * @param secret - Your webhook signing secret from the dashboard
17
+ * @returns true if the signature is valid
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { verifyWebhook } from 'renderscreenshot';
22
+ *
23
+ * // In your webhook handler
24
+ * const signature = req.headers['x-webhook-signature'];
25
+ * const timestamp = req.headers['x-webhook-timestamp'];
26
+ * const payload = JSON.stringify(req.body);
27
+ *
28
+ * if (verifyWebhook(payload, signature, timestamp, process.env.WEBHOOK_SECRET)) {
29
+ * // Process webhook
30
+ * } else {
31
+ * res.status(401).send('Invalid signature');
32
+ * }
33
+ * ```
34
+ */
35
+ function verifyWebhook(payload, signature, timestamp, secret) {
36
+ // Validate inputs
37
+ if (payload === '' || signature === '' || timestamp === '' || secret === '') {
38
+ return false;
39
+ }
40
+ // Check timestamp to prevent replay attacks (5 minute tolerance)
41
+ const timestampNum = parseInt(timestamp, 10);
42
+ if (isNaN(timestampNum)) {
43
+ return false;
44
+ }
45
+ const now = Math.floor(Date.now() / 1000);
46
+ const tolerance = 5 * 60; // 5 minutes
47
+ if (Math.abs(now - timestampNum) > tolerance) {
48
+ return false;
49
+ }
50
+ // Compute expected signature
51
+ const message = `${timestamp}.${payload}`;
52
+ const expected = `sha256=${(0, node_crypto_1.createHmac)('sha256', secret).update(message).digest('hex')}`;
53
+ // Use timing-safe comparison to prevent timing attacks
54
+ try {
55
+ return (0, node_crypto_1.timingSafeEqual)(Buffer.from(expected), Buffer.from(signature));
56
+ }
57
+ catch {
58
+ // Buffers have different lengths
59
+ return false;
60
+ }
61
+ }
62
+ /**
63
+ * Parse a webhook payload into a typed event object
64
+ *
65
+ * @param payload - The raw request body (string or parsed object)
66
+ * @returns Typed webhook event
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * import { parseWebhook, verifyWebhook } from 'renderscreenshot';
71
+ *
72
+ * // After verifying signature
73
+ * const event = parseWebhook(req.body);
74
+ *
75
+ * if (event.type === 'screenshot.completed') {
76
+ * console.log(`Screenshot ready: ${event.data.response?.url}`);
77
+ * }
78
+ * ```
79
+ */
80
+ function parseWebhook(payload) {
81
+ const raw = typeof payload === 'string' ? JSON.parse(payload) : payload;
82
+ const data = raw;
83
+ const event = {
84
+ id: data.id,
85
+ type: data.event,
86
+ timestamp: new Date(data.timestamp),
87
+ data: {},
88
+ };
89
+ // Parse based on event type
90
+ switch (data.event) {
91
+ case 'screenshot.completed': {
92
+ const eventData = {
93
+ response: {
94
+ url: data.data.screenshot_url ?? '',
95
+ width: data.data.width ?? 0,
96
+ height: data.data.height ?? 0,
97
+ format: (data.data.format ?? 'png'),
98
+ size: data.data.size ?? 0,
99
+ cached: data.data.cached ?? false,
100
+ },
101
+ };
102
+ if (data.data.url !== undefined) {
103
+ eventData.url = data.data.url;
104
+ }
105
+ event.data = eventData;
106
+ break;
107
+ }
108
+ case 'screenshot.failed': {
109
+ const eventData = {
110
+ error: {
111
+ code: 'render_failed',
112
+ message: data.data.error ?? 'Unknown error',
113
+ },
114
+ };
115
+ if (data.data.url !== undefined) {
116
+ eventData.url = data.data.url;
117
+ }
118
+ event.data = eventData;
119
+ break;
120
+ }
121
+ case 'batch.completed':
122
+ case 'batch.failed':
123
+ event.data = {
124
+ batchId: data.id,
125
+ };
126
+ break;
127
+ }
128
+ return event;
129
+ }
130
+ /**
131
+ * Extract webhook headers from a request-like object
132
+ *
133
+ * @param headers - Headers object (works with Express, Node http, etc.)
134
+ * @returns Object with signature and timestamp
135
+ */
136
+ function extractWebhookHeaders(headers) {
137
+ const getHeader = (name) => {
138
+ if (headers instanceof Headers) {
139
+ return headers.get(name) ?? '';
140
+ }
141
+ const value = headers[name] ?? headers[name.toLowerCase()];
142
+ if (Array.isArray(value)) {
143
+ return value[0] ?? '';
144
+ }
145
+ return value ?? '';
146
+ };
147
+ return {
148
+ signature: getHeader('X-Webhook-Signature'),
149
+ timestamp: getHeader('X-Webhook-Timestamp'),
150
+ };
151
+ }
152
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/webhooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Cache management methods for RenderScreenshot
3
+ */
4
+ export class CacheManager {
5
+ client;
6
+ constructor(client) {
7
+ this.client = client;
8
+ }
9
+ /**
10
+ * Get a cached screenshot by its cache key
11
+ *
12
+ * @param key - The cache key returned in X-Cache-Key header
13
+ * @returns Buffer containing the screenshot, or null if not found
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const image = await client.cache.get('cache_xyz789');
18
+ * if (image) {
19
+ * await fs.writeFile('cached.png', image);
20
+ * }
21
+ * ```
22
+ */
23
+ async get(key) {
24
+ try {
25
+ return await this.client.request('GET', `/cache/${key}`, {
26
+ responseType: 'buffer',
27
+ });
28
+ }
29
+ catch (error) {
30
+ // Return null for 404 errors
31
+ if (error !== null &&
32
+ typeof error === 'object' &&
33
+ 'httpStatus' in error &&
34
+ error.httpStatus === 404) {
35
+ return null;
36
+ }
37
+ throw error;
38
+ }
39
+ }
40
+ /**
41
+ * Delete a single cache entry
42
+ *
43
+ * @param key - The cache key to delete
44
+ * @returns true if deleted, false if not found
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const deleted = await client.cache.delete('cache_xyz789');
49
+ * ```
50
+ */
51
+ async delete(key) {
52
+ const response = await this.client.request('DELETE', `/cache/${key}`);
53
+ return response.deleted;
54
+ }
55
+ /**
56
+ * Bulk purge cache entries by keys
57
+ *
58
+ * @param keys - Array of cache keys to purge
59
+ * @returns Purge result with count and keys
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const result = await client.cache.purge(['cache_abc', 'cache_def']);
64
+ * console.log(`Purged ${result.purged} entries`);
65
+ * ```
66
+ */
67
+ async purge(keys) {
68
+ return this.client.request('POST', '/cache/purge', {
69
+ body: { keys },
70
+ });
71
+ }
72
+ /**
73
+ * Purge cache entries matching a URL pattern
74
+ *
75
+ * @param pattern - Glob pattern to match source URLs (e.g., "https://mysite.com/*")
76
+ * @returns Purge result with count
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const result = await client.cache.purgeUrl('https://mysite.com/blog/*');
81
+ * ```
82
+ */
83
+ async purgeUrl(pattern) {
84
+ return this.client.request('POST', '/cache/purge', {
85
+ body: { url: pattern },
86
+ });
87
+ }
88
+ /**
89
+ * Purge cache entries created before a specific date
90
+ *
91
+ * @param date - Purge entries created before this date
92
+ * @returns Purge result with count
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * const result = await client.cache.purgeBefore(new Date('2024-01-01'));
97
+ * ```
98
+ */
99
+ async purgeBefore(date) {
100
+ return this.client.request('POST', '/cache/purge', {
101
+ body: { before: date.toISOString() },
102
+ });
103
+ }
104
+ /**
105
+ * Purge cache entries matching a storage path pattern
106
+ *
107
+ * @param pattern - Glob pattern for storage paths (e.g., "screenshots/2024/01/*")
108
+ * @returns Purge result with count
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * const result = await client.cache.purgePattern('screenshots/2024/*');
113
+ * ```
114
+ */
115
+ async purgePattern(pattern) {
116
+ return this.client.request('POST', '/cache/purge', {
117
+ body: { pattern },
118
+ });
119
+ }
120
+ }
121
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,OAAO,YAAY;IACN,MAAM,CAAkB;IAEzC,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAS,KAAK,EAAE,UAAU,GAAG,EAAE,EAAE;gBAC/D,YAAY,EAAE,QAAQ;aACvB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6BAA6B;YAC7B,IACE,KAAK,KAAK,IAAI;gBACd,OAAO,KAAK,KAAK,QAAQ;gBACzB,YAAY,IAAI,KAAK;gBACrB,KAAK,CAAC,UAAU,KAAK,GAAG,EACxB,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QAItB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAiB,QAAQ,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC;QACtF,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,KAAK,CAAC,IAAc;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAc,MAAM,EAAE,cAAc,EAAE;YAC9D,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAc,MAAM,EAAE,cAAc,EAAE;YAC9D,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,WAAW,CAAC,IAAU;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAc,MAAM,EAAE,cAAc,EAAE;YAC9D,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAc,MAAM,EAAE,cAAc,EAAE;YAC9D,IAAI,EAAE,EAAE,OAAO,EAAE;SAClB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,300 @@
1
+ import { createHmac } from 'node:crypto';
2
+ import { RenderScreenshotError } from './errors.js';
3
+ import { TakeOptions } from './options.js';
4
+ import { CacheManager } from './cache.js';
5
+ const DEFAULT_BASE_URL = 'https://api.renderscreenshot.com';
6
+ const DEFAULT_TIMEOUT = 30000;
7
+ const API_VERSION = 'v1';
8
+ /**
9
+ * Parse a response body from the API
10
+ */
11
+ async function parseResponseBody(response) {
12
+ const contentType = response.headers.get('content-type') ?? '';
13
+ if (contentType.includes('application/json')) {
14
+ return response.json();
15
+ }
16
+ return response.text();
17
+ }
18
+ /**
19
+ * Handle API errors and convert to RenderScreenshotError
20
+ */
21
+ async function handleApiError(response) {
22
+ const retryAfterHeader = response.headers.get('retry-after');
23
+ const retryAfter = retryAfterHeader !== null ? parseInt(retryAfterHeader, 10) : undefined;
24
+ const body = await parseResponseBody(response);
25
+ const errorBody = typeof body === 'object' && body !== null ? body : {};
26
+ const errorParams = {};
27
+ if (typeof errorBody['code'] === 'string')
28
+ errorParams.code = errorBody['code'];
29
+ if (typeof errorBody['message'] === 'string')
30
+ errorParams.message = errorBody['message'];
31
+ if (typeof errorBody['error'] === 'string')
32
+ errorParams.error = errorBody['error'];
33
+ throw RenderScreenshotError.fromResponse(response.status, errorParams, retryAfter);
34
+ }
35
+ /**
36
+ * RenderScreenshot API client
37
+ */
38
+ export class Client {
39
+ apiKey;
40
+ baseUrl;
41
+ timeout;
42
+ /** Cache management methods */
43
+ cache;
44
+ /**
45
+ * Create a new RenderScreenshot client
46
+ * @param apiKey - Your API key (rs_live_* or rs_test_*)
47
+ * @param options - Optional client configuration
48
+ */
49
+ constructor(apiKey, options = {}) {
50
+ if (apiKey === '' || apiKey === undefined) {
51
+ throw new Error('API key is required');
52
+ }
53
+ this.apiKey = apiKey;
54
+ this.baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
55
+ this.timeout = options.timeout ?? DEFAULT_TIMEOUT;
56
+ this.cache = new CacheManager(this);
57
+ }
58
+ /**
59
+ * Get the API key for internal use
60
+ * @internal
61
+ */
62
+ getApiKey() {
63
+ return this.apiKey;
64
+ }
65
+ /**
66
+ * Get the base URL for internal use
67
+ * @internal
68
+ */
69
+ getBaseUrl() {
70
+ return this.baseUrl;
71
+ }
72
+ /**
73
+ * Get the timeout for internal use
74
+ * @internal
75
+ */
76
+ getTimeout() {
77
+ return this.timeout;
78
+ }
79
+ /**
80
+ * Make an authenticated request to the API
81
+ * @internal
82
+ */
83
+ async request(method, path, options = {}) {
84
+ const url = `${this.baseUrl}/${API_VERSION}${path}`;
85
+ const controller = new AbortController();
86
+ const timeoutId = setTimeout(() => {
87
+ controller.abort();
88
+ }, this.timeout);
89
+ try {
90
+ const headers = {
91
+ Authorization: `Bearer ${this.apiKey}`,
92
+ 'User-Agent': 'renderscreenshot-node/1.0.0',
93
+ ...options.headers,
94
+ };
95
+ if (options.body !== undefined) {
96
+ headers['Content-Type'] = 'application/json';
97
+ }
98
+ const fetchOptions = {
99
+ method,
100
+ headers,
101
+ signal: controller.signal,
102
+ };
103
+ if (options.body !== undefined) {
104
+ fetchOptions.body = JSON.stringify(options.body);
105
+ }
106
+ const response = await fetch(url, fetchOptions);
107
+ if (!response.ok) {
108
+ await handleApiError(response);
109
+ }
110
+ if (options.responseType === 'buffer') {
111
+ const arrayBuffer = await response.arrayBuffer();
112
+ return Buffer.from(arrayBuffer);
113
+ }
114
+ return (await response.json());
115
+ }
116
+ catch (error) {
117
+ if (error instanceof RenderScreenshotError) {
118
+ throw error;
119
+ }
120
+ if (error instanceof Error && error.name === 'AbortError') {
121
+ throw RenderScreenshotError.timeout();
122
+ }
123
+ throw RenderScreenshotError.internal(error instanceof Error ? error.message : 'Unknown error');
124
+ }
125
+ finally {
126
+ clearTimeout(timeoutId);
127
+ }
128
+ }
129
+ /**
130
+ * Generate a signed URL for embedding screenshots
131
+ *
132
+ * @param options - Screenshot options (TakeOptions instance or config object)
133
+ * @param expiresAt - Expiration time for the signed URL
134
+ * @returns Signed URL string
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const url = client.generateUrl(
139
+ * TakeOptions.url('https://example.com').preset('og_card'),
140
+ * new Date(Date.now() + 24 * 60 * 60 * 1000) // 24 hours
141
+ * );
142
+ * ```
143
+ */
144
+ generateUrl(options, expiresAt) {
145
+ const config = options instanceof TakeOptions ? options.toConfig() : options;
146
+ // Extract the public key from api key (rs_pub_xxx or use the full key for signing)
147
+ // For signed URLs, we need a secret key (rs_secret_xxx) and a public key (rs_pub_xxx)
148
+ // If user provides rs_live_xxx, we'll use it directly
149
+ // Build query params from config
150
+ const params = {};
151
+ if (config.url !== undefined)
152
+ params['url'] = config.url;
153
+ if (config.width !== undefined)
154
+ params['width'] = String(config.width);
155
+ if (config.height !== undefined)
156
+ params['height'] = String(config.height);
157
+ if (config.scale !== undefined)
158
+ params['scale'] = String(config.scale);
159
+ if (config.mobile !== undefined)
160
+ params['mobile'] = String(config.mobile);
161
+ if (config.fullPage !== undefined)
162
+ params['full_page'] = String(config.fullPage);
163
+ if (config.element !== undefined)
164
+ params['element'] = config.element;
165
+ if (config.format !== undefined)
166
+ params['format'] = config.format;
167
+ if (config.quality !== undefined)
168
+ params['quality'] = String(config.quality);
169
+ if (config.preset !== undefined)
170
+ params['preset'] = config.preset;
171
+ if (config.device !== undefined)
172
+ params['device'] = config.device;
173
+ if (config.waitFor !== undefined)
174
+ params['wait_for'] = config.waitFor;
175
+ if (config.delay !== undefined)
176
+ params['delay'] = String(config.delay);
177
+ if (config.blockAds !== undefined)
178
+ params['block_ads'] = String(config.blockAds);
179
+ if (config.blockTrackers !== undefined)
180
+ params['block_trackers'] = String(config.blockTrackers);
181
+ if (config.blockCookieBanners !== undefined)
182
+ params['block_cookie_banners'] = String(config.blockCookieBanners);
183
+ if (config.blockChatWidgets !== undefined)
184
+ params['block_chat_widgets'] = String(config.blockChatWidgets);
185
+ if (config.darkMode !== undefined)
186
+ params['dark_mode'] = String(config.darkMode);
187
+ if (config.cacheTtl !== undefined)
188
+ params['cache_ttl'] = String(config.cacheTtl);
189
+ // Sort params alphabetically and create canonical string
190
+ const sortedKeys = Object.keys(params).sort();
191
+ const canonical = sortedKeys.map((k) => `${k}=${params[k]}`).join('&');
192
+ // Add expiration
193
+ const expires = Math.floor(expiresAt.getTime() / 1000);
194
+ const message = `${canonical}&expires=${expires}`;
195
+ // Generate signature
196
+ const signature = createHmac('sha256', this.apiKey).update(message).digest('hex');
197
+ return `${this.baseUrl}/${API_VERSION}/screenshot?${message}&signature=${signature}`;
198
+ }
199
+ /**
200
+ * Take a screenshot and return the binary data
201
+ *
202
+ * @param options - Screenshot options (TakeOptions instance or config object)
203
+ * @returns Buffer containing the screenshot binary data
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * const image = await client.take(
208
+ * TakeOptions.url('https://example.com').preset('og_card')
209
+ * );
210
+ * await fs.writeFile('screenshot.png', image);
211
+ * ```
212
+ */
213
+ async take(options) {
214
+ const params = options instanceof TakeOptions ? options.toParams() : TakeOptions.from(options).toParams();
215
+ return this.request('POST', '/screenshot', {
216
+ body: params,
217
+ responseType: 'buffer',
218
+ });
219
+ }
220
+ /**
221
+ * Take a screenshot and return JSON metadata with URLs
222
+ *
223
+ * @param options - Screenshot options (TakeOptions instance or config object)
224
+ * @returns Screenshot response with metadata and URLs
225
+ *
226
+ * @example
227
+ * ```typescript
228
+ * const response = await client.takeJson(
229
+ * TakeOptions.url('https://example.com').preset('og_card')
230
+ * );
231
+ * console.log(response.url); // CDN URL to the screenshot
232
+ * ```
233
+ */
234
+ async takeJson(options) {
235
+ const params = options instanceof TakeOptions ? options.toParams() : TakeOptions.from(options).toParams();
236
+ return this.request('POST', '/screenshot', {
237
+ body: { ...params, response_type: 'json' },
238
+ });
239
+ }
240
+ async batch(urlsOrRequests, options) {
241
+ // Type guard to check if it's an array of strings (URLs)
242
+ const isUrlArray = (arr) => arr.every((item) => typeof item === 'string');
243
+ let body;
244
+ if (isUrlArray(urlsOrRequests)) {
245
+ const opts = options instanceof TakeOptions
246
+ ? options.toParams()
247
+ : options !== undefined
248
+ ? TakeOptions.from(options).toParams()
249
+ : {};
250
+ body = {
251
+ urls: urlsOrRequests,
252
+ options: opts,
253
+ };
254
+ }
255
+ else {
256
+ body = {
257
+ requests: urlsOrRequests.map((req) => ({
258
+ url: req.url,
259
+ ...TakeOptions.from(req.options ?? {}).toParams(),
260
+ })),
261
+ };
262
+ }
263
+ return this.request('POST', '/batch', { body });
264
+ }
265
+ /**
266
+ * Get the status of a batch job
267
+ *
268
+ * @param batchId - The batch job ID
269
+ * @returns Batch status and results
270
+ */
271
+ async getBatch(batchId) {
272
+ return this.request('GET', `/batch/${batchId}`);
273
+ }
274
+ /**
275
+ * List all available presets
276
+ *
277
+ * @returns Array of preset configurations
278
+ */
279
+ async presets() {
280
+ return this.request('GET', '/presets');
281
+ }
282
+ /**
283
+ * Get a single preset by ID
284
+ *
285
+ * @param id - Preset identifier
286
+ * @returns Preset configuration
287
+ */
288
+ async preset(id) {
289
+ return this.request('GET', `/presets/${id}`);
290
+ }
291
+ /**
292
+ * List all available device presets
293
+ *
294
+ * @returns Array of device configurations
295
+ */
296
+ async devices() {
297
+ return this.request('GET', '/devices');
298
+ }
299
+ }
300
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAC5D,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,QAAkB;IACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,QAAkB;IAC9C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1F,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,SAAS,GACb,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAE,IAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErF,MAAM,WAAW,GAAwD,EAAE,CAAC;IAC5E,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,WAAW,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAChF,IAAI,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,QAAQ;QAAE,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACzF,IAAI,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,QAAQ;QAAE,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEnF,MAAM,qBAAqB,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,MAAM;IACA,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,OAAO,CAAS;IAEjC,+BAA+B;IACtB,KAAK,CAAe;IAE7B;;;;OAIG;IACH,YAAY,MAAc,EAAE,UAAyB,EAAE;QACrD,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CACX,MAAc,EACd,IAAY,EACZ,UAII,EAAE;QAEN,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,GAAG,IAAI,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjB,IAAI,CAAC;YACH,MAAM,OAAO,GAA2B;gBACtC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;gBACtC,YAAY,EAAE,6BAA6B;gBAC3C,GAAG,OAAO,CAAC,OAAO;aACnB,CAAC;YAEF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC/C,CAAC;YAED,MAAM,YAAY,GAAgB;gBAChC,MAAM;gBACN,OAAO;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC;YAEF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAEhD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;YAED,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACjD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAM,CAAC;YACvC,CAAC;YAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;gBAC3C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1D,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC;YACxC,CAAC;YACD,MAAM,qBAAqB,CAAC,QAAQ,CAClC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CACzD,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,OAAwC,EAAE,SAAe;QACnE,MAAM,MAAM,GAAG,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAE7E,mFAAmF;QACnF,sFAAsF;QACtF,sDAAsD;QAEtD,iCAAiC;QACjC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;QACzD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjF,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACrE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAClE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAClE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAClE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACtE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjF,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;YAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAChG,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS;YACzC,MAAM,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACrE,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS;YACvC,MAAM,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjF,yDAAyD;QACzD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvE,iBAAiB;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,GAAG,SAAS,YAAY,OAAO,EAAE,CAAC;QAElD,qBAAqB;QACrB,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAElF,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,eAAe,OAAO,cAAc,SAAS,EAAE,CAAC;IACvF,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,IAAI,CAAC,OAAwC;QACjD,MAAM,MAAM,GACV,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7F,OAAO,IAAI,CAAC,OAAO,CAAS,MAAM,EAAE,aAAa,EAAE;YACjD,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAwC;QACrD,MAAM,MAAM,GACV,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7F,OAAO,IAAI,CAAC,OAAO,CAAqB,MAAM,EAAE,aAAa,EAAE;YAC7D,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAmCD,KAAK,CAAC,KAAK,CACT,cAA6C,EAC7C,OAAyC;QAEzC,yDAAyD;QACzD,MAAM,UAAU,GAAG,CAAC,GAAc,EAAmB,EAAE,CACrD,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;QAEhD,IAAI,IAA6B,CAAC;QAElC,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GACR,OAAO,YAAY,WAAW;gBAC5B,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACpB,CAAC,CAAC,OAAO,KAAK,SAAS;oBACrB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;oBACtC,CAAC,CAAC,EAAE,CAAC;YACX,IAAI,GAAG;gBACL,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,GAAG;gBACL,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACrC,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;iBAClD,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAgB,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAgB,KAAK,EAAE,UAAU,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,OAAO,CAAe,KAAK,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,OAAO,CAAa,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,OAAO,CAAe,KAAK,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;CACF"}