n8n-nodes-pocketbase 0.3.2 → 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.
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.PocketBase = void 0;
7
4
  const n8n_workflow_1 = require("n8n-workflow");
8
- const pocketbase_1 = __importDefault(require("pocketbase"));
5
+ const GenericFunctions_1 = require("./GenericFunctions");
6
+ const LoadOptions_1 = require("./LoadOptions");
9
7
  class PocketBase {
10
8
  constructor() {
11
9
  this.description = {
@@ -19,29 +17,42 @@ class PocketBase {
19
17
  defaults: {
20
18
  name: 'PocketBase',
21
19
  },
20
+ usableAsTool: true,
22
21
  codex: {
23
22
  categories: ['AI'],
24
23
  subcategories: {
25
24
  AI: ['Tools'],
26
25
  Tools: ['Other Tools'],
27
- }
26
+ },
28
27
  },
29
- inputs: ["main"],
30
- outputs: ["main"],
28
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
29
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
31
30
  credentials: [
32
31
  {
33
32
  name: 'pocketBaseApi',
34
33
  required: true,
35
34
  },
36
35
  ],
36
+ requestDefaults: {
37
+ returnFullResponse: true,
38
+ baseURL: '={{$credentials.url.replace(new RegExp("/$"), "")}}',
39
+ headers: {
40
+ Accept: 'application/json',
41
+ 'Content-Type': 'application/json',
42
+ },
43
+ },
37
44
  properties: [
38
45
  {
39
- displayName: 'Resource',
46
+ displayName: 'Collection Name or ID',
40
47
  name: 'resource',
41
- type: 'string',
48
+ type: 'options',
42
49
  default: '',
50
+ noDataExpression: true,
43
51
  required: true,
44
- description: 'The Resource (PB: Collection) you are working on/with'
52
+ typeOptions: {
53
+ loadOptionsMethod: 'getCollections',
54
+ },
55
+ description: 'The Resource (PB: Collection) you are working on/with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
45
56
  },
46
57
  {
47
58
  displayName: 'Operation',
@@ -51,40 +62,84 @@ class PocketBase {
51
62
  {
52
63
  name: 'List/Search',
53
64
  value: 'search',
54
- action: 'List or search your collection'
65
+ action: 'List or search your collection',
66
+ routing: {
67
+ request: {
68
+ method: 'GET',
69
+ url: '=/api/collections/{{$parameter["resource"]}}/records',
70
+ },
71
+ output: {
72
+ postReceive: [GenericFunctions_1.recordViewPostReceiveAction],
73
+ },
74
+ send: {
75
+ preSend: [GenericFunctions_1.recordViewPreSendAction],
76
+ paginate: true,
77
+ },
78
+ operations: { pagination: GenericFunctions_1.pagination },
79
+ },
55
80
  },
56
81
  {
57
82
  name: 'View',
58
83
  value: 'view',
59
- action: 'View an element in your collection'
84
+ action: 'View an element in your collection',
85
+ routing: {
86
+ request: {
87
+ method: 'GET',
88
+ url: `=/api/collections/{{$parameter["resource"]}}/records/{{$parameter["elementId"]}}`,
89
+ },
90
+ send: {
91
+ preSend: [GenericFunctions_1.recordViewPreSendAction],
92
+ },
93
+ },
60
94
  },
61
95
  {
62
96
  name: 'Create',
63
97
  value: 'create',
64
- action: 'Create an element in your collection'
98
+ action: 'Create an element in your collection',
99
+ routing: {
100
+ request: {
101
+ method: 'POST',
102
+ url: `=/api/collections/{{$parameter["resource"]}}/records`,
103
+ },
104
+ send: {
105
+ preSend: [GenericFunctions_1.recordCreatePreSendAction],
106
+ },
107
+ },
65
108
  },
66
109
  {
67
110
  name: 'Update',
68
111
  value: 'update',
69
- action: 'Update an element in your collection'
70
- }
112
+ action: 'Update an element in your collection',
113
+ routing: {
114
+ request: {
115
+ method: 'PATCH',
116
+ url: `=/api/collections/{{$parameter["resource"]}}/records/{{$parameter["elementId"]}}`,
117
+ },
118
+ send: {
119
+ preSend: [GenericFunctions_1.recordUpdatePreSendAction],
120
+ },
121
+ },
122
+ },
71
123
  ],
72
124
  default: 'search',
73
125
  required: true,
74
- noDataExpression: true
126
+ noDataExpression: true,
75
127
  },
76
128
  {
77
- displayName: 'Element ID',
129
+ displayName: 'Element Name or ID',
78
130
  name: 'elementId',
79
- type: 'string',
131
+ type: 'options',
132
+ description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
133
+ typeOptions: {
134
+ loadOptionsDependsOn: ['resource', 'parameters.fields'],
135
+ loadOptionsMethod: 'getRows',
136
+ },
80
137
  default: '',
81
138
  displayOptions: {
82
139
  show: {
83
- operation: [
84
- 'view', 'update'
85
- ]
86
- }
87
- }
140
+ operation: ['view', 'update'],
141
+ },
142
+ },
88
143
  },
89
144
  {
90
145
  displayName: 'Parameters',
@@ -92,170 +147,183 @@ class PocketBase {
92
147
  type: 'collection',
93
148
  default: {},
94
149
  options: [
150
+ {
151
+ displayName: 'All Elements',
152
+ name: 'allElements',
153
+ type: 'boolean',
154
+ default: false,
155
+ },
95
156
  {
96
157
  displayName: 'Elements per Page',
97
158
  name: 'elementsPerPage',
98
159
  type: 'number',
99
160
  typeOptions: {
100
- minValue: 1
161
+ minValue: 1,
101
162
  },
102
- default: 30
163
+ default: 30,
164
+ routing: {
165
+ send: {
166
+ type: 'query',
167
+ property: 'perPage'
168
+ },
169
+ }
103
170
  },
104
171
  {
105
- displayName: 'Expand',
106
- name: 'expand',
107
- type: 'string',
108
- default: ''
172
+ displayName: 'Expand Relations',
173
+ description: 'Choose from the list, or specify the Name using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
174
+ name: 'relation',
175
+ type: 'multiOptions',
176
+ default: [],
177
+ typeOptions: {
178
+ loadOptionsMethod: 'getRelations',
179
+ },
180
+ routing: {
181
+ request: {
182
+ qs: {
183
+ expand: '={{ $value ? $value.join(",") : undefined }}',
184
+ },
185
+ },
186
+ },
187
+ },
188
+ {
189
+ displayName: 'Field Names',
190
+ description: 'Choose from the list, or specify Names using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
191
+ name: 'fields',
192
+ type: 'multiOptions',
193
+ typeOptions: {
194
+ loadOptionsMethod: 'getFields',
195
+ },
196
+ default: [],
197
+ routing: {
198
+ request: {
199
+ qs: {
200
+ fields: '={{ $value ? $value.join(",") : undefined }}',
201
+ },
202
+ },
203
+ },
109
204
  },
110
205
  {
111
206
  displayName: 'Filter',
112
207
  name: 'filter',
113
208
  type: 'string',
114
- default: ''
209
+ default: '',
210
+ routing: {
211
+ send: {
212
+ type: 'query',
213
+ property: 'filter'
214
+ },
215
+ }
115
216
  },
116
217
  {
117
218
  displayName: 'Page',
118
219
  name: 'page',
119
220
  type: 'number',
120
221
  typeOptions: {
121
- minValue: 1
222
+ minValue: 1,
122
223
  },
123
- default: 1
224
+ default: 1,
225
+ routing: {
226
+ send: {
227
+ type: 'query',
228
+ property: 'page'
229
+ },
230
+ }
124
231
  },
125
232
  {
126
233
  displayName: 'Sort',
127
234
  name: 'sort',
128
235
  type: 'string',
129
- default: ''
236
+ default: '',
237
+ routing: {
238
+ send: {
239
+ type: 'query',
240
+ property: 'sort'
241
+ },
242
+ }
243
+ },
244
+ ],
245
+ },
246
+ {
247
+ displayName: 'Body Type',
248
+ name: 'bodyType',
249
+ type: 'multiOptions',
250
+ default: ['fields'],
251
+ options: [
252
+ {
253
+ name: 'Fields',
254
+ value: 'fields',
255
+ },
256
+ {
257
+ name: 'JSON Body',
258
+ value: 'bodyJson',
259
+ },
260
+ {
261
+ name: 'Binary Data',
262
+ value: 'binaryData',
130
263
  }
131
264
  ]
132
265
  },
133
266
  {
134
- displayName: 'Body Parameters',
135
- name: 'bodyParameters',
136
- type: 'fixedCollection',
267
+ displayName: 'Fields',
268
+ name: 'fields',
269
+ type: 'assignmentCollection',
137
270
  displayOptions: {
138
271
  show: {
139
- operation: ['create', 'update']
140
- }
272
+ operation: ['create', 'update'],
273
+ bodyType: ['fields'],
274
+ },
141
275
  },
142
276
  typeOptions: {
143
- multipleValues: true,
277
+ loadOptionsDependsOn: ['resource'],
278
+ loadOptionsMethod: 'getFields',
144
279
  },
145
- placeholder: 'Add Parameter',
146
- default: {
147
- parameters: [
148
- {
149
- name: '',
150
- value: '',
151
- },
152
- ],
280
+ default: [],
281
+ },
282
+ {
283
+ displayName: 'JSON Body',
284
+ name: 'bodyJson',
285
+ type: 'json',
286
+ displayOptions: {
287
+ show: {
288
+ operation: ['create', 'update'],
289
+ bodyType: ['bodyJson'],
290
+ },
153
291
  },
154
- options: [
155
- {
156
- name: 'parameters',
157
- displayName: 'Parameter',
158
- values: [
159
- {
160
- displayName: 'Name',
161
- name: 'name',
162
- type: 'string',
163
- default: '',
164
- description: 'ID of the field to set. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
165
- },
166
- {
167
- displayName: 'Value',
168
- name: 'value',
169
- type: 'string',
170
- default: '',
171
- description: 'Value of the field to set',
172
- },
173
- ],
292
+ default: '',
293
+ placeholder: 'Body according to the collection\'s schema',
294
+ },
295
+ {
296
+ displayName: 'Binary Property Name',
297
+ name: 'binaryPropertyName',
298
+ type: 'string',
299
+ default: 'data',
300
+ displayOptions: {
301
+ show: {
302
+ operation: ['create', 'update'],
303
+ bodyType: ['binaryData'],
174
304
  },
175
- ],
305
+ },
306
+ description: 'Name of the binary property which contains the data to be sent',
307
+ },
308
+ {
309
+ displayName: 'Binary Field Name',
310
+ name: 'binaryFieldName',
311
+ type: 'string',
312
+ default: '',
313
+ displayOptions: {
314
+ show: {
315
+ operation: ['create', 'update'],
316
+ bodyType: ['binaryData'],
317
+ },
318
+ },
319
+ description: 'Name of the binary field according to the collection\'s schema. If left empty, the binary data will be sent as a file attachment.',
176
320
  }
177
321
  ],
178
322
  };
179
- }
180
- async execute() {
181
- const items = this.getInputData();
182
- const returnData = [];
183
- const auth = await this.getCredentials('pocketBaseApi', 0);
184
- const action = this.getNodeParameter('operation', 0);
185
- const pb = new pocketbase_1.default(auth.url);
186
- await pb.collection(auth.userCollection).authWithPassword(auth.username, auth.password);
187
- if (!pb.authStore.isValid) {
188
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Authentication failed!`);
189
- }
190
- const collection = this.getNodeParameter('resource', 0);
191
- for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
192
- try {
193
- let elementData;
194
- switch (action) {
195
- case 'search':
196
- elementData = await handleSearch(pb, this, collection, itemIndex);
197
- returnData.push(elementData);
198
- break;
199
- case 'view':
200
- elementData = await handleView(pb, this, collection, itemIndex);
201
- returnData.push(elementData);
202
- break;
203
- case 'update':
204
- elementData = await handleUpdate(pb, this, collection, itemIndex);
205
- returnData.push(elementData);
206
- break;
207
- case 'create':
208
- elementData = await handleCreate(pb, this, collection, itemIndex);
209
- returnData.push(elementData);
210
- break;
211
- }
212
- }
213
- catch (error) {
214
- if (this.continueOnFail()) {
215
- const inputData = this.getInputData(itemIndex);
216
- if (inputData && inputData.length > 0) {
217
- items.push({ json: inputData[0].json, error, pairedItem: itemIndex });
218
- }
219
- else {
220
- items.push({ json: {}, error, pairedItem: itemIndex });
221
- }
222
- }
223
- else {
224
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Something went wrong:<br>${JSON.stringify(error.response)}`, { itemIndex });
225
- }
226
- }
227
- }
228
- return [this.helpers.returnJsonArray(returnData)];
323
+ this.methods = {
324
+ loadOptions: LoadOptions_1.LoadOptions,
325
+ };
229
326
  }
230
327
  }
231
328
  exports.PocketBase = PocketBase;
232
- async function handleSearch(pb, context, collection, itemIndex) {
233
- const { page, elementsPerPage, ...parameters } = context.getNodeParameter('parameters', itemIndex);
234
- const records = await pb.collection(collection).getList(page, elementsPerPage, parameters);
235
- return {
236
- ...records
237
- };
238
- }
239
- async function handleView(pb, context, collection, itemIndex) {
240
- const elementId = context.getNodeParameter('elementId', itemIndex);
241
- const record = await pb.collection(collection).getOne(elementId);
242
- return record;
243
- }
244
- async function handleUpdate(pb, context, collection, itemIndex) {
245
- const elementId = context.getNodeParameter('elementId', itemIndex);
246
- const data = context.getNodeParameter('bodyParameters.parameters', itemIndex);
247
- const record = await pb.collection(collection).update(elementId, prepareRequestBody(data));
248
- return record;
249
- }
250
- async function handleCreate(pb, context, collection, itemIndex) {
251
- const data = context.getNodeParameter('bodyParameters.parameters', itemIndex);
252
- const record = await pb.collection(collection).create(prepareRequestBody(data));
253
- return record;
254
- }
255
- const prepareRequestBody = (parameters) => {
256
- return parameters.reduce((acc, entry) => {
257
- acc[entry.name] = entry.value;
258
- return acc;
259
- }, {});
260
- };
261
329
  //# sourceMappingURL=PocketBase.node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PocketBase.node.js","sourceRoot":"","sources":["../../../nodes/PocketBase/PocketBase.node.ts"],"names":[],"mappings":";;;;;;AAAA,+CAQsB;AAEtB,4DAAgE;AAUhE,MAAa,UAAU;IAAvB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,YAAY;YACzB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,6DAA6D;YACvE,WAAW,EAAE,wBAAwB;YACrC,QAAQ,EAAE;gBACT,IAAI,EAAE,YAAY;aAClB;YACD,KAAK,EAAE;gBACN,UAAU,EAAE,CAAC,IAAI,CAAC;gBAClB,aAAa,EAAE;oBACd,EAAE,EAAE,CAAC,OAAO,CAAC;oBACb,KAAK,EAAE,CAAC,aAAa,CAAC;iBACtB;aACD;YACD,MAAM,EAAE,QAAyB;YACjC,OAAO,EAAE,QAAyB;YAClC,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,IAAI;iBACd;aACD;YAGD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,uDAAuD;iBACpE;gBACD;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,aAAa;4BACnB,KAAK,EAAE,QAAQ;4BACf,MAAM,EAAE,gCAAgC;yBACxC;wBACD;4BACC,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,MAAM;4BACb,MAAM,EAAE,oCAAoC;yBAC5C;wBACD;4BACC,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,QAAQ;4BACf,MAAM,EAAE,sCAAsC;yBAC9C;wBACD;4BACC,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,QAAQ;4BACf,MAAM,EAAE,sCAAsC;yBAC9C;qBACD;oBACD,OAAO,EAAE,QAAQ;oBACjB,QAAQ,EAAE,IAAI;oBACd,gBAAgB,EAAE,IAAI;iBACtB;gBACD;oBACC,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,SAAS,EAAE;gCACV,MAAM,EAAE,QAAQ;6BAChB;yBACD;qBACD;iBACD;gBACD;oBACC,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE;wBACR;4BACC,WAAW,EAAE,mBAAmB;4BAChC,IAAI,EAAE,iBAAiB;4BACvB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE;gCACZ,QAAQ,EAAE,CAAC;6BACX;4BACD,OAAO,EAAE,EAAE;yBACX;wBACD;4BACC,WAAW,EAAE,QAAQ;4BACrB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;yBACX;wBACD;4BACC,WAAW,EAAE,QAAQ;4BACrB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;yBACX;wBAED;4BACC,WAAW,EAAE,MAAM;4BACnB,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE;gCACZ,QAAQ,EAAE,CAAC;6BACX;4BACD,OAAO,EAAE,CAAC;yBACV;wBACD;4BACC,WAAW,EAAE,MAAM;4BACnB,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;yBACX;qBACD;iBACD;gBACD;oBACC,WAAW,EAAE,iBAAiB;oBAC9B,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,iBAAiB;oBACvB,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;yBAC/B;qBACD;oBACD,WAAW,EAAE;wBACZ,cAAc,EAAE,IAAI;qBACpB;oBACD,WAAW,EAAE,eAAe;oBAC5B,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX;gCACC,IAAI,EAAE,EAAE;gCACR,KAAK,EAAE,EAAE;6BACT;yBACD;qBACD;oBACD,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,YAAY;4BAClB,WAAW,EAAE,WAAW;4BACxB,MAAM,EAAE;gCACP;oCACC,WAAW,EAAE,MAAM;oCACnB,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,WAAW,EACV,kJAAkJ;iCACnJ;gCACD;oCACC,WAAW,EAAE,OAAO;oCACpB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,WAAW,EAAE,2BAA2B;iCACxC;6BACD;yBACD;qBACD;iBACD;aACD;SACD,CAAC;IA4DH,CAAC;IA1DA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAA2B,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;QAE/D,MAAM,EAAE,GAAG,IAAI,oBAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxF,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAW,CAAC;QAElE,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC;gBACJ,IAAI,WAAW,CAAC;gBAChB,QAAQ,MAAM,EAAE,CAAC;oBAChB,KAAK,QAAQ;wBACZ,WAAW,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;wBAClE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC7B,MAAM;oBAEP,KAAK,MAAM;wBACV,WAAW,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;wBAChE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC7B,MAAM;oBAEP,KAAK,QAAQ;wBACZ,WAAW,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;wBAClE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC7B,MAAM;oBAEP,KAAK,QAAQ;wBACZ,WAAW,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;wBAClE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC7B,MAAM;gBACR,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC/C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvC,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;oBACrE,CAAC;yBAAM,CAAC;wBACP,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;oBACtD,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,iCAAkB,CAC3B,IAAI,CAAC,OAAO,EAAE,EACd,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAC5D,EAAC,SAAS,EAAC,CACX,CAAC;gBAEH,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IACnD,CAAC;CACD;AAxOD,gCAwOC;AAGD,KAAK,UAAU,YAAY,CAAC,EAAU,EAAE,OAA0B,EAAE,UAAkB,EAAE,SAAiB;IACxG,MAAM,EAAC,IAAI,EAAE,eAAe,EAAE,GAAG,UAAU,EAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAA0B,CAAC;IAC1H,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IAE3F,OAAO;QACN,GAAG,OAAO;KACK,CAAC;AAClB,CAAC;AAGD,KAAK,UAAU,UAAU,CAAC,EAAU,EAAE,OAA0B,EAAE,UAAkB,EAAE,SAAiB;IACtG,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAW,CAAC;IAC7E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjE,OAAO,MAAqB,CAAC;AAC9B,CAAC;AAGD,KAAK,UAAU,YAAY,CAAC,EAAU,EAAE,OAA0B,EAAE,UAAkB,EAAE,SAAiB;IACxG,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAW,CAAC;IAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,SAAS,CAAoB,CAAC;IACjG,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3F,OAAO,MAAqB,CAAC;AAC9B,CAAC;AAGD,KAAK,UAAU,YAAY,CAAC,EAAU,EAAE,OAA0B,EAAE,UAAkB,EAAE,SAAiB;IACxG,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,SAAS,CAAoB,CAAC;IACjG,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhF,OAAO,MAAqB,CAAC;AAC9B,CAAC;AAGD,MAAM,kBAAkB,GAAG,CAC1B,UAA2B,EAC1B,EAAE;IACH,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACvC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QAC9B,OAAO,GAAG,CAAC;IACZ,CAAC,EAAE,EAAiB,CAAC,CAAC;AACvB,CAAC,CAAC"}
1
+ {"version":3,"file":"PocketBase.node.js","sourceRoot":"","sources":["../../../nodes/PocketBase/PocketBase.node.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "node": "n8n-nodes-base.PocketBase",
2
+ "node": "n8n-nodes-pocketBase",
3
3
  "nodeVersion": "1.0",
4
4
  "codexVersion": "1.0",
5
5
  "categories": [
@@ -0,0 +1,2 @@
1
+ import { IExecuteSingleFunctions, IHttpRequestOptions } from 'n8n-workflow';
2
+ export declare function prepareRequestBody(this: IExecuteSingleFunctions, requestOptions: IHttpRequestOptions): Promise<IHttpRequestOptions>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.prepareRequestBody = prepareRequestBody;
7
+ const form_data_1 = __importDefault(require("form-data"));
8
+ async function prepareRequestBody(requestOptions) {
9
+ const bodyType = this.getNodeParameter('bodyType', ['parameters']);
10
+ const formData = new form_data_1.default();
11
+ if (bodyType.includes('fields')) {
12
+ this.getNodeParameter('fields', {
13
+ assignments: [],
14
+ }).assignments.forEach(function ({ name, value }) {
15
+ formData.append(name, value);
16
+ });
17
+ }
18
+ if (bodyType.includes('bodyJson')) {
19
+ Object.entries(requestOptions.body).forEach(([key, value]) => {
20
+ formData.append(key, value);
21
+ });
22
+ }
23
+ if (bodyType.includes('binaryData')) {
24
+ await handleBinaryData.apply(this, [formData]);
25
+ }
26
+ if (!requestOptions.headers) {
27
+ requestOptions.headers = {};
28
+ }
29
+ requestOptions.headers['Content-Type'] = 'multipart/form-data';
30
+ requestOptions.body = formData;
31
+ this.logger.info(`Request URL: ${requestOptions.url} | ${JSON.stringify(requestOptions.body)}`);
32
+ return requestOptions;
33
+ }
34
+ async function handleBinaryData(formData) {
35
+ const binaryPropertyName = this.getNodeParameter('binaryPropertyName', undefined);
36
+ if (!binaryPropertyName) {
37
+ this.logger.info('No binary data to send. Skipping...');
38
+ return;
39
+ }
40
+ const binaryFieldName = this.getNodeParameter('binaryFieldName', undefined);
41
+ this.logger.info('Adding binary data to request formData from property: ' +
42
+ binaryPropertyName +
43
+ '\nat: ' +
44
+ binaryFieldName);
45
+ const binaryData = this.helpers.assertBinaryData(binaryPropertyName);
46
+ const dataBuffer = await this.helpers.getBinaryDataBuffer(binaryPropertyName);
47
+ formData.append(binaryFieldName, dataBuffer, {
48
+ contentType: binaryData.mimeType,
49
+ filename: binaryData.fileName,
50
+ });
51
+ }
52
+ //# sourceMappingURL=RequestBodyFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestBodyFunctions.js","sourceRoot":"","sources":["../../../nodes/PocketBase/RequestBodyFunctions.ts"],"names":[],"mappings":";;;;;AAQA,gDAqCC;AA5CD,0DAAiC;AAO1B,KAAK,UAAU,kBAAkB,CAEvC,cAAmC;IAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAa,CAAC;IAE/E,MAAM,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;IAEhC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAEhC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAC/B,WAAW,EAAE,EAAE;SACf,CACD,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;YAC9C,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC5D,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACrC,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC7B,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;IAC7B,CAAC;IACD,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,qBAAqB,CAAC;IAE/D,cAAc,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,cAAc,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEhG,OAAO,cAAc,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAgC,QAAkB;IAChF,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,SAAS,CAAW,CAAC;IAE5F,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACxD,OAAO;IACR,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,SAAS,CAAW,CAAC;IACtF,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,wDAAwD;QACvD,kBAAkB;QAClB,QAAQ;QACR,eAAe,CAChB,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAE9E,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE;QAC5C,WAAW,EAAE,UAAU,CAAC,QAAQ;QAChC,QAAQ,EAAE,UAAU,CAAC,QAAQ;KAC7B,CAAC,CAAC;AACJ,CAAC"}