n8n-nodes-base 1.103.1 → 1.104.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/credentials/BeeminderApi.credentials.d.ts.map +1 -1
  2. package/dist/credentials/BeeminderApi.credentials.js +1 -7
  3. package/dist/credentials/BeeminderApi.credentials.js.map +1 -1
  4. package/dist/credentials/BeeminderOAuth2Api.credentials.d.ts +9 -0
  5. package/dist/credentials/BeeminderOAuth2Api.credentials.d.ts.map +1 -0
  6. package/dist/credentials/BeeminderOAuth2Api.credentials.js +51 -0
  7. package/dist/credentials/BeeminderOAuth2Api.credentials.js.map +1 -0
  8. package/dist/credentials/CustomerIoApi.credentials.js +2 -2
  9. package/dist/credentials/CustomerIoApi.credentials.js.map +1 -1
  10. package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.d.ts.map +1 -1
  11. package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js +1 -1
  12. package/dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js.map +1 -1
  13. package/dist/credentials/SlackApi.credentials.d.ts.map +1 -1
  14. package/dist/credentials/SlackApi.credentials.js +19 -0
  15. package/dist/credentials/SlackApi.credentials.js.map +1 -1
  16. package/dist/credentials/ZscalerZiaApi.credentials.js +2 -2
  17. package/dist/credentials/ZscalerZiaApi.credentials.js.map +1 -1
  18. package/dist/known/credentials.json +10 -0
  19. package/dist/nodes/Airtable/v2/transport/index.js +2 -2
  20. package/dist/nodes/Airtable/v2/transport/index.js.map +1 -1
  21. package/dist/nodes/Beeminder/Beeminder.node.d.ts.map +1 -1
  22. package/dist/nodes/Beeminder/Beeminder.node.functions.d.ts +106 -5
  23. package/dist/nodes/Beeminder/Beeminder.node.functions.d.ts.map +1 -1
  24. package/dist/nodes/Beeminder/Beeminder.node.functions.js +87 -10
  25. package/dist/nodes/Beeminder/Beeminder.node.functions.js.map +1 -1
  26. package/dist/nodes/Beeminder/Beeminder.node.js +1034 -59
  27. package/dist/nodes/Beeminder/Beeminder.node.js.map +1 -1
  28. package/dist/nodes/Beeminder/GenericFunctions.d.ts +1 -1
  29. package/dist/nodes/Beeminder/GenericFunctions.d.ts.map +1 -1
  30. package/dist/nodes/Beeminder/GenericFunctions.js +49 -4
  31. package/dist/nodes/Beeminder/GenericFunctions.js.map +1 -1
  32. package/dist/nodes/ClickUp/ClickUp.node.d.ts.map +1 -1
  33. package/dist/nodes/ClickUp/ClickUp.node.js +9 -1
  34. package/dist/nodes/ClickUp/ClickUp.node.js.map +1 -1
  35. package/dist/nodes/ClickUp/TaskDescription.d.ts.map +1 -1
  36. package/dist/nodes/ClickUp/TaskDescription.js +26 -0
  37. package/dist/nodes/ClickUp/TaskDescription.js.map +1 -1
  38. package/dist/nodes/Code/ExecutionError.d.ts +1 -1
  39. package/dist/nodes/Code/ExecutionError.d.ts.map +1 -1
  40. package/dist/nodes/Code/ExecutionError.js +2 -2
  41. package/dist/nodes/Code/ExecutionError.js.map +1 -1
  42. package/dist/nodes/Code/ValidationError.d.ts +1 -1
  43. package/dist/nodes/Code/ValidationError.d.ts.map +1 -1
  44. package/dist/nodes/Code/ValidationError.js +2 -2
  45. package/dist/nodes/Code/ValidationError.js.map +1 -1
  46. package/dist/nodes/Code/errors/WrappedExecutionError.d.ts +1 -1
  47. package/dist/nodes/Code/errors/WrappedExecutionError.d.ts.map +1 -1
  48. package/dist/nodes/Code/errors/WrappedExecutionError.js +2 -2
  49. package/dist/nodes/Code/errors/WrappedExecutionError.js.map +1 -1
  50. package/dist/nodes/Ftp/Ftp.node.d.ts.map +1 -1
  51. package/dist/nodes/Ftp/Ftp.node.js +64 -1
  52. package/dist/nodes/Ftp/Ftp.node.js.map +1 -1
  53. package/dist/nodes/Google/BigQuery/v2/actions/database/executeQuery.operation.d.ts.map +1 -1
  54. package/dist/nodes/Google/BigQuery/v2/actions/database/executeQuery.operation.js +61 -0
  55. package/dist/nodes/Google/BigQuery/v2/actions/database/executeQuery.operation.js.map +1 -1
  56. package/dist/nodes/Google/Gmail/GmailTrigger.node.d.ts.map +1 -1
  57. package/dist/nodes/Google/Gmail/GmailTrigger.node.js +4 -1
  58. package/dist/nodes/Google/Gmail/GmailTrigger.node.js.map +1 -1
  59. package/dist/nodes/Google/Sheet/GoogleSheets.node.d.ts.map +1 -1
  60. package/dist/nodes/Google/Sheet/GoogleSheets.node.js +2 -1
  61. package/dist/nodes/Google/Sheet/GoogleSheets.node.js.map +1 -1
  62. package/dist/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.d.ts.map +1 -1
  63. package/dist/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.js +36 -1
  64. package/dist/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.js.map +1 -1
  65. package/dist/nodes/Google/Sheet/v2/actions/sheet/update.operation.d.ts.map +1 -1
  66. package/dist/nodes/Google/Sheet/v2/actions/sheet/update.operation.js +36 -1
  67. package/dist/nodes/Google/Sheet/v2/actions/sheet/update.operation.js.map +1 -1
  68. package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js +1 -1
  69. package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js.map +1 -1
  70. package/dist/nodes/Mailcheck/GenericFunctions.js +2 -2
  71. package/dist/nodes/Mailcheck/GenericFunctions.js.map +1 -1
  72. package/dist/nodes/Merge/v2/utils.js +4 -4
  73. package/dist/nodes/Merge/v2/utils.js.map +1 -1
  74. package/dist/nodes/MongoDb/MongoDb.node.d.ts.map +1 -1
  75. package/dist/nodes/MongoDb/MongoDb.node.js +314 -204
  76. package/dist/nodes/MongoDb/MongoDb.node.js.map +1 -1
  77. package/dist/nodes/MongoDb/MongoDbProperties.d.ts.map +1 -1
  78. package/dist/nodes/MongoDb/MongoDbProperties.js +135 -0
  79. package/dist/nodes/MongoDb/MongoDbProperties.js.map +1 -1
  80. package/dist/nodes/Postgres/PostgresTrigger.functions.js +5 -5
  81. package/dist/nodes/Postgres/PostgresTrigger.functions.js.map +1 -1
  82. package/dist/nodes/Postgres/v1/genericFunctions.js +7 -7
  83. package/dist/nodes/Postgres/v1/genericFunctions.js.map +1 -1
  84. package/dist/nodes/Postgres/v2/helpers/utils.d.ts +3 -3
  85. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.d.ts.map +1 -1
  86. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js +13 -2
  87. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js.map +1 -1
  88. package/dist/nodes/RespondToWebhook/utils/binary.d.ts.map +1 -1
  89. package/dist/nodes/RespondToWebhook/utils/binary.js +9 -2
  90. package/dist/nodes/RespondToWebhook/utils/binary.js.map +1 -1
  91. package/dist/nodes/Slack/SlackTrigger.node.d.ts.map +1 -1
  92. package/dist/nodes/Slack/SlackTrigger.node.js +9 -2
  93. package/dist/nodes/Slack/SlackTrigger.node.js.map +1 -1
  94. package/dist/nodes/Slack/SlackTriggerHelpers.d.ts +1 -0
  95. package/dist/nodes/Slack/SlackTriggerHelpers.d.ts.map +1 -1
  96. package/dist/nodes/Slack/SlackTriggerHelpers.js +44 -0
  97. package/dist/nodes/Slack/SlackTriggerHelpers.js.map +1 -1
  98. package/dist/nodes/StopAndError/StopAndError.node.d.ts.map +1 -1
  99. package/dist/nodes/StopAndError/StopAndError.node.js +6 -15
  100. package/dist/nodes/StopAndError/StopAndError.node.js.map +1 -1
  101. package/dist/nodes/StopAndError/utils.d.ts +12 -0
  102. package/dist/nodes/StopAndError/utils.d.ts.map +1 -0
  103. package/dist/nodes/StopAndError/utils.js +31 -0
  104. package/dist/nodes/StopAndError/utils.js.map +1 -0
  105. package/dist/nodes/Transform/utils/utils.js +2 -2
  106. package/dist/nodes/Transform/utils/utils.js.map +1 -1
  107. package/dist/nodes/Venafi/Datacenter/GenericFunctions.js +2 -2
  108. package/dist/nodes/Venafi/Datacenter/GenericFunctions.js.map +1 -1
  109. package/dist/nodes/Webhook/Webhook.node.d.ts.map +1 -1
  110. package/dist/nodes/Webhook/Webhook.node.js +11 -0
  111. package/dist/nodes/Webhook/Webhook.node.js.map +1 -1
  112. package/dist/nodes/Webhook/error.d.ts +1 -1
  113. package/dist/nodes/Webhook/error.d.ts.map +1 -1
  114. package/dist/nodes/Webhook/error.js +2 -2
  115. package/dist/nodes/Webhook/error.js.map +1 -1
  116. package/dist/nodes/Wordpress/PostDescription.d.ts.map +1 -1
  117. package/dist/nodes/Wordpress/PostDescription.js +14 -0
  118. package/dist/nodes/Wordpress/PostDescription.js.map +1 -1
  119. package/dist/nodes/Wordpress/PostInterface.d.ts +1 -0
  120. package/dist/nodes/Wordpress/PostInterface.d.ts.map +1 -1
  121. package/dist/nodes/Wordpress/Wordpress.node.d.ts.map +1 -1
  122. package/dist/nodes/Wordpress/Wordpress.node.js +6 -0
  123. package/dist/nodes/Wordpress/Wordpress.node.js.map +1 -1
  124. package/dist/typecheck.tsbuildinfo +1 -1
  125. package/dist/types/credentials.json +4 -3
  126. package/dist/types/nodes.json +14 -14
  127. package/dist/utils/types.d.ts +8 -0
  128. package/dist/utils/types.d.ts.map +1 -0
  129. package/dist/utils/types.js +57 -0
  130. package/dist/utils/types.js.map +1 -0
  131. package/package.json +8 -6
@@ -68,258 +68,368 @@ class MongoDb {
68
68
  const credentials = await this.getCredentials('mongoDb');
69
69
  const { database, connectionString } = (0, GenericFunctions_1.validateAndResolveMongoCredentials)(this, credentials);
70
70
  const client = await (0, GenericFunctions_1.connectMongoClient)(connectionString, credentials);
71
- const mdb = client.db(database);
72
71
  let returnData = [];
73
- const items = this.getInputData();
74
- const operation = this.getNodeParameter('operation', 0);
75
- const nodeVersion = this.getNode().typeVersion;
76
- let itemsLength = items.length ? 1 : 0;
77
- let fallbackPairedItems;
78
- if (nodeVersion >= 1.1) {
79
- itemsLength = items.length;
80
- }
81
- else {
82
- fallbackPairedItems = (0, utilities_1.generatePairedItemData)(items.length);
83
- }
84
- if (operation === 'aggregate') {
85
- for (let i = 0; i < itemsLength; i++) {
86
- try {
87
- const queryParameter = JSON.parse(this.getNodeParameter('query', i));
88
- if (queryParameter._id && typeof queryParameter._id === 'string') {
89
- queryParameter._id = new mongodb_1.ObjectId(queryParameter._id);
90
- }
91
- const query = mdb
92
- .collection(this.getNodeParameter('collection', i))
93
- .aggregate(queryParameter);
94
- for (const entry of await query.toArray()) {
95
- returnData.push({ json: entry, pairedItem: fallbackPairedItems ?? [{ item: i }] });
72
+ try {
73
+ const mdb = client.db(database);
74
+ const items = this.getInputData();
75
+ const operation = this.getNodeParameter('operation', 0);
76
+ const nodeVersion = this.getNode().typeVersion;
77
+ let itemsLength = items.length ? 1 : 0;
78
+ let fallbackPairedItems = null;
79
+ if (nodeVersion >= 1.1) {
80
+ itemsLength = items.length;
81
+ }
82
+ else {
83
+ fallbackPairedItems = (0, utilities_1.generatePairedItemData)(items.length);
84
+ }
85
+ if (operation === 'aggregate') {
86
+ for (let i = 0; i < itemsLength; i++) {
87
+ try {
88
+ const queryParameter = JSON.parse(this.getNodeParameter('query', i));
89
+ if (queryParameter._id && typeof queryParameter._id === 'string') {
90
+ queryParameter._id = new mongodb_1.ObjectId(queryParameter._id);
91
+ }
92
+ const query = mdb
93
+ .collection(this.getNodeParameter('collection', i))
94
+ .aggregate(queryParameter);
95
+ for (const entry of await query.toArray()) {
96
+ returnData.push({ json: entry, pairedItem: fallbackPairedItems ?? [{ item: i }] });
97
+ }
96
98
  }
97
- }
98
- catch (error) {
99
- if (this.continueOnFail()) {
100
- returnData.push({
101
- json: { error: error.message },
102
- pairedItem: fallbackPairedItems ?? [{ item: i }],
103
- });
104
- continue;
99
+ catch (error) {
100
+ if (this.continueOnFail()) {
101
+ returnData.push({
102
+ json: { error: error.message },
103
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
104
+ });
105
+ continue;
106
+ }
107
+ throw error;
105
108
  }
106
- throw error;
107
109
  }
108
110
  }
109
- }
110
- if (operation === 'delete') {
111
- for (let i = 0; i < itemsLength; i++) {
112
- try {
113
- const { deletedCount } = await mdb
114
- .collection(this.getNodeParameter('collection', i))
115
- .deleteMany(JSON.parse(this.getNodeParameter('query', i)));
116
- returnData.push({
117
- json: { deletedCount },
118
- pairedItem: fallbackPairedItems ?? [{ item: i }],
119
- });
120
- }
121
- catch (error) {
122
- if (this.continueOnFail()) {
111
+ if (operation === 'delete') {
112
+ for (let i = 0; i < itemsLength; i++) {
113
+ try {
114
+ const { deletedCount } = await mdb
115
+ .collection(this.getNodeParameter('collection', i))
116
+ .deleteMany(JSON.parse(this.getNodeParameter('query', i)));
123
117
  returnData.push({
124
- json: { error: error.message },
118
+ json: { deletedCount },
125
119
  pairedItem: fallbackPairedItems ?? [{ item: i }],
126
120
  });
127
- continue;
128
121
  }
129
- throw error;
122
+ catch (error) {
123
+ if (this.continueOnFail()) {
124
+ returnData.push({
125
+ json: { error: error.message },
126
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
127
+ });
128
+ continue;
129
+ }
130
+ throw error;
131
+ }
130
132
  }
131
133
  }
132
- }
133
- if (operation === 'find') {
134
- for (let i = 0; i < itemsLength; i++) {
135
- try {
136
- const queryParameter = JSON.parse(this.getNodeParameter('query', i));
137
- if (queryParameter._id && typeof queryParameter._id === 'string') {
138
- queryParameter._id = new mongodb_1.ObjectId(queryParameter._id);
139
- }
140
- let query = mdb
141
- .collection(this.getNodeParameter('collection', i))
142
- .find(queryParameter);
143
- const options = this.getNodeParameter('options', i);
144
- const limit = options.limit;
145
- const skip = options.skip;
146
- const projection = options.projection && JSON.parse(options.projection);
147
- const sort = options.sort && JSON.parse(options.sort);
148
- if (skip > 0) {
149
- query = query.skip(skip);
134
+ if (operation === 'find') {
135
+ for (let i = 0; i < itemsLength; i++) {
136
+ try {
137
+ const queryParameter = JSON.parse(this.getNodeParameter('query', i));
138
+ if (queryParameter._id && typeof queryParameter._id === 'string') {
139
+ queryParameter._id = new mongodb_1.ObjectId(queryParameter._id);
140
+ }
141
+ let query = mdb
142
+ .collection(this.getNodeParameter('collection', i))
143
+ .find(queryParameter);
144
+ const options = this.getNodeParameter('options', i);
145
+ const limit = options.limit;
146
+ const skip = options.skip;
147
+ const projection = options.projection && JSON.parse(options.projection);
148
+ const sort = options.sort && JSON.parse(options.sort);
149
+ if (skip > 0) {
150
+ query = query.skip(skip);
151
+ }
152
+ if (limit > 0) {
153
+ query = query.limit(limit);
154
+ }
155
+ if (sort && Object.keys(sort).length !== 0 && sort.constructor === Object) {
156
+ query = query.sort(sort);
157
+ }
158
+ if (projection &&
159
+ Object.keys(projection).length !== 0 &&
160
+ projection.constructor === Object) {
161
+ query = query.project(projection);
162
+ }
163
+ const queryResult = await query.toArray();
164
+ for (const entry of queryResult) {
165
+ returnData.push({ json: entry, pairedItem: fallbackPairedItems ?? [{ item: i }] });
166
+ }
150
167
  }
151
- if (limit > 0) {
152
- query = query.limit(limit);
153
- }
154
- if (sort && Object.keys(sort).length !== 0 && sort.constructor === Object) {
155
- query = query.sort(sort);
156
- }
157
- if (projection &&
158
- Object.keys(projection).length !== 0 &&
159
- projection.constructor === Object) {
160
- query = query.project(projection);
161
- }
162
- const queryResult = await query.toArray();
163
- for (const entry of queryResult) {
164
- returnData.push({ json: entry, pairedItem: fallbackPairedItems ?? [{ item: i }] });
168
+ catch (error) {
169
+ if (this.continueOnFail()) {
170
+ returnData.push({
171
+ json: { error: error.message },
172
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
173
+ });
174
+ continue;
175
+ }
176
+ throw error;
165
177
  }
166
178
  }
167
- catch (error) {
168
- if (this.continueOnFail()) {
169
- returnData.push({
170
- json: { error: error.message },
171
- pairedItem: fallbackPairedItems ?? [{ item: i }],
172
- });
173
- continue;
179
+ }
180
+ if (operation === 'findOneAndReplace') {
181
+ fallbackPairedItems = fallbackPairedItems ?? (0, utilities_1.generatePairedItemData)(items.length);
182
+ const fields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('fields', 0));
183
+ const useDotNotation = this.getNodeParameter('options.useDotNotation', 0, false);
184
+ const dateFields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('options.dateFields', 0, ''));
185
+ const updateKey = (this.getNodeParameter('updateKey', 0) || '').trim();
186
+ const updateOptions = this.getNodeParameter('upsert', 0)
187
+ ? { upsert: true }
188
+ : undefined;
189
+ const updateItems = (0, GenericFunctions_1.prepareItems)({ items, fields, updateKey, useDotNotation, dateFields });
190
+ for (const item of updateItems) {
191
+ try {
192
+ const filter = { [updateKey]: item[updateKey] };
193
+ if (updateKey === '_id') {
194
+ filter[updateKey] = new mongodb_1.ObjectId(item[updateKey]);
195
+ delete item._id;
196
+ }
197
+ await mdb
198
+ .collection(this.getNodeParameter('collection', 0))
199
+ .findOneAndReplace(filter, item, updateOptions);
200
+ }
201
+ catch (error) {
202
+ if (this.continueOnFail()) {
203
+ item.json = { error: error.message };
204
+ continue;
205
+ }
206
+ throw error;
174
207
  }
175
- throw error;
176
208
  }
209
+ returnData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(updateItems), { itemData: fallbackPairedItems });
177
210
  }
178
- }
179
- if (operation === 'findOneAndReplace') {
180
- fallbackPairedItems = fallbackPairedItems ?? (0, utilities_1.generatePairedItemData)(items.length);
181
- const fields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('fields', 0));
182
- const useDotNotation = this.getNodeParameter('options.useDotNotation', 0, false);
183
- const dateFields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('options.dateFields', 0, ''));
184
- const updateKey = (this.getNodeParameter('updateKey', 0) || '').trim();
185
- const updateOptions = this.getNodeParameter('upsert', 0)
186
- ? { upsert: true }
187
- : undefined;
188
- const updateItems = (0, GenericFunctions_1.prepareItems)({ items, fields, updateKey, useDotNotation, dateFields });
189
- for (const item of updateItems) {
190
- try {
191
- const filter = { [updateKey]: item[updateKey] };
192
- if (updateKey === '_id') {
193
- filter[updateKey] = new mongodb_1.ObjectId(item[updateKey]);
194
- delete item._id;
211
+ if (operation === 'findOneAndUpdate') {
212
+ fallbackPairedItems = fallbackPairedItems ?? (0, utilities_1.generatePairedItemData)(items.length);
213
+ const fields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('fields', 0));
214
+ const useDotNotation = this.getNodeParameter('options.useDotNotation', 0, false);
215
+ const dateFields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('options.dateFields', 0, ''));
216
+ const updateKey = (this.getNodeParameter('updateKey', 0) || '').trim();
217
+ const updateOptions = this.getNodeParameter('upsert', 0)
218
+ ? { upsert: true }
219
+ : undefined;
220
+ const updateItems = (0, GenericFunctions_1.prepareItems)({
221
+ items,
222
+ fields,
223
+ updateKey,
224
+ useDotNotation,
225
+ dateFields,
226
+ isUpdate: nodeVersion >= 1.2,
227
+ });
228
+ for (const item of updateItems) {
229
+ try {
230
+ const filter = { [updateKey]: item[updateKey] };
231
+ if (updateKey === '_id') {
232
+ filter[updateKey] = new mongodb_1.ObjectId(item[updateKey]);
233
+ delete item._id;
234
+ }
235
+ await mdb
236
+ .collection(this.getNodeParameter('collection', 0))
237
+ .findOneAndUpdate(filter, { $set: item }, updateOptions);
195
238
  }
196
- await mdb
197
- .collection(this.getNodeParameter('collection', 0))
198
- .findOneAndReplace(filter, item, updateOptions);
199
- }
200
- catch (error) {
201
- if (this.continueOnFail()) {
202
- item.json = { error: error.message };
203
- continue;
239
+ catch (error) {
240
+ if (this.continueOnFail()) {
241
+ item.json = { error: error.message };
242
+ continue;
243
+ }
244
+ throw error;
204
245
  }
205
- throw error;
206
246
  }
247
+ returnData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(updateItems), { itemData: fallbackPairedItems });
207
248
  }
208
- returnData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(updateItems), { itemData: fallbackPairedItems });
209
- }
210
- if (operation === 'findOneAndUpdate') {
211
- fallbackPairedItems = fallbackPairedItems ?? (0, utilities_1.generatePairedItemData)(items.length);
212
- const fields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('fields', 0));
213
- const useDotNotation = this.getNodeParameter('options.useDotNotation', 0, false);
214
- const dateFields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('options.dateFields', 0, ''));
215
- const updateKey = (this.getNodeParameter('updateKey', 0) || '').trim();
216
- const updateOptions = this.getNodeParameter('upsert', 0)
217
- ? { upsert: true }
218
- : undefined;
219
- const updateItems = (0, GenericFunctions_1.prepareItems)({
220
- items,
221
- fields,
222
- updateKey,
223
- useDotNotation,
224
- dateFields,
225
- isUpdate: nodeVersion >= 1.2,
226
- });
227
- for (const item of updateItems) {
249
+ if (operation === 'insert') {
250
+ fallbackPairedItems = fallbackPairedItems ?? (0, utilities_1.generatePairedItemData)(items.length);
251
+ let responseData = [];
228
252
  try {
229
- const filter = { [updateKey]: item[updateKey] };
230
- if (updateKey === '_id') {
231
- filter[updateKey] = new mongodb_1.ObjectId(item[updateKey]);
232
- delete item._id;
233
- }
234
- await mdb
253
+ // Prepare the data to insert and copy it to be returned
254
+ const fields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('fields', 0));
255
+ const useDotNotation = this.getNodeParameter('options.useDotNotation', 0, false);
256
+ const dateFields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('options.dateFields', 0, ''));
257
+ const insertItems = (0, GenericFunctions_1.prepareItems)({
258
+ items,
259
+ fields,
260
+ updateKey: '',
261
+ useDotNotation,
262
+ dateFields,
263
+ });
264
+ const { insertedIds } = await mdb
235
265
  .collection(this.getNodeParameter('collection', 0))
236
- .findOneAndUpdate(filter, { $set: item }, updateOptions);
266
+ .insertMany(insertItems);
267
+ // Add the id to the data
268
+ for (const i of Object.keys(insertedIds)) {
269
+ responseData.push({
270
+ ...insertItems[parseInt(i, 10)],
271
+ id: insertedIds[parseInt(i, 10)],
272
+ });
273
+ }
237
274
  }
238
275
  catch (error) {
239
276
  if (this.continueOnFail()) {
240
- item.json = { error: error.message };
241
- continue;
277
+ responseData = [{ error: error.message }];
278
+ }
279
+ else {
280
+ throw error;
242
281
  }
243
- throw error;
244
282
  }
283
+ returnData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: fallbackPairedItems });
245
284
  }
246
- returnData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(updateItems), { itemData: fallbackPairedItems });
247
- }
248
- if (operation === 'insert') {
249
- fallbackPairedItems = fallbackPairedItems ?? (0, utilities_1.generatePairedItemData)(items.length);
250
- let responseData = [];
251
- try {
252
- // Prepare the data to insert and copy it to be returned
285
+ if (operation === 'update') {
286
+ fallbackPairedItems = fallbackPairedItems ?? (0, utilities_1.generatePairedItemData)(items.length);
253
287
  const fields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('fields', 0));
254
288
  const useDotNotation = this.getNodeParameter('options.useDotNotation', 0, false);
255
289
  const dateFields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('options.dateFields', 0, ''));
256
- const insertItems = (0, GenericFunctions_1.prepareItems)({
290
+ const updateKey = (this.getNodeParameter('updateKey', 0) || '').trim();
291
+ const updateOptions = this.getNodeParameter('upsert', 0)
292
+ ? { upsert: true }
293
+ : undefined;
294
+ const updateItems = (0, GenericFunctions_1.prepareItems)({
257
295
  items,
258
296
  fields,
259
- updateKey: '',
297
+ updateKey,
260
298
  useDotNotation,
261
299
  dateFields,
300
+ isUpdate: nodeVersion >= 1.2,
262
301
  });
263
- const { insertedIds } = await mdb
264
- .collection(this.getNodeParameter('collection', 0))
265
- .insertMany(insertItems);
266
- // Add the id to the data
267
- for (const i of Object.keys(insertedIds)) {
268
- responseData.push({
269
- ...insertItems[parseInt(i, 10)],
270
- id: insertedIds[parseInt(i, 10)],
271
- });
302
+ for (const item of updateItems) {
303
+ try {
304
+ const filter = { [updateKey]: item[updateKey] };
305
+ if (updateKey === '_id') {
306
+ filter[updateKey] = new mongodb_1.ObjectId(item[updateKey]);
307
+ delete item._id;
308
+ }
309
+ await mdb
310
+ .collection(this.getNodeParameter('collection', 0))
311
+ .updateOne(filter, { $set: item }, updateOptions);
312
+ }
313
+ catch (error) {
314
+ if (this.continueOnFail()) {
315
+ item.json = { error: error.message };
316
+ continue;
317
+ }
318
+ throw error;
319
+ }
272
320
  }
321
+ returnData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(updateItems), { itemData: fallbackPairedItems });
273
322
  }
274
- catch (error) {
275
- if (this.continueOnFail()) {
276
- responseData = [{ error: error.message }];
323
+ if (operation === 'listSearchIndexes') {
324
+ for (let i = 0; i < itemsLength; i++) {
325
+ try {
326
+ const collection = this.getNodeParameter('collection', i);
327
+ const indexName = (() => {
328
+ const name = this.getNodeParameter('indexName', i);
329
+ return name.length === 0 ? undefined : name;
330
+ })();
331
+ const cursor = indexName
332
+ ? mdb.collection(collection).listSearchIndexes(indexName)
333
+ : mdb.collection(collection).listSearchIndexes();
334
+ const query = await cursor.toArray();
335
+ const result = query.map((json) => ({
336
+ json,
337
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
338
+ }));
339
+ returnData.push(...result);
340
+ }
341
+ catch (error) {
342
+ if (this.continueOnFail()) {
343
+ returnData.push({
344
+ json: { error: error.message },
345
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
346
+ });
347
+ continue;
348
+ }
349
+ throw error;
350
+ }
277
351
  }
278
- else {
279
- throw error;
352
+ }
353
+ if (operation === 'dropSearchIndex') {
354
+ for (let i = 0; i < itemsLength; i++) {
355
+ try {
356
+ const collection = this.getNodeParameter('collection', i);
357
+ const indexName = this.getNodeParameter('indexNameRequired', i);
358
+ await mdb.collection(collection).dropSearchIndex(indexName);
359
+ returnData.push({
360
+ json: {
361
+ [indexName]: true,
362
+ },
363
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
364
+ });
365
+ }
366
+ catch (error) {
367
+ if (this.continueOnFail()) {
368
+ returnData.push({
369
+ json: { error: error.message },
370
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
371
+ });
372
+ continue;
373
+ }
374
+ throw error;
375
+ }
280
376
  }
281
377
  }
282
- returnData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: fallbackPairedItems });
283
- }
284
- if (operation === 'update') {
285
- fallbackPairedItems = fallbackPairedItems ?? (0, utilities_1.generatePairedItemData)(items.length);
286
- const fields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('fields', 0));
287
- const useDotNotation = this.getNodeParameter('options.useDotNotation', 0, false);
288
- const dateFields = (0, GenericFunctions_1.prepareFields)(this.getNodeParameter('options.dateFields', 0, ''));
289
- const updateKey = (this.getNodeParameter('updateKey', 0) || '').trim();
290
- const updateOptions = this.getNodeParameter('upsert', 0)
291
- ? { upsert: true }
292
- : undefined;
293
- const updateItems = (0, GenericFunctions_1.prepareItems)({
294
- items,
295
- fields,
296
- updateKey,
297
- useDotNotation,
298
- dateFields,
299
- isUpdate: nodeVersion >= 1.2,
300
- });
301
- for (const item of updateItems) {
302
- try {
303
- const filter = { [updateKey]: item[updateKey] };
304
- if (updateKey === '_id') {
305
- filter[updateKey] = new mongodb_1.ObjectId(item[updateKey]);
306
- delete item._id;
378
+ if (operation === 'createSearchIndex') {
379
+ for (let i = 0; i < itemsLength; i++) {
380
+ try {
381
+ const collection = this.getNodeParameter('collection', i);
382
+ const indexName = this.getNodeParameter('indexNameRequired', i);
383
+ const definition = JSON.parse(this.getNodeParameter('indexDefinition', i));
384
+ await mdb.collection(collection).createSearchIndex({
385
+ name: indexName,
386
+ definition,
387
+ });
388
+ returnData.push({
389
+ json: { indexName },
390
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
391
+ });
392
+ }
393
+ catch (error) {
394
+ if (this.continueOnFail()) {
395
+ returnData.push({
396
+ json: { error: error.message },
397
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
398
+ });
399
+ continue;
400
+ }
401
+ throw error;
307
402
  }
308
- await mdb
309
- .collection(this.getNodeParameter('collection', 0))
310
- .updateOne(filter, { $set: item }, updateOptions);
311
403
  }
312
- catch (error) {
313
- if (this.continueOnFail()) {
314
- item.json = { error: error.message };
315
- continue;
404
+ }
405
+ if (operation === 'updateSearchIndex') {
406
+ for (let i = 0; i < itemsLength; i++) {
407
+ try {
408
+ const collection = this.getNodeParameter('collection', i);
409
+ const indexName = this.getNodeParameter('indexNameRequired', i);
410
+ const definition = JSON.parse(this.getNodeParameter('indexDefinition', i));
411
+ await mdb.collection(collection).updateSearchIndex(indexName, definition);
412
+ returnData.push({
413
+ json: { [indexName]: true },
414
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
415
+ });
416
+ }
417
+ catch (error) {
418
+ if (this.continueOnFail()) {
419
+ returnData.push({
420
+ json: { error: error.message },
421
+ pairedItem: fallbackPairedItems ?? [{ item: i }],
422
+ });
423
+ continue;
424
+ }
425
+ throw error;
316
426
  }
317
- throw error;
318
427
  }
319
428
  }
320
- returnData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(updateItems), { itemData: fallbackPairedItems });
321
429
  }
322
- await client.close();
430
+ finally {
431
+ await client.close().catch(() => { });
432
+ }
323
433
  return [(0, GenericFunctions_1.stringifyObjectIDs)(returnData)];
324
434
  }
325
435
  }