@rhizome-it/n8n-nodes-capucine-tools 0.0.0-stage → 0.1.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/README.md +42 -2
- package/dist/credentials/CapucineToolsApi.credentials.d.ts +10 -0
- package/dist/credentials/CapucineToolsApi.credentials.js +43 -0
- package/dist/credentials/CapucineToolsApi.credentials.js.map +1 -0
- package/dist/nodes/CapucineTools/CapucineTools.node.d.ts +13 -0
- package/dist/nodes/CapucineTools/CapucineTools.node.js +213 -0
- package/dist/nodes/CapucineTools/CapucineTools.node.js.map +1 -0
- package/dist/nodes/CapucineTools/CapucineTools.node.json +9 -0
- package/dist/nodes/CapucineTools/capucineTools.svg +1 -0
- package/dist/package.json +51 -0
- package/package.json +50 -5
package/README.md
CHANGED
|
@@ -1,3 +1,43 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @rhizome-it/n8n-nodes-capucine-tools
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
n8n community node for [Capucine Tools](https://github.com/RHIZOME-IT/capucine-tools-api).
|
|
4
|
+
|
|
5
|
+
The tool list is read at runtime from the API's OpenAPI document (`<base URL>/docs-json`):
|
|
6
|
+
every route exposed by Capucine Tools shows up in the **Tool** dropdown, with its path, query
|
|
7
|
+
and JSON body fields in **Fields**. A new tool in the API needs no new release of this node.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
In n8n: *Settings → Community nodes → Install*, package `@rhizome-it/n8n-nodes-capucine-tools`.
|
|
12
|
+
|
|
13
|
+
## Credential
|
|
14
|
+
|
|
15
|
+
**Capucine Tools API**: one credential per environment (local, prod…).
|
|
16
|
+
|
|
17
|
+
- **Base URL**: e.g. `https://capucine-tools.coolify.rhizome-it.com` or `http://localhost:3000`
|
|
18
|
+
- **API Key**: the API's `API_KEY`, sent as `Authorization: Bearer <key>`
|
|
19
|
+
|
|
20
|
+
The credential test only checks that the base URL serves the OpenAPI document; a wrong key
|
|
21
|
+
shows up as a 401 on the first call.
|
|
22
|
+
|
|
23
|
+
## Development
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install --ignore-scripts # isolated-vm (pulled by the CLI) does not build on non-LTS Node
|
|
27
|
+
npm run build
|
|
28
|
+
npm test # smoke test against a fake API
|
|
29
|
+
npm run lint
|
|
30
|
+
npm run dev # local n8n with the node linked (needs Node LTS)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Release
|
|
34
|
+
|
|
35
|
+
The CI (`.github/workflows/ci.yaml`) publishes to npm on every bare semver tag, through npm
|
|
36
|
+
trusted publishing (no npm token, with provenance):
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm version patch # or minor / major: bumps package.json, commits, tags (e.g. 0.1.1)
|
|
40
|
+
git push --follow-tags
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`npm publish` from a workstation is blocked by `prepublishOnly`, except with `RELEASE_MODE=1`.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, Icon, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class CapucineToolsApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
icon: Icon;
|
|
6
|
+
documentationUrl: string;
|
|
7
|
+
properties: INodeProperties[];
|
|
8
|
+
authenticate: IAuthenticateGeneric;
|
|
9
|
+
test: ICredentialTestRequest;
|
|
10
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CapucineToolsApi = void 0;
|
|
4
|
+
class CapucineToolsApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'capucineToolsApi';
|
|
7
|
+
this.displayName = 'Capucine Tools API';
|
|
8
|
+
this.icon = 'file:../nodes/CapucineTools/capucineTools.svg';
|
|
9
|
+
this.documentationUrl = 'https://github.com/RHIZOME-IT/n8n-nodes-capucine-tools';
|
|
10
|
+
this.properties = [
|
|
11
|
+
{
|
|
12
|
+
displayName: 'Base URL',
|
|
13
|
+
name: 'baseUrl',
|
|
14
|
+
type: 'string',
|
|
15
|
+
default: '',
|
|
16
|
+
placeholder: 'https://capucine-tools.coolify.rhizome-it.com',
|
|
17
|
+
required: true,
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
displayName: 'API Key',
|
|
21
|
+
name: 'apiKey',
|
|
22
|
+
type: 'string',
|
|
23
|
+
typeOptions: { password: true },
|
|
24
|
+
default: '',
|
|
25
|
+
required: true,
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
this.authenticate = {
|
|
29
|
+
type: 'generic',
|
|
30
|
+
properties: {
|
|
31
|
+
headers: { Authorization: '=Bearer {{$credentials.apiKey}}' },
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
this.test = {
|
|
35
|
+
request: {
|
|
36
|
+
baseURL: '={{$credentials.baseUrl.replace(/\\/$/, "")}}',
|
|
37
|
+
url: '/docs-json',
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.CapucineToolsApi = CapucineToolsApi;
|
|
43
|
+
//# sourceMappingURL=CapucineToolsApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CapucineToolsApi.credentials.js","sourceRoot":"","sources":["../../credentials/CapucineToolsApi.credentials.ts"],"names":[],"mappings":";;;AASA,MAAa,gBAAgB;IAA7B;QACC,SAAI,GAAG,kBAAkB,CAAC;QAE1B,gBAAW,GAAG,oBAAoB,CAAC;QAEnC,SAAI,GAAS,+CAA+C,CAAC;QAE7D,qBAAgB,GAAG,wDAAwD,CAAC;QAE5E,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,+CAA+C;gBAC5D,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE,EAAE,aAAa,EAAE,iCAAiC,EAAE;aAC7D;SACD,CAAC;QAIF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,+CAA+C;gBACxD,GAAG,EAAE,YAAY;aACjB;SACD,CAAC;IACH,CAAC;CAAA;AA3CD,4CA2CC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IExecuteFunctions, ILoadOptionsFunctions, INodeExecutionData, INodePropertyOptions, INodeType, INodeTypeDescription, ResourceMapperFields } from 'n8n-workflow';
|
|
2
|
+
export declare class CapucineTools implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
methods: {
|
|
5
|
+
loadOptions: {
|
|
6
|
+
getOperations(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
7
|
+
};
|
|
8
|
+
resourceMapping: {
|
|
9
|
+
getFields(this: ILoadOptionsFunctions): Promise<ResourceMapperFields>;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CapucineTools = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const CREDENTIAL = 'capucineToolsApi';
|
|
6
|
+
const METHODS = ['get', 'post', 'put', 'patch', 'delete'];
|
|
7
|
+
async function getBaseUrl() {
|
|
8
|
+
const { baseUrl } = await this.getCredentials(CREDENTIAL);
|
|
9
|
+
return String(baseUrl).replace(/\/$/, '');
|
|
10
|
+
}
|
|
11
|
+
async function getSpec() {
|
|
12
|
+
const baseUrl = await getBaseUrl.call(this);
|
|
13
|
+
return (await this.helpers.httpRequest({
|
|
14
|
+
url: `${baseUrl}/docs-json`,
|
|
15
|
+
json: true,
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
function deref(spec, schema) {
|
|
19
|
+
var _a, _b, _c, _d;
|
|
20
|
+
if (!(schema === null || schema === void 0 ? void 0 : schema.$ref))
|
|
21
|
+
return schema !== null && schema !== void 0 ? schema : {};
|
|
22
|
+
return (_d = (_b = (_a = spec.components) === null || _a === void 0 ? void 0 : _a.schemas) === null || _b === void 0 ? void 0 : _b[(_c = schema.$ref.split('/').pop()) !== null && _c !== void 0 ? _c : '']) !== null && _d !== void 0 ? _d : {};
|
|
23
|
+
}
|
|
24
|
+
function findOperation(spec, key) {
|
|
25
|
+
var _a;
|
|
26
|
+
const [method = '', path = ''] = key.split(' ');
|
|
27
|
+
return { method, path, op: (_a = spec.paths[path]) === null || _a === void 0 ? void 0 : _a[method.toLowerCase()] };
|
|
28
|
+
}
|
|
29
|
+
function inputsOf(spec, op) {
|
|
30
|
+
var _a, _b, _c, _d, _e;
|
|
31
|
+
const params = ((_a = op.parameters) !== null && _a !== void 0 ? _a : [])
|
|
32
|
+
.filter((p) => p.in === 'path' || p.in === 'query')
|
|
33
|
+
.map((p) => ({
|
|
34
|
+
name: p.name,
|
|
35
|
+
location: p.in,
|
|
36
|
+
required: p.in === 'path' || !!p.required,
|
|
37
|
+
schema: deref(spec, p.schema),
|
|
38
|
+
}));
|
|
39
|
+
const body = deref(spec, (_d = (_c = (_b = op.requestBody) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c['application/json']) === null || _d === void 0 ? void 0 : _d.schema);
|
|
40
|
+
const bodyInputs = Object.entries((_e = body.properties) !== null && _e !== void 0 ? _e : {}).map(([name, schema]) => {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
return ({
|
|
43
|
+
name,
|
|
44
|
+
location: 'body',
|
|
45
|
+
required: (_b = (_a = body.required) === null || _a === void 0 ? void 0 : _a.includes(name)) !== null && _b !== void 0 ? _b : false,
|
|
46
|
+
schema: deref(spec, schema),
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
return [...params, ...bodyInputs];
|
|
50
|
+
}
|
|
51
|
+
function fieldType(schema) {
|
|
52
|
+
if (schema.enum)
|
|
53
|
+
return 'options';
|
|
54
|
+
switch (schema.type) {
|
|
55
|
+
case 'integer':
|
|
56
|
+
case 'number':
|
|
57
|
+
return 'number';
|
|
58
|
+
case 'boolean':
|
|
59
|
+
return 'boolean';
|
|
60
|
+
case 'array':
|
|
61
|
+
return 'array';
|
|
62
|
+
case 'object':
|
|
63
|
+
return 'object';
|
|
64
|
+
default:
|
|
65
|
+
return 'string';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
class CapucineTools {
|
|
69
|
+
constructor() {
|
|
70
|
+
this.description = {
|
|
71
|
+
displayName: 'Capucine Tools',
|
|
72
|
+
name: 'capucineTools',
|
|
73
|
+
icon: 'file:capucineTools.svg',
|
|
74
|
+
group: ['transform'],
|
|
75
|
+
version: 1,
|
|
76
|
+
subtitle: '={{$parameter["operation"]}}',
|
|
77
|
+
description: 'Call a Capucine Tools tool',
|
|
78
|
+
defaults: { name: 'Capucine Tools' },
|
|
79
|
+
usableAsTool: true,
|
|
80
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
81
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
82
|
+
credentials: [{ name: CREDENTIAL, required: true }],
|
|
83
|
+
properties: [
|
|
84
|
+
{
|
|
85
|
+
displayName: 'Tool Name or ID',
|
|
86
|
+
name: 'operation',
|
|
87
|
+
type: 'options',
|
|
88
|
+
noDataExpression: true,
|
|
89
|
+
typeOptions: { loadOptionsMethod: 'getOperations' },
|
|
90
|
+
default: '',
|
|
91
|
+
required: true,
|
|
92
|
+
description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
displayName: 'Fields',
|
|
96
|
+
name: 'fields',
|
|
97
|
+
type: 'resourceMapper',
|
|
98
|
+
noDataExpression: true,
|
|
99
|
+
default: { mappingMode: 'defineBelow', value: null },
|
|
100
|
+
required: true,
|
|
101
|
+
typeOptions: {
|
|
102
|
+
loadOptionsDependsOn: ['operation'],
|
|
103
|
+
resourceMapper: {
|
|
104
|
+
resourceMapperMethod: 'getFields',
|
|
105
|
+
mode: 'add',
|
|
106
|
+
fieldWords: { singular: 'field', plural: 'fields' },
|
|
107
|
+
addAllFields: true,
|
|
108
|
+
multiKeyMatch: false,
|
|
109
|
+
supportAutoMap: false,
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
};
|
|
115
|
+
this.methods = {
|
|
116
|
+
loadOptions: {
|
|
117
|
+
async getOperations() {
|
|
118
|
+
const spec = await getSpec.call(this);
|
|
119
|
+
return Object.entries(spec.paths).flatMap(([path, ops]) => Object.entries(ops)
|
|
120
|
+
.filter(([method]) => METHODS.includes(method))
|
|
121
|
+
.map(([method, op]) => {
|
|
122
|
+
var _a;
|
|
123
|
+
const value = `${method.toUpperCase()} ${path}`;
|
|
124
|
+
return { name: (_a = op.summary) !== null && _a !== void 0 ? _a : value, value, description: value };
|
|
125
|
+
}));
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
resourceMapping: {
|
|
129
|
+
async getFields() {
|
|
130
|
+
const spec = await getSpec.call(this);
|
|
131
|
+
const { op } = findOperation(spec, this.getNodeParameter('operation', ''));
|
|
132
|
+
if (!op)
|
|
133
|
+
return { fields: [] };
|
|
134
|
+
return {
|
|
135
|
+
fields: inputsOf(spec, op).map((input) => {
|
|
136
|
+
var _a;
|
|
137
|
+
return ({
|
|
138
|
+
id: input.name,
|
|
139
|
+
displayName: input.name,
|
|
140
|
+
required: input.required,
|
|
141
|
+
defaultMatch: false,
|
|
142
|
+
display: true,
|
|
143
|
+
type: fieldType(input.schema),
|
|
144
|
+
options: (_a = input.schema.enum) === null || _a === void 0 ? void 0 : _a.map((v) => ({
|
|
145
|
+
name: String(v),
|
|
146
|
+
value: v,
|
|
147
|
+
})),
|
|
148
|
+
});
|
|
149
|
+
}),
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
async execute() {
|
|
156
|
+
var _a;
|
|
157
|
+
const spec = await getSpec.call(this);
|
|
158
|
+
const baseUrl = await getBaseUrl.call(this);
|
|
159
|
+
const returnData = [];
|
|
160
|
+
for (let i = 0; i < this.getInputData().length; i++) {
|
|
161
|
+
const key = this.getNodeParameter('operation', i);
|
|
162
|
+
const { method, path, op } = findOperation(spec, key);
|
|
163
|
+
if (!op) {
|
|
164
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown tool "${key}": reload the tool list`, {
|
|
165
|
+
itemIndex: i,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
const values = ((_a = this.getNodeParameter('fields.value', i, {})) !== null && _a !== void 0 ? _a : {});
|
|
170
|
+
let url = path;
|
|
171
|
+
const qs = {};
|
|
172
|
+
const body = {};
|
|
173
|
+
for (const input of inputsOf(spec, op)) {
|
|
174
|
+
const value = values[input.name];
|
|
175
|
+
if (value === undefined || value === null || value === '')
|
|
176
|
+
continue;
|
|
177
|
+
if (input.location === 'path')
|
|
178
|
+
url = url.replace(`{${input.name}}`, encodeURIComponent(String(value)));
|
|
179
|
+
else if (input.location === 'query')
|
|
180
|
+
qs[input.name] = value;
|
|
181
|
+
else
|
|
182
|
+
body[input.name] = value;
|
|
183
|
+
}
|
|
184
|
+
const response = await this.helpers.httpRequestWithAuthentication.call(this, CREDENTIAL, {
|
|
185
|
+
method: method,
|
|
186
|
+
url: `${baseUrl}${url}`,
|
|
187
|
+
qs,
|
|
188
|
+
body: op.requestBody ? body : undefined,
|
|
189
|
+
json: true,
|
|
190
|
+
});
|
|
191
|
+
const json = response && typeof response === 'object' && !Array.isArray(response)
|
|
192
|
+
? response
|
|
193
|
+
: { data: response };
|
|
194
|
+
returnData.push({ json, pairedItem: { item: i } });
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
if (this.continueOnFail()) {
|
|
198
|
+
returnData.push({
|
|
199
|
+
json: { error: error.message },
|
|
200
|
+
pairedItem: { item: i },
|
|
201
|
+
});
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
throw new n8n_workflow_1.NodeApiError(this.getNode(), error, {
|
|
205
|
+
itemIndex: i,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return [returnData];
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.CapucineTools = CapucineTools;
|
|
213
|
+
//# sourceMappingURL=CapucineTools.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CapucineTools.node.js","sourceRoot":"","sources":["../../../nodes/CapucineTools/CapucineTools.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><rect width="64" height="64" rx="14" fill="#2f6f4e"/><path d="M42 22a14 14 0 1 0 0 20" fill="none" stroke="#fff" stroke-width="7" stroke-linecap="round"/></svg>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rhizome-it/n8n-nodes-capucine-tools",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n node for Capucine Tools (Rhizome IT)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/RHIZOME-IT/n8n-nodes-capucine-tools",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"n8n-community-node-package"
|
|
9
|
+
],
|
|
10
|
+
"author": {
|
|
11
|
+
"name": "Raphael De Freitas",
|
|
12
|
+
"email": "raphael@de-freitas.net"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/RHIZOME-IT/n8n-nodes-capucine-tools.git"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "n8n-node build",
|
|
20
|
+
"build:watch": "tsc --watch",
|
|
21
|
+
"dev": "n8n-node dev",
|
|
22
|
+
"lint": "n8n-node lint",
|
|
23
|
+
"lint:fix": "n8n-node lint --fix",
|
|
24
|
+
"prepublishOnly": "n8n-node prerelease",
|
|
25
|
+
"test": "node test/smoke.mjs"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"!dist/tsconfig.tsbuildinfo"
|
|
30
|
+
],
|
|
31
|
+
"n8n": {
|
|
32
|
+
"n8nNodesApiVersion": 1,
|
|
33
|
+
"strict": true,
|
|
34
|
+
"credentials": [
|
|
35
|
+
"dist/credentials/CapucineToolsApi.credentials.js"
|
|
36
|
+
],
|
|
37
|
+
"nodes": [
|
|
38
|
+
"dist/nodes/CapucineTools/CapucineTools.node.js"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@n8n/node-cli": "^0.56.2",
|
|
43
|
+
"eslint": "^9.32.0",
|
|
44
|
+
"n8n-workflow": "^2.16.0",
|
|
45
|
+
"prettier": "^3.6.2",
|
|
46
|
+
"typescript": "^5.9.2"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"n8n-workflow": "*"
|
|
50
|
+
}
|
|
51
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,51 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
"name": "@rhizome-it/n8n-nodes-capucine-tools",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n node for Capucine Tools (Rhizome IT)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/RHIZOME-IT/n8n-nodes-capucine-tools",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"n8n-community-node-package"
|
|
9
|
+
],
|
|
10
|
+
"author": {
|
|
11
|
+
"name": "Raphael De Freitas",
|
|
12
|
+
"email": "raphael@de-freitas.net"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/RHIZOME-IT/n8n-nodes-capucine-tools.git"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "n8n-node build",
|
|
20
|
+
"build:watch": "tsc --watch",
|
|
21
|
+
"dev": "n8n-node dev",
|
|
22
|
+
"lint": "n8n-node lint",
|
|
23
|
+
"lint:fix": "n8n-node lint --fix",
|
|
24
|
+
"prepublishOnly": "n8n-node prerelease",
|
|
25
|
+
"test": "node test/smoke.mjs"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"!dist/tsconfig.tsbuildinfo"
|
|
30
|
+
],
|
|
31
|
+
"n8n": {
|
|
32
|
+
"n8nNodesApiVersion": 1,
|
|
33
|
+
"strict": true,
|
|
34
|
+
"credentials": [
|
|
35
|
+
"dist/credentials/CapucineToolsApi.credentials.js"
|
|
36
|
+
],
|
|
37
|
+
"nodes": [
|
|
38
|
+
"dist/nodes/CapucineTools/CapucineTools.node.js"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@n8n/node-cli": "^0.56.2",
|
|
43
|
+
"eslint": "^9.32.0",
|
|
44
|
+
"n8n-workflow": "^2.16.0",
|
|
45
|
+
"prettier": "^3.6.2",
|
|
46
|
+
"typescript": "^5.9.2"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"n8n-workflow": "*"
|
|
50
|
+
}
|
|
51
|
+
}
|