@noloco/n8n-nodes-noloco 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.
- package/LICENSE.md +19 -0
- package/README.md +69 -0
- package/dist/credentials/NolocoApi.credentials.d.ts +10 -0
- package/dist/credentials/NolocoApi.credentials.js +49 -0
- package/dist/credentials/NolocoApi.credentials.js.map +1 -0
- package/dist/icons/noloco.svg +1 -0
- package/dist/nodes/Noloco/Noloco.node.d.ts +11 -0
- package/dist/nodes/Noloco/Noloco.node.js +94 -0
- package/dist/nodes/Noloco/Noloco.node.js.map +1 -0
- package/dist/nodes/Noloco/Noloco.node.json +18 -0
- package/dist/nodes/Noloco/NolocoTrigger.node.d.ts +12 -0
- package/dist/nodes/Noloco/NolocoTrigger.node.js +187 -0
- package/dist/nodes/Noloco/NolocoTrigger.node.js.map +1 -0
- package/dist/nodes/Noloco/NolocoTrigger.node.json +18 -0
- package/dist/nodes/Noloco/actions/common.descriptions.d.ts +5 -0
- package/dist/nodes/Noloco/actions/common.descriptions.js +116 -0
- package/dist/nodes/Noloco/actions/common.descriptions.js.map +1 -0
- package/dist/nodes/Noloco/actions/node.type.d.ts +7 -0
- package/dist/nodes/Noloco/actions/node.type.js +3 -0
- package/dist/nodes/Noloco/actions/node.type.js.map +1 -0
- package/dist/nodes/Noloco/actions/record/Record.resource.d.ts +10 -0
- package/dist/nodes/Noloco/actions/record/Record.resource.js +107 -0
- package/dist/nodes/Noloco/actions/record/Record.resource.js.map +1 -0
- package/dist/nodes/Noloco/actions/record/create.operation.d.ts +3 -0
- package/dist/nodes/Noloco/actions/record/create.operation.js +80 -0
- package/dist/nodes/Noloco/actions/record/create.operation.js.map +1 -0
- package/dist/nodes/Noloco/actions/record/delete.operation.d.ts +3 -0
- package/dist/nodes/Noloco/actions/record/delete.operation.js +53 -0
- package/dist/nodes/Noloco/actions/record/delete.operation.js.map +1 -0
- package/dist/nodes/Noloco/actions/record/get.operation.d.ts +3 -0
- package/dist/nodes/Noloco/actions/record/get.operation.js +55 -0
- package/dist/nodes/Noloco/actions/record/get.operation.js.map +1 -0
- package/dist/nodes/Noloco/actions/record/getMany.operation.d.ts +3 -0
- package/dist/nodes/Noloco/actions/record/getMany.operation.js +161 -0
- package/dist/nodes/Noloco/actions/record/getMany.operation.js.map +1 -0
- package/dist/nodes/Noloco/actions/record/search.operation.d.ts +3 -0
- package/dist/nodes/Noloco/actions/record/search.operation.js +309 -0
- package/dist/nodes/Noloco/actions/record/search.operation.js.map +1 -0
- package/dist/nodes/Noloco/actions/record/update.operation.d.ts +3 -0
- package/dist/nodes/Noloco/actions/record/update.operation.js +92 -0
- package/dist/nodes/Noloco/actions/record/update.operation.js.map +1 -0
- package/dist/nodes/Noloco/actions/router.d.ts +2 -0
- package/dist/nodes/Noloco/actions/router.js +56 -0
- package/dist/nodes/Noloco/actions/router.js.map +1 -0
- package/dist/nodes/Noloco/helpers/constants.d.ts +45 -0
- package/dist/nodes/Noloco/helpers/constants.js +80 -0
- package/dist/nodes/Noloco/helpers/constants.js.map +1 -0
- package/dist/nodes/Noloco/helpers/interfaces.d.ts +106 -0
- package/dist/nodes/Noloco/helpers/interfaces.js +3 -0
- package/dist/nodes/Noloco/helpers/interfaces.js.map +1 -0
- package/dist/nodes/Noloco/helpers/transport.d.ts +17 -0
- package/dist/nodes/Noloco/helpers/transport.js +98 -0
- package/dist/nodes/Noloco/helpers/transport.js.map +1 -0
- package/dist/nodes/Noloco/helpers/utils.d.ts +16 -0
- package/dist/nodes/Noloco/helpers/utils.js +154 -0
- package/dist/nodes/Noloco/helpers/utils.js.map +1 -0
- package/dist/nodes/Noloco/methods/index.d.ts +3 -0
- package/dist/nodes/Noloco/methods/index.js +40 -0
- package/dist/nodes/Noloco/methods/index.js.map +1 -0
- package/dist/nodes/Noloco/methods/listSearch.d.ts +4 -0
- package/dist/nodes/Noloco/methods/listSearch.js +69 -0
- package/dist/nodes/Noloco/methods/listSearch.js.map +1 -0
- package/dist/nodes/Noloco/methods/loadOptions.d.ts +5 -0
- package/dist/nodes/Noloco/methods/loadOptions.js +135 -0
- package/dist/nodes/Noloco/methods/loadOptions.js.map +1 -0
- package/dist/nodes/Noloco/methods/resourceMapping.d.ts +2 -0
- package/dist/nodes/Noloco/methods/resourceMapping.js +88 -0
- package/dist/nodes/Noloco/methods/resourceMapping.js.map +1 -0
- package/dist/package.json +56 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +56 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright 2022 n8n
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
5
|
+
the Software without restriction, including without limitation the rights to
|
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
7
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
8
|
+
so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# @noloco/n8n-nodes-noloco
|
|
2
|
+
|
|
3
|
+
This is an n8n community node. It lets you use Noloco in your n8n workflows.
|
|
4
|
+
|
|
5
|
+
[Noloco](https://noloco.io) is a no-code platform for building internal tools and client portals. Connect your data sources and build custom applications without writing code.
|
|
6
|
+
|
|
7
|
+
[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
|
|
8
|
+
|
|
9
|
+
[Installation](#installation)
|
|
10
|
+
[Operations](#operations)
|
|
11
|
+
[Credentials](#credentials)
|
|
12
|
+
[Compatibility](#compatibility)
|
|
13
|
+
[Resources](#resources)
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
|
|
18
|
+
|
|
19
|
+
## Operations
|
|
20
|
+
|
|
21
|
+
This package includes two nodes:
|
|
22
|
+
|
|
23
|
+
### Noloco (Action Node)
|
|
24
|
+
|
|
25
|
+
Perform operations on Noloco records:
|
|
26
|
+
|
|
27
|
+
- **Create**: Create a new record in a collection
|
|
28
|
+
- **Delete**: Delete an existing record from a collection
|
|
29
|
+
- **Get**: Get a single record by ID
|
|
30
|
+
- **Get Many**: Get many records from a collection with optional filtering, sorting, and pagination
|
|
31
|
+
- **Search**: Search for records by field values
|
|
32
|
+
- **Update**: Update an existing record in a collection
|
|
33
|
+
|
|
34
|
+
### Noloco Trigger (Polling Trigger)
|
|
35
|
+
|
|
36
|
+
Start workflows when records change:
|
|
37
|
+
|
|
38
|
+
- **Record Created**: Triggers when a new record is created in a table
|
|
39
|
+
- **Record Updated**: Triggers when an existing record is updated in a table
|
|
40
|
+
|
|
41
|
+
## Credentials
|
|
42
|
+
|
|
43
|
+
To use this node, you need to configure Noloco API credentials with two API keys:
|
|
44
|
+
|
|
45
|
+
### Prerequisites
|
|
46
|
+
|
|
47
|
+
1. You must have access to a Noloco app
|
|
48
|
+
2. You need to generate API keys from your app's settings
|
|
49
|
+
|
|
50
|
+
### Setting Up Credentials
|
|
51
|
+
|
|
52
|
+
1. In your Noloco app, go to **Settings** > **Integrations & API Keys**
|
|
53
|
+
2. Copy the **Account API Key** - this authenticates your Noloco account
|
|
54
|
+
3. Copy the **App API Key** - this authenticates access to the specific app
|
|
55
|
+
4. In n8n, create new Noloco API credentials and paste both keys
|
|
56
|
+
|
|
57
|
+
For more details, see the [Noloco API Keys Guide](https://guides.noloco.io/settings/integrations-and-api-keys#api-keys).
|
|
58
|
+
|
|
59
|
+
## Compatibility
|
|
60
|
+
|
|
61
|
+
- Tested with n8n version 1.0+
|
|
62
|
+
- Requires Noloco REST API v1
|
|
63
|
+
|
|
64
|
+
## Resources
|
|
65
|
+
|
|
66
|
+
- [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
|
|
67
|
+
- [Noloco Documentation](https://guides.noloco.io/)
|
|
68
|
+
- [Noloco API Keys Guide](https://guides.noloco.io/settings/integrations-and-api-keys#api-keys)
|
|
69
|
+
- [Noloco Website](https://noloco.io)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, IconFile, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class NolocoApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
icon: IconFile;
|
|
5
|
+
displayName: string;
|
|
6
|
+
documentationUrl: string;
|
|
7
|
+
properties: INodeProperties[];
|
|
8
|
+
authenticate: IAuthenticateGeneric;
|
|
9
|
+
test: ICredentialTestRequest;
|
|
10
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NolocoApi = void 0;
|
|
4
|
+
class NolocoApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'nolocoApi';
|
|
7
|
+
this.icon = 'file:../icons/noloco.svg';
|
|
8
|
+
this.displayName = 'Noloco API';
|
|
9
|
+
this.documentationUrl = 'https://guides.noloco.io/settings/integrations-and-api-keys#api-keys';
|
|
10
|
+
this.properties = [
|
|
11
|
+
{
|
|
12
|
+
displayName: 'Account API Key',
|
|
13
|
+
name: 'accountKey',
|
|
14
|
+
type: 'string',
|
|
15
|
+
typeOptions: { password: true },
|
|
16
|
+
default: '',
|
|
17
|
+
required: true,
|
|
18
|
+
description: 'Copy the "Account API Key" field from the integration settings page in your app settings',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
displayName: 'App API Key',
|
|
22
|
+
name: 'appKey',
|
|
23
|
+
type: 'string',
|
|
24
|
+
typeOptions: { password: true },
|
|
25
|
+
default: '',
|
|
26
|
+
required: true,
|
|
27
|
+
description: 'Copy the "App API Key" from the integration settings page in your app settings',
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
this.authenticate = {
|
|
31
|
+
type: 'generic',
|
|
32
|
+
properties: {
|
|
33
|
+
headers: {
|
|
34
|
+
Authorization: '=Bearer {{$credentials.accountKey}}',
|
|
35
|
+
'X-Noloco-App-Token': '=Bearer {{$credentials.appKey}}',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
this.test = {
|
|
40
|
+
request: {
|
|
41
|
+
baseURL: 'https://api.portals.noloco.io',
|
|
42
|
+
url: '/v1/meta/me',
|
|
43
|
+
method: 'GET',
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.NolocoApi = NolocoApi;
|
|
49
|
+
//# sourceMappingURL=NolocoApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NolocoApi.credentials.js","sourceRoot":"","sources":["../../credentials/NolocoApi.credentials.ts"],"names":[],"mappings":";;;AAQA,MAAa,SAAS;IAAtB;QACC,SAAI,GAAG,WAAW,CAAC;QACnB,SAAI,GAAG,0BAAsC,CAAC;QAE9C,gBAAW,GAAG,YAAY,CAAC;QAE3B,qBAAgB,GAAG,sEAAsE,CAAC;QAE1F,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACV,0FAA0F;aAC3F;YACD;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,gFAAgF;aAC7F;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,qCAAqC;oBACpD,oBAAoB,EAAE,iCAAiC;iBACvD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,+BAA+B;gBACxC,GAAG,EAAE,aAAa;gBAClB,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AA/CD,8BA+CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="none" height="100%" viewBox="0 0 1149 1407" width="100%" xmlns="http://www.w3.org/2000/svg" class="h-full py-1"><path clip-rule="evenodd" d="M1147.14 242.358C1146.4 26.1707 884.589 -81.2438 732.199 72.0995L488.299 317.549C473.973 331.994 474.097 355.206 488.423 369.527C535.35 416.197 611.302 415.95 657.853 369.034L843.228 182.601C897.314 128.152 990.183 166.303 990.427 242.975L992.282 801.283C992.527 877.956 899.904 916.729 845.445 862.644L413.832 433.483C260.452 281.126 -0.740251 390.146 0.00157676 606.332L1.85379 1164.65C2.59445 1380.83 264.404 1488.24 416.795 1334.9L665.516 1084.64C676.994 1073.04 676.877 1054.39 665.388 1042.9C615.618 993.401 535.104 993.646 485.582 1043.52L305.651 1224.64C251.56 1279.1 158.692 1240.94 158.445 1164.27L156.592 605.959C156.345 529.291 248.966 490.523 303.428 544.601L735.162 973.647C888.543 1126 1149.62 1016.85 1149 800.665L1147.14 242.358Z" fill="oklch(0.541 0.247 293.009)" fill-rule="evenodd"></path></svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
import { listSearch, loadOptions, resourceMapping } from './methods';
|
|
3
|
+
export declare class Noloco implements INodeType {
|
|
4
|
+
description: INodeTypeDescription;
|
|
5
|
+
methods: {
|
|
6
|
+
listSearch: typeof listSearch;
|
|
7
|
+
loadOptions: typeof loadOptions;
|
|
8
|
+
resourceMapping: typeof resourceMapping;
|
|
9
|
+
};
|
|
10
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Noloco = void 0;
|
|
37
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
38
|
+
const router_1 = require("./actions/router");
|
|
39
|
+
const record = __importStar(require("./actions/record/Record.resource"));
|
|
40
|
+
const common_descriptions_1 = require("./actions/common.descriptions");
|
|
41
|
+
const methods_1 = require("./methods");
|
|
42
|
+
class Noloco {
|
|
43
|
+
constructor() {
|
|
44
|
+
this.description = {
|
|
45
|
+
displayName: 'Noloco',
|
|
46
|
+
name: 'noloco',
|
|
47
|
+
icon: 'file:../../icons/noloco.svg',
|
|
48
|
+
group: ['transform'],
|
|
49
|
+
version: 1,
|
|
50
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
51
|
+
description: 'Interact with Noloco records',
|
|
52
|
+
defaults: {
|
|
53
|
+
name: 'Noloco',
|
|
54
|
+
},
|
|
55
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
56
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
57
|
+
usableAsTool: true,
|
|
58
|
+
credentials: [
|
|
59
|
+
{
|
|
60
|
+
name: 'nolocoApi',
|
|
61
|
+
required: true,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
properties: [
|
|
65
|
+
{
|
|
66
|
+
displayName: 'Resource',
|
|
67
|
+
name: 'resource',
|
|
68
|
+
type: 'options',
|
|
69
|
+
noDataExpression: true,
|
|
70
|
+
options: [
|
|
71
|
+
{
|
|
72
|
+
name: 'Record',
|
|
73
|
+
value: 'record',
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
default: 'record',
|
|
77
|
+
},
|
|
78
|
+
common_descriptions_1.appRLC,
|
|
79
|
+
common_descriptions_1.dataTypeRLC,
|
|
80
|
+
...record.description,
|
|
81
|
+
],
|
|
82
|
+
};
|
|
83
|
+
this.methods = {
|
|
84
|
+
listSearch: methods_1.listSearch,
|
|
85
|
+
loadOptions: methods_1.loadOptions,
|
|
86
|
+
resourceMapping: methods_1.resourceMapping,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async execute() {
|
|
90
|
+
return await router_1.router.call(this);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.Noloco = Noloco;
|
|
94
|
+
//# sourceMappingURL=Noloco.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Noloco.node.js","sourceRoot":"","sources":["../../../nodes/Noloco/Noloco.node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,+CAAmD;AAEnD,6CAA0C;AAC1C,yEAA2D;AAC3D,uEAAoE;AACpE,uCAAqE;AAErE,MAAa,MAAM;IAAnB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,QAAQ;YACrB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,6BAA6B;YACnC,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE;gBACT,IAAI,EAAE,QAAQ;aACd;YACD,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,QAAQ;yBACf;qBACD;oBACD,OAAO,EAAE,QAAQ;iBACjB;gBACD,4BAAM;gBACN,iCAAW;gBACX,GAAG,MAAM,CAAC,WAAW;aACrB;SACD,CAAC;QAEF,YAAO,GAAG;YACT,UAAU,EAAV,oBAAU;YACV,WAAW,EAAX,qBAAW;YACX,eAAe,EAAf,yBAAe;SACf,CAAC;IAKH,CAAC;IAHA,KAAK,CAAC,OAAO;QACZ,OAAO,MAAM,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACD;AAlDD,wBAkDC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-noloco",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Data & Storage", "Productivity"],
|
|
6
|
+
"resources": {
|
|
7
|
+
"credentialDocumentation": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://guides.noloco.io/settings/integrations-and-api-keys#api-keys"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"primaryDocumentation": [
|
|
13
|
+
{
|
|
14
|
+
"url": "https://guides.noloco.io/"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type IPollFunctions, type INodeExecutionData, type INodeType, type INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
import { getApps, getTables } from './methods/listSearch';
|
|
3
|
+
export declare class NolocoTrigger implements INodeType {
|
|
4
|
+
description: INodeTypeDescription;
|
|
5
|
+
methods: {
|
|
6
|
+
listSearch: {
|
|
7
|
+
getApps: typeof getApps;
|
|
8
|
+
getTables: typeof getTables;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
poll(this: IPollFunctions): Promise<INodeExecutionData[][] | null>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NolocoTrigger = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const listSearch_1 = require("./methods/listSearch");
|
|
6
|
+
const transport_1 = require("./helpers/transport");
|
|
7
|
+
class NolocoTrigger {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.description = {
|
|
10
|
+
displayName: 'Noloco Trigger',
|
|
11
|
+
name: 'nolocoTrigger',
|
|
12
|
+
icon: 'file:../../icons/noloco.svg',
|
|
13
|
+
group: ['trigger'],
|
|
14
|
+
version: 1,
|
|
15
|
+
subtitle: '={{$parameter["event"]}}',
|
|
16
|
+
description: 'Triggers when records are created or updated in Noloco',
|
|
17
|
+
defaults: {
|
|
18
|
+
name: 'Noloco Trigger',
|
|
19
|
+
},
|
|
20
|
+
polling: true,
|
|
21
|
+
inputs: [],
|
|
22
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
23
|
+
usableAsTool: true,
|
|
24
|
+
credentials: [
|
|
25
|
+
{
|
|
26
|
+
name: 'nolocoApi',
|
|
27
|
+
required: true,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
properties: [
|
|
31
|
+
{
|
|
32
|
+
displayName: 'App',
|
|
33
|
+
name: 'app',
|
|
34
|
+
type: 'resourceLocator',
|
|
35
|
+
default: { mode: 'list', value: '' },
|
|
36
|
+
required: true,
|
|
37
|
+
modes: [
|
|
38
|
+
{
|
|
39
|
+
displayName: 'From List',
|
|
40
|
+
name: 'list',
|
|
41
|
+
type: 'list',
|
|
42
|
+
placeholder: 'Select an app...',
|
|
43
|
+
typeOptions: {
|
|
44
|
+
searchListMethod: 'getApps',
|
|
45
|
+
searchable: false,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
displayName: 'By Name',
|
|
50
|
+
name: 'name',
|
|
51
|
+
type: 'string',
|
|
52
|
+
placeholder: 'e.g. my-app',
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
description: 'The Noloco app to watch',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
displayName: 'Table',
|
|
59
|
+
name: 'dataType',
|
|
60
|
+
type: 'resourceLocator',
|
|
61
|
+
default: { mode: 'list', value: '' },
|
|
62
|
+
required: true,
|
|
63
|
+
modes: [
|
|
64
|
+
{
|
|
65
|
+
displayName: 'From List',
|
|
66
|
+
name: 'list',
|
|
67
|
+
type: 'list',
|
|
68
|
+
placeholder: 'Select a table...',
|
|
69
|
+
typeOptions: {
|
|
70
|
+
searchListMethod: 'getTables',
|
|
71
|
+
searchable: true,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
displayName: 'By API Name',
|
|
76
|
+
name: 'name',
|
|
77
|
+
type: 'string',
|
|
78
|
+
placeholder: 'e.g. user',
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
description: 'The table (data type) to watch',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
displayName: 'Event',
|
|
85
|
+
name: 'event',
|
|
86
|
+
type: 'options',
|
|
87
|
+
options: [
|
|
88
|
+
{
|
|
89
|
+
name: 'Record Created',
|
|
90
|
+
value: 'recordCreated',
|
|
91
|
+
description: 'Triggers when a new record is created',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'Record Updated',
|
|
95
|
+
value: 'recordUpdated',
|
|
96
|
+
description: 'Triggers when a record is updated',
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
default: 'recordCreated',
|
|
100
|
+
description: 'The event to listen for',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
displayName: 'Options',
|
|
104
|
+
name: 'options',
|
|
105
|
+
type: 'collection',
|
|
106
|
+
placeholder: 'Add Option',
|
|
107
|
+
default: {},
|
|
108
|
+
options: [
|
|
109
|
+
{
|
|
110
|
+
displayName: 'Include Related Data',
|
|
111
|
+
name: 'include',
|
|
112
|
+
type: 'string',
|
|
113
|
+
default: '',
|
|
114
|
+
description: 'Comma-separated list of relationship field API names to include in the response',
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
};
|
|
120
|
+
this.methods = {
|
|
121
|
+
listSearch: {
|
|
122
|
+
getApps: listSearch_1.getApps,
|
|
123
|
+
getTables: listSearch_1.getTables,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
async poll() {
|
|
128
|
+
var _a;
|
|
129
|
+
const projectName = this.getNodeParameter('app', '', {
|
|
130
|
+
extractValue: true,
|
|
131
|
+
});
|
|
132
|
+
const dataType = this.getNodeParameter('dataType', '', {
|
|
133
|
+
extractValue: true,
|
|
134
|
+
});
|
|
135
|
+
const event = this.getNodeParameter('event');
|
|
136
|
+
const options = this.getNodeParameter('options');
|
|
137
|
+
const sortBy = event === 'recordUpdated' ? 'updatedAt' : 'createdAt';
|
|
138
|
+
const include = options.include
|
|
139
|
+
? options.include.split(',').map((s) => s.trim())
|
|
140
|
+
: undefined;
|
|
141
|
+
const staticData = this.getWorkflowStaticData('node');
|
|
142
|
+
const lastTimestamp = staticData.lastTimestamp;
|
|
143
|
+
const response = await transport_1.fetchProjectRecords.call(this, projectName, dataType, {
|
|
144
|
+
first: 100,
|
|
145
|
+
sortBy,
|
|
146
|
+
orderBy: 'DESC',
|
|
147
|
+
include,
|
|
148
|
+
});
|
|
149
|
+
if (response.records.length === 0) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
let newRecords;
|
|
153
|
+
if (lastTimestamp) {
|
|
154
|
+
const lastDate = new Date(lastTimestamp);
|
|
155
|
+
newRecords = response.records.filter((record) => {
|
|
156
|
+
var _a;
|
|
157
|
+
const recordDate = new Date(event === 'recordUpdated' ? ((_a = record.updatedAt) !== null && _a !== void 0 ? _a : record.createdAt) : record.createdAt);
|
|
158
|
+
return recordDate > lastDate;
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
const isManualRun = this.getMode() === 'manual';
|
|
163
|
+
if (isManualRun) {
|
|
164
|
+
newRecords = response.records.slice(0, 5);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
newRecords = [];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (response.records.length > 0) {
|
|
171
|
+
const mostRecentRecord = response.records[0];
|
|
172
|
+
staticData.lastTimestamp =
|
|
173
|
+
event === 'recordUpdated'
|
|
174
|
+
? ((_a = mostRecentRecord.updatedAt) !== null && _a !== void 0 ? _a : mostRecentRecord.createdAt)
|
|
175
|
+
: mostRecentRecord.createdAt;
|
|
176
|
+
}
|
|
177
|
+
if (newRecords.length === 0) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
const returnData = newRecords.map((record) => ({
|
|
181
|
+
json: record,
|
|
182
|
+
}));
|
|
183
|
+
return [returnData];
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.NolocoTrigger = NolocoTrigger;
|
|
187
|
+
//# sourceMappingURL=NolocoTrigger.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NolocoTrigger.node.js","sourceRoot":"","sources":["../../../nodes/Noloco/NolocoTrigger.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-noloco",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Data & Storage", "Productivity"],
|
|
6
|
+
"resources": {
|
|
7
|
+
"credentialDocumentation": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://guides.noloco.io/settings/integrations-and-api-keys#api-keys"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"primaryDocumentation": [
|
|
13
|
+
{
|
|
14
|
+
"url": "https://guides.noloco.io/"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fieldsResourceMapper = exports.recordIdRLC = exports.dataTypeRLC = exports.appRLC = void 0;
|
|
4
|
+
exports.appRLC = {
|
|
5
|
+
displayName: 'App',
|
|
6
|
+
name: 'app',
|
|
7
|
+
type: 'resourceLocator',
|
|
8
|
+
default: { mode: 'list', value: '' },
|
|
9
|
+
required: true,
|
|
10
|
+
modes: [
|
|
11
|
+
{
|
|
12
|
+
displayName: 'From List',
|
|
13
|
+
name: 'list',
|
|
14
|
+
type: 'list',
|
|
15
|
+
placeholder: 'Select an app...',
|
|
16
|
+
typeOptions: {
|
|
17
|
+
searchListMethod: 'getApps',
|
|
18
|
+
searchable: false,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
displayName: 'By Name',
|
|
23
|
+
name: 'name',
|
|
24
|
+
type: 'string',
|
|
25
|
+
placeholder: 'e.g. my-app',
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
description: 'The Noloco app to work with',
|
|
29
|
+
};
|
|
30
|
+
exports.dataTypeRLC = {
|
|
31
|
+
displayName: 'Table',
|
|
32
|
+
name: 'dataType',
|
|
33
|
+
type: 'resourceLocator',
|
|
34
|
+
default: { mode: 'list', value: '' },
|
|
35
|
+
required: true,
|
|
36
|
+
modes: [
|
|
37
|
+
{
|
|
38
|
+
displayName: 'From List',
|
|
39
|
+
name: 'list',
|
|
40
|
+
type: 'list',
|
|
41
|
+
placeholder: 'Select a table...',
|
|
42
|
+
typeOptions: {
|
|
43
|
+
searchListMethod: 'getTables',
|
|
44
|
+
searchable: true,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
displayName: 'By API Name',
|
|
49
|
+
name: 'name',
|
|
50
|
+
type: 'string',
|
|
51
|
+
placeholder: 'e.g. user',
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
description: 'The table (data type) to work with',
|
|
55
|
+
};
|
|
56
|
+
exports.recordIdRLC = {
|
|
57
|
+
displayName: 'Record ID',
|
|
58
|
+
name: 'recordId',
|
|
59
|
+
type: 'resourceLocator',
|
|
60
|
+
default: { mode: 'id', value: '' },
|
|
61
|
+
required: true,
|
|
62
|
+
modes: [
|
|
63
|
+
{
|
|
64
|
+
displayName: 'By ID',
|
|
65
|
+
name: 'id',
|
|
66
|
+
type: 'string',
|
|
67
|
+
placeholder: 'e.g. 123',
|
|
68
|
+
validation: [
|
|
69
|
+
{
|
|
70
|
+
type: 'regex',
|
|
71
|
+
properties: {
|
|
72
|
+
regex: '^[0-9]+$',
|
|
73
|
+
errorMessage: 'Record ID must be a number',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
displayName: 'From List',
|
|
80
|
+
name: 'list',
|
|
81
|
+
type: 'list',
|
|
82
|
+
placeholder: 'Select a record...',
|
|
83
|
+
typeOptions: {
|
|
84
|
+
searchListMethod: 'getRecords',
|
|
85
|
+
searchable: true,
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
description: 'The ID of the record',
|
|
90
|
+
};
|
|
91
|
+
exports.fieldsResourceMapper = {
|
|
92
|
+
displayName: 'Fields',
|
|
93
|
+
name: 'fields',
|
|
94
|
+
type: 'resourceMapper',
|
|
95
|
+
noDataExpression: true,
|
|
96
|
+
default: {
|
|
97
|
+
mappingMode: 'defineBelow',
|
|
98
|
+
value: null,
|
|
99
|
+
},
|
|
100
|
+
required: true,
|
|
101
|
+
typeOptions: {
|
|
102
|
+
loadOptionsDependsOn: ['app', 'dataType'],
|
|
103
|
+
resourceMapper: {
|
|
104
|
+
resourceMapperMethod: 'getMappingColumns',
|
|
105
|
+
mode: 'add',
|
|
106
|
+
fieldWords: {
|
|
107
|
+
singular: 'field',
|
|
108
|
+
plural: 'fields',
|
|
109
|
+
},
|
|
110
|
+
addAllFields: true,
|
|
111
|
+
multiKeyMatch: false,
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
description: 'The fields and values to set on the record',
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=common.descriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.descriptions.js","sourceRoot":"","sources":["../../../../nodes/Noloco/actions/common.descriptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AllEntities, Entity } from 'n8n-workflow';
|
|
2
|
+
type NolocoMap = {
|
|
3
|
+
record: 'create' | 'delete' | 'get' | 'getMany' | 'search' | 'update';
|
|
4
|
+
};
|
|
5
|
+
export type NolocoType = AllEntities<NolocoMap>;
|
|
6
|
+
export type NolocoRecordType = Entity<NolocoMap, 'record'>;
|
|
7
|
+
export {};
|