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.
- package/LICENSE +21 -0
- package/README.md +366 -0
- package/dist/cjs/cache.js +125 -0
- package/dist/cjs/cache.js.map +1 -0
- package/dist/cjs/client.js +304 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/errors.js +85 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.js +44 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/options.js +659 -0
- package/dist/cjs/options.js.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/webhooks.js +152 -0
- package/dist/cjs/webhooks.js.map +1 -0
- package/dist/esm/cache.js +121 -0
- package/dist/esm/cache.js.map +1 -0
- package/dist/esm/client.js +300 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/errors.js +81 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/index.js +34 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/options.js +655 -0
- package/dist/esm/options.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/webhooks.js +147 -0
- package/dist/esm/webhooks.js.map +1 -0
- package/dist/types/cache.d.ts +96 -0
- package/dist/types/cache.d.ts.map +1 -0
- package/dist/types/client.d.ts +147 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/errors.d.ts +51 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/index.d.ts +35 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/options.d.ts +265 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/types.d.ts +249 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/webhooks.d.ts +60 -0
- package/dist/types/webhooks.d.ts.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapping of error codes to their retryable status
|
|
3
|
+
*/
|
|
4
|
+
const RETRYABLE_ERRORS = new Set([
|
|
5
|
+
'rate_limited',
|
|
6
|
+
'timeout',
|
|
7
|
+
'render_failed',
|
|
8
|
+
'internal_error',
|
|
9
|
+
]);
|
|
10
|
+
/**
|
|
11
|
+
* Custom error class for RenderScreenshot API errors
|
|
12
|
+
*/
|
|
13
|
+
export class RenderScreenshotError extends Error {
|
|
14
|
+
/** HTTP status code */
|
|
15
|
+
httpStatus;
|
|
16
|
+
/** Error code from the API */
|
|
17
|
+
code;
|
|
18
|
+
/** Whether this error can be retried */
|
|
19
|
+
retryable;
|
|
20
|
+
/** Seconds to wait before retrying (for rate limits) */
|
|
21
|
+
retryAfter;
|
|
22
|
+
constructor(httpStatus, code, message, retryAfter) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.name = 'RenderScreenshotError';
|
|
25
|
+
this.httpStatus = httpStatus;
|
|
26
|
+
this.code = code;
|
|
27
|
+
this.retryable = RETRYABLE_ERRORS.has(code);
|
|
28
|
+
if (retryAfter !== undefined) {
|
|
29
|
+
this.retryAfter = retryAfter;
|
|
30
|
+
}
|
|
31
|
+
// Maintains proper stack trace for where error was thrown (V8 only)
|
|
32
|
+
if (Error.captureStackTrace !== undefined) {
|
|
33
|
+
Error.captureStackTrace(this, RenderScreenshotError);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Create an error from an API response
|
|
38
|
+
*/
|
|
39
|
+
static fromResponse(httpStatus, body, retryAfter) {
|
|
40
|
+
const code = (body.code ?? 'internal_error');
|
|
41
|
+
const message = body.message ?? body.error ?? 'An unknown error occurred';
|
|
42
|
+
return new RenderScreenshotError(httpStatus, code, message, retryAfter);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create an invalid URL error
|
|
46
|
+
*/
|
|
47
|
+
static invalidUrl(url) {
|
|
48
|
+
return new RenderScreenshotError(400, 'invalid_url', `Invalid URL provided: ${url}`);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create an invalid request error
|
|
52
|
+
*/
|
|
53
|
+
static invalidRequest(message) {
|
|
54
|
+
return new RenderScreenshotError(400, 'invalid_request', message);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create an unauthorized error
|
|
58
|
+
*/
|
|
59
|
+
static unauthorized() {
|
|
60
|
+
return new RenderScreenshotError(401, 'unauthorized', 'Invalid or missing API key');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create a rate limited error
|
|
64
|
+
*/
|
|
65
|
+
static rateLimited(retryAfter) {
|
|
66
|
+
return new RenderScreenshotError(429, 'rate_limited', 'Rate limit exceeded. Please wait before making more requests.', retryAfter);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create a timeout error
|
|
70
|
+
*/
|
|
71
|
+
static timeout() {
|
|
72
|
+
return new RenderScreenshotError(408, 'timeout', 'Screenshot request timed out');
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create an internal error
|
|
76
|
+
*/
|
|
77
|
+
static internal(message) {
|
|
78
|
+
return new RenderScreenshotError(500, 'internal_error', message ?? 'An internal error occurred');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAY;IAC1C,cAAc;IACd,SAAS;IACT,eAAe;IACf,gBAAgB;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,uBAAuB;IACd,UAAU,CAAS;IAE5B,8BAA8B;IACrB,IAAI,CAAY;IAEzB,wCAAwC;IAC/B,SAAS,CAAU;IAE5B,wDAAwD;IAC/C,UAAU,CAAU;IAE7B,YAAY,UAAkB,EAAE,IAAe,EAAE,OAAe,EAAE,UAAmB;QACnF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,oEAAoE;QACpE,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,UAAkB,EAClB,IAAyD,EACzD,UAAmB;QAEnB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAc,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,2BAA2B,CAAC;QAC1E,OAAO,IAAI,qBAAqB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,GAAW;QAC3B,OAAO,IAAI,qBAAqB,CAAC,GAAG,EAAE,aAAa,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAe;QACnC,OAAO,IAAI,qBAAqB,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,4BAA4B,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,UAAmB;QACpC,OAAO,IAAI,qBAAqB,CAC9B,GAAG,EACH,cAAc,EACd,+DAA+D,EAC/D,UAAU,CACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,qBAAqB,CAAC,GAAG,EAAE,SAAS,EAAE,8BAA8B,CAAC,CAAC;IACnF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAgB;QAC9B,OAAO,IAAI,qBAAqB,CAC9B,GAAG,EACH,gBAAgB,EAChB,OAAO,IAAI,4BAA4B,CACxC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RenderScreenshot Node.js SDK
|
|
3
|
+
*
|
|
4
|
+
* Official Node.js/TypeScript SDK for the RenderScreenshot API.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module renderscreenshot
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* Basic usage:
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { Client, TakeOptions } from 'renderscreenshot';
|
|
13
|
+
*
|
|
14
|
+
* const client = new Client('rs_live_xxxxx');
|
|
15
|
+
*
|
|
16
|
+
* // Take a screenshot
|
|
17
|
+
* const image = await client.take(
|
|
18
|
+
* TakeOptions.url('https://example.com').preset('og_card')
|
|
19
|
+
* );
|
|
20
|
+
*
|
|
21
|
+
* // Generate a signed URL for embedding
|
|
22
|
+
* const url = client.generateUrl(
|
|
23
|
+
* TakeOptions.url('https://example.com').preset('og_card'),
|
|
24
|
+
* new Date(Date.now() + 24 * 60 * 60 * 1000)
|
|
25
|
+
* );
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
// Main exports
|
|
29
|
+
export { Client } from './client.js';
|
|
30
|
+
export { TakeOptions } from './options.js';
|
|
31
|
+
export { RenderScreenshotError } from './errors.js';
|
|
32
|
+
export { CacheManager } from './cache.js';
|
|
33
|
+
export { verifyWebhook, parseWebhook, extractWebhookHeaders } from './webhooks.js';
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,eAAe;AACf,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|