n8n-nodes-bozonx-redis-sugar 1.18.0 → 1.21.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 +175 -16
- package/dist/nodes/RedisCache/BozonxRedisCache.node.js +21 -6
- package/dist/nodes/RedisCache/BozonxRedisCache.node.js.map +1 -1
- package/dist/nodes/RedisCache/redisClient.js +19 -1
- package/dist/nodes/RedisCache/redisClient.js.map +1 -1
- package/dist/nodes/RedisListSugar/BozonxRedisListSugar.node.d.ts +5 -0
- package/dist/nodes/RedisListSugar/BozonxRedisListSugar.node.js +239 -0
- package/dist/nodes/RedisListSugar/BozonxRedisListSugar.node.js.map +1 -0
- package/dist/nodes/RedisListSugar/redis-list-sugar.svg +6 -0
- package/dist/nodes/RedisListSugar/redisClient.d.ts +10 -0
- package/dist/nodes/RedisListSugar/redisClient.js +97 -0
- package/dist/nodes/RedisListSugar/redisClient.js.map +1 -0
- package/dist/nodes/RedisQueueComplete/BozonxRedisQueueComplete.node.d.ts +5 -0
- package/dist/nodes/RedisQueueComplete/BozonxRedisQueueComplete.node.js +128 -0
- package/dist/nodes/RedisQueueComplete/BozonxRedisQueueComplete.node.js.map +1 -0
- package/dist/nodes/RedisQueueComplete/redis-queue-complete.svg +4 -0
- package/dist/nodes/RedisQueueComplete/redisClient.d.ts +9 -0
- package/dist/nodes/RedisQueueComplete/redisClient.js +93 -0
- package/dist/nodes/RedisQueueComplete/redisClient.js.map +1 -0
- package/dist/nodes/RedisQueueConsumer/BozonxRedisQueueConsumer.node.d.ts +5 -0
- package/dist/nodes/RedisQueueConsumer/BozonxRedisQueueConsumer.node.js +179 -0
- package/dist/nodes/RedisQueueConsumer/BozonxRedisQueueConsumer.node.js.map +1 -0
- package/dist/nodes/RedisQueueConsumer/redis-queue-consumer.svg +4 -0
- package/dist/nodes/RedisQueueConsumer/redisClient.d.ts +9 -0
- package/dist/nodes/RedisQueueConsumer/redisClient.js +93 -0
- package/dist/nodes/RedisQueueConsumer/redisClient.js.map +1 -0
- package/dist/nodes/RedisQueueProducer/BozonxRedisQueueProducer.node.d.ts +5 -0
- package/dist/nodes/RedisQueueProducer/BozonxRedisQueueProducer.node.js +224 -0
- package/dist/nodes/RedisQueueProducer/BozonxRedisQueueProducer.node.js.map +1 -0
- package/dist/nodes/RedisQueueProducer/redis-queue-producer.svg +4 -0
- package/dist/nodes/RedisQueueProducer/redisClient.d.ts +10 -0
- package/dist/nodes/RedisQueueProducer/redisClient.js +97 -0
- package/dist/nodes/RedisQueueProducer/redisClient.js.map +1 -0
- package/dist/nodes/RedisStreamProducer/BozonxRedisStreamProducer.node.js +20 -4
- package/dist/nodes/RedisStreamProducer/BozonxRedisStreamProducer.node.js.map +1 -1
- package/dist/nodes/RedisStreamProducer/redisClient.js +20 -2
- package/dist/nodes/RedisStreamProducer/redisClient.js.map +1 -1
- package/dist/nodes/RedisStreamTrigger/BozonxRedisStreamTrigger.node.js +4 -11
- package/dist/nodes/RedisStreamTrigger/BozonxRedisStreamTrigger.node.js.map +1 -1
- package/dist/package.json +13 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -8
package/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
# n8n Nodes: Bozonx Redis
|
|
1
|
+
# n8n Nodes: Bozonx Redis Sugar
|
|
2
2
|
|
|
3
3
|
Community nodes for n8n to work with Redis:
|
|
4
4
|
|
|
5
|
-
- Redis Cache
|
|
6
|
-
- Redis Pub
|
|
7
|
-
- Redis
|
|
5
|
+
- **Redis Cache**: read/write JSON values with optional TTL
|
|
6
|
+
- **Redis Pub**: append entries to Redis Streams (XADD)
|
|
7
|
+
- **Redis Sub Trigger**: emit items from Redis Streams (XREAD)
|
|
8
|
+
- **Redis Queue Add**: add jobs to a Redis-based queue
|
|
9
|
+
- **Redis Queue Trigger**: process jobs from a Redis-based queue
|
|
10
|
+
- **Redis Queue Complete**: mark queue job as complete and check if it was the last job
|
|
11
|
+
- **Redis List Sugar**: manage simple lists with YAML/JSON parsing
|
|
8
12
|
|
|
9
13
|
n8n is a fair-code licensed workflow automation platform: https://n8n.io/
|
|
10
14
|
|
|
@@ -43,14 +47,14 @@ Read result hit: `{ found: true, key, data }`
|
|
|
43
47
|
Read result miss: `{ found: false, key }`
|
|
44
48
|
|
|
45
49
|
Details:
|
|
46
|
-
- When Payload Type is JSON,
|
|
50
|
+
- When Payload Type is YAML / JSON, the input is a string and is parsed as YAML first (YAML is a superset of JSON), then as JSON.
|
|
47
51
|
- When Payload Type is Data Fields, you can add multiple fields with a selected value type (string, number, boolean, json, null). JSON values are validated and stringified.
|
|
48
52
|
- TTL is optional; set to 0 to store without expiration. Units supported: seconds, minutes, hours, days.
|
|
49
53
|
|
|
50
54
|
### 2) Redis Pub (Streams)
|
|
51
55
|
|
|
52
56
|
- Event name: Redis stream key
|
|
53
|
-
- Payload Mode:
|
|
57
|
+
- Payload Mode: YAML / JSON or Key-Value
|
|
54
58
|
- Stream trimming: `MAXLEN ~ 1000000`
|
|
55
59
|
- Stream TTL: `EXPIRE 86400` seconds
|
|
56
60
|
|
|
@@ -61,11 +65,10 @@ Output item example:
|
|
|
61
65
|
```
|
|
62
66
|
|
|
63
67
|
Details:
|
|
64
|
-
-
|
|
65
|
-
- JSON mode sends a single field "data". If left empty, the incoming item is used and stringified.
|
|
68
|
+
- YAML / JSON mode sends a single field "data". Input is a string and is parsed as YAML first (YAML is a superset of JSON), then as JSON. If left empty, the incoming item is used and stringified.
|
|
66
69
|
- Key-Value mode lets you define typed fields (string, number, boolean, json, null). Invalid JSON values are rejected.
|
|
67
70
|
|
|
68
|
-
### 3) Redis
|
|
71
|
+
### 3) Redis Sub Trigger (Streams)
|
|
69
72
|
|
|
70
73
|
- Stream Key
|
|
71
74
|
- Allowed Stale (Seconds): if > 0, on start emit recent entries; 0 → only new
|
|
@@ -78,20 +81,116 @@ Emitted item example:
|
|
|
78
81
|
{ "payload": <parsed_payload_or_fields>, "_stream": "mystream", "_id": "1728666000000-0" }
|
|
79
82
|
```
|
|
80
83
|
|
|
84
|
+
### 4) Redis Queue Add
|
|
85
|
+
|
|
86
|
+
Add jobs to a Redis-based queue for sequential processing.
|
|
87
|
+
|
|
88
|
+
- **Queue ID**: unique identifier for the queue (leave empty to use current workflow ID)
|
|
89
|
+
- **Job Name**: optional name to group jobs within the same queue (e.g., separate queues per user: `user-123`)
|
|
90
|
+
- **Data**: job data in YAML/JSON format (leave empty to use incoming item)
|
|
91
|
+
- **Timeout (seconds)**: maximum time for job processing (default: 60)
|
|
92
|
+
- Queue TTL is automatically set to `timeout * 1.3 + 10` seconds
|
|
93
|
+
|
|
94
|
+
**Redis structure:**
|
|
95
|
+
- Without Job Name: `queue:{queueId}`
|
|
96
|
+
- With Job Name: `queue:{queueId}:{jobName}` (allows multiple independent queues per workflow)
|
|
97
|
+
|
|
98
|
+
Output:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{ "queueId": "workflow-123", "jobName": "user-456", "position": 3, "timeoutSec": 60, "ttl": 88 }
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 5) Redis Queue Trigger
|
|
105
|
+
|
|
106
|
+
Process jobs from a Redis-based queue. This is a trigger node that starts a workflow for each job.
|
|
107
|
+
|
|
108
|
+
- **Queue ID**: which queue to consume from (leave empty to use current workflow ID)
|
|
109
|
+
- **Job Name**: optional name to match the Job Name from Redis Queue Add (for grouped queues)
|
|
110
|
+
- **BLPOP Timeout (seconds)**: timeout for blocking pop operation (default: 30)
|
|
111
|
+
|
|
112
|
+
Uses `BLPOP` for efficient, event-driven job consumption (no active polling).
|
|
113
|
+
|
|
114
|
+
Emitted item:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"data": { "your": "job data" },
|
|
119
|
+
"index": 1,
|
|
120
|
+
"queueId": "workflow-123",
|
|
121
|
+
"jobName": "user-456",
|
|
122
|
+
"uniqueJobId": "workflow-123-1735308000000-1"
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- `data`: the job payload
|
|
127
|
+
- `index`: position in the current queue "wave" (resets to 1 when queue empties)
|
|
128
|
+
- `queueId`: queue identifier (workflow ID if not specified)
|
|
129
|
+
- `jobName`: optional job group name (null if not used)
|
|
130
|
+
- `uniqueJobId`: unique identifier for this specific job execution
|
|
131
|
+
|
|
132
|
+
### 6) Redis Queue Complete
|
|
133
|
+
|
|
134
|
+
Mark a job as complete and check if it was the last job in the queue. Place this node at the end of your queue processing workflow.
|
|
135
|
+
|
|
136
|
+
- **Queue ID**: from trigger (default: `={{ $json.queueId }}`)
|
|
137
|
+
- **Job Name**: optional, from trigger (default: `={{ $json.jobName }}`)
|
|
138
|
+
- **Unique Job ID**: from trigger (default: `={{ $json.uniqueJobId }}`)
|
|
139
|
+
|
|
140
|
+
Output:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"data": { "your": "job data" },
|
|
145
|
+
"index": 1,
|
|
146
|
+
"isLast": true,
|
|
147
|
+
"queueId": "workflow-123",
|
|
148
|
+
"jobName": "user-456",
|
|
149
|
+
"uniqueJobId": "workflow-123-1735308000000-1"
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
- `isLast`: `true` if this was the last job in the queue (queue is now empty)
|
|
154
|
+
- When `isLast` is `true`, the index counter is reset for the next "wave" of jobs
|
|
155
|
+
|
|
156
|
+
### 7) Redis List Sugar
|
|
157
|
+
|
|
158
|
+
Manage simple Redis lists (linked lists). Supports basic operations with YAML/JSON value parsing.
|
|
159
|
+
|
|
160
|
+
- **List ID**: Redis key for the list
|
|
161
|
+
- **Operation**:
|
|
162
|
+
- **Add Element**: Append value to the end of the list (`RPUSH`)
|
|
163
|
+
- **Delete Element (by Value)**: Remove all matching elements from the list (`LREM`)
|
|
164
|
+
- **Delete Element (at Index)**: Remove an element at a specific index
|
|
165
|
+
- **Get Range / All Elements**: Retrieve elements as an array (`LRANGE`). Supports pagination via Range Start and Range End.
|
|
166
|
+
- **Replace Element**: Update value at a specific index (`LSET`)
|
|
167
|
+
- **Clear List**: Delete the entire key (`DEL`)
|
|
168
|
+
|
|
169
|
+
**Details**:
|
|
170
|
+
- **Value (YAML/JSON)**: Input is parsed as YAML/JSON if possible. This allows storing structured objects as strings in the list. On retrieval, the node attempts to parse strings back to JSON objects.
|
|
171
|
+
- **Index / Range**: Zero-based. Negative numbers (e.g., `-1` for the last element, `0` to `-1` for all elements) are supported.
|
|
172
|
+
|
|
81
173
|
## Quick Start
|
|
82
174
|
|
|
175
|
+
### Cache Example
|
|
83
176
|
1. Create Redis credentials in n8n
|
|
84
177
|
2. Redis Cache (Write): set key, payload JSON, TTL
|
|
85
178
|
3. Redis Cache (Read): set same key
|
|
179
|
+
|
|
180
|
+
### Streams Example
|
|
86
181
|
4. Redis Pub: set stream key and payload
|
|
87
|
-
5. Redis
|
|
182
|
+
5. Redis Sub Trigger: set same stream key, optional Allowed Stale
|
|
183
|
+
|
|
184
|
+
### Queue Example
|
|
185
|
+
6. **Workflow 1 (Producer)**: Schedule Trigger → Redis Queue Add (queueId: "emails")
|
|
186
|
+
7. **Workflow 2 (Consumer)**: Redis Queue Trigger (queueId: "emails") → Send Email → Redis Queue Complete → IF node (check `isLast`) → Send Summary Email (if last)
|
|
88
187
|
|
|
89
188
|
## Usage Examples
|
|
90
189
|
|
|
91
|
-
- Redis Cache (Write JSON):
|
|
190
|
+
- Redis Cache (Write YAML / JSON):
|
|
92
191
|
- Mode: Write
|
|
93
192
|
- Key: `cache:user:42`
|
|
94
|
-
- Payload Type: JSON
|
|
193
|
+
- Payload Type: YAML / JSON
|
|
95
194
|
- Data: `{ "id": 42, "name": "Ada" }`
|
|
96
195
|
- TTL Unit: hours, TTL Value: 24
|
|
97
196
|
|
|
@@ -99,15 +198,36 @@ Emitted item example:
|
|
|
99
198
|
- Mode: Read
|
|
100
199
|
- Key: `cache:user:42`
|
|
101
200
|
|
|
102
|
-
- Redis Pub (JSON):
|
|
201
|
+
- Redis Pub (YAML / JSON):
|
|
103
202
|
- Stream Key: `my-service:main`
|
|
104
|
-
- Payload Mode: JSON
|
|
105
|
-
- Payload: leave empty to send the incoming item as JSON
|
|
203
|
+
- Payload Mode: YAML / JSON
|
|
204
|
+
- Payload: leave empty to send the incoming item as YAML/JSON
|
|
106
205
|
|
|
107
|
-
- Redis
|
|
206
|
+
- Redis Sub Trigger:
|
|
108
207
|
- Stream Key: `my-service:main`
|
|
109
208
|
- Allowed Stale (Seconds): `0` for only new entries
|
|
110
209
|
|
|
210
|
+
- Redis Queue (Producer Workflow):
|
|
211
|
+
- Redis Queue Add:
|
|
212
|
+
- Queue ID: `` (empty - uses workflow ID)
|
|
213
|
+
- Job Name: `={{ $json.userId }}` (separate queue per user)
|
|
214
|
+
- Data: `{ "url": "https://example.com/image.jpg", "format": "webp" }`
|
|
215
|
+
- Timeout: `120` seconds
|
|
216
|
+
|
|
217
|
+
- Redis Queue (Consumer Workflow):
|
|
218
|
+
- Redis Queue Trigger:
|
|
219
|
+
- Queue ID: `` (empty - uses workflow ID)
|
|
220
|
+
- Job Name: `={{ $json.userId }}` (must match producer)
|
|
221
|
+
- BLPOP Timeout: `30` seconds
|
|
222
|
+
- → Process Image node
|
|
223
|
+
- → Redis Queue Complete:
|
|
224
|
+
- Queue ID: `={{ $json.queueId }}`
|
|
225
|
+
- Job Name: `={{ $json.jobName }}`
|
|
226
|
+
- Unique Job ID: `={{ $json.uniqueJobId }}`
|
|
227
|
+
- → IF node: `={{ $json.result.isLast }}`
|
|
228
|
+
- True → Send notification "All images processed for user"
|
|
229
|
+
- False → End
|
|
230
|
+
|
|
111
231
|
## Development
|
|
112
232
|
|
|
113
233
|
- Install deps: `pnpm install`
|
|
@@ -115,6 +235,45 @@ Emitted item example:
|
|
|
115
235
|
- Build: `pnpm build`
|
|
116
236
|
- Dev (watch): `pnpm dev` or `pnpm run build:watch`
|
|
117
237
|
|
|
238
|
+
### Local Redis (for tests)
|
|
239
|
+
|
|
240
|
+
This package includes a ready-to-use `compose.yaml` that starts:
|
|
241
|
+
|
|
242
|
+
- `redis` on `localhost:6379`
|
|
243
|
+
- `redisinsight` UI on `http://localhost:5540`
|
|
244
|
+
|
|
245
|
+
Start containers:
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
docker compose -f compose.yaml up -d
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Stop containers:
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
docker compose -f compose.yaml down
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Redis connection params (matching `compose.yaml`):
|
|
258
|
+
|
|
259
|
+
- Host: `localhost`
|
|
260
|
+
- Port: `6379`
|
|
261
|
+
- Username: (empty)
|
|
262
|
+
- Password: (empty)
|
|
263
|
+
- TLS: `false`
|
|
264
|
+
- DB Index: `0`
|
|
265
|
+
|
|
266
|
+
Quick connectivity check:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
redis-cli -h localhost -p 6379 ping
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
If you run n8n in Docker, use the correct host from the n8n container perspective:
|
|
273
|
+
|
|
274
|
+
- If n8n is started from the same Compose project/network, use the service name `redis` as host.
|
|
275
|
+
- If n8n runs in a separate Compose project, either connect the networks or expose Redis and use the host that is reachable from n8n.
|
|
276
|
+
|
|
118
277
|
Before publishing, the CLI will run `n8n-node prerelease` automatically.
|
|
119
278
|
|
|
120
279
|
Publishing options:
|
|
@@ -68,7 +68,8 @@ class BozonxRedisCache {
|
|
|
68
68
|
{
|
|
69
69
|
displayName: 'Data (YAML / JSON)',
|
|
70
70
|
name: 'dataYamlJson',
|
|
71
|
-
type: '
|
|
71
|
+
type: 'string',
|
|
72
|
+
typeOptions: { rows: 8 },
|
|
72
73
|
default: '',
|
|
73
74
|
placeholder: 'foo: bar\ncount: 42\n# or JSON: { "foo": "bar" }',
|
|
74
75
|
description: 'Data in YAML or JSON format. If a string is provided, it will first be parsed as YAML, then as JSON. If an expression returns a non-string value, it will be serialized to JSON.',
|
|
@@ -153,12 +154,13 @@ class BozonxRedisCache {
|
|
|
153
154
|
displayOptions: { show: { valueType: ['string'] } },
|
|
154
155
|
},
|
|
155
156
|
{
|
|
156
|
-
displayName: 'JSON
|
|
157
|
+
displayName: 'Value (YAML / JSON)',
|
|
157
158
|
name: 'valueJson',
|
|
158
|
-
type: '
|
|
159
|
+
type: 'string',
|
|
160
|
+
typeOptions: { rows: 8 },
|
|
159
161
|
default: '',
|
|
160
|
-
placeholder:
|
|
161
|
-
description: '
|
|
162
|
+
placeholder: 'foo: bar\ncount: 42\n# or JSON: { "foo": "bar" }',
|
|
163
|
+
description: 'Data in YAML or JSON format. If a string is provided, it will first be parsed as YAML, then as JSON. If an expression returns a non-string value, it will be serialized to JSON.',
|
|
162
164
|
displayOptions: { show: { valueType: ['json'] } },
|
|
163
165
|
},
|
|
164
166
|
],
|
|
@@ -312,9 +314,22 @@ class BozonxRedisCache {
|
|
|
312
314
|
}
|
|
313
315
|
case 'json': {
|
|
314
316
|
const raw = pair.valueJson;
|
|
315
|
-
if (raw === undefined) {
|
|
317
|
+
if (raw === undefined || raw === '') {
|
|
316
318
|
value = null;
|
|
317
319
|
}
|
|
320
|
+
else if (typeof raw === 'string') {
|
|
321
|
+
try {
|
|
322
|
+
value = (0, js_yaml_1.load)(raw);
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
try {
|
|
326
|
+
value = JSON.parse(raw);
|
|
327
|
+
}
|
|
328
|
+
catch (jsonError) {
|
|
329
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid YAML or JSON provided in field "${k}": ${jsonError.message}`, { itemIndex: i });
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
318
333
|
else {
|
|
319
334
|
value = raw;
|
|
320
335
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BozonxRedisCache.node.js","sourceRoot":"","sources":["../../../nodes/RedisCache/BozonxRedisCache.node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BozonxRedisCache.node.js","sourceRoot":"","sources":["../../../nodes/RedisCache/BozonxRedisCache.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,20 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.ttlToSeconds = ttlToSeconds;
|
|
37
37
|
exports.createRedisClientConnected = createRedisClientConnected;
|
|
38
|
+
const timers_1 = require("timers");
|
|
39
|
+
const REDIS_CONNECT_DEADLINE_MS = 10000;
|
|
40
|
+
function withTimeout(promise, timeoutMs, message) {
|
|
41
|
+
let timeout;
|
|
42
|
+
return Promise.race([
|
|
43
|
+
promise,
|
|
44
|
+
new Promise((_, reject) => {
|
|
45
|
+
timeout = (0, timers_1.setTimeout)(() => reject(new Error(message)), timeoutMs);
|
|
46
|
+
}),
|
|
47
|
+
]).finally(() => {
|
|
48
|
+
if (timeout)
|
|
49
|
+
(0, timers_1.clearTimeout)(timeout);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
38
52
|
function ttlToSeconds(ttl, unit) {
|
|
39
53
|
if (!ttl || ttl <= 0)
|
|
40
54
|
return 0;
|
|
@@ -64,11 +78,15 @@ async function createRedisClientConnected(options) {
|
|
|
64
78
|
const { createClient } = await Promise.resolve().then(() => __importStar(require('redis')));
|
|
65
79
|
const clientImpl = createClient({
|
|
66
80
|
url,
|
|
81
|
+
disableOfflineQueue: true,
|
|
67
82
|
socket: {
|
|
68
83
|
connectTimeout: 10000,
|
|
84
|
+
reconnectStrategy: (retries) => {
|
|
85
|
+
return Math.min(retries * 100, 3000);
|
|
86
|
+
},
|
|
69
87
|
},
|
|
70
88
|
});
|
|
71
|
-
await clientImpl.connect();
|
|
89
|
+
await withTimeout(clientImpl.connect(), REDIS_CONNECT_DEADLINE_MS, `Redis connect timeout after ${REDIS_CONNECT_DEADLINE_MS}ms`);
|
|
72
90
|
const client = {
|
|
73
91
|
async connect() { },
|
|
74
92
|
async quit() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisClient.js","sourceRoot":"","sources":["../../../nodes/RedisCache/redisClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"redisClient.js","sourceRoot":"","sources":["../../../nodes/RedisCache/redisClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type IExecuteFunctions, type INodeExecutionData, type INodeType, type INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class BozonxRedisListSugar implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BozonxRedisListSugar = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const js_yaml_1 = require("js-yaml");
|
|
6
|
+
const redisClient_1 = require("./redisClient");
|
|
7
|
+
class BozonxRedisListSugar {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.description = {
|
|
10
|
+
displayName: 'Redis List Sugar',
|
|
11
|
+
name: 'bozonxRedisListSugar',
|
|
12
|
+
group: ['output'],
|
|
13
|
+
version: 1,
|
|
14
|
+
description: 'Manage simple lists in Redis',
|
|
15
|
+
defaults: { name: 'Redis List Sugar' },
|
|
16
|
+
icon: 'file:redis-list-sugar.svg',
|
|
17
|
+
inputs: ['main'],
|
|
18
|
+
outputs: ['main'],
|
|
19
|
+
credentials: [
|
|
20
|
+
{
|
|
21
|
+
name: 'bozonxRedis',
|
|
22
|
+
required: true,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
properties: [
|
|
26
|
+
{
|
|
27
|
+
displayName: 'List ID',
|
|
28
|
+
name: 'listId',
|
|
29
|
+
type: 'string',
|
|
30
|
+
default: '',
|
|
31
|
+
required: true,
|
|
32
|
+
description: 'Redis key name for the list',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
displayName: 'Operation',
|
|
36
|
+
name: 'operation',
|
|
37
|
+
type: 'options',
|
|
38
|
+
noDataExpression: true,
|
|
39
|
+
options: [
|
|
40
|
+
{
|
|
41
|
+
name: 'Add Element',
|
|
42
|
+
value: 'add',
|
|
43
|
+
description: 'Add an element to the end of the list (RPUSH)',
|
|
44
|
+
action: 'Add an element to the end of the list',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Delete Element (by Value)',
|
|
48
|
+
value: 'deleteValue',
|
|
49
|
+
description: 'Remove occurrences of a value from the list (LREM)',
|
|
50
|
+
action: 'Remove occurrences of a value from the list',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'Delete Element (at Index)',
|
|
54
|
+
value: 'deleteIndex',
|
|
55
|
+
description: 'Remove an element at a specific index',
|
|
56
|
+
action: 'Remove an element at a specific index',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'Get Range / All Elements',
|
|
60
|
+
value: 'getAll',
|
|
61
|
+
description: 'Retrieve elements from the list (LRANGE)',
|
|
62
|
+
action: 'Retrieve elements from the list',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'Replace Element',
|
|
66
|
+
value: 'replace',
|
|
67
|
+
description: 'Replace an element at a specific index (LSET)',
|
|
68
|
+
action: 'Replace an element at a specific index',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'Clear List',
|
|
72
|
+
value: 'clear',
|
|
73
|
+
description: 'Delete the entire list (DEL)',
|
|
74
|
+
action: 'Delete the entire list',
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
default: 'add',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
displayName: 'Value (YAML / JSON)',
|
|
81
|
+
name: 'value',
|
|
82
|
+
type: 'string',
|
|
83
|
+
typeOptions: {
|
|
84
|
+
rows: 5,
|
|
85
|
+
},
|
|
86
|
+
displayOptions: {
|
|
87
|
+
show: {
|
|
88
|
+
operation: ['add', 'replace', 'deleteValue'],
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
default: '',
|
|
92
|
+
description: 'Data in YAML or JSON format. If a string is provided, it will first be parsed as YAML, then as JSON. If it remains a string, it will be saved as a string.',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
displayName: 'Index',
|
|
96
|
+
name: 'index',
|
|
97
|
+
type: 'number',
|
|
98
|
+
displayOptions: {
|
|
99
|
+
show: {
|
|
100
|
+
operation: ['replace', 'deleteIndex'],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
default: 0,
|
|
104
|
+
description: 'The zero-based index of the element. Use negative numbers to count from the end (-1 is last).',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
displayName: 'Range Start',
|
|
108
|
+
name: 'rangeStart',
|
|
109
|
+
type: 'number',
|
|
110
|
+
displayOptions: {
|
|
111
|
+
show: {
|
|
112
|
+
operation: ['getAll'],
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
default: 0,
|
|
116
|
+
description: 'The starting index of the range. 0 is the first element.',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
displayName: 'Range End',
|
|
120
|
+
name: 'rangeEnd',
|
|
121
|
+
type: 'number',
|
|
122
|
+
displayOptions: {
|
|
123
|
+
show: {
|
|
124
|
+
operation: ['getAll'],
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
default: -1,
|
|
128
|
+
description: 'The ending index of the range. Use -1 for the last element, -2 for the second to last, etc.',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
displayName: 'Include Other Input Fields',
|
|
132
|
+
name: 'includeInputFields',
|
|
133
|
+
type: 'boolean',
|
|
134
|
+
default: false,
|
|
135
|
+
description: 'Whether to copy all input data to the output. When enabled, the node result will be placed in a "result" field.',
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
usableAsTool: true,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
async execute() {
|
|
142
|
+
var _a, _b;
|
|
143
|
+
const items = this.getInputData();
|
|
144
|
+
const returnData = [];
|
|
145
|
+
const creds = await this.getCredentials('bozonxRedis');
|
|
146
|
+
const host = (creds === null || creds === void 0 ? void 0 : creds.host) || 'localhost';
|
|
147
|
+
const port = (_a = creds === null || creds === void 0 ? void 0 : creds.port) !== null && _a !== void 0 ? _a : 6379;
|
|
148
|
+
const username = (creds === null || creds === void 0 ? void 0 : creds.username) || '';
|
|
149
|
+
const password = (creds === null || creds === void 0 ? void 0 : creds.password) || '';
|
|
150
|
+
const tls = (creds === null || creds === void 0 ? void 0 : creds.tls) || false;
|
|
151
|
+
const db = (_b = creds === null || creds === void 0 ? void 0 : creds.db) !== null && _b !== void 0 ? _b : 0;
|
|
152
|
+
const client = await (0, redisClient_1.getRedisClientConnected)({ host, port, username, password, tls, db });
|
|
153
|
+
const c = client;
|
|
154
|
+
for (let i = 0; i < items.length; i++) {
|
|
155
|
+
try {
|
|
156
|
+
const listId = this.getNodeParameter('listId', i);
|
|
157
|
+
const operation = this.getNodeParameter('operation', i);
|
|
158
|
+
const includeInputFields = this.getNodeParameter('includeInputFields', i, false);
|
|
159
|
+
let result;
|
|
160
|
+
if (operation === 'add') {
|
|
161
|
+
const valueStr = this.getNodeParameter('value', i, '');
|
|
162
|
+
const value = parseValue(valueStr);
|
|
163
|
+
const serialized = typeof value === 'string' ? value : JSON.stringify(value);
|
|
164
|
+
result = (await c.sendCommand(['RPUSH', listId, serialized]));
|
|
165
|
+
}
|
|
166
|
+
else if (operation === 'deleteValue') {
|
|
167
|
+
const valueStr = this.getNodeParameter('value', i, '');
|
|
168
|
+
const value = parseValue(valueStr);
|
|
169
|
+
const serialized = typeof value === 'string' ? value : JSON.stringify(value);
|
|
170
|
+
result = (await c.sendCommand(['LREM', listId, '0', serialized]));
|
|
171
|
+
}
|
|
172
|
+
else if (operation === 'deleteIndex') {
|
|
173
|
+
const index = this.getNodeParameter('index', i);
|
|
174
|
+
const sentinel = `__DELETED_${Math.random().toString(36).substring(2)}__`;
|
|
175
|
+
await c.sendCommand(['LSET', listId, String(index), sentinel]);
|
|
176
|
+
result = (await c.sendCommand(['LREM', listId, '1', sentinel]));
|
|
177
|
+
}
|
|
178
|
+
else if (operation === 'replace') {
|
|
179
|
+
const index = this.getNodeParameter('index', i);
|
|
180
|
+
const valueStr = this.getNodeParameter('value', i, '');
|
|
181
|
+
const value = parseValue(valueStr);
|
|
182
|
+
const serialized = typeof value === 'string' ? value : JSON.stringify(value);
|
|
183
|
+
result = (await c.sendCommand(['LSET', listId, String(index), serialized]));
|
|
184
|
+
}
|
|
185
|
+
else if (operation === 'getAll') {
|
|
186
|
+
const start = this.getNodeParameter('rangeStart', i, 0);
|
|
187
|
+
const end = this.getNodeParameter('rangeEnd', i, -1);
|
|
188
|
+
const res = (await c.sendCommand(['LRANGE', listId, String(start), String(end)]));
|
|
189
|
+
result = res.map((s) => {
|
|
190
|
+
try {
|
|
191
|
+
return JSON.parse(s);
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return s;
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
else if (operation === 'clear') {
|
|
199
|
+
result = (await c.sendCommand(['DEL', listId]));
|
|
200
|
+
}
|
|
201
|
+
returnData.push({
|
|
202
|
+
json: includeInputFields
|
|
203
|
+
? { ...items[i].json, result }
|
|
204
|
+
: { result },
|
|
205
|
+
pairedItem: { item: i },
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
if (this.continueOnFail()) {
|
|
210
|
+
returnData.push({
|
|
211
|
+
json: { error: error.message },
|
|
212
|
+
pairedItem: { item: i },
|
|
213
|
+
});
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return [returnData];
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
exports.BozonxRedisListSugar = BozonxRedisListSugar;
|
|
223
|
+
function parseValue(val) {
|
|
224
|
+
if (val === '')
|
|
225
|
+
return '';
|
|
226
|
+
try {
|
|
227
|
+
const parsed = (0, js_yaml_1.load)(val);
|
|
228
|
+
return parsed;
|
|
229
|
+
}
|
|
230
|
+
catch (yamlError) {
|
|
231
|
+
try {
|
|
232
|
+
return JSON.parse(val);
|
|
233
|
+
}
|
|
234
|
+
catch (jsonError) {
|
|
235
|
+
return val;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=BozonxRedisListSugar.node.js.map
|