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,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"}