@klardaten/n8n-nodes-datevconnect 1.0.5 → 1.0.7
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 +2 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +156 -0
- package/dist/nodes/Accounting/Accounting.node.d.ts.map +1 -1
- package/dist/nodes/Accounting/Accounting.node.js +7 -1
- package/dist/nodes/Accounting/types.d.ts +2 -0
- package/dist/nodes/Accounting/types.d.ts.map +1 -1
- package/dist/nodes/DocumentManagement/DocumentManagement.node.d.ts.map +1 -1
- package/dist/nodes/DocumentManagement/DocumentManagement.node.js +7 -1
- package/dist/nodes/DocumentManagement/types.d.ts +2 -1
- package/dist/nodes/DocumentManagement/types.d.ts.map +1 -1
- package/dist/nodes/IdentityAndAccessManagement/IdentityAndAccessManagement.node.d.ts.map +1 -1
- package/dist/nodes/IdentityAndAccessManagement/IdentityAndAccessManagement.node.js +7 -1
- package/dist/nodes/IdentityAndAccessManagement/types.d.ts +2 -1
- package/dist/nodes/IdentityAndAccessManagement/types.d.ts.map +1 -1
- package/dist/nodes/MasterData/MasterData.node.d.ts.map +1 -1
- package/dist/nodes/MasterData/MasterData.node.js +7 -1
- package/dist/nodes/MasterData/types.d.ts +2 -1
- package/dist/nodes/MasterData/types.d.ts.map +1 -1
- package/dist/nodes/OrderManagement/OrderManagement.config.d.ts +3 -0
- package/dist/nodes/OrderManagement/OrderManagement.config.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/OrderManagement.config.js +644 -0
- package/dist/nodes/OrderManagement/OrderManagement.node.d.ts +6 -0
- package/dist/nodes/OrderManagement/OrderManagement.node.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/OrderManagement.node.js +92 -0
- package/dist/nodes/OrderManagement/handlers/BaseResourceHandler.d.ts +17 -0
- package/dist/nodes/OrderManagement/handlers/BaseResourceHandler.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/handlers/BaseResourceHandler.js +48 -0
- package/dist/nodes/OrderManagement/handlers/ClientGroupResourceHandler.d.ts +8 -0
- package/dist/nodes/OrderManagement/handlers/ClientGroupResourceHandler.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/handlers/ClientGroupResourceHandler.js +32 -0
- package/dist/nodes/OrderManagement/handlers/CostCenterResourceHandler.d.ts +8 -0
- package/dist/nodes/OrderManagement/handlers/CostCenterResourceHandler.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/handlers/CostCenterResourceHandler.js +38 -0
- package/dist/nodes/OrderManagement/handlers/EmployeeResourceHandler.d.ts +12 -0
- package/dist/nodes/OrderManagement/handlers/EmployeeResourceHandler.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/handlers/EmployeeResourceHandler.js +106 -0
- package/dist/nodes/OrderManagement/handlers/FeeResourceHandler.d.ts +9 -0
- package/dist/nodes/OrderManagement/handlers/FeeResourceHandler.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/handlers/FeeResourceHandler.js +55 -0
- package/dist/nodes/OrderManagement/handlers/InvoiceResourceHandler.d.ts +9 -0
- package/dist/nodes/OrderManagement/handlers/InvoiceResourceHandler.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/handlers/InvoiceResourceHandler.js +49 -0
- package/dist/nodes/OrderManagement/handlers/OrderResourceHandler.d.ts +24 -0
- package/dist/nodes/OrderManagement/handlers/OrderResourceHandler.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/handlers/OrderResourceHandler.js +285 -0
- package/dist/nodes/OrderManagement/handlers/OrderTypeResourceHandler.d.ts +8 -0
- package/dist/nodes/OrderManagement/handlers/OrderTypeResourceHandler.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/handlers/OrderTypeResourceHandler.js +34 -0
- package/dist/nodes/OrderManagement/handlers/SelfClientResourceHandler.d.ts +8 -0
- package/dist/nodes/OrderManagement/handlers/SelfClientResourceHandler.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/handlers/SelfClientResourceHandler.js +36 -0
- package/dist/nodes/OrderManagement/types.d.ts +28 -0
- package/dist/nodes/OrderManagement/types.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/types.js +2 -0
- package/dist/nodes/OrderManagement/utils.d.ts +14 -0
- package/dist/nodes/OrderManagement/utils.d.ts.map +1 -0
- package/dist/nodes/OrderManagement/utils.js +79 -0
- package/dist/src/services/accountingClient.d.ts.map +1 -1
- package/dist/src/services/accountingClient.js +2 -0
- package/dist/src/services/datevConnectClient.d.ts +3 -22
- package/dist/src/services/datevConnectClient.d.ts.map +1 -1
- package/dist/src/services/datevConnectClient.js +96 -180
- package/dist/src/services/documentManagementClient.d.ts +3 -1
- package/dist/src/services/documentManagementClient.d.ts.map +1 -1
- package/dist/src/services/documentManagementClient.js +28 -27
- package/dist/src/services/httpHelpers.d.ts +10 -0
- package/dist/src/services/httpHelpers.d.ts.map +1 -0
- package/dist/src/services/httpHelpers.js +180 -0
- package/dist/src/services/identityAndAccessManagementClient.d.ts +2 -1
- package/dist/src/services/identityAndAccessManagementClient.d.ts.map +1 -1
- package/dist/src/services/identityAndAccessManagementClient.js +4 -1
- package/dist/src/services/orderManagementClient.d.ts +189 -0
- package/dist/src/services/orderManagementClient.d.ts.map +1 -0
- package/dist/src/services/orderManagementClient.js +459 -0
- package/dist/src/services/shared.d.ts +39 -0
- package/dist/src/services/shared.d.ts.map +1 -0
- package/dist/src/services/shared.js +110 -0
- package/package.json +6 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/services/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElF,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEjC,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAqB,SAAQ,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IACrE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AACpD,eAAO,MAAM,oBAAoB,gCAAgC,CAAC;AAElE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,WAAW,CAOrF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC,CAiBlG;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GACnC,MAAM,CAwBR;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAgBtF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAI3D;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuB9F"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared utilities for DATEV API clients
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_ERROR_PREFIX = exports.JSON_CONTENT_TYPE = void 0;
|
|
7
|
+
exports.normaliseBaseUrl = normaliseBaseUrl;
|
|
8
|
+
exports.buildHeaders = buildHeaders;
|
|
9
|
+
exports.readResponseBody = readResponseBody;
|
|
10
|
+
exports.extractErrorMessage = extractErrorMessage;
|
|
11
|
+
exports.ensureSuccess = ensureSuccess;
|
|
12
|
+
exports.buildApiUrl = buildApiUrl;
|
|
13
|
+
exports.authenticate = authenticate;
|
|
14
|
+
const httpHelpers_1 = require("./httpHelpers");
|
|
15
|
+
exports.JSON_CONTENT_TYPE = "application/json";
|
|
16
|
+
exports.DEFAULT_ERROR_PREFIX = "DATEVconnect request failed";
|
|
17
|
+
function normaliseBaseUrl(host) {
|
|
18
|
+
if (!host) {
|
|
19
|
+
throw new Error("DATEVconnect host must be provided");
|
|
20
|
+
}
|
|
21
|
+
return host.endsWith("/") ? host : `${host}/`;
|
|
22
|
+
}
|
|
23
|
+
function buildHeaders(headers) {
|
|
24
|
+
return Object.entries(headers).reduce((acc, [key, value]) => {
|
|
25
|
+
if (value) {
|
|
26
|
+
acc[key] = value;
|
|
27
|
+
}
|
|
28
|
+
return acc;
|
|
29
|
+
}, {});
|
|
30
|
+
}
|
|
31
|
+
async function readResponseBody(response) {
|
|
32
|
+
var _a;
|
|
33
|
+
const contentType = (_a = response.headers.get("content-type")) !== null && _a !== void 0 ? _a : "";
|
|
34
|
+
if (contentType.toLowerCase().includes(exports.JSON_CONTENT_TYPE)) {
|
|
35
|
+
try {
|
|
36
|
+
return (await response.json());
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const text = await response.text();
|
|
44
|
+
return text.length > 0 ? text : undefined;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function extractErrorMessage(response, body) {
|
|
51
|
+
const statusPart = `${response.status}${response.statusText ? ` ${response.statusText}` : ""}`.trim();
|
|
52
|
+
const prefix = `${exports.DEFAULT_ERROR_PREFIX}${statusPart ? ` (${statusPart})` : ""}`;
|
|
53
|
+
if (typeof body === "string" && body.trim().length > 0) {
|
|
54
|
+
return `${prefix}: ${body.trim()}`;
|
|
55
|
+
}
|
|
56
|
+
if (body && typeof body === "object") {
|
|
57
|
+
const errorDescription = "error_description" in body && typeof body.error_description === "string"
|
|
58
|
+
? body.error_description
|
|
59
|
+
: undefined;
|
|
60
|
+
const message = ("message" in body && typeof body.message === "string"
|
|
61
|
+
? body.message
|
|
62
|
+
: undefined) ||
|
|
63
|
+
("error" in body && typeof body.error === "string" ? body.error : undefined);
|
|
64
|
+
if (message) {
|
|
65
|
+
return `${prefix}: ${message}${errorDescription ? `: ${errorDescription}` : ""}`;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return prefix;
|
|
69
|
+
}
|
|
70
|
+
async function ensureSuccess(response) {
|
|
71
|
+
const body = await readResponseBody(response);
|
|
72
|
+
if (!response.ok) {
|
|
73
|
+
throw new Error(extractErrorMessage(response, body));
|
|
74
|
+
}
|
|
75
|
+
if (body && typeof body === "object") {
|
|
76
|
+
return body;
|
|
77
|
+
}
|
|
78
|
+
if (body === undefined) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
throw new Error(`${exports.DEFAULT_ERROR_PREFIX}: Expected JSON response body.`);
|
|
82
|
+
}
|
|
83
|
+
function buildApiUrl(host, path) {
|
|
84
|
+
const baseUrl = normaliseBaseUrl(host);
|
|
85
|
+
const trimmedPath = path.startsWith("/") ? path.slice(1) : path;
|
|
86
|
+
return new URL(trimmedPath, baseUrl);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Authenticate with DATEV API
|
|
90
|
+
* Uses httpHelper (n8n's httpRequest) when available, falls back to fetchImpl for tests, or global fetch
|
|
91
|
+
*/
|
|
92
|
+
async function authenticate(options) {
|
|
93
|
+
const { host, email, password, httpHelper, fetchImpl: providedFetchImpl } = options;
|
|
94
|
+
const baseUrl = normaliseBaseUrl(host);
|
|
95
|
+
const url = new URL("api/auth/login", baseUrl);
|
|
96
|
+
// Use httpHelper if provided (n8n runtime), else fetchImpl (tests), else global fetch (fallback)
|
|
97
|
+
const fetchImpl = httpHelper ? (0, httpHelpers_1.createFetchFromHttpHelper)(httpHelper) : (providedFetchImpl || fetch);
|
|
98
|
+
const response = await fetchImpl(url, {
|
|
99
|
+
method: "POST",
|
|
100
|
+
headers: buildHeaders({
|
|
101
|
+
"content-type": exports.JSON_CONTENT_TYPE,
|
|
102
|
+
}),
|
|
103
|
+
body: JSON.stringify({ email, password }),
|
|
104
|
+
});
|
|
105
|
+
const body = await ensureSuccess(response);
|
|
106
|
+
if (!body || typeof body !== "object" || !("access_token" in body) || typeof body.access_token !== "string") {
|
|
107
|
+
throw new Error(`${exports.DEFAULT_ERROR_PREFIX}: Authentication response missing access_token.`);
|
|
108
|
+
}
|
|
109
|
+
return body;
|
|
110
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@klardaten/n8n-nodes-datevconnect",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "n8n community node for DATEVconnect API via Klardaten Gateway",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/Klardaten/n8n-nodes-datevconnect#readme",
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
"dist/nodes/MasterData/MasterData.node.js",
|
|
46
46
|
"dist/nodes/Accounting/Accounting.node.js",
|
|
47
47
|
"dist/nodes/DocumentManagement/DocumentManagement.node.js",
|
|
48
|
-
"dist/nodes/IdentityAndAccessManagement/IdentityAndAccessManagement.node.js"
|
|
48
|
+
"dist/nodes/IdentityAndAccessManagement/IdentityAndAccessManagement.node.js",
|
|
49
|
+
"dist/nodes/OrderManagement/OrderManagement.node.js"
|
|
49
50
|
],
|
|
50
51
|
"credentials": [
|
|
51
52
|
"dist/credentials/DatevConnectApi.credentials.js"
|
|
@@ -57,13 +58,13 @@
|
|
|
57
58
|
"main": "./dist/index.js",
|
|
58
59
|
"types": "./dist/index.d.ts",
|
|
59
60
|
"devDependencies": {
|
|
60
|
-
"@n8n/node-cli": "
|
|
61
|
-
"@types/node": "^24.10.
|
|
61
|
+
"@n8n/node-cli": "^0.17.0",
|
|
62
|
+
"@types/node": "^24.10.2",
|
|
62
63
|
"bun": "^1.3.2",
|
|
63
64
|
"bun-types": "^1.3.2",
|
|
64
65
|
"eslint": "9.39.1",
|
|
65
66
|
"nock": "14.0.10",
|
|
66
|
-
"prettier": "3.
|
|
67
|
+
"prettier": "^3.7.4",
|
|
67
68
|
"release-it": "^19.0.4",
|
|
68
69
|
"typescript": "5.9.3"
|
|
69
70
|
},
|