n8n-nodes-couchbase 1.0.0 → 1.1.1

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 (91) hide show
  1. package/README.md +9 -103
  2. package/dist/nodes/Couchbase/Couchbase.node.d.ts +6 -27
  3. package/dist/nodes/Couchbase/Couchbase.node.js +31 -138
  4. package/dist/nodes/Couchbase/Couchbase.node.js.map +1 -1
  5. package/dist/nodes/Couchbase/Couchbase.node.json +3 -3
  6. package/dist/nodes/Couchbase/CouchbaseProperties.js +53 -20
  7. package/dist/nodes/Couchbase/CouchbaseProperties.js.map +1 -1
  8. package/dist/nodes/icons/couchbase.dark.svg +14 -0
  9. package/dist/nodes/icons/couchbase.svg +14 -0
  10. package/dist/nodes/vector_store/VectorStoreCouchbaseSearch/VectorStoreCouchbaseSearch.node.d.ts +16 -0
  11. package/dist/nodes/vector_store/VectorStoreCouchbaseSearch/VectorStoreCouchbaseSearch.node.js +337 -0
  12. package/dist/nodes/vector_store/VectorStoreCouchbaseSearch/VectorStoreCouchbaseSearch.node.js.map +1 -0
  13. package/dist/nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.js.map +1 -1
  14. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/insertOperation.js.map +1 -1
  15. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/updateOperation.js +1 -1
  16. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/updateOperation.js.map +1 -1
  17. package/dist/nodes/vector_store/shared/processDocuments.d.ts +0 -9
  18. package/dist/nodes/vector_store/shared/processDocuments.js +6 -24
  19. package/dist/nodes/vector_store/shared/processDocuments.js.map +1 -1
  20. package/dist/package.json +14 -6
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/dist/utils/couchbase/connectToCouchbase.d.ts +5 -0
  23. package/dist/utils/couchbase/connectToCouchbase.js +70 -0
  24. package/dist/utils/couchbase/connectToCouchbase.js.map +1 -0
  25. package/dist/utils/couchbase/populateCouchbaseRLs.d.ts +25 -0
  26. package/dist/utils/couchbase/populateCouchbaseRLs.js +121 -0
  27. package/dist/utils/couchbase/populateCouchbaseRLs.js.map +1 -0
  28. package/dist/utils/couchbase/validateBucketScopeCollection.d.ts +2 -0
  29. package/dist/utils/couchbase/validateBucketScopeCollection.js +53 -0
  30. package/dist/utils/couchbase/validateBucketScopeCollection.js.map +1 -0
  31. package/dist/utils/helpers.d.ts +1 -14
  32. package/dist/utils/helpers.js +0 -111
  33. package/dist/utils/helpers.js.map +1 -1
  34. package/dist/utils/logWrapper.d.ts +1 -8
  35. package/dist/utils/logWrapper.js +0 -12
  36. package/dist/utils/logWrapper.js.map +1 -1
  37. package/dist/utils/sharedFields.js.map +1 -1
  38. package/package.json +14 -6
  39. package/dist/credentials/ExampleCredentialsApi.credentials.d.ts +0 -8
  40. package/dist/credentials/ExampleCredentialsApi.credentials.js +0 -46
  41. package/dist/credentials/ExampleCredentialsApi.credentials.js.map +0 -1
  42. package/dist/credentials/HttpBinApi.credentials.d.ts +0 -9
  43. package/dist/credentials/HttpBinApi.credentials.js +0 -43
  44. package/dist/credentials/HttpBinApi.credentials.js.map +0 -1
  45. package/dist/nodes/Couchbase/CBLogomark.svg +0 -350
  46. package/dist/nodes/ExampleNode/ExampleNode.node.d.ts +0 -5
  47. package/dist/nodes/ExampleNode/ExampleNode.node.js +0 -59
  48. package/dist/nodes/ExampleNode/ExampleNode.node.js.map +0 -1
  49. package/dist/nodes/HttpBin/HttpBin.node.d.ts +0 -4
  50. package/dist/nodes/HttpBin/HttpBin.node.js +0 -55
  51. package/dist/nodes/HttpBin/HttpBin.node.js.map +0 -1
  52. package/dist/nodes/HttpBin/HttpBin.node.json +0 -18
  53. package/dist/nodes/HttpBin/HttpVerbDescription.d.ts +0 -3
  54. package/dist/nodes/HttpBin/HttpVerbDescription.js +0 -236
  55. package/dist/nodes/HttpBin/HttpVerbDescription.js.map +0 -1
  56. package/dist/nodes/vector_store/VectorStoreCouchbase/VectorStoreCouchbase.node.d.ts +0 -16
  57. package/dist/nodes/vector_store/VectorStoreCouchbase/VectorStoreCouchbase.node.js +0 -407
  58. package/dist/nodes/vector_store/VectorStoreCouchbase/VectorStoreCouchbase.node.js.map +0 -1
  59. package/dist/nodes/vector_store/VectorStoreCouchbase/couchbase.svg +0 -350
  60. package/dist/nodes/vector_store/VectorStoreCouchbase/mongodb.dark.svg +0 -3
  61. package/dist/nodes/vector_store/VectorStoreCouchbase/mongodb.svg +0 -3
  62. package/dist/nodes/vector_store/shared/createVectorStoreNode/__tests__/utils.test.d.ts +0 -0
  63. package/dist/nodes/vector_store/shared/createVectorStoreNode/__tests__/utils.test.js +0 -2
  64. package/dist/nodes/vector_store/shared/createVectorStoreNode/__tests__/utils.test.js.map +0 -1
  65. package/dist/nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.test.d.ts +0 -0
  66. package/dist/nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.test.js +0 -2
  67. package/dist/nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.test.js.map +0 -1
  68. package/dist/nodes/vector_store/shared/createVectorStoreNode/methods/listSearch.d.ts +0 -0
  69. package/dist/nodes/vector_store/shared/createVectorStoreNode/methods/listSearch.js +0 -2
  70. package/dist/nodes/vector_store/shared/createVectorStoreNode/methods/listSearch.js.map +0 -1
  71. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/insertOperation.test.d.ts +0 -0
  72. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/insertOperation.test.js +0 -2
  73. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/insertOperation.test.js.map +0 -1
  74. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/loadOperation.test.d.ts +0 -0
  75. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/loadOperation.test.js +0 -2
  76. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/loadOperation.test.js.map +0 -1
  77. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/operationHandlers.test.d.ts +0 -0
  78. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/operationHandlers.test.js +0 -2
  79. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/operationHandlers.test.js.map +0 -1
  80. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/retrieveAsToolOperation.test.d.ts +0 -0
  81. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/retrieveAsToolOperation.test.js +0 -2
  82. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/retrieveAsToolOperation.test.js.map +0 -1
  83. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/retrieveOperation.test.d.ts +0 -0
  84. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/retrieveOperation.test.js +0 -2
  85. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/retrieveOperation.test.js.map +0 -1
  86. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/updateOperation.test.d.ts +0 -0
  87. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/updateOperation.test.js +0 -2
  88. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/__tests__/updateOperation.test.js.map +0 -1
  89. package/dist/utils/N8nTool.d.ts +0 -10
  90. package/dist/utils/N8nTool.js +0 -86
  91. package/dist/utils/N8nTool.js.map +0 -1
@@ -1,407 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VectorStoreCouchbase = void 0;
4
- const couchbase_1 = require("@langchain/community/vectorstores/couchbase");
5
- const n8n_workflow_1 = require("n8n-workflow");
6
- const sharedFields_1 = require("../../../utils/sharedFields");
7
- const createVectorStoreNode_1 = require("../shared/createVectorStoreNode/createVectorStoreNode");
8
- const couchbase_2 = require("couchbase");
9
- const mongoCollectionRLC = {
10
- displayName: 'Couchbase Collection',
11
- name: 'couchbaseCollection',
12
- type: 'resourceLocator',
13
- default: { mode: 'list', value: '' },
14
- required: true,
15
- modes: [
16
- {
17
- displayName: 'From List',
18
- name: 'list',
19
- type: 'list',
20
- typeOptions: {
21
- searchListMethod: 'couchbaseCollectionSearch',
22
- },
23
- },
24
- {
25
- displayName: 'Name',
26
- name: 'name',
27
- type: 'string',
28
- placeholder: 'e.g. my_collection',
29
- },
30
- ],
31
- };
32
- const couchbaseBucket = {
33
- displayName: 'Couchbase Bucket',
34
- name: 'couchbaseBucket',
35
- type: 'resourceLocator',
36
- default: { mode: 'list', value: '' },
37
- required: true,
38
- modes: [
39
- {
40
- displayName: 'From List',
41
- name: 'list',
42
- type: 'list',
43
- typeOptions: {
44
- searchListMethod: 'couchbaseBucketSearch',
45
- },
46
- },
47
- {
48
- displayName: 'Name',
49
- name: 'name',
50
- type: 'string',
51
- placeholder: 'e.g. my_bucket',
52
- },
53
- ],
54
- };
55
- const couchbaseScope = {
56
- displayName: 'Couchbase Scope',
57
- name: 'couchbaseScope',
58
- type: 'resourceLocator',
59
- default: { mode: 'list', value: '' },
60
- required: true,
61
- modes: [
62
- {
63
- displayName: 'From List',
64
- name: 'list',
65
- type: 'list',
66
- typeOptions: {
67
- searchListMethod: 'couchbaseScopeSearch',
68
- },
69
- },
70
- {
71
- displayName: 'Name',
72
- name: 'name',
73
- type: 'string',
74
- placeholder: 'e.g. my_scope',
75
- },
76
- ],
77
- };
78
- const vectorIndexName = {
79
- displayName: 'Vector Index Name',
80
- name: 'vectorIndexName',
81
- type: 'resourceLocator',
82
- default: { mode: 'list', value: '' },
83
- required: true,
84
- description: 'The name of the vector index',
85
- modes: [
86
- {
87
- displayName: 'From List',
88
- name: 'list',
89
- type: 'list',
90
- typeOptions: {
91
- searchListMethod: 'getCouchbaseSearchIndexes',
92
- },
93
- },
94
- {
95
- displayName: 'Name',
96
- name: 'name',
97
- type: 'string',
98
- placeholder: 'e.g. my_index',
99
- },
100
- ],
101
- };
102
- const embeddingField = {
103
- displayName: 'Embedding',
104
- name: 'embedding',
105
- type: 'string',
106
- default: 'embedding',
107
- description: 'The field with the embedding array',
108
- required: true,
109
- };
110
- const metadataField = {
111
- displayName: 'Metadata Field',
112
- name: 'metadata_field',
113
- type: 'string',
114
- default: 'text',
115
- description: 'The text field of the raw data',
116
- required: true,
117
- };
118
- const sharedFields = [
119
- couchbaseBucket,
120
- couchbaseScope,
121
- mongoCollectionRLC,
122
- embeddingField,
123
- metadataField,
124
- vectorIndexName,
125
- ];
126
- const mongoNamespaceField = {
127
- displayName: 'Namespace',
128
- name: 'namespace',
129
- type: 'string',
130
- description: 'Logical partition for documents. Uses metadata.namespace field for filtering.',
131
- default: '',
132
- };
133
- const retrieveFields = [
134
- {
135
- displayName: 'Options',
136
- name: 'options',
137
- type: 'collection',
138
- placeholder: 'Add Option',
139
- default: {},
140
- options: [mongoNamespaceField, sharedFields_1.metadataFilterField],
141
- },
142
- ];
143
- const insertFields = [
144
- {
145
- displayName: 'Options',
146
- name: 'options',
147
- type: 'collection',
148
- placeholder: 'Add Option',
149
- default: {},
150
- options: [
151
- {
152
- displayName: 'Clear Namespace',
153
- name: 'clearNamespace',
154
- type: 'boolean',
155
- default: false,
156
- description: 'Whether to clear documents in the namespace before inserting new data',
157
- },
158
- mongoNamespaceField,
159
- ],
160
- },
161
- ];
162
- async function connectToCouchbase(context) {
163
- console.log('connecting');
164
- const credentials = await context.getCredentials('couchbaseApi');
165
- console.log(credentials);
166
- const connectionString = credentials.CouchbaseConnection;
167
- const username = credentials.CouchbaseUsername;
168
- const password = credentials.CouchbasePassword;
169
- const couchbaseBucket = context.getNodeParameter('couchbaseBucket');
170
- console.log('couchbaseBucket');
171
- console.log(couchbaseBucket);
172
- const couchbaseScope = context.getNodeParameter('couchbaseScope');
173
- console.log('couchbaseScope');
174
- console.log(couchbaseScope);
175
- const couchbaseCollection = context.getNodeParameter('couchbaseCollection');
176
- console.log('couchbaseCollection');
177
- console.log(couchbaseCollection);
178
- let cluster;
179
- let collection;
180
- try {
181
- cluster = await (0, couchbase_2.connect)(connectionString, {
182
- username: username,
183
- password: password,
184
- configProfile: 'wanDevelopment',
185
- });
186
- const bucket = cluster.bucket(couchbaseBucket.value);
187
- collection = bucket.scope(couchbaseCollection.value).collection(couchbaseCollection.value);
188
- }
189
- catch (error) {
190
- throw error;
191
- }
192
- return { cluster, collection };
193
- }
194
- async function getCouchbaseSearchIndexes() {
195
- const { cluster } = await connectToCouchbase(this);
196
- try {
197
- const searchIndexes = await cluster.searchIndexes().getAllIndexes();
198
- const allIndexes = [];
199
- for (const idx of searchIndexes) {
200
- allIndexes.push({
201
- name: `${idx.name}`,
202
- value: `${idx.name}`
203
- });
204
- }
205
- return { results: allIndexes };
206
- }
207
- catch (error) {
208
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Error: ${error.message}`);
209
- }
210
- }
211
- async function couchbaseBucketSearch() {
212
- const { cluster } = await connectToCouchbase(this);
213
- try {
214
- const buckets = await cluster.buckets().getAllBuckets();
215
- const allBuckets = [];
216
- for (const bucket of buckets) {
217
- allBuckets.push({
218
- name: `${bucket.name}`,
219
- value: `${bucket.name}`
220
- });
221
- }
222
- return { results: allBuckets };
223
- }
224
- catch (error) {
225
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Error: ${error.message}`);
226
- }
227
- }
228
- async function couchbaseScopeSearch() {
229
- const selectedBucket = this.getNodeParameter('couchbaseBucket');
230
- const { cluster } = await connectToCouchbase(this);
231
- try {
232
- const bucket = cluster.bucket(selectedBucket.value);
233
- const bucketManager = bucket.collections();
234
- const scopes = await bucketManager.getAllScopes();
235
- const allScopes = [];
236
- for (const scope of scopes) {
237
- allScopes.push({
238
- name: `${scope.name}`,
239
- value: `${scope.name}`
240
- });
241
- }
242
- return { results: allScopes };
243
- }
244
- catch (error) {
245
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Error: ${error.message}`);
246
- }
247
- }
248
- async function couchbaseCollectionSearch() {
249
- const { cluster } = await connectToCouchbase(this);
250
- try {
251
- const selectedBucket = this.getNodeParameter('couchbaseBucket');
252
- const selectedScope = this.getNodeParameter('couchbaseScope');
253
- const bucketName = selectedBucket.value;
254
- const bucket = cluster.bucket(bucketName);
255
- const bucketManager = bucket.collections();
256
- const scopes = await bucketManager.getAllScopes();
257
- const filteredScopes = selectedScope && selectedScope.value
258
- ? scopes.filter(scope => scope.name === selectedScope.value)
259
- : scopes;
260
- const allCollections = [];
261
- for (const scope of filteredScopes) {
262
- for (const collection of scope.collections) {
263
- allCollections.push({
264
- name: `${collection.name}`,
265
- value: `${collection.name}`
266
- });
267
- }
268
- }
269
- return { results: allCollections };
270
- }
271
- catch (error) {
272
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Error: ${error.message}`);
273
- }
274
- }
275
- class VectorStoreCouchbase extends (0, createVectorStoreNode_1.createVectorStoreNode)({
276
- meta: {
277
- displayName: 'Couchbase Vector Store',
278
- name: 'vectorStoreCouchbase',
279
- description: 'Work with your data in Couchbase Vector Store',
280
- icon: { light: 'file:couchbase.svg', dark: 'file:couchbase.svg' },
281
- docsUrl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoremongodbatlas/',
282
- credentials: [
283
- {
284
- name: 'couchbaseApi',
285
- required: true,
286
- },
287
- ],
288
- operationModes: ['load', 'insert', 'retrieve', 'update', 'retrieve-as-tool'],
289
- },
290
- methods: { listSearch: { couchbaseBucketSearch, couchbaseCollectionSearch, couchbaseScopeSearch, getCouchbaseSearchIndexes } },
291
- retrieveFields,
292
- loadFields: retrieveFields,
293
- insertFields,
294
- sharedFields,
295
- async getVectorStoreClient(context, _filter, embeddings, itemIndex) {
296
- try {
297
- try {
298
- const couchbaseBucketName = context.getNodeParameter('couchbaseBucket', itemIndex, '', {
299
- extractValue: true,
300
- });
301
- console.log('couchbaseBucketName');
302
- console.log(couchbaseBucketName);
303
- const couchbaseScopeName = context.getNodeParameter('couchbaseScope', itemIndex, '', {
304
- extractValue: true,
305
- });
306
- console.log('couchbaseScopeName');
307
- console.log(couchbaseScopeName);
308
- const couchbaseCollectionName = context.getNodeParameter('couchbaseCollection', itemIndex, '', {
309
- extractValue: true,
310
- });
311
- console.log('couchbaseCollectionName');
312
- console.log(couchbaseCollectionName);
313
- const couchbaseVectorIndexName = context.getNodeParameter('vectorIndexName', itemIndex, '', {
314
- extractValue: true,
315
- });
316
- console.log('couchbaseVectorIndexName');
317
- console.log(couchbaseVectorIndexName);
318
- const embeddingFieldName = context.getNodeParameter('embedding', itemIndex, '', {
319
- extractValue: true,
320
- });
321
- const metadataFieldName = context.getNodeParameter('metadata_field', itemIndex, '', {
322
- extractValue: true,
323
- });
324
- console.log('embeddingFieldName');
325
- console.log(embeddingFieldName);
326
- console.log('metadataFieldName');
327
- console.log(metadataFieldName);
328
- const { cluster } = await connectToCouchbase(context);
329
- const couchbaseConfig = {
330
- cluster,
331
- bucketName: couchbaseBucketName,
332
- scopeName: couchbaseScopeName,
333
- collectionName: couchbaseCollectionName,
334
- indexName: 'color-test',
335
- textKey: 'description',
336
- embeddingKey: 'embedding_vector_dot',
337
- };
338
- console.log('yo');
339
- console.log(couchbaseConfig);
340
- const couchbaseVectorStore = couchbase_1.CouchbaseVectorStore.initialize(embeddings, couchbaseConfig);
341
- return couchbaseVectorStore;
342
- }
343
- catch (error) {
344
- throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Error: ${error.message}`, {
345
- itemIndex,
346
- description: 'Please check your MongoDB Atlas connection details',
347
- });
348
- }
349
- finally {
350
- }
351
- }
352
- catch (error) {
353
- throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Error: ${error.message}`, {
354
- itemIndex,
355
- description: 'Please check your MongoDB Atlas connection details',
356
- });
357
- }
358
- },
359
- async populateVectorStore(context, embeddings, documents, itemIndex) {
360
- try {
361
- try {
362
- const couchbaseBucketName = context.getNodeParameter('couchbaseBucket', itemIndex, '', {
363
- extractValue: true,
364
- });
365
- const couchbaseScopeName = context.getNodeParameter('couchbaseScope', itemIndex, '', {
366
- extractValue: true,
367
- });
368
- const couchbaseCollectionName = context.getNodeParameter('couchbaseCollection', itemIndex, '', {
369
- extractValue: true,
370
- });
371
- const couchbaseVectorIndexName = context.getNodeParameter('vectorIndexName', itemIndex, '', {
372
- extractValue: true,
373
- });
374
- const { cluster } = await connectToCouchbase(context);
375
- const couchbaseConfig = {
376
- cluster,
377
- bucketName: couchbaseBucketName,
378
- scopeName: couchbaseScopeName,
379
- collectionName: couchbaseCollectionName,
380
- indexName: couchbaseVectorIndexName,
381
- };
382
- console.log('hi');
383
- console.log(couchbaseConfig);
384
- const res = await couchbase_1.CouchbaseVectorStore.fromDocuments(documents, embeddings, couchbaseConfig);
385
- console.log('res');
386
- console.log(res);
387
- }
388
- catch (error) {
389
- throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Error: ${error.message}`, {
390
- itemIndex,
391
- description: 'Please check your MongoDB Atlas connection details',
392
- });
393
- }
394
- finally {
395
- }
396
- }
397
- catch (error) {
398
- throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Error: ${error.message}`, {
399
- itemIndex,
400
- description: 'Please check your MongoDB Atlas connection details',
401
- });
402
- }
403
- },
404
- }) {
405
- }
406
- exports.VectorStoreCouchbase = VectorStoreCouchbase;
407
- //# sourceMappingURL=VectorStoreCouchbase.node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VectorStoreCouchbase.node.js","sourceRoot":"","sources":["../../../../nodes/vector_store/VectorStoreCouchbase/VectorStoreCouchbase.node.ts"],"names":[],"mappings":"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"}