n8n-nodes-smartfetch 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.
Files changed (34) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +65 -0
  3. package/dist/coverage/favicon.png +0 -0
  4. package/dist/coverage/sort-arrow-sprite.png +0 -0
  5. package/dist/nodes/Smartfetch/Smartfetch.node.d.ts +5 -0
  6. package/dist/nodes/Smartfetch/Smartfetch.node.js +287 -0
  7. package/dist/nodes/Smartfetch/Smartfetch.node.js.map +1 -0
  8. package/dist/nodes/Smartfetch/Smartfetch.node.json +18 -0
  9. package/dist/nodes/Smartfetch/Smartfetch.node.test.d.ts +1 -0
  10. package/dist/nodes/Smartfetch/Smartfetch.node.test.js +338 -0
  11. package/dist/nodes/Smartfetch/Smartfetch.node.test.js.map +1 -0
  12. package/dist/nodes/Smartfetch/cache/index.d.ts +4 -0
  13. package/dist/nodes/Smartfetch/cache/index.js +23 -0
  14. package/dist/nodes/Smartfetch/cache/index.js.map +1 -0
  15. package/dist/nodes/Smartfetch/cache/memory.d.ts +8 -0
  16. package/dist/nodes/Smartfetch/cache/memory.js +45 -0
  17. package/dist/nodes/Smartfetch/cache/memory.js.map +1 -0
  18. package/dist/nodes/Smartfetch/cache/memory.test.d.ts +1 -0
  19. package/dist/nodes/Smartfetch/cache/memory.test.js +89 -0
  20. package/dist/nodes/Smartfetch/cache/memory.test.js.map +1 -0
  21. package/dist/nodes/Smartfetch/cache/postgres.d.ts +23 -0
  22. package/dist/nodes/Smartfetch/cache/postgres.js +105 -0
  23. package/dist/nodes/Smartfetch/cache/postgres.js.map +1 -0
  24. package/dist/nodes/Smartfetch/cache/postgres.test.d.ts +1 -0
  25. package/dist/nodes/Smartfetch/cache/postgres.test.js +175 -0
  26. package/dist/nodes/Smartfetch/cache/postgres.test.js.map +1 -0
  27. package/dist/nodes/Smartfetch/cache/types.d.ts +15 -0
  28. package/dist/nodes/Smartfetch/cache/types.js +16 -0
  29. package/dist/nodes/Smartfetch/cache/types.js.map +1 -0
  30. package/dist/nodes/Smartfetch/smartfetch.dark.svg +13 -0
  31. package/dist/nodes/Smartfetch/smartfetch.svg +13 -0
  32. package/dist/package.json +59 -0
  33. package/dist/tsconfig.tsbuildinfo +1 -0
  34. package/package.json +59 -0
package/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # n8n-nodes-smartfetch
2
+
3
+ An n8n community node that provides HTTP GET requests with built-in caching. Think of it as a superset of the native HTTP Request node, but with simple cache controls that don't overwhelm non-technical users.
4
+
5
+ [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.
6
+
7
+ ## Installation
8
+
9
+ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
10
+
11
+ ## Features
12
+
13
+ - **HTTP GET with caching** - Automatically cache responses to reduce API calls
14
+ - **Flexible cache storage** - Memory (fast, ephemeral) or PostgreSQL (persistent)
15
+ - **Simple TTL controls** - Preset durations (5min, 1hr, 1day, 1week, 1month) or custom
16
+ - **Multiple auth methods** - Basic, Bearer, Digest, Header, and Query authentication
17
+ - **Secure cache keys** - Credentials are hashed (SHA-256) so different auth = different cache
18
+
19
+ ## Cache Storage Options
20
+
21
+ ### Memory
22
+ - Fast, in-process caching
23
+ - Cleared when n8n restarts
24
+ - Good for development or short-lived caches
25
+
26
+ ### PostgreSQL
27
+ - Persistent caching across restarts
28
+ - Auto-creates cache table with schema:
29
+ - `key` (VARCHAR) - hashed cache key
30
+ - `request_url` (TEXT) - original URL for debugging
31
+ - `response` (JSONB) - cached response data
32
+ - `cached_at` (TIMESTAMPTZ) - when cached
33
+ - `ttl` (INT) - time-to-live in seconds
34
+ - Configurable table name (multiple caches per database)
35
+ - SSL enabled by default
36
+
37
+ ## Authentication
38
+
39
+ | Method | Description |
40
+ |--------|-------------|
41
+ | None | No authentication |
42
+ | Basic Auth | Username/password via Authorization header |
43
+ | Bearer Auth | Token via Authorization: Bearer header |
44
+ | Digest Auth | Challenge-response authentication |
45
+ | Header Auth | Custom header name/value |
46
+ | Query Auth | API key as query parameter |
47
+
48
+ ## Compatibility
49
+
50
+ Tested with n8n version 2.2.4.
51
+
52
+ ## Usage
53
+
54
+ 1. Add the Smartfetch node to your workflow
55
+ 2. Enter the URL to fetch
56
+ 3. Select authentication method (if needed)
57
+ 4. Choose cache storage (Memory or PostgreSQL)
58
+ 5. Set cache duration
59
+ 6. Execute!
60
+
61
+ Subsequent executions with the same URL and credentials will return cached responses until TTL expires.
62
+
63
+ ## Resources
64
+
65
+ - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
Binary file
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Smartfetch implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Smartfetch = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const crypto_1 = require("crypto");
6
+ const cache_1 = require("./cache");
7
+ class Smartfetch {
8
+ constructor() {
9
+ this.description = {
10
+ displayName: 'Smartfetch',
11
+ name: 'smartfetch',
12
+ icon: { light: 'file:smartfetch.svg', dark: 'file:smartfetch.dark.svg' },
13
+ group: ['transform'],
14
+ version: 1,
15
+ subtitle: 'GET with caching',
16
+ description: 'HTTP GET request with built-in caching',
17
+ defaults: {
18
+ name: 'Smartfetch',
19
+ },
20
+ usableAsTool: true,
21
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
22
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
23
+ credentials: [
24
+ {
25
+ name: 'httpBasicAuth',
26
+ required: true,
27
+ displayOptions: { show: { authentication: ['httpBasicAuth'] } },
28
+ },
29
+ {
30
+ name: 'httpBearerAuth',
31
+ required: true,
32
+ displayOptions: { show: { authentication: ['httpBearerAuth'] } },
33
+ },
34
+ {
35
+ name: 'httpDigestAuth',
36
+ required: true,
37
+ displayOptions: { show: { authentication: ['httpDigestAuth'] } },
38
+ },
39
+ {
40
+ name: 'httpHeaderAuth',
41
+ required: true,
42
+ displayOptions: { show: { authentication: ['httpHeaderAuth'] } },
43
+ },
44
+ {
45
+ name: 'httpQueryAuth',
46
+ required: true,
47
+ displayOptions: { show: { authentication: ['httpQueryAuth'] } },
48
+ },
49
+ {
50
+ name: 'postgres',
51
+ required: true,
52
+ displayOptions: { show: { cacheStorage: ['postgres'] } },
53
+ },
54
+ ],
55
+ properties: [
56
+ {
57
+ displayName: 'URL',
58
+ name: 'url',
59
+ type: 'string',
60
+ default: '',
61
+ required: true,
62
+ placeholder: 'https://api.example.com/data',
63
+ description: 'The URL to fetch',
64
+ },
65
+ {
66
+ displayName: 'Authentication',
67
+ name: 'authentication',
68
+ type: 'options',
69
+ options: [
70
+ { name: 'Basic Auth', value: 'httpBasicAuth' },
71
+ { name: 'Bearer Auth', value: 'httpBearerAuth' },
72
+ { name: 'Digest Auth', value: 'httpDigestAuth' },
73
+ { name: 'Header Auth', value: 'httpHeaderAuth' },
74
+ { name: 'None', value: 'none' },
75
+ { name: 'Query Auth', value: 'httpQueryAuth' },
76
+ ],
77
+ default: 'none',
78
+ description: 'The authentication method to use',
79
+ },
80
+ {
81
+ displayName: 'Cache Storage',
82
+ name: 'cacheStorage',
83
+ type: 'options',
84
+ options: [
85
+ {
86
+ name: 'Memory',
87
+ value: 'memory',
88
+ description: 'Fast, but cleared when n8n restarts',
89
+ },
90
+ {
91
+ name: 'PostgreSQL',
92
+ value: 'postgres',
93
+ description: 'Persistent cache in PostgreSQL database',
94
+ },
95
+ ],
96
+ default: 'memory',
97
+ description: 'Where to store cached responses',
98
+ },
99
+ {
100
+ displayName: 'Cache Table Name',
101
+ name: 'cacheTableName',
102
+ type: 'string',
103
+ default: 'smartfetch_cache',
104
+ placeholder: 'e.g. smartfetch_cache',
105
+ displayOptions: {
106
+ show: {
107
+ cacheStorage: ['postgres'],
108
+ },
109
+ },
110
+ required: true,
111
+ description: 'PostgreSQL table name for cache (will be created if it does not exist)',
112
+ },
113
+ {
114
+ displayName: 'Cache Duration',
115
+ name: 'cacheDuration',
116
+ type: 'options',
117
+ options: [
118
+ { name: '5 Minutes', value: 300 },
119
+ { name: '1 Hour', value: 3600 },
120
+ { name: '1 Day', value: 86400 },
121
+ { name: '1 Week', value: 604800 },
122
+ { name: '1 Month', value: 2592000 },
123
+ { name: 'Custom', value: 'custom' },
124
+ ],
125
+ default: 3600,
126
+ description: 'How long to cache responses',
127
+ },
128
+ {
129
+ displayName: 'Custom TTL (Seconds)',
130
+ name: 'customTtl',
131
+ type: 'number',
132
+ default: 3600,
133
+ displayOptions: {
134
+ show: {
135
+ cacheDuration: ['custom'],
136
+ },
137
+ },
138
+ description: 'Custom cache duration in seconds',
139
+ },
140
+ ],
141
+ };
142
+ }
143
+ async execute() {
144
+ const items = this.getInputData();
145
+ const returnData = [];
146
+ let cacheAdapter;
147
+ let postgresAdapter = null;
148
+ const cacheStorage = this.getNodeParameter('cacheStorage', 0);
149
+ if (cacheStorage === 'postgres') {
150
+ const credentials = (await this.getCredentials('postgres'));
151
+ const tableName = this.getNodeParameter('cacheTableName', 0);
152
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(tableName)) {
153
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Cache table name must start with a letter or underscore and contain only alphanumeric characters and underscores');
154
+ }
155
+ if (tableName.length > 63) {
156
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Cache table name must be 63 characters or less (PostgreSQL identifier limit)');
157
+ }
158
+ postgresAdapter = new cache_1.PostgresCacheAdapter(credentials, tableName);
159
+ cacheAdapter = postgresAdapter;
160
+ }
161
+ else {
162
+ cacheAdapter = new cache_1.MemoryCacheAdapter();
163
+ }
164
+ try {
165
+ for (let i = 0; i < items.length; i++) {
166
+ const url = this.getNodeParameter('url', i);
167
+ const authentication = this.getNodeParameter('authentication', i);
168
+ const cacheDuration = this.getNodeParameter('cacheDuration', i);
169
+ let ttl;
170
+ if (cacheDuration === 'custom') {
171
+ ttl = this.getNodeParameter('customTtl', i);
172
+ if (!Number.isFinite(ttl) || ttl <= 0 || ttl > 31536000) {
173
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Custom TTL must be a positive number between 1 and 31536000 seconds (1 year)', { itemIndex: i });
174
+ }
175
+ }
176
+ else {
177
+ ttl = cacheDuration;
178
+ }
179
+ let credentialHash;
180
+ if (authentication !== 'none') {
181
+ const credentials = await this.getCredentials(authentication);
182
+ const credentialString = JSON.stringify(credentials);
183
+ credentialHash = (0, crypto_1.createHash)('sha256').update(credentialString).digest('hex');
184
+ }
185
+ const cacheKey = (0, cache_1.generateCacheKey)(url, credentialHash);
186
+ const cachedEntry = await cacheAdapter.get(cacheKey);
187
+ if (cachedEntry && (0, cache_1.isCacheValid)(cachedEntry)) {
188
+ try {
189
+ returnData.push({
190
+ json: JSON.parse(cachedEntry.response),
191
+ pairedItem: { item: i },
192
+ });
193
+ continue;
194
+ }
195
+ catch {
196
+ try {
197
+ await cacheAdapter.delete(cacheKey);
198
+ }
199
+ catch {
200
+ }
201
+ }
202
+ }
203
+ try {
204
+ let response;
205
+ const requestOptions = {
206
+ method: 'GET',
207
+ url,
208
+ json: true,
209
+ };
210
+ if (authentication === 'none') {
211
+ response = (await this.helpers.httpRequest(requestOptions));
212
+ }
213
+ else if (authentication === 'httpBasicAuth') {
214
+ const credentials = await this.getCredentials('httpBasicAuth');
215
+ const basicAuth = Buffer.from(`${credentials.user}:${credentials.password}`).toString('base64');
216
+ requestOptions.headers = {
217
+ Authorization: `Basic ${basicAuth}`,
218
+ };
219
+ response = (await this.helpers.httpRequest(requestOptions));
220
+ }
221
+ else if (authentication === 'httpBearerAuth') {
222
+ const credentials = await this.getCredentials('httpBearerAuth');
223
+ requestOptions.headers = {
224
+ Authorization: `Bearer ${credentials.token}`,
225
+ };
226
+ response = (await this.helpers.httpRequest(requestOptions));
227
+ }
228
+ else if (authentication === 'httpDigestAuth') {
229
+ const credentials = await this.getCredentials('httpDigestAuth');
230
+ response = (await this.helpers.httpRequest({
231
+ ...requestOptions,
232
+ auth: {
233
+ username: credentials.user,
234
+ password: credentials.password,
235
+ sendImmediately: false,
236
+ },
237
+ }));
238
+ }
239
+ else if (authentication === 'httpQueryAuth') {
240
+ const credentials = await this.getCredentials('httpQueryAuth');
241
+ const separator = requestOptions.url.includes('?') ? '&' : '?';
242
+ const encodedName = encodeURIComponent(credentials.name);
243
+ const encodedValue = encodeURIComponent(credentials.value);
244
+ requestOptions.url = `${requestOptions.url}${separator}${encodedName}=${encodedValue}`;
245
+ response = (await this.helpers.httpRequest(requestOptions));
246
+ }
247
+ else {
248
+ response = (await this.helpers.httpRequestWithAuthentication.call(this, authentication, requestOptions));
249
+ }
250
+ await cacheAdapter.set({
251
+ key: cacheKey,
252
+ requestUrl: url,
253
+ response: JSON.stringify(response),
254
+ cachedAt: Date.now(),
255
+ ttl,
256
+ });
257
+ returnData.push({
258
+ json: response,
259
+ pairedItem: { item: i },
260
+ });
261
+ }
262
+ catch (error) {
263
+ returnData.push({
264
+ json: {
265
+ error: true,
266
+ message: error instanceof Error ? error.message : String(error),
267
+ url,
268
+ },
269
+ pairedItem: { item: i },
270
+ });
271
+ }
272
+ }
273
+ }
274
+ finally {
275
+ if (postgresAdapter) {
276
+ try {
277
+ await postgresAdapter.close();
278
+ }
279
+ catch {
280
+ }
281
+ }
282
+ }
283
+ return [returnData];
284
+ }
285
+ }
286
+ exports.Smartfetch = Smartfetch;
287
+ //# sourceMappingURL=Smartfetch.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Smartfetch.node.js","sourceRoot":"","sources":["../../../nodes/Smartfetch/Smartfetch.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ {
2
+ "node": "n8n-nodes-smartfetch",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Development", "Developer Tools"],
6
+ "resources": {
7
+ "credentialDocumentation": [
8
+ {
9
+ "url": "https://github.com/meetbryce/n8n-nodes-smartfetch#authentication"
10
+ }
11
+ ],
12
+ "primaryDocumentation": [
13
+ {
14
+ "url": "https://github.com/meetbryce/n8n-nodes-smartfetch#readme"
15
+ }
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1 @@
1
+ export {};