n8n-nodes-antony-cloud-office 0.1.5 → 0.1.8
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 +4 -0
- package/dist/credentials/AntonyApi.credentials.js +2 -21
- package/dist/credentials/AntonyApi.credentials.js.map +1 -1
- package/dist/credentials/StarfaceApi.credentials.d.ts +27 -0
- package/dist/credentials/StarfaceApi.credentials.js +106 -0
- package/dist/credentials/StarfaceApi.credentials.js.map +1 -0
- package/dist/nodes/AntonyGraphql/AntonyGraphql.node.js +2 -21
- package/dist/nodes/AntonyGraphql/AntonyGraphql.node.js.map +1 -1
- package/dist/nodes/AntonyRest/AntonyRest.node.js +4 -1
- package/dist/nodes/AntonyRest/AntonyRest.node.js.map +1 -1
- package/dist/nodes/AntonyTrigger/AntonyTrigger.node.d.ts +5 -0
- package/dist/nodes/AntonyTrigger/AntonyTrigger.node.js +237 -0
- package/dist/nodes/AntonyTrigger/AntonyTrigger.node.js.map +1 -0
- package/dist/nodes/AntonyTrigger/antony.svg +58 -0
- package/dist/nodes/shared/restOperations.d.ts +1 -0
- package/dist/nodes/shared/restOperations.js +7 -7
- package/dist/nodes/shared/restOperations.js.map +1 -1
- package/dist/nodes/shared/subscriptionManager.d.ts +43 -0
- package/dist/nodes/shared/subscriptionManager.js +240 -0
- package/dist/nodes/shared/subscriptionManager.js.map +1 -0
- package/dist/nodes/shared/transport.d.ts +23 -2
- package/dist/nodes/shared/transport.js +68 -0
- package/dist/nodes/shared/transport.js.map +1 -1
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -14,6 +14,8 @@ Community node package for [Antony Cloud Office](https://www.die-groupware.de).
|
|
|
14
14
|
|
|
15
15
|
Authentication uses Keycloak username/password. The credential fetches a Bearer token and sends it with every API call.
|
|
16
16
|
|
|
17
|
+
The package also ships a **Starface API** credential (nonce/SHA512 login, `authToken` header) for use with the HTTP Request node, e.g. in the antony → Starface contact sync (repo `n8nworkflows`).
|
|
18
|
+
|
|
17
19
|
### Build
|
|
18
20
|
|
|
19
21
|
```bash
|
|
@@ -88,6 +90,8 @@ Create a credential of type **Antony API** and fill in:
|
|
|
88
90
|
|
|
89
91
|
Die Authentifizierung läuft über Keycloak (Benutzername/Passwort). Der Credential holt sich einen Bearer Token und sendet ihn bei jedem API-Aufruf mit.
|
|
90
92
|
|
|
93
|
+
Zusätzlich enthält das Paket den Credential **Starface API** (Nonce/SHA512-Login, Header `authToken`) für den HTTP-Request-Node, z. B. für den Kontakt-Sync antony → Starface (Repo `n8nworkflows`).
|
|
94
|
+
|
|
91
95
|
### Build
|
|
92
96
|
|
|
93
97
|
```bash
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AntonyApi = void 0;
|
|
4
|
+
const transport_1 = require("../nodes/shared/transport");
|
|
4
5
|
class AntonyApi {
|
|
5
6
|
constructor() {
|
|
6
7
|
this.name = 'antonyApi';
|
|
@@ -70,28 +71,8 @@ class AntonyApi {
|
|
|
70
71
|
};
|
|
71
72
|
}
|
|
72
73
|
async preAuthentication(credentials) {
|
|
73
|
-
const baseUrl = String(credentials.baseUrl).replace(/\/$/, '');
|
|
74
|
-
const realm = encodeURIComponent(String(credentials.realm));
|
|
75
|
-
const tokenUrl = `${baseUrl}/kc/realms/${realm}/protocol/openid-connect/token`;
|
|
76
|
-
const response = (await this.helpers.httpRequest({
|
|
77
|
-
method: 'POST',
|
|
78
|
-
url: tokenUrl,
|
|
79
|
-
headers: {
|
|
80
|
-
'Content-Type': 'application/x-www-form-urlencoded',
|
|
81
|
-
},
|
|
82
|
-
body: new URLSearchParams({
|
|
83
|
-
grant_type: 'password',
|
|
84
|
-
client_id: String(credentials.clientId),
|
|
85
|
-
username: String(credentials.username),
|
|
86
|
-
password: String(credentials.password),
|
|
87
|
-
}).toString(),
|
|
88
|
-
json: true,
|
|
89
|
-
}));
|
|
90
|
-
if (!response.access_token) {
|
|
91
|
-
throw new Error('Keycloak did not return an access_token.');
|
|
92
|
-
}
|
|
93
74
|
return {
|
|
94
|
-
accessToken:
|
|
75
|
+
accessToken: await (0, transport_1.fetchAntonyAccessToken)(this, credentials),
|
|
95
76
|
};
|
|
96
77
|
}
|
|
97
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AntonyApi.credentials.js","sourceRoot":"","sources":["../../credentials/AntonyApi.credentials.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AntonyApi.credentials.js","sourceRoot":"","sources":["../../credentials/AntonyApi.credentials.ts"],"names":[],"mappings":";;;AAOA,yDAAmE;AAEnE,MAAa,SAAS;IAAtB;QACC,SAAI,GAAG,WAAW,CAAC;QAEnB,gBAAW,GAAG,YAAY,CAAC;QAE3B,qBAAgB,GAAG,4BAA4B,CAAC;QAEhD,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,2BAA2B;gBACxC,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,wCAAwC;aACrD;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;gBAChC,OAAO,EAAE,EAAE;aACX;SACD,CAAC;QAWF,iBAAY,GAAG;YACd,IAAI,EAAE,SAAkB;YACxB,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,sCAAsC;iBACrD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,+CAA+C;gBACxD,GAAG,EAAE,iBAAiB;gBACtB,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;IAzBA,KAAK,CAAC,iBAAiB,CAEtB,WAA2C;QAE3C,OAAO;YACN,WAAW,EAAE,MAAM,IAAA,kCAAsB,EAAC,IAAI,EAAE,WAAW,CAAC;SAC5D,CAAC;IACH,CAAC;CAkBD;AAhFD,8BAgFC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ICredentialDataDecryptedObject, ICredentialTestRequest, ICredentialType, IHttpRequestOptions, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class StarfaceApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
documentationUrl: string;
|
|
6
|
+
httpRequestNode: {
|
|
7
|
+
name: string;
|
|
8
|
+
docsUrl: string;
|
|
9
|
+
apiBaseUrlPlaceholder: string;
|
|
10
|
+
};
|
|
11
|
+
properties: INodeProperties[];
|
|
12
|
+
preAuthentication(this: {
|
|
13
|
+
helpers: {
|
|
14
|
+
httpRequest(options: IHttpRequestOptions): Promise<unknown>;
|
|
15
|
+
};
|
|
16
|
+
}, credentials: ICredentialDataDecryptedObject): Promise<ICredentialDataDecryptedObject>;
|
|
17
|
+
authenticate: {
|
|
18
|
+
type: "generic";
|
|
19
|
+
properties: {
|
|
20
|
+
headers: {
|
|
21
|
+
authToken: string;
|
|
22
|
+
'X-Version': string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
test: ICredentialTestRequest;
|
|
27
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StarfaceApi = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
// Bewusst ohne antony-Abhängigkeiten, damit das Credential später in ein eigenes Starface-Paket wandern kann.
|
|
6
|
+
const sha512Hex = (value) => (0, crypto_1.createHash)('sha512').update(value, 'utf8').digest('hex');
|
|
7
|
+
class StarfaceApi {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.name = 'starfaceApi';
|
|
10
|
+
this.displayName = 'Starface API';
|
|
11
|
+
this.documentationUrl = 'https://knowledge.starface.de/display/SWD/REST+-+Schnittstelle';
|
|
12
|
+
this.httpRequestNode = {
|
|
13
|
+
name: 'Starface',
|
|
14
|
+
docsUrl: 'https://knowledge.starface.de/display/SWD/REST+-+Schnittstelle',
|
|
15
|
+
apiBaseUrlPlaceholder: 'https://<STARFACE_HOST>/rest',
|
|
16
|
+
};
|
|
17
|
+
this.properties = [
|
|
18
|
+
{
|
|
19
|
+
displayName: 'Base URL',
|
|
20
|
+
name: 'baseUrl',
|
|
21
|
+
type: 'string',
|
|
22
|
+
default: '',
|
|
23
|
+
placeholder: 'https://<STARFACE_HOST>',
|
|
24
|
+
required: true,
|
|
25
|
+
description: 'Starface base URL without trailing slash and without /rest',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
displayName: 'Login ID',
|
|
29
|
+
name: 'loginId',
|
|
30
|
+
type: 'string',
|
|
31
|
+
default: '',
|
|
32
|
+
required: true,
|
|
33
|
+
description: 'Login ID of a Starface user with REST permission',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
displayName: 'Password',
|
|
37
|
+
name: 'password',
|
|
38
|
+
type: 'string',
|
|
39
|
+
typeOptions: { password: true },
|
|
40
|
+
default: '',
|
|
41
|
+
required: true,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
displayName: 'Ignore SSL Issues',
|
|
45
|
+
name: 'ignoreSslIssues',
|
|
46
|
+
type: 'boolean',
|
|
47
|
+
default: false,
|
|
48
|
+
description: 'Whether to accept self-signed certificates during login. HTTP Request nodes need their own "Ignore SSL Issues" option as well.',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
displayName: 'Auth Token',
|
|
52
|
+
name: 'authToken',
|
|
53
|
+
type: 'hidden',
|
|
54
|
+
typeOptions: { expirable: true },
|
|
55
|
+
default: '',
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
this.authenticate = {
|
|
59
|
+
type: 'generic',
|
|
60
|
+
properties: {
|
|
61
|
+
headers: {
|
|
62
|
+
authToken: '={{$credentials.authToken}}',
|
|
63
|
+
'X-Version': '2',
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
this.test = {
|
|
68
|
+
request: {
|
|
69
|
+
baseURL: '={{$credentials.baseUrl.replace(/\\/+$/, "").replace(/\\/rest$/, "")}}',
|
|
70
|
+
url: '/rest/contacts/tags',
|
|
71
|
+
method: 'GET',
|
|
72
|
+
skipSslCertificateValidation: '={{$credentials.ignoreSslIssues}}',
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async preAuthentication(credentials) {
|
|
77
|
+
const baseUrl = String(credentials.baseUrl).replace(/\/+$/, '').replace(/\/rest$/, '');
|
|
78
|
+
const loginId = String(credentials.loginId);
|
|
79
|
+
const skipSslCertificateValidation = credentials.ignoreSslIssues === true;
|
|
80
|
+
const nonceResponse = (await this.helpers.httpRequest({
|
|
81
|
+
method: 'GET',
|
|
82
|
+
url: `${baseUrl}/rest/login`,
|
|
83
|
+
headers: { 'X-Version': '2' },
|
|
84
|
+
skipSslCertificateValidation,
|
|
85
|
+
json: true,
|
|
86
|
+
}));
|
|
87
|
+
if (!nonceResponse.nonce) {
|
|
88
|
+
throw new Error('Starface did not return a login nonce.');
|
|
89
|
+
}
|
|
90
|
+
const secret = `${loginId}:${sha512Hex(loginId + nonceResponse.nonce + sha512Hex(String(credentials.password)))}`;
|
|
91
|
+
const loginResponse = (await this.helpers.httpRequest({
|
|
92
|
+
method: 'POST',
|
|
93
|
+
url: `${baseUrl}/rest/login`,
|
|
94
|
+
headers: { 'X-Version': '2' },
|
|
95
|
+
body: { loginType: 'Internal', nonce: nonceResponse.nonce, secret },
|
|
96
|
+
skipSslCertificateValidation,
|
|
97
|
+
json: true,
|
|
98
|
+
}));
|
|
99
|
+
if (!loginResponse.token) {
|
|
100
|
+
throw new Error('Starface did not return an auth token.');
|
|
101
|
+
}
|
|
102
|
+
return { authToken: loginResponse.token };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.StarfaceApi = StarfaceApi;
|
|
106
|
+
//# sourceMappingURL=StarfaceApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StarfaceApi.credentials.js","sourceRoot":"","sources":["../../credentials/StarfaceApi.credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,7 +116,7 @@ class AntonyGraphql {
|
|
|
116
116
|
continue;
|
|
117
117
|
}
|
|
118
118
|
query = this.getNodeParameter('query', itemIndex);
|
|
119
|
-
variables = parseVariables(this.getNodeParameter('variables', itemIndex, {}));
|
|
119
|
+
variables = (0, transport_1.parseVariables)(this.getNodeParameter('variables', itemIndex, {}));
|
|
120
120
|
const normalizeResult = this.getNodeParameter('normalizeResult', itemIndex, true);
|
|
121
121
|
const includeDebugData = this.getNodeParameter('includeDebugData', itemIndex, false);
|
|
122
122
|
const { response, request } = await executeGraphql(this, query, variables);
|
|
@@ -219,25 +219,6 @@ function getHttpResponseBody(error) {
|
|
|
219
219
|
const response = asDataObject(errorObject?.response);
|
|
220
220
|
return response?.data ?? response?.body ?? errorObject?.error;
|
|
221
221
|
}
|
|
222
|
-
function parseVariables(value) {
|
|
223
|
-
if (value === undefined || value === null || value === '') {
|
|
224
|
-
return {};
|
|
225
|
-
}
|
|
226
|
-
if (typeof value === 'string') {
|
|
227
|
-
const parsed = JSON.parse(value);
|
|
228
|
-
if (isPlainObject(parsed)) {
|
|
229
|
-
return parsed;
|
|
230
|
-
}
|
|
231
|
-
throw new Error('Variables JSON must be an object, for example {}');
|
|
232
|
-
}
|
|
233
|
-
if (isPlainObject(value)) {
|
|
234
|
-
return value;
|
|
235
|
-
}
|
|
236
|
-
throw new Error('Variables JSON must be an object, for example {}');
|
|
237
|
-
}
|
|
238
|
-
function isPlainObject(value) {
|
|
239
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
240
|
-
}
|
|
241
222
|
async function buildGraphqlRequestDebug(context, query, variables) {
|
|
242
223
|
const credentials = await context.getCredentials('antonyApi');
|
|
243
224
|
const baseUrl = String(credentials.baseUrl).replace(/\/$/, '');
|
|
@@ -252,7 +233,7 @@ async function buildGraphqlRequestDebug(context, query, variables) {
|
|
|
252
233
|
};
|
|
253
234
|
}
|
|
254
235
|
function asDataObject(value) {
|
|
255
|
-
if (isPlainObject(value)) {
|
|
236
|
+
if ((0, transport_1.isPlainObject)(value)) {
|
|
256
237
|
return value;
|
|
257
238
|
}
|
|
258
239
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AntonyGraphql.node.js","sourceRoot":"","sources":["../../../nodes/AntonyGraphql/AntonyGraphql.node.ts"],"names":[],"mappings":";;;AAQA,+CAAuE;AACvE,
|
|
1
|
+
{"version":3,"file":"AntonyGraphql.node.js","sourceRoot":"","sources":["../../../nodes/AntonyGraphql/AntonyGraphql.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,11 +72,14 @@ class AntonyRest {
|
|
|
72
72
|
const value = this.getNodeParameter(field.name, itemIndex, field.default ?? '');
|
|
73
73
|
if (value === '' || value === undefined || value === null)
|
|
74
74
|
continue;
|
|
75
|
+
// An optional number left at 0 is not sent, so the API default applies (no filter, all entries).
|
|
76
|
+
if (!field.required && field.type === 'number' && value === 0)
|
|
77
|
+
continue;
|
|
75
78
|
if (field.location === 'path') {
|
|
76
79
|
url = url.replace(`{${field.name}}`, encodeURIComponent(String(value)));
|
|
77
80
|
}
|
|
78
81
|
else if (field.location === 'query') {
|
|
79
|
-
qs[field.name] = value;
|
|
82
|
+
qs[field.queryName ?? field.name] = value;
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
const requestOptions = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AntonyRest.node.js","sourceRoot":"","sources":["../../../nodes/AntonyRest/AntonyRest.node.ts"],"names":[],"mappings":";;;AAUA,+CAAuE;AACvE,mDAAsE;AACtE,6DAA6F;AAE7F,MAAa,UAAU;IAAvB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE;gBACT,IAAI,EAAE,aAAa;aACnB;YACD,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,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,0BAAS;oBAClB,OAAO,EAAE,SAAS;iBAClB;gBACD,GAAG,IAAA,yCAAwB,GAAE;aAC7B;SACD,CAAC;QAEF,YAAO,GAAG;YACT,WAAW,EAAE;gBACZ,KAAK,CAAC,kBAAkB;oBACvB,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAa,EAAoE,IAAI,EAAE;wBAC7G,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,0BAA0B;wBAC/B,IAAI,EAAE,IAAI;qBACV,CAAC,CAAC;oBAEH,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC9B,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;wBAC7D,KAAK,EAAE,IAAI,CAAC,MAAM;wBAClB,WAAW,EAAE,IAAI,CAAC,OAAO;qBACzB,CAAC,CAAC,CAAC;gBACL,CAAC;aACD;SACD,CAAC;
|
|
1
|
+
{"version":3,"file":"AntonyRest.node.js","sourceRoot":"","sources":["../../../nodes/AntonyRest/AntonyRest.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,237 @@
|
|
|
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.AntonyTrigger = void 0;
|
|
37
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
38
|
+
const signalR = __importStar(require("@microsoft/signalr"));
|
|
39
|
+
const crypto_1 = require("crypto");
|
|
40
|
+
const transport_1 = require("../shared/transport");
|
|
41
|
+
const SUBSCRIPTION_PLACEHOLDER = '{subscription}';
|
|
42
|
+
const CHANGE_TYPE_NAMES = {
|
|
43
|
+
0: 'added',
|
|
44
|
+
1: 'updated',
|
|
45
|
+
2: 'removed',
|
|
46
|
+
};
|
|
47
|
+
const DELETE_SUBSCRIPTION_MAX_RETRIES = 3;
|
|
48
|
+
const DELETE_SUBSCRIPTION_RETRY_DELAY_MS = 300;
|
|
49
|
+
const OUTER_RECONNECT_DELAYS_MS = [5000, 10000, 30000, 60000];
|
|
50
|
+
class AntonyTrigger {
|
|
51
|
+
constructor() {
|
|
52
|
+
this.description = {
|
|
53
|
+
displayName: 'Antony Trigger',
|
|
54
|
+
name: 'antonyTrigger',
|
|
55
|
+
icon: 'file:antony.svg',
|
|
56
|
+
group: ['trigger'],
|
|
57
|
+
version: 1,
|
|
58
|
+
description: 'Starts the workflow when the result of an Antony GraphQL query changes, pushed via the Antony subscription hub (SignalR)',
|
|
59
|
+
defaults: {
|
|
60
|
+
name: 'Antony Trigger',
|
|
61
|
+
},
|
|
62
|
+
inputs: [],
|
|
63
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
64
|
+
credentials: [
|
|
65
|
+
{
|
|
66
|
+
name: 'antonyApi',
|
|
67
|
+
required: true,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
properties: [
|
|
71
|
+
{
|
|
72
|
+
displayName: 'Query',
|
|
73
|
+
name: 'query',
|
|
74
|
+
type: 'string',
|
|
75
|
+
typeOptions: {
|
|
76
|
+
rows: 16,
|
|
77
|
+
},
|
|
78
|
+
default: 'query syncFusionAllcontact($datamanager: DataManager) {\n syncFusionAllcontact(datamanager: $datamanager {subscription}) {\n result {\n id\n firstName\n lastName\n email\n }\n }\n}',
|
|
79
|
+
required: true,
|
|
80
|
+
description: 'GraphQL query to watch. Include the literal placeholder {subscription} exactly once, as an argument on the field to watch — it is replaced with subscription:{subscriptionId:"...",connectionId:"..."} before the query is sent to register the push subscription.',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
displayName: 'Variables JSON',
|
|
84
|
+
name: 'variables',
|
|
85
|
+
type: 'json',
|
|
86
|
+
default: '{}',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
displayName: 'Change Types',
|
|
90
|
+
name: 'changeTypes',
|
|
91
|
+
type: 'multiOptions',
|
|
92
|
+
options: [
|
|
93
|
+
{ name: 'Added', value: 'added' },
|
|
94
|
+
{ name: 'Updated', value: 'updated' },
|
|
95
|
+
{ name: 'Removed', value: 'removed' },
|
|
96
|
+
{
|
|
97
|
+
name: 'Reconnected',
|
|
98
|
+
value: 'reconnected',
|
|
99
|
+
description: 'Fires once whenever the subscription had to be re-established after a connection loss, with no id/data. Changes that happened while disconnected are not replayed - use this event to trigger a manual resync if the workflow needs to catch up.',
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
default: ['added', 'updated', 'removed'],
|
|
103
|
+
description: 'Which change types should start the workflow',
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
async trigger() {
|
|
109
|
+
const query = this.getNodeParameter('query');
|
|
110
|
+
const variables = (0, transport_1.parseVariables)(this.getNodeParameter('variables', {}));
|
|
111
|
+
const changeTypes = this.getNodeParameter('changeTypes');
|
|
112
|
+
if (query.split(SUBSCRIPTION_PLACEHOLDER).length - 1 !== 1) {
|
|
113
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Query must contain the ${SUBSCRIPTION_PLACEHOLDER} placeholder exactly once.`);
|
|
114
|
+
}
|
|
115
|
+
const credentials = await this.getCredentials('antonyApi');
|
|
116
|
+
const baseUrl = String(credentials.baseUrl).replace(/\/$/, '');
|
|
117
|
+
// The frontend builds its connectionId as `user:<keycloak-sub>-<uuid>`; the backend
|
|
118
|
+
// likely checks the embedded user id against the authenticated token when a subscription
|
|
119
|
+
// is registered, so we mirror that format rather than using an arbitrary id.
|
|
120
|
+
const initialAccessToken = await (0, transport_1.fetchAntonyAccessToken)(this, credentials);
|
|
121
|
+
const userId = (0, transport_1.decodeJwtSubject)(initialAccessToken);
|
|
122
|
+
const connectionId = `user:${userId}-${(0, crypto_1.randomUUID)()}`;
|
|
123
|
+
const subscriptionId = (0, crypto_1.randomUUID)();
|
|
124
|
+
const subscribedQuery = query.replace(SUBSCRIPTION_PLACEHOLDER, `subscription:{subscriptionId:"${subscriptionId}",connectionId:"${connectionId}"}`);
|
|
125
|
+
const connection = new signalR.HubConnectionBuilder()
|
|
126
|
+
.withUrl(`${baseUrl}/api/v1/subscription-hub`, {
|
|
127
|
+
accessTokenFactory: async () => {
|
|
128
|
+
// getCredentials() alone returns the raw stored accessToken field; n8n only
|
|
129
|
+
// refreshes it via preAuthentication as part of httpRequestWithAuthentication.
|
|
130
|
+
// Fetch a token directly here so the hub connection always gets a valid one.
|
|
131
|
+
const freshCredentials = await this.getCredentials('antonyApi');
|
|
132
|
+
return (0, transport_1.fetchAntonyAccessToken)(this, freshCredentials);
|
|
133
|
+
},
|
|
134
|
+
transport: signalR.HttpTransportType.WebSockets,
|
|
135
|
+
})
|
|
136
|
+
.configureLogging(signalR.LogLevel.Warning)
|
|
137
|
+
.withAutomaticReconnect(new Array(60).fill(10000))
|
|
138
|
+
.build();
|
|
139
|
+
let closed = false;
|
|
140
|
+
let resubscribing = false;
|
|
141
|
+
let outerReconnectPromise;
|
|
142
|
+
const emit = (json) => {
|
|
143
|
+
this.emit([[{ json }]]);
|
|
144
|
+
};
|
|
145
|
+
const registerSubscription = async () => {
|
|
146
|
+
await (0, transport_1.antonyRequest)(this, {
|
|
147
|
+
method: 'POST',
|
|
148
|
+
url: '/api/v2/graphql',
|
|
149
|
+
body: { query: subscribedQuery, variables },
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
// The backend discards subscriptions on any hub disconnect, so every reconnect - however
|
|
153
|
+
// brief - must re-identify the connection and re-register the subscription from scratch.
|
|
154
|
+
// Any changes missed while disconnected are not backfilled here; if selected, the
|
|
155
|
+
// synthetic "reconnected" event tells the workflow it may want to resync itself.
|
|
156
|
+
const resync = async () => {
|
|
157
|
+
if (resubscribing)
|
|
158
|
+
return;
|
|
159
|
+
resubscribing = true;
|
|
160
|
+
try {
|
|
161
|
+
await connection.invoke('SetConnectionId', connectionId);
|
|
162
|
+
await registerSubscription();
|
|
163
|
+
if (changeTypes.includes('reconnected')) {
|
|
164
|
+
emit({ changeType: 'reconnected', id: '', data: null });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
this.logger.warn(`Antony Trigger: resync after reconnect failed: ${error.message}`);
|
|
169
|
+
}
|
|
170
|
+
finally {
|
|
171
|
+
resubscribing = false;
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
connection.on('change', (notification) => {
|
|
175
|
+
if (notification.subscriptionId !== subscriptionId)
|
|
176
|
+
return;
|
|
177
|
+
const changeTypeName = CHANGE_TYPE_NAMES[notification.changeType];
|
|
178
|
+
if (!changeTypeName || !changeTypes.includes(changeTypeName))
|
|
179
|
+
return;
|
|
180
|
+
emit({ changeType: changeTypeName, id: notification.id, data: notification.data });
|
|
181
|
+
});
|
|
182
|
+
connection.onreconnected(() => {
|
|
183
|
+
void resync();
|
|
184
|
+
});
|
|
185
|
+
// SignalR's own automatic reconnect gives up after its retry list is exhausted (here:
|
|
186
|
+
// 60 attempts). For outages longer than that, keep retrying connection.start() ourselves
|
|
187
|
+
// so a long-running trigger survives a backend restart or maintenance window.
|
|
188
|
+
const outerReconnectLoop = async () => {
|
|
189
|
+
let attempt = 0;
|
|
190
|
+
while (!closed) {
|
|
191
|
+
try {
|
|
192
|
+
await connection.start();
|
|
193
|
+
await resync();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
this.logger.warn(`Antony Trigger: reconnect attempt failed: ${error.message}`);
|
|
198
|
+
const delay = OUTER_RECONNECT_DELAYS_MS[Math.min(attempt, OUTER_RECONNECT_DELAYS_MS.length - 1)];
|
|
199
|
+
attempt += 1;
|
|
200
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
connection.onclose(() => {
|
|
205
|
+
if (closed)
|
|
206
|
+
return;
|
|
207
|
+
outerReconnectPromise = outerReconnectLoop();
|
|
208
|
+
});
|
|
209
|
+
await connection.start();
|
|
210
|
+
await connection.invoke('SetConnectionId', connectionId);
|
|
211
|
+
await registerSubscription();
|
|
212
|
+
const closeFunction = async () => {
|
|
213
|
+
closed = true;
|
|
214
|
+
if (outerReconnectPromise) {
|
|
215
|
+
await outerReconnectPromise.catch(() => undefined);
|
|
216
|
+
}
|
|
217
|
+
if (connection.state === signalR.HubConnectionState.Connected) {
|
|
218
|
+
for (let attempt = 1; attempt <= DELETE_SUBSCRIPTION_MAX_RETRIES; attempt++) {
|
|
219
|
+
try {
|
|
220
|
+
await connection.invoke('DeleteSubscription', subscriptionId);
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
this.logger.warn(`Antony Trigger: failed to delete subscription (attempt ${attempt}): ${error.message}`);
|
|
225
|
+
if (attempt < DELETE_SUBSCRIPTION_MAX_RETRIES) {
|
|
226
|
+
await new Promise((resolve) => setTimeout(resolve, DELETE_SUBSCRIPTION_RETRY_DELAY_MS * attempt));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
await connection.stop();
|
|
232
|
+
};
|
|
233
|
+
return { closeFunction };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.AntonyTrigger = AntonyTrigger;
|
|
237
|
+
//# sourceMappingURL=AntonyTrigger.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AntonyTrigger.node.js","sourceRoot":"","sources":["../../../nodes/AntonyTrigger/AntonyTrigger.node.ts"],"names":[],"mappings":"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"}
|