@mixpeek/n8n-nodes-mixpeek 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1449 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Mixpeek = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ // Helper functions outside the class
6
+ function getMethod(operation) {
7
+ switch (operation) {
8
+ case 'create':
9
+ return 'POST';
10
+ case 'update':
11
+ return 'PATCH';
12
+ case 'delete':
13
+ return 'DELETE';
14
+ case 'list':
15
+ return 'POST';
16
+ case 'execute':
17
+ return 'POST';
18
+ case 'explain':
19
+ return 'POST';
20
+ case 'confirm':
21
+ return 'POST';
22
+ default:
23
+ return 'GET';
24
+ }
25
+ }
26
+ function buildNamespaceRequest(ctx, index, operation, body) {
27
+ switch (operation) {
28
+ case 'create': {
29
+ const name = ctx.getNodeParameter('namespaceName', index);
30
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
31
+ Object.assign(body, { name }, additionalFields);
32
+ if (additionalFields.metadata) {
33
+ body.metadata = JSON.parse(additionalFields.metadata);
34
+ }
35
+ return '/v1/namespaces';
36
+ }
37
+ case 'get': {
38
+ const namespaceId = ctx.getNodeParameter('namespaceId', index);
39
+ return `/v1/namespaces/${namespaceId}`;
40
+ }
41
+ case 'update': {
42
+ const namespaceId = ctx.getNodeParameter('namespaceId', index);
43
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
44
+ Object.assign(body, additionalFields);
45
+ if (additionalFields.metadata) {
46
+ body.metadata = JSON.parse(additionalFields.metadata);
47
+ }
48
+ return `/v1/namespaces/${namespaceId}`;
49
+ }
50
+ case 'delete': {
51
+ const namespaceId = ctx.getNodeParameter('namespaceId', index);
52
+ return `/v1/namespaces/${namespaceId}`;
53
+ }
54
+ case 'list': {
55
+ const pagination = ctx.getNodeParameter('pagination', index, {});
56
+ Object.assign(body, pagination);
57
+ return '/v1/namespaces/list';
58
+ }
59
+ default:
60
+ return '/v1/namespaces/list';
61
+ }
62
+ }
63
+ function buildBucketRequest(ctx, index, operation, body) {
64
+ switch (operation) {
65
+ case 'create': {
66
+ const name = ctx.getNodeParameter('bucketName', index);
67
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
68
+ Object.assign(body, { name }, additionalFields);
69
+ if (additionalFields.schema) {
70
+ body.schema = JSON.parse(additionalFields.schema);
71
+ }
72
+ return '/v1/buckets';
73
+ }
74
+ case 'get': {
75
+ const bucketId = ctx.getNodeParameter('bucketId', index);
76
+ return `/v1/buckets/${bucketId}`;
77
+ }
78
+ case 'update': {
79
+ const bucketId = ctx.getNodeParameter('bucketId', index);
80
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
81
+ Object.assign(body, additionalFields);
82
+ if (additionalFields.schema) {
83
+ body.schema = JSON.parse(additionalFields.schema);
84
+ }
85
+ return `/v1/buckets/${bucketId}`;
86
+ }
87
+ case 'delete': {
88
+ const bucketId = ctx.getNodeParameter('bucketId', index);
89
+ return `/v1/buckets/${bucketId}`;
90
+ }
91
+ case 'list': {
92
+ const pagination = ctx.getNodeParameter('pagination', index, {});
93
+ Object.assign(body, pagination);
94
+ return '/v1/buckets/list';
95
+ }
96
+ default:
97
+ return '/v1/buckets/list';
98
+ }
99
+ }
100
+ function buildCollectionRequest(ctx, index, operation, body) {
101
+ switch (operation) {
102
+ case 'create': {
103
+ const name = ctx.getNodeParameter('collectionName', index);
104
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
105
+ Object.assign(body, { name }, additionalFields);
106
+ if (additionalFields.extractors) {
107
+ body.extractors = JSON.parse(additionalFields.extractors);
108
+ }
109
+ return '/v1/collections';
110
+ }
111
+ case 'get': {
112
+ const collectionId = ctx.getNodeParameter('collectionId', index);
113
+ return `/v1/collections/${collectionId}`;
114
+ }
115
+ case 'update': {
116
+ const collectionId = ctx.getNodeParameter('collectionId', index);
117
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
118
+ Object.assign(body, additionalFields);
119
+ if (additionalFields.extractors) {
120
+ body.extractors = JSON.parse(additionalFields.extractors);
121
+ }
122
+ return `/v1/collections/${collectionId}`;
123
+ }
124
+ case 'delete': {
125
+ const collectionId = ctx.getNodeParameter('collectionId', index);
126
+ return `/v1/collections/${collectionId}`;
127
+ }
128
+ case 'list': {
129
+ const pagination = ctx.getNodeParameter('pagination', index, {});
130
+ Object.assign(body, pagination);
131
+ return '/v1/collections/list';
132
+ }
133
+ default:
134
+ return '/v1/collections/list';
135
+ }
136
+ }
137
+ function buildDocumentRequest(ctx, index, operation, body) {
138
+ const collectionId = ctx.getNodeParameter('collectionId', index);
139
+ switch (operation) {
140
+ case 'create': {
141
+ const documentData = ctx.getNodeParameter('documentData', index);
142
+ Object.assign(body, JSON.parse(documentData));
143
+ return `/v1/collections/${collectionId}/documents`;
144
+ }
145
+ case 'get': {
146
+ const documentId = ctx.getNodeParameter('documentId', index);
147
+ return `/v1/collections/${collectionId}/documents/${documentId}`;
148
+ }
149
+ case 'update': {
150
+ const documentId = ctx.getNodeParameter('documentId', index);
151
+ const updateData = ctx.getNodeParameter('updateData', index);
152
+ Object.assign(body, JSON.parse(updateData));
153
+ return `/v1/collections/${collectionId}/documents/${documentId}`;
154
+ }
155
+ case 'delete': {
156
+ const documentId = ctx.getNodeParameter('documentId', index);
157
+ return `/v1/collections/${collectionId}/documents/${documentId}`;
158
+ }
159
+ case 'list': {
160
+ const pagination = ctx.getNodeParameter('pagination', index, {});
161
+ Object.assign(body, pagination);
162
+ return `/v1/collections/${collectionId}/documents/list`;
163
+ }
164
+ default:
165
+ return `/v1/collections/${collectionId}/documents/list`;
166
+ }
167
+ }
168
+ function buildRetrieverRequest(ctx, index, operation, body) {
169
+ switch (operation) {
170
+ case 'create': {
171
+ const name = ctx.getNodeParameter('retrieverName', index);
172
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
173
+ Object.assign(body, { name }, additionalFields);
174
+ if (additionalFields.stages) {
175
+ body.stages = JSON.parse(additionalFields.stages);
176
+ }
177
+ return '/v1/retrievers';
178
+ }
179
+ case 'get': {
180
+ const retrieverId = ctx.getNodeParameter('retrieverId', index);
181
+ return `/v1/retrievers/${retrieverId}`;
182
+ }
183
+ case 'update': {
184
+ const retrieverId = ctx.getNodeParameter('retrieverId', index);
185
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
186
+ Object.assign(body, additionalFields);
187
+ if (additionalFields.stages) {
188
+ body.stages = JSON.parse(additionalFields.stages);
189
+ }
190
+ return `/v1/retrievers/${retrieverId}`;
191
+ }
192
+ case 'delete': {
193
+ const retrieverId = ctx.getNodeParameter('retrieverId', index);
194
+ return `/v1/retrievers/${retrieverId}`;
195
+ }
196
+ case 'execute': {
197
+ const retrieverId = ctx.getNodeParameter('retrieverId', index);
198
+ const query = ctx.getNodeParameter('query', index);
199
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
200
+ Object.assign(body, { query }, additionalFields);
201
+ if (additionalFields.filters) {
202
+ body.filters = JSON.parse(additionalFields.filters);
203
+ }
204
+ return `/v1/retrievers/${retrieverId}/execute`;
205
+ }
206
+ case 'explain': {
207
+ const retrieverId = ctx.getNodeParameter('retrieverId', index);
208
+ const query = ctx.getNodeParameter('query', index);
209
+ Object.assign(body, { query });
210
+ return `/v1/retrievers/${retrieverId}/execute/explain`;
211
+ }
212
+ case 'list': {
213
+ const pagination = ctx.getNodeParameter('pagination', index, {});
214
+ Object.assign(body, pagination);
215
+ return '/v1/retrievers/list';
216
+ }
217
+ default:
218
+ return '/v1/retrievers/list';
219
+ }
220
+ }
221
+ function buildUploadRequest(ctx, index, operation, body) {
222
+ const bucketId = ctx.getNodeParameter('bucketId', index);
223
+ switch (operation) {
224
+ case 'create': {
225
+ const filename = ctx.getNodeParameter('filename', index);
226
+ const contentType = ctx.getNodeParameter('contentType', index);
227
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
228
+ Object.assign(body, { filename, content_type: contentType }, additionalFields);
229
+ if (additionalFields.metadata) {
230
+ body.metadata = JSON.parse(additionalFields.metadata);
231
+ }
232
+ return `/v1/buckets/${bucketId}/uploads`;
233
+ }
234
+ case 'get': {
235
+ const uploadId = ctx.getNodeParameter('uploadId', index);
236
+ return `/v1/buckets/${bucketId}/uploads/${uploadId}`;
237
+ }
238
+ case 'confirm': {
239
+ const uploadId = ctx.getNodeParameter('uploadId', index);
240
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
241
+ Object.assign(body, additionalFields);
242
+ return `/v1/buckets/${bucketId}/uploads/${uploadId}/confirm`;
243
+ }
244
+ case 'delete': {
245
+ const uploadId = ctx.getNodeParameter('uploadId', index);
246
+ return `/v1/buckets/${bucketId}/uploads/${uploadId}`;
247
+ }
248
+ case 'list': {
249
+ const pagination = ctx.getNodeParameter('pagination', index, {});
250
+ Object.assign(body, pagination);
251
+ return `/v1/buckets/${bucketId}/uploads/list`;
252
+ }
253
+ default:
254
+ return `/v1/buckets/${bucketId}/uploads/list`;
255
+ }
256
+ }
257
+ function buildTaskRequest(ctx, index, operation, body) {
258
+ switch (operation) {
259
+ case 'get': {
260
+ const taskId = ctx.getNodeParameter('taskId', index);
261
+ return `/v1/tasks/${taskId}`;
262
+ }
263
+ case 'list': {
264
+ const pagination = ctx.getNodeParameter('pagination', index, {});
265
+ Object.assign(body, pagination);
266
+ return '/v1/tasks/list';
267
+ }
268
+ default:
269
+ return '/v1/tasks/list';
270
+ }
271
+ }
272
+ function buildInferenceBody(ctx, index) {
273
+ const model = ctx.getNodeParameter('model', index);
274
+ const input = ctx.getNodeParameter('input', index);
275
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
276
+ const body = {
277
+ model,
278
+ input: JSON.parse(input),
279
+ };
280
+ if (additionalFields.parameters) {
281
+ body.parameters = JSON.parse(additionalFields.parameters);
282
+ }
283
+ return body;
284
+ }
285
+ function buildTaxonomyRequest(ctx, index, operation, body) {
286
+ switch (operation) {
287
+ case 'create': {
288
+ const name = ctx.getNodeParameter('taxonomyName', index);
289
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
290
+ Object.assign(body, { name }, additionalFields);
291
+ if (additionalFields.categories) {
292
+ body.categories = JSON.parse(additionalFields.categories);
293
+ }
294
+ return '/v1/taxonomies';
295
+ }
296
+ case 'get': {
297
+ const taxonomyId = ctx.getNodeParameter('taxonomyId', index);
298
+ return `/v1/taxonomies/${taxonomyId}`;
299
+ }
300
+ case 'update': {
301
+ const taxonomyId = ctx.getNodeParameter('taxonomyId', index);
302
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
303
+ Object.assign(body, additionalFields);
304
+ if (additionalFields.categories) {
305
+ body.categories = JSON.parse(additionalFields.categories);
306
+ }
307
+ return `/v1/taxonomies/${taxonomyId}`;
308
+ }
309
+ case 'delete': {
310
+ const taxonomyId = ctx.getNodeParameter('taxonomyId', index);
311
+ return `/v1/taxonomies/${taxonomyId}`;
312
+ }
313
+ case 'list': {
314
+ const pagination = ctx.getNodeParameter('pagination', index, {});
315
+ Object.assign(body, pagination);
316
+ return '/v1/taxonomies/list';
317
+ }
318
+ default:
319
+ return '/v1/taxonomies/list';
320
+ }
321
+ }
322
+ function buildClusterRequest(ctx, index, operation, body) {
323
+ switch (operation) {
324
+ case 'create': {
325
+ const name = ctx.getNodeParameter('clusterName', index);
326
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
327
+ Object.assign(body, { name }, additionalFields);
328
+ if (additionalFields.configuration) {
329
+ body.configuration = JSON.parse(additionalFields.configuration);
330
+ }
331
+ return '/v1/clusters';
332
+ }
333
+ case 'get': {
334
+ const clusterId = ctx.getNodeParameter('clusterId', index);
335
+ return `/v1/clusters/${clusterId}`;
336
+ }
337
+ case 'execute': {
338
+ const clusterId = ctx.getNodeParameter('clusterId', index);
339
+ return `/v1/clusters/${clusterId}/execute`;
340
+ }
341
+ case 'delete': {
342
+ const clusterId = ctx.getNodeParameter('clusterId', index);
343
+ return `/v1/clusters/${clusterId}`;
344
+ }
345
+ case 'list': {
346
+ const pagination = ctx.getNodeParameter('pagination', index, {});
347
+ Object.assign(body, pagination);
348
+ return '/v1/clusters/list';
349
+ }
350
+ default:
351
+ return '/v1/clusters/list';
352
+ }
353
+ }
354
+ function buildWebhookRequest(ctx, index, operation, body) {
355
+ switch (operation) {
356
+ case 'create': {
357
+ const url = ctx.getNodeParameter('webhookUrl', index);
358
+ const events = ctx.getNodeParameter('events', index);
359
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
360
+ Object.assign(body, { url, events }, additionalFields);
361
+ return '/v1/organizations/webhooks';
362
+ }
363
+ case 'get': {
364
+ const webhookId = ctx.getNodeParameter('webhookId', index);
365
+ return `/v1/organizations/webhooks/${webhookId}`;
366
+ }
367
+ case 'update': {
368
+ const webhookId = ctx.getNodeParameter('webhookId', index);
369
+ const events = ctx.getNodeParameter('events', index);
370
+ const additionalFields = ctx.getNodeParameter('additionalFields', index);
371
+ Object.assign(body, { events }, additionalFields);
372
+ return `/v1/organizations/webhooks/${webhookId}`;
373
+ }
374
+ case 'delete': {
375
+ const webhookId = ctx.getNodeParameter('webhookId', index);
376
+ return `/v1/organizations/webhooks/${webhookId}`;
377
+ }
378
+ case 'list': {
379
+ const pagination = ctx.getNodeParameter('pagination', index, {});
380
+ Object.assign(body, pagination);
381
+ return '/v1/organizations/webhooks/list';
382
+ }
383
+ default:
384
+ return '/v1/organizations/webhooks/list';
385
+ }
386
+ }
387
+ class Mixpeek {
388
+ constructor() {
389
+ this.description = {
390
+ displayName: 'Mixpeek',
391
+ name: 'mixpeek',
392
+ icon: 'file:mixpeek.svg',
393
+ group: ['transform'],
394
+ version: 1,
395
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
396
+ description: 'Interact with Mixpeek multimodal data processing and semantic search API',
397
+ defaults: {
398
+ name: 'Mixpeek',
399
+ },
400
+ inputs: ['main'],
401
+ outputs: ['main'],
402
+ credentials: [
403
+ {
404
+ name: 'mixpeekApi',
405
+ required: true,
406
+ },
407
+ ],
408
+ properties: [
409
+ // Resource selector
410
+ {
411
+ displayName: 'Resource',
412
+ name: 'resource',
413
+ type: 'options',
414
+ noDataExpression: true,
415
+ options: [
416
+ { name: 'Bucket', value: 'bucket' },
417
+ { name: 'Collection', value: 'collection' },
418
+ { name: 'Cluster', value: 'cluster' },
419
+ { name: 'Document', value: 'document' },
420
+ { name: 'Inference', value: 'inference' },
421
+ { name: 'Namespace', value: 'namespace' },
422
+ { name: 'Retriever', value: 'retriever' },
423
+ { name: 'Task', value: 'task' },
424
+ { name: 'Taxonomy', value: 'taxonomy' },
425
+ { name: 'Upload', value: 'upload' },
426
+ { name: 'Webhook', value: 'webhook' },
427
+ ],
428
+ default: 'namespace',
429
+ },
430
+ // ==================== NAMESPACE OPERATIONS ====================
431
+ {
432
+ displayName: 'Operation',
433
+ name: 'operation',
434
+ type: 'options',
435
+ noDataExpression: true,
436
+ displayOptions: {
437
+ show: {
438
+ resource: ['namespace'],
439
+ },
440
+ },
441
+ options: [
442
+ { name: 'Create', value: 'create', action: 'Create a namespace' },
443
+ { name: 'Delete', value: 'delete', action: 'Delete a namespace' },
444
+ { name: 'Get', value: 'get', action: 'Get a namespace' },
445
+ { name: 'List', value: 'list', action: 'List namespaces' },
446
+ { name: 'Update', value: 'update', action: 'Update a namespace' },
447
+ ],
448
+ default: 'list',
449
+ },
450
+ // Namespace fields
451
+ {
452
+ displayName: 'Namespace ID',
453
+ name: 'namespaceId',
454
+ type: 'string',
455
+ default: '',
456
+ required: true,
457
+ displayOptions: {
458
+ show: {
459
+ resource: ['namespace'],
460
+ operation: ['get', 'update', 'delete'],
461
+ },
462
+ },
463
+ description: 'The ID of the namespace',
464
+ },
465
+ {
466
+ displayName: 'Namespace Name',
467
+ name: 'namespaceName',
468
+ type: 'string',
469
+ default: '',
470
+ required: true,
471
+ displayOptions: {
472
+ show: {
473
+ resource: ['namespace'],
474
+ operation: ['create'],
475
+ },
476
+ },
477
+ description: 'The name for the new namespace',
478
+ },
479
+ {
480
+ displayName: 'Additional Fields',
481
+ name: 'additionalFields',
482
+ type: 'collection',
483
+ placeholder: 'Add Field',
484
+ default: {},
485
+ displayOptions: {
486
+ show: {
487
+ resource: ['namespace'],
488
+ operation: ['create', 'update'],
489
+ },
490
+ },
491
+ options: [
492
+ {
493
+ displayName: 'Description',
494
+ name: 'description',
495
+ type: 'string',
496
+ default: '',
497
+ },
498
+ {
499
+ displayName: 'Metadata (JSON)',
500
+ name: 'metadata',
501
+ type: 'json',
502
+ default: '{}',
503
+ description: 'Additional metadata as JSON',
504
+ },
505
+ ],
506
+ },
507
+ // ==================== BUCKET OPERATIONS ====================
508
+ {
509
+ displayName: 'Operation',
510
+ name: 'operation',
511
+ type: 'options',
512
+ noDataExpression: true,
513
+ displayOptions: {
514
+ show: {
515
+ resource: ['bucket'],
516
+ },
517
+ },
518
+ options: [
519
+ { name: 'Create', value: 'create', action: 'Create a bucket' },
520
+ { name: 'Delete', value: 'delete', action: 'Delete a bucket' },
521
+ { name: 'Get', value: 'get', action: 'Get a bucket' },
522
+ { name: 'List', value: 'list', action: 'List buckets' },
523
+ { name: 'Update', value: 'update', action: 'Update a bucket' },
524
+ ],
525
+ default: 'list',
526
+ },
527
+ {
528
+ displayName: 'Bucket ID',
529
+ name: 'bucketId',
530
+ type: 'string',
531
+ default: '',
532
+ required: true,
533
+ displayOptions: {
534
+ show: {
535
+ resource: ['bucket'],
536
+ operation: ['get', 'update', 'delete'],
537
+ },
538
+ },
539
+ },
540
+ {
541
+ displayName: 'Bucket Name',
542
+ name: 'bucketName',
543
+ type: 'string',
544
+ default: '',
545
+ required: true,
546
+ displayOptions: {
547
+ show: {
548
+ resource: ['bucket'],
549
+ operation: ['create'],
550
+ },
551
+ },
552
+ },
553
+ {
554
+ displayName: 'Additional Fields',
555
+ name: 'additionalFields',
556
+ type: 'collection',
557
+ placeholder: 'Add Field',
558
+ default: {},
559
+ displayOptions: {
560
+ show: {
561
+ resource: ['bucket'],
562
+ operation: ['create', 'update'],
563
+ },
564
+ },
565
+ options: [
566
+ {
567
+ displayName: 'Description',
568
+ name: 'description',
569
+ type: 'string',
570
+ default: '',
571
+ },
572
+ {
573
+ displayName: 'Schema (JSON)',
574
+ name: 'schema',
575
+ type: 'json',
576
+ default: '{}',
577
+ description: 'Bucket schema definition',
578
+ },
579
+ {
580
+ displayName: 'Namespace ID',
581
+ name: 'namespace_id',
582
+ type: 'string',
583
+ default: '',
584
+ },
585
+ ],
586
+ },
587
+ // ==================== COLLECTION OPERATIONS ====================
588
+ {
589
+ displayName: 'Operation',
590
+ name: 'operation',
591
+ type: 'options',
592
+ noDataExpression: true,
593
+ displayOptions: {
594
+ show: {
595
+ resource: ['collection'],
596
+ },
597
+ },
598
+ options: [
599
+ { name: 'Create', value: 'create', action: 'Create a collection' },
600
+ { name: 'Delete', value: 'delete', action: 'Delete a collection' },
601
+ { name: 'Get', value: 'get', action: 'Get a collection' },
602
+ { name: 'List', value: 'list', action: 'List collections' },
603
+ { name: 'Update', value: 'update', action: 'Update a collection' },
604
+ ],
605
+ default: 'list',
606
+ },
607
+ {
608
+ displayName: 'Collection ID',
609
+ name: 'collectionId',
610
+ type: 'string',
611
+ default: '',
612
+ required: true,
613
+ displayOptions: {
614
+ show: {
615
+ resource: ['collection'],
616
+ operation: ['get', 'update', 'delete'],
617
+ },
618
+ },
619
+ },
620
+ {
621
+ displayName: 'Collection Name',
622
+ name: 'collectionName',
623
+ type: 'string',
624
+ default: '',
625
+ required: true,
626
+ displayOptions: {
627
+ show: {
628
+ resource: ['collection'],
629
+ operation: ['create'],
630
+ },
631
+ },
632
+ },
633
+ {
634
+ displayName: 'Additional Fields',
635
+ name: 'additionalFields',
636
+ type: 'collection',
637
+ placeholder: 'Add Field',
638
+ default: {},
639
+ displayOptions: {
640
+ show: {
641
+ resource: ['collection'],
642
+ operation: ['create', 'update'],
643
+ },
644
+ },
645
+ options: [
646
+ {
647
+ displayName: 'Description',
648
+ name: 'description',
649
+ type: 'string',
650
+ default: '',
651
+ },
652
+ {
653
+ displayName: 'Bucket ID',
654
+ name: 'bucket_id',
655
+ type: 'string',
656
+ default: '',
657
+ },
658
+ {
659
+ displayName: 'Extractors (JSON)',
660
+ name: 'extractors',
661
+ type: 'json',
662
+ default: '[]',
663
+ description: 'Feature extractors configuration',
664
+ },
665
+ {
666
+ displayName: 'Namespace ID',
667
+ name: 'namespace_id',
668
+ type: 'string',
669
+ default: '',
670
+ },
671
+ ],
672
+ },
673
+ // ==================== DOCUMENT OPERATIONS ====================
674
+ {
675
+ displayName: 'Operation',
676
+ name: 'operation',
677
+ type: 'options',
678
+ noDataExpression: true,
679
+ displayOptions: {
680
+ show: {
681
+ resource: ['document'],
682
+ },
683
+ },
684
+ options: [
685
+ { name: 'Create', value: 'create', action: 'Create a document' },
686
+ { name: 'Delete', value: 'delete', action: 'Delete a document' },
687
+ { name: 'Get', value: 'get', action: 'Get a document' },
688
+ { name: 'List', value: 'list', action: 'List documents' },
689
+ { name: 'Update', value: 'update', action: 'Update a document' },
690
+ ],
691
+ default: 'list',
692
+ },
693
+ {
694
+ displayName: 'Collection ID',
695
+ name: 'collectionId',
696
+ type: 'string',
697
+ default: '',
698
+ required: true,
699
+ displayOptions: {
700
+ show: {
701
+ resource: ['document'],
702
+ },
703
+ },
704
+ description: 'The collection ID containing the documents',
705
+ },
706
+ {
707
+ displayName: 'Document ID',
708
+ name: 'documentId',
709
+ type: 'string',
710
+ default: '',
711
+ required: true,
712
+ displayOptions: {
713
+ show: {
714
+ resource: ['document'],
715
+ operation: ['get', 'update', 'delete'],
716
+ },
717
+ },
718
+ },
719
+ {
720
+ displayName: 'Document Data (JSON)',
721
+ name: 'documentData',
722
+ type: 'json',
723
+ default: '{}',
724
+ required: true,
725
+ displayOptions: {
726
+ show: {
727
+ resource: ['document'],
728
+ operation: ['create'],
729
+ },
730
+ },
731
+ description: 'The document data as JSON',
732
+ },
733
+ {
734
+ displayName: 'Update Data (JSON)',
735
+ name: 'updateData',
736
+ type: 'json',
737
+ default: '{}',
738
+ required: true,
739
+ displayOptions: {
740
+ show: {
741
+ resource: ['document'],
742
+ operation: ['update'],
743
+ },
744
+ },
745
+ },
746
+ // ==================== RETRIEVER OPERATIONS ====================
747
+ {
748
+ displayName: 'Operation',
749
+ name: 'operation',
750
+ type: 'options',
751
+ noDataExpression: true,
752
+ displayOptions: {
753
+ show: {
754
+ resource: ['retriever'],
755
+ },
756
+ },
757
+ options: [
758
+ { name: 'Create', value: 'create', action: 'Create a retriever' },
759
+ { name: 'Delete', value: 'delete', action: 'Delete a retriever' },
760
+ { name: 'Execute', value: 'execute', action: 'Execute a retriever search' },
761
+ { name: 'Explain', value: 'explain', action: 'Explain retriever execution plan' },
762
+ { name: 'Get', value: 'get', action: 'Get a retriever' },
763
+ { name: 'List', value: 'list', action: 'List retrievers' },
764
+ { name: 'Update', value: 'update', action: 'Update a retriever' },
765
+ ],
766
+ default: 'execute',
767
+ },
768
+ {
769
+ displayName: 'Retriever ID',
770
+ name: 'retrieverId',
771
+ type: 'string',
772
+ default: '',
773
+ required: true,
774
+ displayOptions: {
775
+ show: {
776
+ resource: ['retriever'],
777
+ operation: ['get', 'update', 'delete', 'execute', 'explain'],
778
+ },
779
+ },
780
+ },
781
+ {
782
+ displayName: 'Retriever Name',
783
+ name: 'retrieverName',
784
+ type: 'string',
785
+ default: '',
786
+ required: true,
787
+ displayOptions: {
788
+ show: {
789
+ resource: ['retriever'],
790
+ operation: ['create'],
791
+ },
792
+ },
793
+ },
794
+ {
795
+ displayName: 'Query',
796
+ name: 'query',
797
+ type: 'string',
798
+ default: '',
799
+ required: true,
800
+ displayOptions: {
801
+ show: {
802
+ resource: ['retriever'],
803
+ operation: ['execute', 'explain'],
804
+ },
805
+ },
806
+ description: 'The search query text',
807
+ },
808
+ {
809
+ displayName: 'Additional Fields',
810
+ name: 'additionalFields',
811
+ type: 'collection',
812
+ placeholder: 'Add Field',
813
+ default: {},
814
+ displayOptions: {
815
+ show: {
816
+ resource: ['retriever'],
817
+ operation: ['create', 'update', 'execute'],
818
+ },
819
+ },
820
+ options: [
821
+ {
822
+ displayName: 'Description',
823
+ name: 'description',
824
+ type: 'string',
825
+ default: '',
826
+ },
827
+ {
828
+ displayName: 'Stages (JSON)',
829
+ name: 'stages',
830
+ type: 'json',
831
+ default: '[]',
832
+ description: 'Retriever pipeline stages configuration',
833
+ },
834
+ {
835
+ displayName: 'Filters (JSON)',
836
+ name: 'filters',
837
+ type: 'json',
838
+ default: '{}',
839
+ description: 'Query filters',
840
+ },
841
+ {
842
+ displayName: 'Limit',
843
+ name: 'limit',
844
+ type: 'number',
845
+ default: 10,
846
+ description: 'Maximum number of results',
847
+ },
848
+ {
849
+ displayName: 'Namespace ID',
850
+ name: 'namespace_id',
851
+ type: 'string',
852
+ default: '',
853
+ },
854
+ ],
855
+ },
856
+ // ==================== UPLOAD OPERATIONS ====================
857
+ {
858
+ displayName: 'Operation',
859
+ name: 'operation',
860
+ type: 'options',
861
+ noDataExpression: true,
862
+ displayOptions: {
863
+ show: {
864
+ resource: ['upload'],
865
+ },
866
+ },
867
+ options: [
868
+ { name: 'Confirm', value: 'confirm', action: 'Confirm an upload' },
869
+ { name: 'Create Presigned URL', value: 'create', action: 'Create presigned upload URL' },
870
+ { name: 'Delete', value: 'delete', action: 'Delete an upload' },
871
+ { name: 'Get', value: 'get', action: 'Get upload details' },
872
+ { name: 'List', value: 'list', action: 'List uploads' },
873
+ ],
874
+ default: 'create',
875
+ },
876
+ {
877
+ displayName: 'Bucket ID',
878
+ name: 'bucketId',
879
+ type: 'string',
880
+ default: '',
881
+ required: true,
882
+ displayOptions: {
883
+ show: {
884
+ resource: ['upload'],
885
+ },
886
+ },
887
+ },
888
+ {
889
+ displayName: 'Upload ID',
890
+ name: 'uploadId',
891
+ type: 'string',
892
+ default: '',
893
+ required: true,
894
+ displayOptions: {
895
+ show: {
896
+ resource: ['upload'],
897
+ operation: ['get', 'confirm', 'delete'],
898
+ },
899
+ },
900
+ },
901
+ {
902
+ displayName: 'Filename',
903
+ name: 'filename',
904
+ type: 'string',
905
+ default: '',
906
+ required: true,
907
+ displayOptions: {
908
+ show: {
909
+ resource: ['upload'],
910
+ operation: ['create'],
911
+ },
912
+ },
913
+ description: 'The name of the file to upload',
914
+ },
915
+ {
916
+ displayName: 'Content Type',
917
+ name: 'contentType',
918
+ type: 'string',
919
+ default: 'application/octet-stream',
920
+ displayOptions: {
921
+ show: {
922
+ resource: ['upload'],
923
+ operation: ['create'],
924
+ },
925
+ },
926
+ description: 'The MIME type of the file',
927
+ },
928
+ {
929
+ displayName: 'Additional Fields',
930
+ name: 'additionalFields',
931
+ type: 'collection',
932
+ placeholder: 'Add Field',
933
+ default: {},
934
+ displayOptions: {
935
+ show: {
936
+ resource: ['upload'],
937
+ operation: ['create', 'confirm'],
938
+ },
939
+ },
940
+ options: [
941
+ {
942
+ displayName: 'File Hash',
943
+ name: 'file_hash',
944
+ type: 'string',
945
+ default: '',
946
+ description: 'SHA-256 hash for deduplication',
947
+ },
948
+ {
949
+ displayName: 'Metadata (JSON)',
950
+ name: 'metadata',
951
+ type: 'json',
952
+ default: '{}',
953
+ },
954
+ {
955
+ displayName: 'ETag',
956
+ name: 'etag',
957
+ type: 'string',
958
+ default: '',
959
+ description: 'ETag from S3 upload response (for confirm)',
960
+ },
961
+ {
962
+ displayName: 'File Size',
963
+ name: 'file_size',
964
+ type: 'number',
965
+ default: 0,
966
+ description: 'File size in bytes (for confirm)',
967
+ },
968
+ ],
969
+ },
970
+ // ==================== TASK OPERATIONS ====================
971
+ {
972
+ displayName: 'Operation',
973
+ name: 'operation',
974
+ type: 'options',
975
+ noDataExpression: true,
976
+ displayOptions: {
977
+ show: {
978
+ resource: ['task'],
979
+ },
980
+ },
981
+ options: [
982
+ { name: 'Get', value: 'get', action: 'Get task status' },
983
+ { name: 'List', value: 'list', action: 'List tasks' },
984
+ ],
985
+ default: 'get',
986
+ },
987
+ {
988
+ displayName: 'Task ID',
989
+ name: 'taskId',
990
+ type: 'string',
991
+ default: '',
992
+ required: true,
993
+ displayOptions: {
994
+ show: {
995
+ resource: ['task'],
996
+ operation: ['get'],
997
+ },
998
+ },
999
+ },
1000
+ // ==================== INFERENCE OPERATIONS ====================
1001
+ {
1002
+ displayName: 'Operation',
1003
+ name: 'operation',
1004
+ type: 'options',
1005
+ noDataExpression: true,
1006
+ displayOptions: {
1007
+ show: {
1008
+ resource: ['inference'],
1009
+ },
1010
+ },
1011
+ options: [
1012
+ { name: 'Execute', value: 'execute', action: 'Execute inference' },
1013
+ ],
1014
+ default: 'execute',
1015
+ },
1016
+ {
1017
+ displayName: 'Model',
1018
+ name: 'model',
1019
+ type: 'string',
1020
+ default: '',
1021
+ required: true,
1022
+ displayOptions: {
1023
+ show: {
1024
+ resource: ['inference'],
1025
+ operation: ['execute'],
1026
+ },
1027
+ },
1028
+ description: 'The model to use (e.g., openai/gpt-4, anthropic/claude-3)',
1029
+ },
1030
+ {
1031
+ displayName: 'Input (JSON)',
1032
+ name: 'input',
1033
+ type: 'json',
1034
+ default: '{}',
1035
+ required: true,
1036
+ displayOptions: {
1037
+ show: {
1038
+ resource: ['inference'],
1039
+ operation: ['execute'],
1040
+ },
1041
+ },
1042
+ description: 'The input for the model',
1043
+ },
1044
+ {
1045
+ displayName: 'Additional Fields',
1046
+ name: 'additionalFields',
1047
+ type: 'collection',
1048
+ placeholder: 'Add Field',
1049
+ default: {},
1050
+ displayOptions: {
1051
+ show: {
1052
+ resource: ['inference'],
1053
+ operation: ['execute'],
1054
+ },
1055
+ },
1056
+ options: [
1057
+ {
1058
+ displayName: 'Parameters (JSON)',
1059
+ name: 'parameters',
1060
+ type: 'json',
1061
+ default: '{}',
1062
+ description: 'Model-specific parameters',
1063
+ },
1064
+ ],
1065
+ },
1066
+ // ==================== TAXONOMY OPERATIONS ====================
1067
+ {
1068
+ displayName: 'Operation',
1069
+ name: 'operation',
1070
+ type: 'options',
1071
+ noDataExpression: true,
1072
+ displayOptions: {
1073
+ show: {
1074
+ resource: ['taxonomy'],
1075
+ },
1076
+ },
1077
+ options: [
1078
+ { name: 'Create', value: 'create', action: 'Create a taxonomy' },
1079
+ { name: 'Delete', value: 'delete', action: 'Delete a taxonomy' },
1080
+ { name: 'Get', value: 'get', action: 'Get a taxonomy' },
1081
+ { name: 'List', value: 'list', action: 'List taxonomies' },
1082
+ { name: 'Update', value: 'update', action: 'Update a taxonomy' },
1083
+ ],
1084
+ default: 'list',
1085
+ },
1086
+ {
1087
+ displayName: 'Taxonomy ID',
1088
+ name: 'taxonomyId',
1089
+ type: 'string',
1090
+ default: '',
1091
+ required: true,
1092
+ displayOptions: {
1093
+ show: {
1094
+ resource: ['taxonomy'],
1095
+ operation: ['get', 'update', 'delete'],
1096
+ },
1097
+ },
1098
+ },
1099
+ {
1100
+ displayName: 'Taxonomy Name',
1101
+ name: 'taxonomyName',
1102
+ type: 'string',
1103
+ default: '',
1104
+ required: true,
1105
+ displayOptions: {
1106
+ show: {
1107
+ resource: ['taxonomy'],
1108
+ operation: ['create'],
1109
+ },
1110
+ },
1111
+ },
1112
+ {
1113
+ displayName: 'Additional Fields',
1114
+ name: 'additionalFields',
1115
+ type: 'collection',
1116
+ placeholder: 'Add Field',
1117
+ default: {},
1118
+ displayOptions: {
1119
+ show: {
1120
+ resource: ['taxonomy'],
1121
+ operation: ['create', 'update'],
1122
+ },
1123
+ },
1124
+ options: [
1125
+ {
1126
+ displayName: 'Description',
1127
+ name: 'description',
1128
+ type: 'string',
1129
+ default: '',
1130
+ },
1131
+ {
1132
+ displayName: 'Categories (JSON)',
1133
+ name: 'categories',
1134
+ type: 'json',
1135
+ default: '[]',
1136
+ description: 'Taxonomy categories',
1137
+ },
1138
+ {
1139
+ displayName: 'Namespace ID',
1140
+ name: 'namespace_id',
1141
+ type: 'string',
1142
+ default: '',
1143
+ },
1144
+ ],
1145
+ },
1146
+ // ==================== CLUSTER OPERATIONS ====================
1147
+ {
1148
+ displayName: 'Operation',
1149
+ name: 'operation',
1150
+ type: 'options',
1151
+ noDataExpression: true,
1152
+ displayOptions: {
1153
+ show: {
1154
+ resource: ['cluster'],
1155
+ },
1156
+ },
1157
+ options: [
1158
+ { name: 'Create', value: 'create', action: 'Create a cluster' },
1159
+ { name: 'Delete', value: 'delete', action: 'Delete a cluster' },
1160
+ { name: 'Execute', value: 'execute', action: 'Execute clustering' },
1161
+ { name: 'Get', value: 'get', action: 'Get a cluster' },
1162
+ { name: 'List', value: 'list', action: 'List clusters' },
1163
+ ],
1164
+ default: 'list',
1165
+ },
1166
+ {
1167
+ displayName: 'Cluster ID',
1168
+ name: 'clusterId',
1169
+ type: 'string',
1170
+ default: '',
1171
+ required: true,
1172
+ displayOptions: {
1173
+ show: {
1174
+ resource: ['cluster'],
1175
+ operation: ['get', 'delete', 'execute'],
1176
+ },
1177
+ },
1178
+ },
1179
+ {
1180
+ displayName: 'Cluster Name',
1181
+ name: 'clusterName',
1182
+ type: 'string',
1183
+ default: '',
1184
+ required: true,
1185
+ displayOptions: {
1186
+ show: {
1187
+ resource: ['cluster'],
1188
+ operation: ['create'],
1189
+ },
1190
+ },
1191
+ },
1192
+ {
1193
+ displayName: 'Additional Fields',
1194
+ name: 'additionalFields',
1195
+ type: 'collection',
1196
+ placeholder: 'Add Field',
1197
+ default: {},
1198
+ displayOptions: {
1199
+ show: {
1200
+ resource: ['cluster'],
1201
+ operation: ['create'],
1202
+ },
1203
+ },
1204
+ options: [
1205
+ {
1206
+ displayName: 'Description',
1207
+ name: 'description',
1208
+ type: 'string',
1209
+ default: '',
1210
+ },
1211
+ {
1212
+ displayName: 'Configuration (JSON)',
1213
+ name: 'configuration',
1214
+ type: 'json',
1215
+ default: '{}',
1216
+ description: 'Clustering configuration',
1217
+ },
1218
+ {
1219
+ displayName: 'Namespace ID',
1220
+ name: 'namespace_id',
1221
+ type: 'string',
1222
+ default: '',
1223
+ },
1224
+ ],
1225
+ },
1226
+ // ==================== WEBHOOK OPERATIONS ====================
1227
+ {
1228
+ displayName: 'Operation',
1229
+ name: 'operation',
1230
+ type: 'options',
1231
+ noDataExpression: true,
1232
+ displayOptions: {
1233
+ show: {
1234
+ resource: ['webhook'],
1235
+ },
1236
+ },
1237
+ options: [
1238
+ { name: 'Create', value: 'create', action: 'Create a webhook' },
1239
+ { name: 'Delete', value: 'delete', action: 'Delete a webhook' },
1240
+ { name: 'Get', value: 'get', action: 'Get a webhook' },
1241
+ { name: 'List', value: 'list', action: 'List webhooks' },
1242
+ { name: 'Update', value: 'update', action: 'Update a webhook' },
1243
+ ],
1244
+ default: 'list',
1245
+ },
1246
+ {
1247
+ displayName: 'Webhook ID',
1248
+ name: 'webhookId',
1249
+ type: 'string',
1250
+ default: '',
1251
+ required: true,
1252
+ displayOptions: {
1253
+ show: {
1254
+ resource: ['webhook'],
1255
+ operation: ['get', 'update', 'delete'],
1256
+ },
1257
+ },
1258
+ },
1259
+ {
1260
+ displayName: 'Webhook URL',
1261
+ name: 'webhookUrl',
1262
+ type: 'string',
1263
+ default: '',
1264
+ required: true,
1265
+ displayOptions: {
1266
+ show: {
1267
+ resource: ['webhook'],
1268
+ operation: ['create'],
1269
+ },
1270
+ },
1271
+ description: 'The URL to receive webhook events',
1272
+ },
1273
+ {
1274
+ displayName: 'Events',
1275
+ name: 'events',
1276
+ type: 'multiOptions',
1277
+ options: [
1278
+ { name: 'Document Created', value: 'document.created' },
1279
+ { name: 'Document Updated', value: 'document.updated' },
1280
+ { name: 'Document Deleted', value: 'document.deleted' },
1281
+ { name: 'Upload Completed', value: 'upload.completed' },
1282
+ { name: 'Task Completed', value: 'task.completed' },
1283
+ { name: 'Task Failed', value: 'task.failed' },
1284
+ ],
1285
+ default: [],
1286
+ required: true,
1287
+ displayOptions: {
1288
+ show: {
1289
+ resource: ['webhook'],
1290
+ operation: ['create', 'update'],
1291
+ },
1292
+ },
1293
+ },
1294
+ {
1295
+ displayName: 'Additional Fields',
1296
+ name: 'additionalFields',
1297
+ type: 'collection',
1298
+ placeholder: 'Add Field',
1299
+ default: {},
1300
+ displayOptions: {
1301
+ show: {
1302
+ resource: ['webhook'],
1303
+ operation: ['create', 'update'],
1304
+ },
1305
+ },
1306
+ options: [
1307
+ {
1308
+ displayName: 'Secret',
1309
+ name: 'secret',
1310
+ type: 'string',
1311
+ typeOptions: { password: true },
1312
+ default: '',
1313
+ description: 'Secret for webhook signature verification',
1314
+ },
1315
+ {
1316
+ displayName: 'Active',
1317
+ name: 'active',
1318
+ type: 'boolean',
1319
+ default: true,
1320
+ },
1321
+ ],
1322
+ },
1323
+ // ==================== PAGINATION OPTIONS (shared) ====================
1324
+ {
1325
+ displayName: 'Pagination',
1326
+ name: 'pagination',
1327
+ type: 'collection',
1328
+ placeholder: 'Add Pagination',
1329
+ default: {},
1330
+ displayOptions: {
1331
+ show: {
1332
+ operation: ['list'],
1333
+ },
1334
+ },
1335
+ options: [
1336
+ {
1337
+ displayName: 'Limit',
1338
+ name: 'limit',
1339
+ type: 'number',
1340
+ default: 50,
1341
+ description: 'Maximum number of items to return',
1342
+ },
1343
+ {
1344
+ displayName: 'Offset',
1345
+ name: 'offset',
1346
+ type: 'number',
1347
+ default: 0,
1348
+ description: 'Number of items to skip',
1349
+ },
1350
+ {
1351
+ displayName: 'Cursor',
1352
+ name: 'cursor',
1353
+ type: 'string',
1354
+ default: '',
1355
+ description: 'Pagination cursor for next page',
1356
+ },
1357
+ ],
1358
+ },
1359
+ ],
1360
+ };
1361
+ }
1362
+ async execute() {
1363
+ const items = this.getInputData();
1364
+ const returnData = [];
1365
+ const resource = this.getNodeParameter('resource', 0);
1366
+ const operation = this.getNodeParameter('operation', 0);
1367
+ const credentials = await this.getCredentials('mixpeekApi');
1368
+ const baseUrl = credentials.baseUrl || 'https://api.mixpeek.com';
1369
+ for (let i = 0; i < items.length; i++) {
1370
+ try {
1371
+ let endpoint = '';
1372
+ let method = 'GET';
1373
+ let body = {};
1374
+ // Build request based on resource and operation
1375
+ switch (resource) {
1376
+ case 'namespace':
1377
+ endpoint = buildNamespaceRequest(this, i, operation, body);
1378
+ method = getMethod(operation);
1379
+ break;
1380
+ case 'bucket':
1381
+ endpoint = buildBucketRequest(this, i, operation, body);
1382
+ method = getMethod(operation);
1383
+ break;
1384
+ case 'collection':
1385
+ endpoint = buildCollectionRequest(this, i, operation, body);
1386
+ method = getMethod(operation);
1387
+ break;
1388
+ case 'document':
1389
+ endpoint = buildDocumentRequest(this, i, operation, body);
1390
+ method = getMethod(operation);
1391
+ break;
1392
+ case 'retriever':
1393
+ endpoint = buildRetrieverRequest(this, i, operation, body);
1394
+ method = getMethod(operation);
1395
+ break;
1396
+ case 'upload':
1397
+ endpoint = buildUploadRequest(this, i, operation, body);
1398
+ method = getMethod(operation);
1399
+ break;
1400
+ case 'task':
1401
+ endpoint = buildTaskRequest(this, i, operation, body);
1402
+ method = getMethod(operation);
1403
+ break;
1404
+ case 'inference':
1405
+ endpoint = '/v1/inference';
1406
+ method = 'POST';
1407
+ body = buildInferenceBody(this, i);
1408
+ break;
1409
+ case 'taxonomy':
1410
+ endpoint = buildTaxonomyRequest(this, i, operation, body);
1411
+ method = getMethod(operation);
1412
+ break;
1413
+ case 'cluster':
1414
+ endpoint = buildClusterRequest(this, i, operation, body);
1415
+ method = getMethod(operation);
1416
+ break;
1417
+ case 'webhook':
1418
+ endpoint = buildWebhookRequest(this, i, operation, body);
1419
+ method = getMethod(operation);
1420
+ break;
1421
+ default:
1422
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown resource: ${resource}`);
1423
+ }
1424
+ // Make the API request
1425
+ const response = await this.helpers.httpRequest({
1426
+ method,
1427
+ url: `${baseUrl}${endpoint}`,
1428
+ body: Object.keys(body).length > 0 ? body : undefined,
1429
+ headers: {
1430
+ 'Content-Type': 'application/json',
1431
+ Authorization: `Bearer ${credentials.apiKey}`,
1432
+ },
1433
+ json: true,
1434
+ });
1435
+ returnData.push({ json: response });
1436
+ }
1437
+ catch (error) {
1438
+ if (this.continueOnFail()) {
1439
+ returnData.push({ json: { error: error.message } });
1440
+ continue;
1441
+ }
1442
+ throw error;
1443
+ }
1444
+ }
1445
+ return [returnData];
1446
+ }
1447
+ }
1448
+ exports.Mixpeek = Mixpeek;
1449
+ //# sourceMappingURL=Mixpeek.node.js.map