n8n-nodes-cribops 0.1.20 → 0.2.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 +149 -245
- package/dist/credentials/CribopsApi.credentials.js +3 -10
- package/dist/credentials/HiveApi.credentials.d.ts +7 -0
- package/dist/credentials/HiveApi.credentials.js +44 -0
- package/dist/nodes/Cribops/Cribops.node.d.ts +1 -6
- package/dist/nodes/Cribops/Cribops.node.js +343 -494
- package/dist/nodes/CribopsTrigger/CribopsTrigger.node.d.ts +1 -6
- package/dist/nodes/CribopsTrigger/CribopsTrigger.node.js +122 -140
- package/dist/nodes/HiveAccelerator/HiveAccelerator.node.d.ts +5 -0
- package/dist/nodes/HiveAccelerator/HiveAccelerator.node.js +461 -0
- package/dist/nodes/HiveAccelerator/hive.svg +7 -0
- package/dist/package.json +11 -5
- package/dist/utils/CribopsHttp.d.ts +190 -56
- package/dist/utils/CribopsHttp.js +100 -75
- package/dist/utils/HiveClient.d.ts +138 -0
- package/dist/utils/HiveClient.js +113 -0
- package/package.json +11 -5
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HiveAccelerator = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const HiveClient_1 = require("../../utils/HiveClient");
|
|
6
|
+
class HiveAccelerator {
|
|
7
|
+
description = {
|
|
8
|
+
displayName: 'Hive Accelerator',
|
|
9
|
+
name: 'hiveAccelerator',
|
|
10
|
+
icon: 'file:hive.svg',
|
|
11
|
+
group: ['transform'],
|
|
12
|
+
version: 1,
|
|
13
|
+
subtitle: '={{$parameter["operation"]}}',
|
|
14
|
+
description: 'Offload heavy processing from n8n to Hive (Elixir/Oban Pro)',
|
|
15
|
+
defaults: {
|
|
16
|
+
name: 'Hive Accelerator',
|
|
17
|
+
},
|
|
18
|
+
inputs: ["main" /* NodeConnectionType.Main */],
|
|
19
|
+
outputs: ["main" /* NodeConnectionType.Main */],
|
|
20
|
+
credentials: [
|
|
21
|
+
{
|
|
22
|
+
name: 'hiveApi',
|
|
23
|
+
required: true,
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
properties: [
|
|
27
|
+
{
|
|
28
|
+
displayName: 'Operation',
|
|
29
|
+
name: 'operation',
|
|
30
|
+
type: 'options',
|
|
31
|
+
noDataExpression: true,
|
|
32
|
+
options: [
|
|
33
|
+
{
|
|
34
|
+
name: 'Circuit Check',
|
|
35
|
+
value: 'circuitCheck',
|
|
36
|
+
description: 'Check circuit breaker status for a service',
|
|
37
|
+
action: 'Check circuit breaker',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Dedup Check',
|
|
41
|
+
value: 'dedupCheck',
|
|
42
|
+
description: 'Check if data is a duplicate',
|
|
43
|
+
action: 'Check for duplicate data',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Delete Cron',
|
|
47
|
+
value: 'deleteCron',
|
|
48
|
+
description: 'Remove a dynamic cron schedule',
|
|
49
|
+
action: 'Delete a cron job',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'Fanout',
|
|
53
|
+
value: 'fanout',
|
|
54
|
+
description: 'Send payload to multiple webhooks in parallel',
|
|
55
|
+
action: 'Fan out to multiple endpoints',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Info',
|
|
59
|
+
value: 'info',
|
|
60
|
+
description: 'Get Hive server information',
|
|
61
|
+
action: 'Get server info',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'List Crons',
|
|
65
|
+
value: 'listCrons',
|
|
66
|
+
description: 'List all dynamic cron schedules',
|
|
67
|
+
action: 'List all cron jobs',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Parallel HTTP',
|
|
71
|
+
value: 'parallelHttp',
|
|
72
|
+
description: 'Execute multiple HTTP requests concurrently via Elixir',
|
|
73
|
+
action: 'Execute parallel HTTP requests',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: 'Ping',
|
|
77
|
+
value: 'ping',
|
|
78
|
+
description: 'Test connectivity to Hive',
|
|
79
|
+
action: 'Ping hive server',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'Schedule Cron',
|
|
83
|
+
value: 'scheduleCron',
|
|
84
|
+
description: 'Create a dynamic cron schedule via Oban Pro',
|
|
85
|
+
action: 'Schedule a cron job',
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
default: 'parallelHttp',
|
|
89
|
+
},
|
|
90
|
+
// ============================================================
|
|
91
|
+
// Parallel HTTP Operation
|
|
92
|
+
// ============================================================
|
|
93
|
+
{
|
|
94
|
+
displayName: 'Requests',
|
|
95
|
+
name: 'requests',
|
|
96
|
+
type: 'fixedCollection',
|
|
97
|
+
typeOptions: {
|
|
98
|
+
multipleValues: true,
|
|
99
|
+
},
|
|
100
|
+
displayOptions: {
|
|
101
|
+
show: {
|
|
102
|
+
operation: ['parallelHttp'],
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
default: {},
|
|
106
|
+
options: [
|
|
107
|
+
{
|
|
108
|
+
name: 'request',
|
|
109
|
+
displayName: 'Request',
|
|
110
|
+
values: [
|
|
111
|
+
{
|
|
112
|
+
displayName: 'URL',
|
|
113
|
+
name: 'url',
|
|
114
|
+
type: 'string',
|
|
115
|
+
default: '',
|
|
116
|
+
required: true,
|
|
117
|
+
description: 'The URL to request',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
displayName: 'Method',
|
|
121
|
+
name: 'method',
|
|
122
|
+
type: 'options',
|
|
123
|
+
options: [
|
|
124
|
+
{ name: 'DELETE', value: 'DELETE' },
|
|
125
|
+
{ name: 'GET', value: 'GET' },
|
|
126
|
+
{ name: 'PATCH', value: 'PATCH' },
|
|
127
|
+
{ name: 'POST', value: 'POST' },
|
|
128
|
+
{ name: 'PUT', value: 'PUT' },
|
|
129
|
+
],
|
|
130
|
+
default: 'GET',
|
|
131
|
+
description: 'HTTP method',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
displayName: 'Headers',
|
|
135
|
+
name: 'headers',
|
|
136
|
+
type: 'json',
|
|
137
|
+
default: '{}',
|
|
138
|
+
description: 'Request headers as JSON',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
displayName: 'Body',
|
|
142
|
+
name: 'body',
|
|
143
|
+
type: 'json',
|
|
144
|
+
default: '',
|
|
145
|
+
description: 'Request body as JSON (for POST/PUT/PATCH)',
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
description: 'HTTP requests to execute in parallel',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
displayName: 'Parallel HTTP Options',
|
|
154
|
+
name: 'parallelHttpOptions',
|
|
155
|
+
type: 'collection',
|
|
156
|
+
placeholder: 'Add Option',
|
|
157
|
+
default: {},
|
|
158
|
+
displayOptions: {
|
|
159
|
+
show: {
|
|
160
|
+
operation: ['parallelHttp'],
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
options: [
|
|
164
|
+
{
|
|
165
|
+
displayName: 'Concurrency',
|
|
166
|
+
name: 'concurrency',
|
|
167
|
+
type: 'number',
|
|
168
|
+
default: 10,
|
|
169
|
+
description: 'Maximum number of concurrent requests',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
displayName: 'Timeout (Ms)',
|
|
173
|
+
name: 'timeout_ms',
|
|
174
|
+
type: 'number',
|
|
175
|
+
default: 30000,
|
|
176
|
+
description: 'Request timeout in milliseconds',
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
},
|
|
180
|
+
// ============================================================
|
|
181
|
+
// Schedule Cron Operation
|
|
182
|
+
// ============================================================
|
|
183
|
+
{
|
|
184
|
+
displayName: 'Cron Name',
|
|
185
|
+
name: 'cronName',
|
|
186
|
+
type: 'string',
|
|
187
|
+
displayOptions: {
|
|
188
|
+
show: {
|
|
189
|
+
operation: ['scheduleCron', 'deleteCron'],
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
default: '',
|
|
193
|
+
required: true,
|
|
194
|
+
description: 'Unique identifier for the cron job',
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
displayName: 'Cron Expression',
|
|
198
|
+
name: 'cronExpression',
|
|
199
|
+
type: 'string',
|
|
200
|
+
displayOptions: {
|
|
201
|
+
show: {
|
|
202
|
+
operation: ['scheduleCron'],
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
default: '*/5 * * * *',
|
|
206
|
+
required: true,
|
|
207
|
+
description: 'Cron expression (e.g., "*/5 * * * *" for every 5 minutes)',
|
|
208
|
+
placeholder: '0 9 * * *',
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
displayName: 'Webhook URL',
|
|
212
|
+
name: 'webhookUrl',
|
|
213
|
+
type: 'string',
|
|
214
|
+
displayOptions: {
|
|
215
|
+
show: {
|
|
216
|
+
operation: ['scheduleCron'],
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
default: '',
|
|
220
|
+
required: true,
|
|
221
|
+
description: 'URL to call when the cron triggers',
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
displayName: 'Payload',
|
|
225
|
+
name: 'cronPayload',
|
|
226
|
+
type: 'json',
|
|
227
|
+
displayOptions: {
|
|
228
|
+
show: {
|
|
229
|
+
operation: ['scheduleCron'],
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
default: '{}',
|
|
233
|
+
description: 'JSON payload to send with the webhook',
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
displayName: 'Timezone',
|
|
237
|
+
name: 'timezone',
|
|
238
|
+
type: 'string',
|
|
239
|
+
displayOptions: {
|
|
240
|
+
show: {
|
|
241
|
+
operation: ['scheduleCron'],
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
default: 'UTC',
|
|
245
|
+
description: 'Timezone for the cron schedule (e.g., "America/New_York")',
|
|
246
|
+
},
|
|
247
|
+
// ============================================================
|
|
248
|
+
// Fanout Operation
|
|
249
|
+
// ============================================================
|
|
250
|
+
{
|
|
251
|
+
displayName: 'Endpoints',
|
|
252
|
+
name: 'endpoints',
|
|
253
|
+
type: 'string',
|
|
254
|
+
typeOptions: {
|
|
255
|
+
multipleValues: true,
|
|
256
|
+
},
|
|
257
|
+
displayOptions: {
|
|
258
|
+
show: {
|
|
259
|
+
operation: ['fanout'],
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
default: [],
|
|
263
|
+
description: 'Webhook URLs to send the payload to',
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
displayName: 'Payload',
|
|
267
|
+
name: 'fanoutPayload',
|
|
268
|
+
type: 'json',
|
|
269
|
+
displayOptions: {
|
|
270
|
+
show: {
|
|
271
|
+
operation: ['fanout'],
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
default: '={{ $json }}',
|
|
275
|
+
description: 'JSON payload to send to all endpoints',
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
displayName: 'Fanout Options',
|
|
279
|
+
name: 'fanoutOptions',
|
|
280
|
+
type: 'collection',
|
|
281
|
+
placeholder: 'Add Option',
|
|
282
|
+
default: {},
|
|
283
|
+
displayOptions: {
|
|
284
|
+
show: {
|
|
285
|
+
operation: ['fanout'],
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
options: [
|
|
289
|
+
{
|
|
290
|
+
displayName: 'Timeout (Ms)',
|
|
291
|
+
name: 'timeout_ms',
|
|
292
|
+
type: 'number',
|
|
293
|
+
default: 10000,
|
|
294
|
+
description: 'Request timeout in milliseconds',
|
|
295
|
+
},
|
|
296
|
+
],
|
|
297
|
+
},
|
|
298
|
+
// ============================================================
|
|
299
|
+
// Dedup Check Operation
|
|
300
|
+
// ============================================================
|
|
301
|
+
{
|
|
302
|
+
displayName: 'Data',
|
|
303
|
+
name: 'dedupData',
|
|
304
|
+
type: 'json',
|
|
305
|
+
displayOptions: {
|
|
306
|
+
show: {
|
|
307
|
+
operation: ['dedupCheck'],
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
default: '={{ $json }}',
|
|
311
|
+
description: 'Data to check for duplicates',
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
displayName: 'TTL (Seconds)',
|
|
315
|
+
name: 'dedupTtl',
|
|
316
|
+
type: 'number',
|
|
317
|
+
displayOptions: {
|
|
318
|
+
show: {
|
|
319
|
+
operation: ['dedupCheck'],
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
default: 300,
|
|
323
|
+
description: 'How long to remember this data (in seconds)',
|
|
324
|
+
},
|
|
325
|
+
// ============================================================
|
|
326
|
+
// Circuit Check Operation
|
|
327
|
+
// ============================================================
|
|
328
|
+
{
|
|
329
|
+
displayName: 'Service Name',
|
|
330
|
+
name: 'serviceName',
|
|
331
|
+
type: 'string',
|
|
332
|
+
displayOptions: {
|
|
333
|
+
show: {
|
|
334
|
+
operation: ['circuitCheck'],
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
default: '',
|
|
338
|
+
required: true,
|
|
339
|
+
description: 'Name of the service to check circuit breaker for',
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
displayName: 'Record Result',
|
|
343
|
+
name: 'recordResult',
|
|
344
|
+
type: 'options',
|
|
345
|
+
displayOptions: {
|
|
346
|
+
show: {
|
|
347
|
+
operation: ['circuitCheck'],
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
options: [
|
|
351
|
+
{ name: 'None (Just Check)', value: 'none' },
|
|
352
|
+
{ name: 'Success', value: 'success' },
|
|
353
|
+
{ name: 'Failure', value: 'failure' },
|
|
354
|
+
],
|
|
355
|
+
default: 'none',
|
|
356
|
+
description: 'Optionally record a success or failure for this service',
|
|
357
|
+
},
|
|
358
|
+
],
|
|
359
|
+
};
|
|
360
|
+
async execute() {
|
|
361
|
+
const items = this.getInputData();
|
|
362
|
+
const returnData = [];
|
|
363
|
+
const credentials = await this.getCredentials('hiveApi');
|
|
364
|
+
const hive = new HiveClient_1.HiveClient({
|
|
365
|
+
host: credentials.host,
|
|
366
|
+
port: credentials.port,
|
|
367
|
+
password: credentials.password,
|
|
368
|
+
tls: credentials.tls,
|
|
369
|
+
});
|
|
370
|
+
try {
|
|
371
|
+
await hive.connect();
|
|
372
|
+
const operation = this.getNodeParameter('operation', 0);
|
|
373
|
+
for (let i = 0; i < items.length; i++) {
|
|
374
|
+
try {
|
|
375
|
+
let responseData;
|
|
376
|
+
if (operation === 'ping') {
|
|
377
|
+
responseData = await hive.ping();
|
|
378
|
+
}
|
|
379
|
+
else if (operation === 'info') {
|
|
380
|
+
responseData = await hive.info();
|
|
381
|
+
}
|
|
382
|
+
else if (operation === 'parallelHttp') {
|
|
383
|
+
const requestsData = this.getNodeParameter('requests', i);
|
|
384
|
+
const options = this.getNodeParameter('parallelHttpOptions', i);
|
|
385
|
+
const requests = (requestsData.request || []).map(req => ({
|
|
386
|
+
url: req.url,
|
|
387
|
+
method: req.method,
|
|
388
|
+
headers: req.headers ? JSON.parse(req.headers) : undefined,
|
|
389
|
+
body: req.body ? JSON.parse(req.body) : undefined,
|
|
390
|
+
}));
|
|
391
|
+
responseData = await hive.parallelHttp(requests, options);
|
|
392
|
+
}
|
|
393
|
+
else if (operation === 'scheduleCron') {
|
|
394
|
+
const cronName = this.getNodeParameter('cronName', i);
|
|
395
|
+
const cronExpression = this.getNodeParameter('cronExpression', i);
|
|
396
|
+
const webhookUrl = this.getNodeParameter('webhookUrl', i);
|
|
397
|
+
const payloadStr = this.getNodeParameter('cronPayload', i);
|
|
398
|
+
const timezone = this.getNodeParameter('timezone', i);
|
|
399
|
+
responseData = await hive.scheduleCron({
|
|
400
|
+
name: cronName,
|
|
401
|
+
expression: cronExpression,
|
|
402
|
+
webhook_url: webhookUrl,
|
|
403
|
+
payload: payloadStr ? JSON.parse(payloadStr) : {},
|
|
404
|
+
timezone,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
else if (operation === 'deleteCron') {
|
|
408
|
+
const cronName = this.getNodeParameter('cronName', i);
|
|
409
|
+
responseData = await hive.deleteCron(cronName);
|
|
410
|
+
}
|
|
411
|
+
else if (operation === 'listCrons') {
|
|
412
|
+
responseData = await hive.listCrons();
|
|
413
|
+
}
|
|
414
|
+
else if (operation === 'fanout') {
|
|
415
|
+
const endpoints = this.getNodeParameter('endpoints', i);
|
|
416
|
+
const payloadStr = this.getNodeParameter('fanoutPayload', i);
|
|
417
|
+
const options = this.getNodeParameter('fanoutOptions', i);
|
|
418
|
+
const payload = typeof payloadStr === 'string' ? JSON.parse(payloadStr) : payloadStr;
|
|
419
|
+
responseData = await hive.fanout(endpoints, payload, options);
|
|
420
|
+
}
|
|
421
|
+
else if (operation === 'dedupCheck') {
|
|
422
|
+
const dataStr = this.getNodeParameter('dedupData', i);
|
|
423
|
+
const ttl = this.getNodeParameter('dedupTtl', i);
|
|
424
|
+
const data = typeof dataStr === 'string' ? JSON.parse(dataStr) : dataStr;
|
|
425
|
+
responseData = await hive.dedupCheck(data, { ttl_seconds: ttl });
|
|
426
|
+
}
|
|
427
|
+
else if (operation === 'circuitCheck') {
|
|
428
|
+
const serviceName = this.getNodeParameter('serviceName', i);
|
|
429
|
+
const recordResult = this.getNodeParameter('recordResult', i);
|
|
430
|
+
const record = recordResult === 'none' ? undefined : recordResult;
|
|
431
|
+
responseData = await hive.circuitCheck(serviceName, record);
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
|
|
435
|
+
}
|
|
436
|
+
returnData.push({
|
|
437
|
+
json: responseData,
|
|
438
|
+
pairedItem: { item: i },
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
catch (error) {
|
|
442
|
+
if (this.continueOnFail()) {
|
|
443
|
+
returnData.push({
|
|
444
|
+
json: {
|
|
445
|
+
error: error instanceof Error ? error.message : String(error),
|
|
446
|
+
},
|
|
447
|
+
pairedItem: { item: i },
|
|
448
|
+
});
|
|
449
|
+
continue;
|
|
450
|
+
}
|
|
451
|
+
throw error;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
finally {
|
|
456
|
+
await hive.disconnect();
|
|
457
|
+
}
|
|
458
|
+
return [returnData];
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
exports.HiveAccelerator = HiveAccelerator;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="60" height="60" rx="12" fill="#4F46E5"/>
|
|
3
|
+
<path d="M15 20C15 17.7909 16.7909 16 19 16H41C43.2091 16 45 17.7909 45 20V32C45 34.2091 43.2091 36 41 36H26L18 42V36H19C16.7909 36 15 34.2091 15 32V20Z" fill="white"/>
|
|
4
|
+
<circle cx="24" cy="26" r="2" fill="#4F46E5"/>
|
|
5
|
+
<circle cx="30" cy="26" r="2" fill="#4F46E5"/>
|
|
6
|
+
<circle cx="36" cy="26" r="2" fill="#4F46E5"/>
|
|
7
|
+
</svg>
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-cribops",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "n8n community node for
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "n8n community node for reliable webhook processing with Cribops",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n-community-node-package"
|
|
7
7
|
],
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"format": "prettier nodes credentials --write",
|
|
28
28
|
"lint": "eslint nodes/**/*.ts credentials/**/*.ts --ext .ts",
|
|
29
29
|
"lintfix": "eslint nodes/**/*.ts credentials/**/*.ts --ext .ts --fix",
|
|
30
|
-
"prepublishOnly": "npm run build
|
|
30
|
+
"prepublishOnly": "npm run build",
|
|
31
31
|
"test": "npm run build && n8n-node-dev test"
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
@@ -36,15 +36,21 @@
|
|
|
36
36
|
"n8n": {
|
|
37
37
|
"n8nNodesApiVersion": 1,
|
|
38
38
|
"credentials": [
|
|
39
|
-
"dist/credentials/CribopsApi.credentials.js"
|
|
39
|
+
"dist/credentials/CribopsApi.credentials.js",
|
|
40
|
+
"dist/credentials/HiveApi.credentials.js"
|
|
40
41
|
],
|
|
41
42
|
"nodes": [
|
|
42
43
|
"dist/nodes/Cribops/Cribops.node.js",
|
|
43
|
-
"dist/nodes/CribopsTrigger/CribopsTrigger.node.js"
|
|
44
|
+
"dist/nodes/CribopsTrigger/CribopsTrigger.node.js",
|
|
45
|
+
"dist/nodes/HiveAccelerator/HiveAccelerator.node.js"
|
|
44
46
|
]
|
|
45
47
|
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"ioredis": "^5.4.1"
|
|
50
|
+
},
|
|
46
51
|
"devDependencies": {
|
|
47
52
|
"@types/node": "^24.0.12",
|
|
53
|
+
"@types/ioredis": "^4.28.10",
|
|
48
54
|
"@typescript-eslint/parser": "~8.32.0",
|
|
49
55
|
"eslint": "^8.57.0",
|
|
50
56
|
"eslint-plugin-n8n-nodes-base": "^1.16.3",
|