n8n-nodes-snaprender 0.1.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/README.md +62 -0
- package/dist/credentials/SnapRenderApi.credentials.d.ts +9 -0
- package/dist/credentials/SnapRenderApi.credentials.js +38 -0
- package/dist/credentials/SnapRenderApi.credentials.js.map +1 -0
- package/dist/nodes/SnapRender/SnapRender.node.d.ts +5 -0
- package/dist/nodes/SnapRender/SnapRender.node.js +309 -0
- package/dist/nodes/SnapRender/SnapRender.node.js.map +1 -0
- package/dist/package.json +52 -0
- package/package.json +52 -0
package/README.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# n8n-nodes-snaprender
|
|
2
|
+
|
|
3
|
+
[n8n](https://n8n.io) community node for [SnapRender Screenshot API](https://snap-render.com). Capture website screenshots as PNG, JPEG, WebP, or PDF directly in your n8n workflows.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
In your n8n instance:
|
|
8
|
+
|
|
9
|
+
1. Go to **Settings** > **Community Nodes**
|
|
10
|
+
2. Enter `n8n-nodes-snaprender`
|
|
11
|
+
3. Click **Install**
|
|
12
|
+
|
|
13
|
+
## Credentials
|
|
14
|
+
|
|
15
|
+
1. Sign up at [app.snap-render.com](https://app.snap-render.com/auth/signup) — free, no credit card
|
|
16
|
+
2. Create an API key in your dashboard
|
|
17
|
+
3. In n8n, go to **Credentials** > **New** > **SnapRender API**
|
|
18
|
+
4. Paste your API key (starts with `sk_live_`)
|
|
19
|
+
|
|
20
|
+
## Operations
|
|
21
|
+
|
|
22
|
+
### Take Screenshot
|
|
23
|
+
|
|
24
|
+
Capture any website as PNG, JPEG, WebP, or PDF.
|
|
25
|
+
|
|
26
|
+
- **URL** — Website to capture
|
|
27
|
+
- **Format** — PNG, JPEG, WebP, or PDF
|
|
28
|
+
- **Full Page** — Capture entire scrollable page
|
|
29
|
+
- **Device** — iPhone 14, iPhone 15 Pro, Pixel 7, iPad Pro, MacBook Pro
|
|
30
|
+
- **Dark Mode** — Enable dark mode CSS emulation
|
|
31
|
+
- **Block Ads** — Remove advertisements
|
|
32
|
+
- **Block Cookie Banners** — Remove cookie consent popups
|
|
33
|
+
- **Output** — Binary (image file) or JSON (base64 data URI)
|
|
34
|
+
- **Additional Options** — Width, height, quality, delay, hide selectors, click selector
|
|
35
|
+
|
|
36
|
+
### Check Cache
|
|
37
|
+
|
|
38
|
+
Check if a screenshot is cached without capturing. Free, doesn't count against quota.
|
|
39
|
+
|
|
40
|
+
### Get Usage
|
|
41
|
+
|
|
42
|
+
Get current month's screenshot usage statistics.
|
|
43
|
+
|
|
44
|
+
## Example Workflow
|
|
45
|
+
|
|
46
|
+
1. **Trigger** (e.g., webhook, schedule, form)
|
|
47
|
+
2. **SnapRender** node — Take Screenshot with URL from trigger
|
|
48
|
+
3. **Send Email** / **Save to S3** / **Slack** — Use the binary output
|
|
49
|
+
|
|
50
|
+
## Free Tier
|
|
51
|
+
|
|
52
|
+
50 screenshots/month, no credit card required. Paid plans up to 10,000/month.
|
|
53
|
+
|
|
54
|
+
## Links
|
|
55
|
+
|
|
56
|
+
- [SnapRender Website](https://snap-render.com)
|
|
57
|
+
- [API Documentation](https://app.snap-render.com/docs)
|
|
58
|
+
- [GitHub](https://github.com/User0856/snaprender-integrations/tree/main/n8n)
|
|
59
|
+
|
|
60
|
+
## License
|
|
61
|
+
|
|
62
|
+
MIT
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class SnapRenderApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
documentationUrl: string;
|
|
6
|
+
properties: INodeProperties[];
|
|
7
|
+
authenticate: IAuthenticateGeneric;
|
|
8
|
+
test: ICredentialTestRequest;
|
|
9
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SnapRenderApi = void 0;
|
|
4
|
+
class SnapRenderApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'snapRenderApi';
|
|
7
|
+
this.displayName = 'SnapRender API';
|
|
8
|
+
this.documentationUrl = 'https://snap-render.com';
|
|
9
|
+
this.properties = [
|
|
10
|
+
{
|
|
11
|
+
displayName: 'API Key',
|
|
12
|
+
name: 'apiKey',
|
|
13
|
+
type: 'string',
|
|
14
|
+
typeOptions: { password: true },
|
|
15
|
+
default: '',
|
|
16
|
+
placeholder: 'sk_live_...',
|
|
17
|
+
description: 'Your SnapRender API key. Get a free key at https://app.snap-render.com/auth/signup',
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
this.authenticate = {
|
|
21
|
+
type: 'generic',
|
|
22
|
+
properties: {
|
|
23
|
+
headers: {
|
|
24
|
+
'X-API-Key': '={{$credentials.apiKey}}',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
this.test = {
|
|
29
|
+
request: {
|
|
30
|
+
baseURL: 'https://app.snap-render.com',
|
|
31
|
+
url: '/v1/usage',
|
|
32
|
+
method: 'GET',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.SnapRenderApi = SnapRenderApi;
|
|
38
|
+
//# sourceMappingURL=SnapRenderApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SnapRenderApi.credentials.js","sourceRoot":"","sources":["../../credentials/SnapRenderApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,aAAa;IAA1B;QACC,SAAI,GAAG,eAAe,CAAC;QACvB,gBAAW,GAAG,gBAAgB,CAAC;QAC/B,qBAAgB,GAAG,yBAAyB,CAAC;QAE7C,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,aAAa;gBAC1B,WAAW,EACV,oFAAoF;aACrF;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,WAAW,EAAE,0BAA0B;iBACvC;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,6BAA6B;gBACtC,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AAlCD,sCAkCC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class SnapRender implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SnapRender = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
class SnapRender {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.description = {
|
|
8
|
+
displayName: 'SnapRender',
|
|
9
|
+
name: 'snapRender',
|
|
10
|
+
icon: 'file:snaprender.svg',
|
|
11
|
+
group: ['transform'],
|
|
12
|
+
version: 1,
|
|
13
|
+
subtitle: '={{$parameter["operation"]}}',
|
|
14
|
+
description: 'Capture website screenshots as PNG, JPEG, WebP, or PDF',
|
|
15
|
+
defaults: { name: 'SnapRender' },
|
|
16
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
17
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
18
|
+
usableAsTool: true,
|
|
19
|
+
credentials: [
|
|
20
|
+
{
|
|
21
|
+
name: 'snapRenderApi',
|
|
22
|
+
required: true,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
requestDefaults: {
|
|
26
|
+
baseURL: 'https://app.snap-render.com',
|
|
27
|
+
},
|
|
28
|
+
properties: [
|
|
29
|
+
{
|
|
30
|
+
displayName: 'Operation',
|
|
31
|
+
name: 'operation',
|
|
32
|
+
type: 'options',
|
|
33
|
+
noDataExpression: true,
|
|
34
|
+
options: [
|
|
35
|
+
{
|
|
36
|
+
name: 'Take Screenshot',
|
|
37
|
+
value: 'screenshot',
|
|
38
|
+
description: 'Capture a screenshot of a website',
|
|
39
|
+
action: 'Capture a screenshot of a website',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Check Cache',
|
|
43
|
+
value: 'checkCache',
|
|
44
|
+
description: 'Check if a screenshot is cached (free, no quota cost)',
|
|
45
|
+
action: 'Check if a screenshot is cached',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Get Usage',
|
|
49
|
+
value: 'getUsage',
|
|
50
|
+
description: 'Get current month screenshot usage statistics',
|
|
51
|
+
action: 'Get usage statistics',
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
default: 'screenshot',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
displayName: 'URL',
|
|
58
|
+
name: 'url',
|
|
59
|
+
type: 'string',
|
|
60
|
+
default: '',
|
|
61
|
+
required: true,
|
|
62
|
+
placeholder: 'https://example.com',
|
|
63
|
+
description: 'URL of the website to capture',
|
|
64
|
+
displayOptions: {
|
|
65
|
+
show: { operation: ['screenshot', 'checkCache'] },
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
displayName: 'Format',
|
|
70
|
+
name: 'format',
|
|
71
|
+
type: 'options',
|
|
72
|
+
options: [
|
|
73
|
+
{ name: 'PNG', value: 'png' },
|
|
74
|
+
{ name: 'JPEG', value: 'jpeg' },
|
|
75
|
+
{ name: 'WebP', value: 'webp' },
|
|
76
|
+
{ name: 'PDF', value: 'pdf' },
|
|
77
|
+
],
|
|
78
|
+
default: 'png',
|
|
79
|
+
description: 'Output image format',
|
|
80
|
+
displayOptions: {
|
|
81
|
+
show: { operation: ['screenshot', 'checkCache'] },
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
displayName: 'Full Page',
|
|
86
|
+
name: 'fullPage',
|
|
87
|
+
type: 'boolean',
|
|
88
|
+
default: false,
|
|
89
|
+
description: 'Whether to capture the entire scrollable page',
|
|
90
|
+
displayOptions: { show: { operation: ['screenshot'] } },
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
displayName: 'Device',
|
|
94
|
+
name: 'device',
|
|
95
|
+
type: 'options',
|
|
96
|
+
options: [
|
|
97
|
+
{ name: 'Desktop (Default)', value: '' },
|
|
98
|
+
{ name: 'iPhone 14', value: 'iphone_14' },
|
|
99
|
+
{ name: 'iPhone 15 Pro', value: 'iphone_15_pro' },
|
|
100
|
+
{ name: 'Pixel 7', value: 'pixel_7' },
|
|
101
|
+
{ name: 'iPad Pro', value: 'ipad_pro' },
|
|
102
|
+
{ name: 'MacBook Pro', value: 'macbook_pro' },
|
|
103
|
+
],
|
|
104
|
+
default: '',
|
|
105
|
+
description: 'Device preset for viewport emulation',
|
|
106
|
+
displayOptions: { show: { operation: ['screenshot'] } },
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
displayName: 'Dark Mode',
|
|
110
|
+
name: 'darkMode',
|
|
111
|
+
type: 'boolean',
|
|
112
|
+
default: false,
|
|
113
|
+
description: 'Whether to enable dark mode CSS emulation',
|
|
114
|
+
displayOptions: { show: { operation: ['screenshot'] } },
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
displayName: 'Block Ads',
|
|
118
|
+
name: 'blockAds',
|
|
119
|
+
type: 'boolean',
|
|
120
|
+
default: true,
|
|
121
|
+
description: 'Whether to block advertisements and trackers',
|
|
122
|
+
displayOptions: { show: { operation: ['screenshot'] } },
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
displayName: 'Block Cookie Banners',
|
|
126
|
+
name: 'blockCookieBanners',
|
|
127
|
+
type: 'boolean',
|
|
128
|
+
default: true,
|
|
129
|
+
description: 'Whether to remove cookie consent banners',
|
|
130
|
+
displayOptions: { show: { operation: ['screenshot'] } },
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
displayName: 'Additional Options',
|
|
134
|
+
name: 'additionalOptions',
|
|
135
|
+
type: 'collection',
|
|
136
|
+
placeholder: 'Add Option',
|
|
137
|
+
default: {},
|
|
138
|
+
displayOptions: { show: { operation: ['screenshot'] } },
|
|
139
|
+
options: [
|
|
140
|
+
{
|
|
141
|
+
displayName: 'Width',
|
|
142
|
+
name: 'width',
|
|
143
|
+
type: 'number',
|
|
144
|
+
default: 1280,
|
|
145
|
+
description: 'Viewport width in pixels (320-3840)',
|
|
146
|
+
typeOptions: { minValue: 320, maxValue: 3840 },
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
displayName: 'Height',
|
|
150
|
+
name: 'height',
|
|
151
|
+
type: 'number',
|
|
152
|
+
default: 800,
|
|
153
|
+
description: 'Viewport height in pixels (200-10000)',
|
|
154
|
+
typeOptions: { minValue: 200, maxValue: 10000 },
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
displayName: 'Quality',
|
|
158
|
+
name: 'quality',
|
|
159
|
+
type: 'number',
|
|
160
|
+
default: 90,
|
|
161
|
+
description: 'Image quality for JPEG/WebP (1-100)',
|
|
162
|
+
typeOptions: { minValue: 1, maxValue: 100 },
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
displayName: 'Delay',
|
|
166
|
+
name: 'delay',
|
|
167
|
+
type: 'number',
|
|
168
|
+
default: 0,
|
|
169
|
+
description: 'Milliseconds to wait after page load (0-10000)',
|
|
170
|
+
typeOptions: { minValue: 0, maxValue: 10000 },
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
displayName: 'Hide Selectors',
|
|
174
|
+
name: 'hideSelectors',
|
|
175
|
+
type: 'string',
|
|
176
|
+
default: '',
|
|
177
|
+
description: 'Comma-separated CSS selectors to hide before capture',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
displayName: 'Click Selector',
|
|
181
|
+
name: 'clickSelector',
|
|
182
|
+
type: 'string',
|
|
183
|
+
default: '',
|
|
184
|
+
description: 'CSS selector to click before capture',
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
displayName: 'Output',
|
|
190
|
+
name: 'output',
|
|
191
|
+
type: 'options',
|
|
192
|
+
options: [
|
|
193
|
+
{ name: 'Binary (Image File)', value: 'binary' },
|
|
194
|
+
{ name: 'JSON (Base64 Data URI)', value: 'json' },
|
|
195
|
+
],
|
|
196
|
+
default: 'binary',
|
|
197
|
+
description: 'How to return the screenshot',
|
|
198
|
+
displayOptions: { show: { operation: ['screenshot'] } },
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
async execute() {
|
|
204
|
+
const items = this.getInputData();
|
|
205
|
+
const returnData = [];
|
|
206
|
+
for (let i = 0; i < items.length; i++) {
|
|
207
|
+
try {
|
|
208
|
+
const operation = this.getNodeParameter('operation', i);
|
|
209
|
+
if (operation === 'getUsage') {
|
|
210
|
+
const response = await this.helpers.httpRequestWithAuthentication.call(this, 'snapRenderApi', {
|
|
211
|
+
method: 'GET',
|
|
212
|
+
url: 'https://app.snap-render.com/v1/usage',
|
|
213
|
+
json: true,
|
|
214
|
+
});
|
|
215
|
+
returnData.push({ json: response });
|
|
216
|
+
}
|
|
217
|
+
else if (operation === 'checkCache') {
|
|
218
|
+
const url = this.getNodeParameter('url', i);
|
|
219
|
+
const format = this.getNodeParameter('format', i);
|
|
220
|
+
const response = await this.helpers.httpRequestWithAuthentication.call(this, 'snapRenderApi', {
|
|
221
|
+
method: 'GET',
|
|
222
|
+
url: 'https://app.snap-render.com/v1/screenshot/info',
|
|
223
|
+
qs: { url, format },
|
|
224
|
+
json: true,
|
|
225
|
+
});
|
|
226
|
+
returnData.push({ json: response });
|
|
227
|
+
}
|
|
228
|
+
else if (operation === 'screenshot') {
|
|
229
|
+
const url = this.getNodeParameter('url', i);
|
|
230
|
+
const format = this.getNodeParameter('format', i);
|
|
231
|
+
const fullPage = this.getNodeParameter('fullPage', i);
|
|
232
|
+
const device = this.getNodeParameter('device', i);
|
|
233
|
+
const darkMode = this.getNodeParameter('darkMode', i);
|
|
234
|
+
const blockAds = this.getNodeParameter('blockAds', i);
|
|
235
|
+
const blockCookieBanners = this.getNodeParameter('blockCookieBanners', i);
|
|
236
|
+
const output = this.getNodeParameter('output', i);
|
|
237
|
+
const additionalOptions = this.getNodeParameter('additionalOptions', i);
|
|
238
|
+
const qs = {
|
|
239
|
+
url,
|
|
240
|
+
format,
|
|
241
|
+
full_page: fullPage,
|
|
242
|
+
dark_mode: darkMode,
|
|
243
|
+
block_ads: blockAds,
|
|
244
|
+
block_cookie_banners: blockCookieBanners,
|
|
245
|
+
};
|
|
246
|
+
if (device)
|
|
247
|
+
qs.device = device;
|
|
248
|
+
if (additionalOptions.width)
|
|
249
|
+
qs.width = additionalOptions.width;
|
|
250
|
+
if (additionalOptions.height)
|
|
251
|
+
qs.height = additionalOptions.height;
|
|
252
|
+
if (additionalOptions.quality)
|
|
253
|
+
qs.quality = additionalOptions.quality;
|
|
254
|
+
if (additionalOptions.delay)
|
|
255
|
+
qs.delay = additionalOptions.delay;
|
|
256
|
+
if (additionalOptions.hideSelectors)
|
|
257
|
+
qs.hide_selectors = additionalOptions.hideSelectors;
|
|
258
|
+
if (additionalOptions.clickSelector)
|
|
259
|
+
qs.click_selector = additionalOptions.clickSelector;
|
|
260
|
+
if (output === 'json') {
|
|
261
|
+
qs.response_type = 'json';
|
|
262
|
+
const response = await this.helpers.httpRequestWithAuthentication.call(this, 'snapRenderApi', {
|
|
263
|
+
method: 'GET',
|
|
264
|
+
url: 'https://app.snap-render.com/v1/screenshot',
|
|
265
|
+
qs,
|
|
266
|
+
json: true,
|
|
267
|
+
});
|
|
268
|
+
returnData.push({ json: response });
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
const response = await this.helpers.httpRequestWithAuthentication.call(this, 'snapRenderApi', {
|
|
272
|
+
method: 'GET',
|
|
273
|
+
url: 'https://app.snap-render.com/v1/screenshot',
|
|
274
|
+
qs,
|
|
275
|
+
encoding: 'arraybuffer',
|
|
276
|
+
returnFullResponse: true,
|
|
277
|
+
});
|
|
278
|
+
const mimeTypes = {
|
|
279
|
+
png: 'image/png',
|
|
280
|
+
jpeg: 'image/jpeg',
|
|
281
|
+
webp: 'image/webp',
|
|
282
|
+
pdf: 'application/pdf',
|
|
283
|
+
};
|
|
284
|
+
const binaryData = await this.helpers.prepareBinaryData(Buffer.from(response.body), `screenshot.${format === 'jpeg' ? 'jpg' : format}`, mimeTypes[format] || 'image/png');
|
|
285
|
+
returnData.push({
|
|
286
|
+
json: {
|
|
287
|
+
url,
|
|
288
|
+
format,
|
|
289
|
+
success: true,
|
|
290
|
+
},
|
|
291
|
+
binary: { data: binaryData },
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
if (this.continueOnFail()) {
|
|
298
|
+
returnData.push({ json: { error: error.message } });
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
throw error;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return [returnData];
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
exports.SnapRender = SnapRender;
|
|
309
|
+
//# sourceMappingURL=SnapRender.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SnapRender.node.js","sourceRoot":"","sources":["../../../nodes/SnapRender/SnapRender.node.ts"],"names":[],"mappings":";;;AAOA,+CAAmD;AAEnD,MAAa,UAAU;IAAvB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,YAAY;YACzB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8BAA8B;YACxC,WAAW,EAAE,wDAAwD;YACrE,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;YAChC,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,eAAe,EAAE;gBAChB,OAAO,EAAE,6BAA6B;aACtC;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,iBAAiB;4BACvB,KAAK,EAAE,YAAY;4BACnB,WAAW,EAAE,mCAAmC;4BAChD,MAAM,EAAE,mCAAmC;yBAC3C;wBACD;4BACC,IAAI,EAAE,aAAa;4BACnB,KAAK,EAAE,YAAY;4BACnB,WAAW,EAAE,uDAAuD;4BACpE,MAAM,EAAE,iCAAiC;yBACzC;wBACD;4BACC,IAAI,EAAE,WAAW;4BACjB,KAAK,EAAE,UAAU;4BACjB,WAAW,EAAE,+CAA+C;4BAC5D,MAAM,EAAE,sBAAsB;yBAC9B;qBACD;oBACD,OAAO,EAAE,YAAY;iBACrB;gBAGD;oBACC,WAAW,EAAE,KAAK;oBAClB,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,qBAAqB;oBAClC,WAAW,EAAE,+BAA+B;oBAC5C,cAAc,EAAE;wBACf,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;qBACjD;iBACD;gBACD;oBACC,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC/B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC/B,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;qBAC7B;oBACD,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,qBAAqB;oBAClC,cAAc,EAAE;wBACf,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;qBACjD;iBACD;gBAGD;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,+CAA+C;oBAC5D,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,EAAE,EAAE;wBACxC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;wBACzC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;wBACjD,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;wBACrC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;wBACvC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;qBAC7C;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,sCAAsC;oBACnD,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,2CAA2C;oBACxD,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,8CAA8C;oBAC3D,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,sBAAsB;oBACnC,IAAI,EAAE,oBAAoB;oBAC1B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,0CAA0C;oBACvD,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,oBAAoB;oBACjC,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,YAAY;oBACzB,OAAO,EAAE,EAAE;oBACX,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;oBACvD,OAAO,EAAE;wBACR;4BACC,WAAW,EAAE,OAAO;4BACpB,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,qCAAqC;4BAClD,WAAW,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;yBAC9C;wBACD;4BACC,WAAW,EAAE,QAAQ;4BACrB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,GAAG;4BACZ,WAAW,EAAE,uCAAuC;4BACpD,WAAW,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE;yBAC/C;wBACD;4BACC,WAAW,EAAE,SAAS;4BACtB,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;4BACX,WAAW,EAAE,qCAAqC;4BAClD,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;yBAC3C;wBACD;4BACC,WAAW,EAAE,OAAO;4BACpB,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,CAAC;4BACV,WAAW,EAAE,gDAAgD;4BAC7D,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;yBAC7C;wBACD;4BACC,WAAW,EAAE,gBAAgB;4BAC7B,IAAI,EAAE,eAAe;4BACrB,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;4BACX,WAAW,EAAE,sDAAsD;yBACnE;wBACD;4BACC,WAAW,EAAE,gBAAgB;4BAC7B,IAAI,EAAE,eAAe;4BACrB,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;4BACX,WAAW,EAAE,sCAAsC;yBACnD;qBACD;iBACD;gBAGD;oBACC,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE;wBAChD,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE;qBACjD;oBACD,OAAO,EAAE,QAAQ;oBACjB,WAAW,EAAE,8BAA8B;oBAC3C,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE;iBACvD;aACD;SACD,CAAC;IA6HH,CAAC;IA3HA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;gBAElE,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CACrE,IAAI,EACJ,eAAe,EACf;wBACC,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,sCAAsC;wBAC3C,IAAI,EAAE,IAAI;qBACV,CACD,CAAC;oBACF,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAuB,EAAE,CAAC,CAAC;gBACpD,CAAC;qBAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAW,CAAC;oBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAW,CAAC;oBAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CACrE,IAAI,EACJ,eAAe,EACf;wBACC,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,gDAAgD;wBACrD,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;wBACnB,IAAI,EAAE,IAAI;qBACV,CACD,CAAC;oBACF,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAuB,EAAE,CAAC,CAAC;gBACpD,CAAC;qBAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAW,CAAC;oBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAW,CAAC;oBAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAY,CAAC;oBACjE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAW,CAAC;oBAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAY,CAAC;oBACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAY,CAAC;oBACjE,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,CAAY,CAAC;oBACrF,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAW,CAAC;oBAC5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAgB,CAAC;oBAEvF,MAAM,EAAE,GAA8C;wBACrD,GAAG;wBACH,MAAM;wBACN,SAAS,EAAE,QAAQ;wBACnB,SAAS,EAAE,QAAQ;wBACnB,SAAS,EAAE,QAAQ;wBACnB,oBAAoB,EAAE,kBAAkB;qBACxC,CAAC;oBAEF,IAAI,MAAM;wBAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC/B,IAAI,iBAAiB,CAAC,KAAK;wBAAE,EAAE,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAe,CAAC;oBAC1E,IAAI,iBAAiB,CAAC,MAAM;wBAAE,EAAE,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAgB,CAAC;oBAC7E,IAAI,iBAAiB,CAAC,OAAO;wBAAE,EAAE,CAAC,OAAO,GAAG,iBAAiB,CAAC,OAAiB,CAAC;oBAChF,IAAI,iBAAiB,CAAC,KAAK;wBAAE,EAAE,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAe,CAAC;oBAC1E,IAAI,iBAAiB,CAAC,aAAa;wBAClC,EAAE,CAAC,cAAc,GAAG,iBAAiB,CAAC,aAAuB,CAAC;oBAC/D,IAAI,iBAAiB,CAAC,aAAa;wBAClC,EAAE,CAAC,cAAc,GAAG,iBAAiB,CAAC,aAAuB,CAAC;oBAE/D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBACvB,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC;wBAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CACrE,IAAI,EACJ,eAAe,EACf;4BACC,MAAM,EAAE,KAAK;4BACb,GAAG,EAAE,2CAA2C;4BAChD,EAAE;4BACF,IAAI,EAAE,IAAI;yBACV,CACD,CAAC;wBACF,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAuB,EAAE,CAAC,CAAC;oBACpD,CAAC;yBAAM,CAAC;wBACP,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CACrE,IAAI,EACJ,eAAe,EACf;4BACC,MAAM,EAAE,KAAK;4BACb,GAAG,EAAE,2CAA2C;4BAChD,EAAE;4BACF,QAAQ,EAAE,aAAa;4BACvB,kBAAkB,EAAE,IAAI;yBACxB,CACD,CAAC;wBAEF,MAAM,SAAS,GAA2B;4BACzC,GAAG,EAAE,WAAW;4BAChB,IAAI,EAAE,YAAY;4BAClB,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,iBAAiB;yBACtB,CAAC;wBAEF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CACtD,MAAM,CAAC,IAAI,CAAE,QAA6B,CAAC,IAAI,CAAC,EAChD,cAAc,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAClD,SAAS,CAAC,MAAM,CAAC,IAAI,WAAW,CAChC,CAAC;wBAEF,UAAU,CAAC,IAAI,CAAC;4BACf,IAAI,EAAE;gCACL,GAAG;gCACH,MAAM;gCACN,OAAO,EAAE,IAAI;6BACb;4BACD,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;yBAC5B,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBACP,MAAM,KAAK,CAAC;gBACb,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC;CACD;AAtUD,gCAsUC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-snaprender",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n node to capture website screenshots using SnapRender API. PNG, JPEG, WebP, PDF with device emulation, dark mode, ad blocking.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://snap-render.com",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"n8n-community-node-package",
|
|
9
|
+
"n8n",
|
|
10
|
+
"screenshot",
|
|
11
|
+
"web-capture",
|
|
12
|
+
"snaprender"
|
|
13
|
+
],
|
|
14
|
+
"author": {
|
|
15
|
+
"name": "SnapRender",
|
|
16
|
+
"email": "support@snap-render.com"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/User0856/snaprender-integrations.git",
|
|
21
|
+
"directory": "n8n"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=20.15"
|
|
25
|
+
},
|
|
26
|
+
"main": "index.js",
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"dev": "tsc --watch",
|
|
30
|
+
"prepublishOnly": "npm run build"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"n8n": {
|
|
36
|
+
"n8nNodesApiVersion": 1,
|
|
37
|
+
"credentials": [
|
|
38
|
+
"dist/credentials/SnapRenderApi.credentials.js"
|
|
39
|
+
],
|
|
40
|
+
"nodes": [
|
|
41
|
+
"dist/nodes/SnapRender/SnapRender.node.js"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^25.3.0",
|
|
46
|
+
"n8n-workflow": "^2.9.0",
|
|
47
|
+
"typescript": "^5.8.0"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"n8n-workflow": "*"
|
|
51
|
+
}
|
|
52
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-snaprender",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n node to capture website screenshots using SnapRender API. PNG, JPEG, WebP, PDF with device emulation, dark mode, ad blocking.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://snap-render.com",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"n8n-community-node-package",
|
|
9
|
+
"n8n",
|
|
10
|
+
"screenshot",
|
|
11
|
+
"web-capture",
|
|
12
|
+
"snaprender"
|
|
13
|
+
],
|
|
14
|
+
"author": {
|
|
15
|
+
"name": "SnapRender",
|
|
16
|
+
"email": "support@snap-render.com"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/User0856/snaprender-integrations.git",
|
|
21
|
+
"directory": "n8n"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=20.15"
|
|
25
|
+
},
|
|
26
|
+
"main": "index.js",
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"dev": "tsc --watch",
|
|
30
|
+
"prepublishOnly": "npm run build"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"n8n": {
|
|
36
|
+
"n8nNodesApiVersion": 1,
|
|
37
|
+
"credentials": [
|
|
38
|
+
"dist/credentials/SnapRenderApi.credentials.js"
|
|
39
|
+
],
|
|
40
|
+
"nodes": [
|
|
41
|
+
"dist/nodes/SnapRender/SnapRender.node.js"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^25.3.0",
|
|
46
|
+
"n8n-workflow": "^2.9.0",
|
|
47
|
+
"typescript": "^5.8.0"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"n8n-workflow": "*"
|
|
51
|
+
}
|
|
52
|
+
}
|