n8n-nodes-pocketbase 1.1.1 → 2.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.
Files changed (28) hide show
  1. package/README.md +19 -6
  2. package/dist/credentials/PocketbaseHttpApi.credentials.d.ts +1 -1
  3. package/dist/credentials/PocketbaseHttpApi.credentials.js +36 -41
  4. package/dist/credentials/PocketbaseHttpApi.credentials.js.map +1 -1
  5. package/dist/nodes/PocketbaseHttp/GenericFunctions.d.ts +1 -1
  6. package/dist/nodes/PocketbaseHttp/GenericFunctions.js +3 -3
  7. package/dist/nodes/PocketbaseHttp/GenericFunctions.js.map +1 -1
  8. package/dist/nodes/PocketbaseHttp/LoadOptions.d.ts +1 -1
  9. package/dist/nodes/PocketbaseHttp/LoadOptions.js +24 -19
  10. package/dist/nodes/PocketbaseHttp/LoadOptions.js.map +1 -1
  11. package/dist/nodes/PocketbaseHttp/PocketbaseAuth.d.ts +7 -0
  12. package/dist/nodes/PocketbaseHttp/PocketbaseAuth.js +50 -0
  13. package/dist/nodes/PocketbaseHttp/PocketbaseAuth.js.map +1 -0
  14. package/dist/nodes/PocketbaseHttp/PocketbaseHttp.node.d.ts +1 -1
  15. package/dist/nodes/PocketbaseHttp/PocketbaseHttp.node.js +114 -114
  16. package/dist/nodes/PocketbaseHttp/PocketbaseHttp.node.js.map +1 -1
  17. package/dist/nodes/PocketbaseHttp/RequestBodyFunctions.d.ts +1 -1
  18. package/dist/nodes/PocketbaseHttp/RequestBodyFunctions.js +25 -16
  19. package/dist/nodes/PocketbaseHttp/RequestBodyFunctions.js.map +1 -1
  20. package/dist/package.json +30 -18
  21. package/dist/tests/PocketbaseAuth.spec.d.ts +1 -0
  22. package/dist/tests/PocketbaseAuth.spec.js +75 -0
  23. package/dist/tests/PocketbaseAuth.spec.js.map +1 -0
  24. package/dist/tsconfig.tsbuildinfo +1 -1
  25. package/dist/vitest.config.d.ts +2 -0
  26. package/dist/vitest.config.js +11 -0
  27. package/dist/vitest.config.js.map +1 -0
  28. package/package.json +30 -18
package/README.md CHANGED
@@ -10,7 +10,8 @@ PocketBase is an open source backend consisting of embedded database (SQLite) wi
10
10
  [Operations](#operations)
11
11
  [Credentials](#credentials)
12
12
  [Compatibility](#compatibility)
13
- [Resources](#resources)
13
+ [Development](#development)
14
+ [Resources](#resources)
14
15
 
15
16
  ## Installation
16
17
 
@@ -23,16 +24,28 @@ Nearly all PocketBase operations for Base collections should be implemented.
23
24
  ## Credentials
24
25
 
25
26
  Ensure you have an Auth collection in your PocketBase defined and the "Username/Password" Auth method turned on.
26
- Alternatively, you can use your administrator account and the "_superusers" collection which PocketBase creates automatically since [v0.23.0](https://github.com/pocketbase/pocketbase/releases/tag/v0.23.0).
27
+ Alternatively, you can use your administrator account and the "\_superusers" collection which PocketBase creates automatically since [v0.23.0](https://github.com/pocketbase/pocketbase/releases/tag/v0.23.0).
27
28
 
28
29
  ## Compatibility
29
30
 
30
- This was developed for version 1.90.2 of n8n and version 0.27.2 of PocketBase.
31
+ This was developed for version 2.15.1 of n8n and version 0.36.9 of PocketBase.
31
32
 
32
- ## Resources
33
+ ## Development
34
+
35
+ This project uses modern tooling for development:
33
36
 
34
- * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
35
- * [PocketBase Introduction](https://pocketbase.io/docs/)
37
+ - **Linting**: [oxlint](https://oxc.rs/docs/guide/usage/linter.html) for fast linting.
38
+ - **Formatting**: [oxfmt](https://oxc.rs/docs/guide/usage/formatter.html) for fast formatting.
39
+ - **Testing**: [vitest](https://vitest.dev/) for unit and integration tests.
36
40
 
41
+ ### Scripts
37
42
 
43
+ - `npm run lint`: Lint the project.
44
+ - `npm run format`: Format the project.
45
+ - `npm test`: Run tests.
46
+ - `npm run test:pipeline`: Run a full integration test against a PocketBase instance in Docker and update the compatibility section in `README.md`.
47
+
48
+ ## Resources
38
49
 
50
+ - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
51
+ - [PocketBase Introduction](https://pocketbase.io/docs/)
@@ -1,4 +1,4 @@
1
- import { IAuthenticate, IconFile, ICredentialDataDecryptedObject, ICredentialTestRequest, ICredentialType, IHttpRequestHelper, INodeProperties } from 'n8n-workflow';
1
+ import { IAuthenticate, IconFile, ICredentialDataDecryptedObject, ICredentialTestRequest, ICredentialType, IHttpRequestHelper, INodeProperties } from "n8n-workflow";
2
2
  export declare class PocketbaseHttpApi implements ICredentialType {
3
3
  name: string;
4
4
  displayName: string;
@@ -1,95 +1,90 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PocketbaseHttpApi = void 0;
4
+ const PocketbaseAuth_1 = require("../nodes/PocketbaseHttp/PocketbaseAuth");
4
5
  class PocketbaseHttpApi {
5
6
  constructor() {
6
- this.name = 'pocketbaseHttpApi';
7
- this.displayName = 'PocketBase HTTP API';
8
- this.documentationUrl = 'https://pocketbase.io/docs/authentication/';
7
+ this.name = "pocketbaseHttpApi";
8
+ this.displayName = "PocketBase HTTP API";
9
+ this.documentationUrl = "https://pocketbase.io/docs/authentication/";
9
10
  this.properties = [
10
11
  {
11
- displayName: 'URL',
12
- name: 'url',
13
- type: 'string',
14
- default: '',
12
+ displayName: "URL",
13
+ name: "url",
14
+ type: "string",
15
+ default: "",
15
16
  required: true,
16
17
  },
17
18
  {
18
- displayName: 'Admin (_superusers) username',
19
- name: 'username',
20
- type: 'string',
21
- default: '',
19
+ displayName: "Admin (_superusers) username",
20
+ name: "username",
21
+ type: "string",
22
+ default: "",
22
23
  required: true,
23
24
  },
24
25
  {
25
- displayName: 'Admin (_superusers) password',
26
- name: 'password',
27
- type: 'string',
26
+ displayName: "Admin (_superusers) password",
27
+ name: "password",
28
+ type: "string",
28
29
  typeOptions: {
29
30
  password: true,
30
31
  },
31
- default: '',
32
+ default: "",
32
33
  required: true,
33
34
  },
34
35
  {
35
- displayName: 'Session Token',
36
- name: 'token',
37
- type: 'hidden',
36
+ displayName: "Session Token",
37
+ name: "token",
38
+ type: "hidden",
38
39
  typeOptions: {
39
40
  expirable: true,
40
41
  password: true,
41
42
  },
42
- default: '',
43
+ default: "",
43
44
  },
44
45
  ];
45
46
  this.test = {
46
47
  request: {
47
- baseURL: '={{$credentials?.url}}',
48
- url: '=/api/collections/_superusers/auth-with-password',
49
- method: 'POST',
48
+ baseURL: "={{$credentials?.url?.replace(/\\/$/, '')}}",
49
+ url: "=/api/collections/_superusers/auth-with-password",
50
+ method: "POST",
50
51
  body: {
51
- identity: '={{$credentials?.username}}',
52
- password: '={{$credentials?.password}}',
52
+ identity: "={{$credentials?.username}}",
53
+ password: "={{$credentials?.password}}",
53
54
  },
54
55
  },
55
56
  rules: [
56
57
  {
57
- type: 'responseCode',
58
+ type: "responseCode",
58
59
  properties: {
59
60
  value: 200,
60
- message: 'Test',
61
+ message: "Test",
61
62
  },
62
63
  },
63
64
  {
64
- type: 'responseCode',
65
+ type: "responseCode",
65
66
  properties: {
66
67
  value: 400,
67
- message: 'An error occurred during login',
68
+ message: "An error occurred during login",
68
69
  },
69
70
  },
70
71
  ],
71
72
  };
72
73
  this.authenticate = {
73
- type: 'generic',
74
+ type: "generic",
74
75
  properties: {
75
76
  headers: {
76
- Authorization: '={{ $credentials.token }}',
77
+ Authorization: "={{ $credentials.token }}",
77
78
  },
78
79
  },
79
80
  };
80
- this.icon = 'file:pocketbase.svg';
81
+ this.icon = "file:pocketbase.svg";
81
82
  }
82
83
  async preAuthentication(credentials) {
83
- const { username, password, url } = credentials;
84
- const { token } = (await this.helpers.httpRequest({
85
- method: 'POST',
86
- url: `${url.endsWith('/') ? url.slice(0, -1) : url}/api/collections/_superusers/auth-with-password`,
87
- body: {
88
- identity: username,
89
- password,
90
- },
91
- }));
92
- return { token };
84
+ if (credentials.token) {
85
+ return await PocketbaseAuth_1.refresh.call(this, credentials);
86
+ }
87
+ return await PocketbaseAuth_1.login.call(this, credentials);
93
88
  }
94
89
  }
95
90
  exports.PocketbaseHttpApi = PocketbaseHttpApi;
@@ -1 +1 @@
1
- {"version":3,"file":"PocketbaseHttpApi.credentials.js","sourceRoot":"","sources":["../../credentials/PocketbaseHttpApi.credentials.ts"],"names":[],"mappings":";;;AAgBA,MAAa,iBAAiB;IAA9B;QACC,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GAAG,qBAAqB,CAAC;QACpC,qBAAgB,GAAG,4CAA4C,CAAC;QAChE,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,KAAK;gBAClB,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,8BAA8B;gBAC3C,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,8BAA8B;gBAC3C,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;aACX;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,wBAAwB;gBACjC,GAAG,EAAE,kDAAkD;gBACvD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE;oBACL,QAAQ,EAAE,6BAA6B;oBACvC,QAAQ,EAAE,6BAA6B;iBACvC;aACD;YACD,KAAK,EAAE;gBACN;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,MAAM;qBACf;iBACD;gBACD;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,gCAAgC;qBACzC;iBACD;aACD;SACD,CAAC;QAgBF,iBAAY,GAAkB;YAC7B,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,2BAA2B;iBAC1C;aACD;SACD,CAAC;QAEF,SAAI,GAAG,qBAAiC,CAAC;IAC1C,CAAC;IAxBA,KAAK,CAAC,iBAAiB,CAA2B,WAA2C;QAC5F,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,WAAqC,CAAC;QAE1E,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YACjD,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,iDAAiD;YACnG,IAAI,EAAE;gBACL,QAAQ,EAAE,QAAQ;gBAClB,QAAQ;aACR;SACD,CAAC,CAAsB,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,CAAC;IAClB,CAAC;CAYD;AA7FD,8CA6FC"}
1
+ {"version":3,"file":"PocketbaseHttpApi.credentials.js","sourceRoot":"","sources":["../../credentials/PocketbaseHttpApi.credentials.ts"],"names":[],"mappings":";;;AASA,2EAAwE;AAExE,MAAa,iBAAiB;IAA9B;QACE,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GAAG,qBAAqB,CAAC;QACpC,qBAAgB,GAAG,4CAA4C,CAAC;QAChE,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,KAAK;gBAClB,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,WAAW,EAAE,8BAA8B;gBAC3C,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,WAAW,EAAE,8BAA8B;gBAC3C,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACX,QAAQ,EAAE,IAAI;iBACf;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACX,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,IAAI;iBACf;gBACD,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;QAEF,SAAI,GAA2B;YAC7B,OAAO,EAAE;gBACP,OAAO,EAAE,6CAA6C;gBACtD,GAAG,EAAE,kDAAkD;gBACvD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE;oBACJ,QAAQ,EAAE,6BAA6B;oBACvC,QAAQ,EAAE,6BAA6B;iBACxC;aACF;YACD,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACV,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,MAAM;qBAChB;iBACF;gBACD;oBACE,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACV,KAAK,EAAE,GAAG;wBACV,OAAO,EAAE,gCAAgC;qBAC1C;iBACF;aACF;SACF,CAAC;QASF,iBAAY,GAAkB;YAC5B,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,aAAa,EAAE,2BAA2B;iBAC3C;aACF;SACF,CAAC;QAEF,SAAI,GAAG,qBAAiC,CAAC;IAC3C,CAAC;IAjBC,KAAK,CAAC,iBAAiB,CAA2B,WAA2C;QAC3F,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,MAAM,wBAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,sBAAK,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;CAYF;AAtFD,8CAsFC"}
@@ -1,4 +1,4 @@
1
- import { DeclarativeRestApiSettings, IExecutePaginationFunctions, IExecuteSingleFunctions, IHttpRequestOptions, INodeExecutionData } from 'n8n-workflow';
1
+ import { DeclarativeRestApiSettings, IExecutePaginationFunctions, IExecuteSingleFunctions, IHttpRequestOptions, INodeExecutionData } from "n8n-workflow";
2
2
  export declare function recordViewPreSendAction(this: IExecuteSingleFunctions, requestOptions: IHttpRequestOptions): Promise<IHttpRequestOptions>;
3
3
  export declare function recordViewPostReceiveAction(this: IExecuteSingleFunctions, items: INodeExecutionData[]): Promise<INodeExecutionData[]>;
4
4
  export declare function recordUpdatePreSendAction(this: IExecuteSingleFunctions, requestOptions: IHttpRequestOptions): Promise<IHttpRequestOptions>;
@@ -22,9 +22,9 @@ async function recordCreatePreSendAction(requestOptions) {
22
22
  async function pagination(requestOptions) {
23
23
  var _a;
24
24
  var _b;
25
- const allIsActive = this.getNodeParameter('parameters.allElements', false);
25
+ const allIsActive = this.getNodeParameter("parameters.allElements", false);
26
26
  let executions = [];
27
- let page = this.getNodeParameter('parameters.page', 1);
27
+ let page = this.getNodeParameter("parameters.page", 1);
28
28
  let totalPages = page + 1;
29
29
  (_a = (_b = requestOptions.options).qs) !== null && _a !== void 0 ? _a : (_b.qs = {});
30
30
  do {
@@ -36,7 +36,7 @@ async function pagination(requestOptions) {
36
36
  }
37
37
  executions = executions.concat(responseData[0].json.items.map((item) => ({ json: item })));
38
38
  page++;
39
- } while (page < totalPages);
39
+ } while (page <= totalPages);
40
40
  return executions;
41
41
  }
42
42
  //# sourceMappingURL=GenericFunctions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/PocketbaseHttp/GenericFunctions.ts"],"names":[],"mappings":";;AAUA,0DAMC;AAED,kEAKC;AAED,8DAKC;AAED,8DAKC;AAED,gCAwBC;AAvDD,iEAA4D;AAErD,KAAK,UAAU,uBAAuB,CAE5C,cAAmC;IAEnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,cAAc,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO,cAAc,CAAC;AACvB,CAAC;AAEM,KAAK,UAAU,2BAA2B,CAEhD,KAA2B;IAE3B,OAAO,KAAK,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAE9C,cAAmC;IAEnC,OAAO,MAAM,yCAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC5D,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAE9C,cAAmC;IAEnC,OAAO,MAAM,yCAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC5D,CAAC;AAEM,KAAK,UAAU,UAAU,CAE/B,cAAwD;;;IAExD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,KAAK,CAAY,CAAC;IACtF,IAAI,UAAU,GAAyB,EAAE,CAAC;IAC1C,IAAI,IAAI,GAAW,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAW,CAAC;IACzE,IAAI,UAAU,GAAW,IAAI,GAAG,CAAC,CAAC;IAClC,YAAA,cAAc,CAAC,OAAO,EAAC,EAAE,uCAAF,EAAE,GAAK,EAAE,EAAC;IAEjC,GAAG,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACnE,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAc,CAAC;QAC3C,IAAI,WAAW,EAAE,CAAC;YACjB,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAoB,CAAC;QACxD,CAAC;QACD,UAAU,GAAG,UAAU,CAAC,MAAM,CAC5B,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7E,CAAC;QACF,IAAI,EAAE,CAAC;IACR,CAAC,QAAQ,IAAI,GAAG,UAAU,EAAE;IAE5B,OAAO,UAAU,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/PocketbaseHttp/GenericFunctions.ts"],"names":[],"mappings":";;AAUA,0DAMC;AAED,kEAKC;AAED,8DAKC;AAED,8DAKC;AAED,gCAwBC;AAvDD,iEAA4D;AAErD,KAAK,UAAU,uBAAuB,CAE3C,cAAmC;IAEnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,cAAc,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO,cAAc,CAAC;AACxB,CAAC;AAEM,KAAK,UAAU,2BAA2B,CAE/C,KAA2B;IAE3B,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAE7C,cAAmC;IAEnC,OAAO,MAAM,yCAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC7D,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAE7C,cAAmC;IAEnC,OAAO,MAAM,yCAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC7D,CAAC;AAEM,KAAK,UAAU,UAAU,CAE9B,cAAwD;;;IAExD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,KAAK,CAAY,CAAC;IACtF,IAAI,UAAU,GAAyB,EAAE,CAAC;IAC1C,IAAI,IAAI,GAAW,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAW,CAAC;IACzE,IAAI,UAAU,GAAW,IAAI,GAAG,CAAC,CAAC;IAClC,YAAA,cAAc,CAAC,OAAO,EAAC,EAAE,uCAAF,EAAE,GAAK,EAAE,EAAC;IAEjC,GAAG,CAAC;QACF,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACnE,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAc,CAAC;QAC3C,IAAI,WAAW,EAAE,CAAC;YAChB,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAoB,CAAC;QACzD,CAAC;QACD,UAAU,GAAG,UAAU,CAAC,MAAM,CAC3B,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAC9E,CAAC;QACF,IAAI,EAAE,CAAC;IACT,CAAC,QAAQ,IAAI,IAAI,UAAU,EAAE;IAE7B,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ILoadOptionsFunctions, INodePropertyOptions } from 'n8n-workflow';
1
+ import { ILoadOptionsFunctions, INodePropertyOptions } from "n8n-workflow";
2
2
  export interface PocketBaseField {
3
3
  autogeneratePattern?: string;
4
4
  hidden: boolean;
@@ -2,26 +2,28 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LoadOptions = void 0;
4
4
  async function loadPocketBaseFields(collectionName = null) {
5
- const { url } = await this.getCredentials('pocketbaseHttpApi');
5
+ const { url } = await this.getCredentials("pocketbaseHttpApi");
6
+ const normalizedUrl = url.replace(/\/$/, "");
6
7
  const resource = collectionName
7
8
  ? collectionName
8
- : this.getNodeParameter('resource');
9
- const { fields } = await this.helpers.httpRequestWithAuthentication.call(this, 'pocketbaseHttpApi', {
10
- url: `${url}/api/collections/${resource}`,
11
- method: 'GET',
9
+ : this.getNodeParameter("resource");
10
+ const { fields } = await this.helpers.httpRequestWithAuthentication.call(this, "pocketbaseHttpApi", {
11
+ url: `${normalizedUrl}/api/collections/${resource}`,
12
+ method: "GET",
12
13
  });
13
14
  return fields;
14
15
  }
15
16
  exports.LoadOptions = {
16
17
  async getCollections() {
17
- const { url } = await this.getCredentials('pocketbaseHttpApi');
18
+ const { url } = await this.getCredentials("pocketbaseHttpApi");
19
+ const normalizedUrl = url.replace(/\/$/, "");
18
20
  const items = [];
19
21
  let page = 1;
20
22
  let totalPages = 1;
21
23
  do {
22
- const { items: pageItems, totalPages: pageTotalPages } = await this.helpers.httpRequestWithAuthentication.call(this, 'pocketbaseHttpApi', {
23
- url: `${url}/api/collections`,
24
- method: 'GET',
24
+ const { items: pageItems, totalPages: pageTotalPages } = await this.helpers.httpRequestWithAuthentication.call(this, "pocketbaseHttpApi", {
25
+ url: `${normalizedUrl}/api/collections`,
26
+ method: "GET",
25
27
  qs: { page },
26
28
  });
27
29
  items.push(...pageItems);
@@ -36,10 +38,10 @@ exports.LoadOptions = {
36
38
  const returnData = [];
37
39
  const fields = await loadPocketBaseFields.call(this);
38
40
  fields === null || fields === void 0 ? void 0 : fields.forEach(({ name, type }) => {
39
- if (type === 'relation') {
41
+ if (type === "relation") {
40
42
  returnData.push({
41
43
  name: `All fields from relation '${name}'`,
42
- value: `expand.${name}.*`
44
+ value: `expand.${name}.*`,
43
45
  });
44
46
  return;
45
47
  }
@@ -54,7 +56,7 @@ exports.LoadOptions = {
54
56
  const returnData = [];
55
57
  const fields = await loadPocketBaseFields.call(this);
56
58
  fields === null || fields === void 0 ? void 0 : fields.forEach(({ name, type }) => {
57
- if (type !== 'relation') {
59
+ if (type !== "relation") {
58
60
  return;
59
61
  }
60
62
  returnData.push({
@@ -66,23 +68,26 @@ exports.LoadOptions = {
66
68
  },
67
69
  async getRows() {
68
70
  const returnData = [];
69
- const { url } = await this.getCredentials('pocketbaseHttpApi');
70
- const resource = this.getNodeParameter('resource');
71
- const { items } = await this.helpers.httpRequestWithAuthentication.call(this, 'pocketbaseHttpApi', {
72
- url: `${url}/api/collections/${resource}/records?sort=-created`,
73
- method: 'GET',
71
+ const { url } = await this.getCredentials("pocketbaseHttpApi");
72
+ const normalizedUrl = url.replace(/\/$/, "");
73
+ const resource = this.getNodeParameter("resource");
74
+ const { items } = await this.helpers.httpRequestWithAuthentication.call(this, "pocketbaseHttpApi", {
75
+ url: `${normalizedUrl}/api/collections/${resource}/records?sort=-created`,
76
+ method: "GET",
74
77
  });
75
78
  items === null || items === void 0 ? void 0 : items.forEach(({ id, ...data }) => {
76
79
  var _a, _b;
77
80
  const name = (_b = (_a = Object.entries(data).filter(([key]) => {
78
- return key === 'name';
81
+ return key === "name";
79
82
  })) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b[1];
80
83
  const shortColumns = Object.fromEntries(Object.entries(data).filter(([, column]) => {
81
84
  const serialized = JSON.stringify(column);
82
85
  return serialized.length <= 20 && serialized.length > 2;
83
86
  }));
87
+ const fallback = JSON.stringify(shortColumns).substring(1, 100);
88
+ const label = name || (fallback && fallback !== "}" ? fallback : id);
84
89
  returnData.push({
85
- name: name ? name : JSON.stringify(shortColumns).substring(1, 100),
90
+ name: label,
86
91
  value: id,
87
92
  });
88
93
  });
@@ -1 +1 @@
1
- {"version":3,"file":"LoadOptions.js","sourceRoot":"","sources":["../../../nodes/PocketbaseHttp/LoadOptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LoadOptions.js","sourceRoot":"","sources":["../../../nodes/PocketbaseHttp/LoadOptions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { IHttpRequestHelper, ICredentialDataDecryptedObject } from "n8n-workflow";
2
+ export declare function login(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject): Promise<{
3
+ token: string;
4
+ }>;
5
+ export declare function refresh(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject): Promise<{
6
+ token: string;
7
+ }>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.login = login;
4
+ exports.refresh = refresh;
5
+ async function login(credentials) {
6
+ if (typeof credentials !== "object" || credentials === null) {
7
+ throw new Error("Credentials must be an object");
8
+ }
9
+ const { username, password, url } = credentials;
10
+ if (typeof url !== "string" || url.trim() === "") {
11
+ throw new Error("PocketBase URL is missing or invalid in Credentials");
12
+ }
13
+ if (typeof username !== "string" || username.trim() === "") {
14
+ throw new Error("PocketBase Admin username is missing or invalid in Credentials");
15
+ }
16
+ if (typeof password !== "string" || password.trim() === "") {
17
+ throw new Error("PocketBase Admin password is missing or invalid in Credentials");
18
+ }
19
+ const normalizedUrl = url.endsWith("/") ? url.slice(0, -1) : url;
20
+ const { token } = (await this.helpers.httpRequest({
21
+ method: "POST",
22
+ url: `${normalizedUrl}/api/collections/_superusers/auth-with-password`,
23
+ body: {
24
+ identity: username,
25
+ password,
26
+ },
27
+ }));
28
+ return { token };
29
+ }
30
+ async function refresh(credentials) {
31
+ const { url, token: existingToken } = credentials;
32
+ const normalizedUrl = url.endsWith("/") ? url.slice(0, -1) : url;
33
+ try {
34
+ const { token } = (await this.helpers.httpRequest({
35
+ method: "POST",
36
+ url: `${normalizedUrl}/api/collections/_superusers/auth-refresh`,
37
+ headers: {
38
+ Authorization: existingToken,
39
+ },
40
+ }));
41
+ return { token };
42
+ }
43
+ catch (error) {
44
+ if (error.status === 401 || error.status === 403 || error.status === 404) {
45
+ return await login.call(this, credentials);
46
+ }
47
+ throw error;
48
+ }
49
+ }
50
+ //# sourceMappingURL=PocketbaseAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PocketbaseAuth.js","sourceRoot":"","sources":["../../../nodes/PocketbaseHttp/PocketbaseAuth.ts"],"names":[],"mappings":";;AAQA,sBA+BC;AAED,0BAsBC;AAvDM,KAAK,UAAU,KAAK,CAEzB,WAA2C;IAE3C,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,WAAqC,CAAC;IAE1E,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAEjE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAChD,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,GAAG,aAAa,iDAAiD;QACtE,IAAI,EAAE;YACJ,QAAQ,EAAE,QAAQ;YAClB,QAAQ;SACT;KACF,CAAC,CAAsB,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,OAAO,CAE3B,WAA2C;IAE3C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,WAAyD,CAAC;IAChG,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAEjE,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAChD,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,aAAa,2CAA2C;YAChE,OAAO,EAAE;gBACP,aAAa,EAAE,aAAa;aAC7B;SACF,CAAC,CAAsB,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzE,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type INodeType, type INodeTypeDescription } from 'n8n-workflow';
1
+ import { type INodeType, type INodeTypeDescription } from "n8n-workflow";
2
2
  export declare class PocketbaseHttp implements INodeType {
3
3
  description: INodeTypeDescription;
4
4
  methods: {