@limetech/n8n-nodes-lime 3.10.1 → 3.10.3
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/CHANGELOG.md +15 -0
- package/credentials/LimeFormsApi.credentials.ts +0 -18
- package/dist/credentials/LimeFormsApi.credentials.js +0 -15
- package/dist/credentials/LimeFormsApi.credentials.js.map +1 -1
- package/dist/nodes/lime-crm/transport/commons.d.ts +2 -2
- package/dist/nodes/lime-crm/transport/commons.js +8 -7
- package/dist/nodes/lime-crm/transport/commons.js.map +1 -1
- package/dist/nodes/lime-forms/LimeFormsTrigger.node.js +22 -9
- package/dist/nodes/lime-forms/LimeFormsTrigger.node.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/nodes/lime-crm/transport/commons.ts +9 -8
- package/nodes/lime-forms/LimeFormsTrigger.node.ts +51 -19
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
## [3.10.3](https://github.com/Lundalogik/lime-n8n/compare/v3.10.2...v3.10.3) (2026-07-02)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **lime-forms:** store encrypted webhook secret in static data ([7b7d164](https://github.com/Lundalogik/lime-n8n/commit/7b7d164cd12992e66328c007fc2e237a0668aac3))
|
|
7
|
+
|
|
8
|
+
## [3.10.2](https://github.com/Lundalogik/lime-n8n/compare/v3.10.1...v3.10.2) (2026-06-25)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* replace deprecated requestWithAuthentication with httpRequestWIthAuthentication ([7c985b6](https://github.com/Lundalogik/lime-n8n/commit/7c985b6fbff96ec65a2caf2557d8798b41088c87))
|
|
14
|
+
* simplify error handling and remove unsafe cast ([7807b1f](https://github.com/Lundalogik/lime-n8n/commit/7807b1f46cbe169fb087348549daed3b3b78cd7f))
|
|
15
|
+
|
|
1
16
|
## [3.10.1](https://github.com/Lundalogik/lime-n8n/compare/v3.10.0...v3.10.1) (2026-06-09)
|
|
2
17
|
|
|
3
18
|
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
IAuthenticate,
|
|
6
6
|
IHttpRequestMethods,
|
|
7
7
|
} from 'n8n-workflow';
|
|
8
|
-
import crypto from 'node:crypto';
|
|
9
8
|
|
|
10
9
|
export const FORMS_API_CREDENTIALS_NAME = 'limeFormsApi';
|
|
11
10
|
|
|
@@ -27,11 +26,6 @@ export const FORMS_API_CREDENTIALS_NAME = 'limeFormsApi';
|
|
|
27
26
|
* - **API Key:** The API key generated in Lime Forms.
|
|
28
27
|
* - You can obtain it from Lime Forms Admin, under settings page.
|
|
29
28
|
*
|
|
30
|
-
* ## Additional Fields
|
|
31
|
-
* - **Webhook Secret:** A hidden, automatically generated secret (32-byte hex string) used to
|
|
32
|
-
* verify incoming webhook requests from Lime Forms to n8n. This ensures no other entity can
|
|
33
|
-
* send webhooks to your Forms nodes in n8n.
|
|
34
|
-
*
|
|
35
29
|
* ## Testing Connection
|
|
36
30
|
* The `test` property verifies credentials by pinging an endpoint of the provided Lime Forms instance.
|
|
37
31
|
* If the response is successful (HTTP 200), the credentials are valid.
|
|
@@ -67,18 +61,6 @@ export class LimeFormsApi implements ICredentialType {
|
|
|
67
61
|
required: true,
|
|
68
62
|
description: 'API key obtained from Lime Forms',
|
|
69
63
|
},
|
|
70
|
-
{
|
|
71
|
-
displayName: 'Webhook secret',
|
|
72
|
-
name: 'webhookSecret',
|
|
73
|
-
type: 'hidden',
|
|
74
|
-
typeOptions: {
|
|
75
|
-
password: true,
|
|
76
|
-
},
|
|
77
|
-
default: crypto.randomBytes(32).toString('hex'),
|
|
78
|
-
required: true,
|
|
79
|
-
description:
|
|
80
|
-
'A secret to verify integrity of incoming webhooks from Lime Forms',
|
|
81
|
-
},
|
|
82
64
|
];
|
|
83
65
|
|
|
84
66
|
test: ICredentialTestRequest = {
|
|
@@ -1,10 +1,6 @@
|
|
|
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.LimeFormsApi = exports.FORMS_API_CREDENTIALS_NAME = void 0;
|
|
7
|
-
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
8
4
|
exports.FORMS_API_CREDENTIALS_NAME = 'limeFormsApi';
|
|
9
5
|
class LimeFormsApi {
|
|
10
6
|
constructor() {
|
|
@@ -32,17 +28,6 @@ class LimeFormsApi {
|
|
|
32
28
|
required: true,
|
|
33
29
|
description: 'API key obtained from Lime Forms',
|
|
34
30
|
},
|
|
35
|
-
{
|
|
36
|
-
displayName: 'Webhook secret',
|
|
37
|
-
name: 'webhookSecret',
|
|
38
|
-
type: 'hidden',
|
|
39
|
-
typeOptions: {
|
|
40
|
-
password: true,
|
|
41
|
-
},
|
|
42
|
-
default: node_crypto_1.default.randomBytes(32).toString('hex'),
|
|
43
|
-
required: true,
|
|
44
|
-
description: 'A secret to verify integrity of incoming webhooks from Lime Forms',
|
|
45
|
-
},
|
|
46
31
|
];
|
|
47
32
|
this.test = {
|
|
48
33
|
request: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimeFormsApi.credentials.js","sourceRoot":"","sources":["../../credentials/LimeFormsApi.credentials.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LimeFormsApi.credentials.js","sourceRoot":"","sources":["../../credentials/LimeFormsApi.credentials.ts"],"names":[],"mappings":";;;AAQa,QAAA,0BAA0B,GAAG,cAAc,CAAC;AA8BzD,MAAa,YAAY;IAAzB;QACI,SAAI,GAAG,kCAA0B,CAAC;QAClC,gBAAW,GAAG,oBAAoB,CAAC;QACnC,qBAAgB,GAAG,8BAA8B,CAAC;QAClD,eAAU,GAAsB;YAC5B;gBACI,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,iCAAiC;gBAC9C,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,qCAAqC;aACrD;YACD;gBACI,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACT,QAAQ,EAAE,IAAI;iBACjB;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,kCAAkC;aAClD;SACJ,CAAC;QAEF,SAAI,GAA2B;YAC3B,OAAO,EAAE;gBACL,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnD,GAAG,EAAE,oCAAoC;gBACzC,MAAM,EAAE,KAA4B;aACvC;SACJ,CAAC;QAEF,iBAAY,GAAkB;YAC1B,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACR,OAAO,EAAE;oBACL,aAAa,EAAE,iCAAiC;iBACnD;aACJ;SACJ,CAAC;IACN,CAAC;CAAA;AA3CD,oCA2CC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IAllExecuteFunctions } from 'n8n-workflow';
|
|
1
|
+
import { IAllExecuteFunctions, JsonObject } from 'n8n-workflow';
|
|
2
2
|
import { APIResponse, SuccessResponse } from '../../response';
|
|
3
3
|
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
4
4
|
export declare function removeKeys<T extends object, K extends keyof T>(data: T, keys: K[]): Omit<T, K>;
|
|
@@ -11,7 +11,7 @@ interface LimeAPIArguments {
|
|
|
11
11
|
[key: string]: unknown;
|
|
12
12
|
};
|
|
13
13
|
json?: boolean;
|
|
14
|
-
errorMetadata?:
|
|
14
|
+
errorMetadata?: JsonObject;
|
|
15
15
|
}
|
|
16
16
|
export declare function callLimeApi<T>(nodeContext: IAllExecuteFunctions, options: LimeAPIArguments): Promise<APIResponse<T>>;
|
|
17
17
|
export {};
|
|
@@ -24,10 +24,10 @@ async function getLimeUrl(context) {
|
|
|
24
24
|
return credentials.url;
|
|
25
25
|
}
|
|
26
26
|
async function callLimeApi(nodeContext, options) {
|
|
27
|
-
var _a, _b, _c
|
|
27
|
+
var _a, _b, _c;
|
|
28
28
|
try {
|
|
29
29
|
const { headers: callerHeaders, ...restRequestOptions } = (_a = options.requestOptions) !== null && _a !== void 0 ? _a : {};
|
|
30
|
-
const response = await nodeContext.helpers.
|
|
30
|
+
const response = await nodeContext.helpers.httpRequestWithAuthentication.call(nodeContext, models_1.LIME_CRM_API_CREDENTIAL_KEY, {
|
|
31
31
|
method: options.method,
|
|
32
32
|
url: options.url,
|
|
33
33
|
json: options.json || true,
|
|
@@ -44,15 +44,16 @@ async function callLimeApi(nodeContext, options) {
|
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
46
|
catch (error) {
|
|
47
|
-
const
|
|
47
|
+
const apiBody = (_b = error.context) === null || _b === void 0 ? void 0 : _b.data;
|
|
48
48
|
const errorContext = {
|
|
49
|
-
message: error
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
message: error.description
|
|
50
|
+
? `${error.message}. ${error.description}`
|
|
51
|
+
: error.message,
|
|
52
|
+
status: (_c = error.httpCode) !== null && _c !== void 0 ? _c : undefined,
|
|
52
53
|
metadata: {
|
|
53
|
-
...options.requestOptions,
|
|
54
54
|
...options.errorMetadata,
|
|
55
55
|
},
|
|
56
|
+
...(apiBody != null && { error: apiBody }),
|
|
56
57
|
};
|
|
57
58
|
return (0, utils_1.handleWorkflowError)(nodeContext.getNode(), errorContext, true);
|
|
58
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../../nodes/lime-crm/transport/commons.ts"],"names":[],"mappings":";;AAyBA,gCASC;AAED,gEAQC;AAwDD,
|
|
1
|
+
{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../../nodes/lime-crm/transport/commons.ts"],"names":[],"mappings":";;AAyBA,gCASC;AAED,gEAQC;AAwDD,kCAyCC;AA7ID,sCAAwD;AAExD,oCAAqE;AAErE,mDAAqD;AAqBrD,SAAgB,UAAU,CACtB,IAAO,EACP,IAAS;IAET,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IACxB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAgB,0BAA0B,CACtC,QAA4B,EAC5B,IAAS;IAET,OAAO;QACH,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;KACxC,CAAC;AACN,CAAC;AAYD,KAAK,UAAU,UAAU,CAAC,OAA6B;IACnD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,CAC5C,oCAA2B,CAC9B,CAAC;IACF,OAAO,WAAW,CAAC,GAAa,CAAC;AACrC,CAAC;AAuCM,KAAK,UAAU,WAAW,CAC7B,WAAiC,EACjC,OAAyB;;IAEzB,IAAI,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,kBAAkB,EAAE,GACnD,MAAA,OAAO,CAAC,cAAc,mCAAI,EAAE,CAAC;QACjC,MAAM,QAAQ,GACV,MAAM,WAAW,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CACxD,WAAW,EACX,oCAA2B,EAC3B;YACI,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,OAAO,EAAE,MAAM,UAAU,CAAC,WAAW,CAAC;YACtC,GAAG,kBAAkB;YACrB,OAAO,EAAE;gBACL,GAAG,IAAA,8BAAgB,EAAC,WAAW,CAAC;gBAChC,GAAG,aAAa;aACnB;SACJ,CACJ,CAAC;QACN,OAAO;YACH,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,QAAQ;SACjB,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,MAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,CAAC;QACpC,MAAM,YAAY,GAAyB;YACvC,OAAO,EAAE,KAAK,CAAC,WAAW;gBACtB,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,WAAW,EAAE;gBAC1C,CAAC,CAAC,KAAK,CAAC,OAAO;YACnB,MAAM,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,SAAS;YACnC,QAAQ,EAAE;gBACN,GAAG,OAAO,CAAC,aAAa;aAC3B;YACD,GAAG,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SAC7C,CAAC;QACF,OAAO,IAAA,2BAAmB,EAAC,WAAW,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;AACL,CAAC"}
|
|
@@ -9,6 +9,7 @@ const credentials_1 = require("../../credentials");
|
|
|
9
9
|
const workflow_1 = require("./utils/workflow");
|
|
10
10
|
const crypto_1 = require("../crypto");
|
|
11
11
|
const errorHandling_1 = require("../errorHandling");
|
|
12
|
+
const node_crypto_1 = require("node:crypto");
|
|
12
13
|
const FORMS_OBSERVABLE_WEBHOOK_NAME_PREFIX = 'N8N';
|
|
13
14
|
class LimeFormsTrigger {
|
|
14
15
|
constructor() {
|
|
@@ -104,17 +105,18 @@ class LimeFormsTrigger {
|
|
|
104
105
|
},
|
|
105
106
|
async create() {
|
|
106
107
|
var _a, _b, _c;
|
|
107
|
-
const
|
|
108
|
+
const webhookData = this.getWorkflowStaticData('node');
|
|
109
|
+
const rawSecret = (0, node_crypto_1.randomBytes)(32).toString('hex');
|
|
110
|
+
webhookData.webhookSecret = (0, crypto_1.encryptSecret)(rawSecret);
|
|
108
111
|
const data = {
|
|
109
112
|
name: `${FORMS_OBSERVABLE_WEBHOOK_NAME_PREFIX}: ${this.getNodeParameter('name')}`,
|
|
110
113
|
observableType: ObservableType_1.ObservableType.FORM,
|
|
111
114
|
observableId: this.getNodeParameter('formId'),
|
|
112
115
|
action: ObservableAction_1.ObservableActionType.FORM_SUBMITTED,
|
|
113
116
|
webhookUrl: this.getNodeWebhookUrl('default'),
|
|
114
|
-
secret:
|
|
117
|
+
secret: rawSecret,
|
|
115
118
|
workflowUrl: (0, workflow_1.getWorkflowUrl)(this.getNode(), this.getWorkflow().id),
|
|
116
119
|
};
|
|
117
|
-
const webhookData = this.getWorkflowStaticData('node');
|
|
118
120
|
try {
|
|
119
121
|
const response = await new request_1.LimeFormsRequest(this).post('/api/v1/observable-webhooks', data);
|
|
120
122
|
if (!response.success) {
|
|
@@ -127,10 +129,16 @@ class LimeFormsTrigger {
|
|
|
127
129
|
}
|
|
128
130
|
catch (error) {
|
|
129
131
|
if ((error === null || error === void 0 ? void 0 : error.httpCode) == '409') {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
const errorResponse = (_b = (_a = error.context) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.error;
|
|
133
|
+
n8n_workflow_1.LoggerProxy.info(`Webhook ${errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.name} already exists in Lime Forms, recreating it with a fresh secret`, { errorResponse: (_c = error.context) === null || _c === void 0 ? void 0 : _c.data });
|
|
134
|
+
await new request_1.LimeFormsRequest(this).delete(`/api/v1/observable-webhooks/${errorResponse.id}`);
|
|
135
|
+
const response = await new request_1.LimeFormsRequest(this).post('/api/v1/observable-webhooks', data);
|
|
136
|
+
if (!response.success) {
|
|
137
|
+
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
|
|
138
|
+
message: 'Failed to create webhook in Lime Forms',
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
webhookData.id = response.data.id;
|
|
134
142
|
return true;
|
|
135
143
|
}
|
|
136
144
|
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
|
|
@@ -151,7 +159,7 @@ class LimeFormsTrigger {
|
|
|
151
159
|
});
|
|
152
160
|
}
|
|
153
161
|
delete webhookData.id;
|
|
154
|
-
delete webhookData.
|
|
162
|
+
delete webhookData.webhookSecret;
|
|
155
163
|
return true;
|
|
156
164
|
},
|
|
157
165
|
},
|
|
@@ -165,7 +173,12 @@ class LimeFormsTrigger {
|
|
|
165
173
|
if (!('x-signature' in headers)) {
|
|
166
174
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No signature header passed. Unable to verify integrity of the data.');
|
|
167
175
|
}
|
|
168
|
-
const
|
|
176
|
+
const webhookData = this.getWorkflowStaticData('node');
|
|
177
|
+
const encryptedSecret = webhookData.webhookSecret;
|
|
178
|
+
if (!encryptedSecret) {
|
|
179
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Webhook is not registered: missing secret in static data');
|
|
180
|
+
}
|
|
181
|
+
const webhookSecret = (0, crypto_1.decryptSecret)(encryptedSecret);
|
|
169
182
|
const isValidSignature = (0, crypto_1.verifyHmac)(webhookSecret, Buffer.from(JSON.stringify(body)), ('sha256=' + headers['x-signature']));
|
|
170
183
|
if (!isValidSignature) {
|
|
171
184
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Invalid signature');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimeFormsTrigger.node.js","sourceRoot":"","sources":["../../../nodes/lime-forms/LimeFormsTrigger.node.ts"],"names":[],"mappings":";;;AAAA,+CAasB;AACtB,iDAAuD;AAMvD,qEAAsE;AACtE,iEAA8D;AAC9D,mDAA+D;AAC/D,+CAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"LimeFormsTrigger.node.js","sourceRoot":"","sources":["../../../nodes/lime-forms/LimeFormsTrigger.node.ts"],"names":[],"mappings":"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"}
|