noxctl 0.4.0 → 0.5.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 +3 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +44 -16
- package/dist/auth.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +117 -2
- package/dist/cli.js.map +1 -1
- package/dist/credentials-store.d.ts +1 -1
- package/dist/credentials-store.d.ts.map +1 -1
- package/dist/credentials-store.js +12 -11
- package/dist/credentials-store.js.map +1 -1
- package/dist/fortnox-client.d.ts +34 -1
- package/dist/fortnox-client.d.ts.map +1 -1
- package/dist/fortnox-client.js +255 -61
- package/dist/fortnox-client.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/operations/invoices.d.ts +38 -0
- package/dist/operations/invoices.d.ts.map +1 -1
- package/dist/operations/invoices.js +54 -3
- package/dist/operations/invoices.js.map +1 -1
- package/dist/tools/employees.d.ts.map +1 -1
- package/dist/tools/employees.js +16 -4
- package/dist/tools/employees.js.map +1 -1
- package/dist/tools/invoices.d.ts.map +1 -1
- package/dist/tools/invoices.js +136 -1
- package/dist/tools/invoices.js.map +1 -1
- package/dist/views.d.ts.map +1 -1
- package/dist/views.js +21 -3
- package/dist/views.js.map +1 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials-store.js","sourceRoot":"","sources":["../src/credentials-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"credentials-store.js","sourceRoot":"","sources":["../src/credentials-store.ts"],"names":[],"mappings":"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"}
|
package/dist/fortnox-client.d.ts
CHANGED
|
@@ -7,16 +7,49 @@ export declare class FortnoxApiError extends Error {
|
|
|
7
7
|
readonly statusCode: number;
|
|
8
8
|
readonly fortnoxMessage: string;
|
|
9
9
|
readonly details?: string | undefined;
|
|
10
|
+
readonly retryAfterMs?: number | undefined;
|
|
10
11
|
readonly hint?: string;
|
|
11
|
-
constructor(statusCode: number, fortnoxMessage: string, details?: string | undefined, endpoint?: string);
|
|
12
|
+
constructor(statusCode: number, fortnoxMessage: string, details?: string | undefined, endpoint?: string, retryAfterMs?: number | undefined);
|
|
13
|
+
}
|
|
14
|
+
export declare class FortnoxRequestTimeoutError extends Error {
|
|
15
|
+
readonly outcomeUnknown: boolean;
|
|
16
|
+
constructor(method: string, endpoint: string, timeoutMs: number, isMutation?: boolean);
|
|
12
17
|
}
|
|
13
18
|
export interface RequestOptions {
|
|
14
19
|
method?: string;
|
|
15
20
|
body?: unknown;
|
|
16
21
|
rawBody?: BodyInit;
|
|
17
22
|
params?: Record<string, string | number | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Override the safety classification that would otherwise be derived from the
|
|
25
|
+
* HTTP verb. Fortnox exposes some state-changing actions as GET — notably
|
|
26
|
+
* `/invoices/{n}/print`, which sets `Sent` — and those must not be retried
|
|
27
|
+
* automatically, nor have their timeouts reported as "safe to retry".
|
|
28
|
+
*/
|
|
29
|
+
mutation?: boolean;
|
|
18
30
|
}
|
|
19
31
|
export declare function fortnoxRequest<T>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
32
|
+
/**
|
|
33
|
+
* Fetch a PDF from one of Fortnox's document endpoints. Shares rate limiting,
|
|
34
|
+
* retries, timeouts and error mapping with `fortnoxRequest`.
|
|
35
|
+
*
|
|
36
|
+
* The returned bytes are validated by their magic number rather than by the
|
|
37
|
+
* Content-Type header: Fortnox can answer 200 with a JSON error envelope, and a
|
|
38
|
+
* proxy can return an HTML error page, either of which would otherwise be saved
|
|
39
|
+
* as `invoice-1001.pdf` and look like success until someone opened the file.
|
|
40
|
+
*/
|
|
41
|
+
export declare function fortnoxRequestPdf(endpoint: string, options?: RequestOptions): Promise<Buffer>;
|
|
42
|
+
/**
|
|
43
|
+
* For endpoints where the PDF is a by-product of a state change — Fortnox's
|
|
44
|
+
* `/print` both returns the document and sets `Sent`.
|
|
45
|
+
*
|
|
46
|
+
* Once the server has answered 2xx the mutation has happened, so nothing about
|
|
47
|
+
* the body may raise: a truncated or malformed payload is reported as "no PDF"
|
|
48
|
+
* rather than as an error, because throwing here would turn a completed
|
|
49
|
+
* accounting change into a reported failure. Always treated as a mutation, so
|
|
50
|
+
* it is never auto-retried.
|
|
51
|
+
*/
|
|
52
|
+
export declare function fortnoxRequestPdfFromMutation(endpoint: string, options?: RequestOptions): Promise<Buffer | undefined>;
|
|
20
53
|
/**
|
|
21
54
|
* Fetch all pages of a paginated Fortnox list endpoint.
|
|
22
55
|
* `dataKey` is the envelope key (e.g. "Invoices", "Customers").
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fortnox-client.d.ts","sourceRoot":"","sources":["../src/fortnox-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fortnox-client.d.ts","sourceRoot":"","sources":["../src/fortnox-client.ts"],"names":[],"mappings":"AA4CA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,eAAgB,SAAQ,KAAK;aAItB,UAAU,EAAE,MAAM;aAClB,cAAc,EAAE,MAAM;aACtB,OAAO,CAAC,EAAE,MAAM;aAEhB,YAAY,CAAC,EAAE,MAAM;IAPvC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAGZ,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,YAAA,EAChC,QAAQ,CAAC,EAAE,MAAM,EACD,YAAY,CAAC,EAAE,MAAM,YAAA;CAWxC;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,SAAgB,cAAc,EAAE,OAAO,CAAC;gBAE5B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO;CAStF;AA2ID,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAyGD,wBAAsB,cAAc,CAAC,CAAC,EACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAQZ;AAsDD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgC7B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAM,GACvD,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBjD"}
|
package/dist/fortnox-client.js
CHANGED
|
@@ -1,29 +1,48 @@
|
|
|
1
1
|
import { getResolvedProfile, getValidToken } from './auth.js';
|
|
2
2
|
import { DEFAULT_PROFILE } from './profile-name.js';
|
|
3
3
|
const BASE_URL = 'https://api.fortnox.se/3';
|
|
4
|
+
const REQUEST_TIMEOUT_MS = 30_000;
|
|
5
|
+
const UPLOAD_TIMEOUT_MS = 120_000;
|
|
6
|
+
const MAX_RETRIES = 3;
|
|
7
|
+
const MAX_RETRY_DELAY_MS = 30_000;
|
|
4
8
|
// Rate limiter: max 25 requests per 5 seconds
|
|
5
9
|
const RATE_WINDOW_MS = 5000;
|
|
6
10
|
const RATE_LIMIT = 25;
|
|
7
11
|
const requestTimestamps = [];
|
|
12
|
+
let rateLimitTail = Promise.resolve();
|
|
8
13
|
async function waitForRateLimit() {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
let release;
|
|
15
|
+
const previous = rateLimitTail;
|
|
16
|
+
rateLimitTail = new Promise((resolve) => {
|
|
17
|
+
release = resolve;
|
|
18
|
+
});
|
|
19
|
+
await previous;
|
|
20
|
+
try {
|
|
21
|
+
while (true) {
|
|
22
|
+
const now = Date.now();
|
|
23
|
+
while (requestTimestamps.length > 0 && requestTimestamps[0] <= now - RATE_WINDOW_MS) {
|
|
24
|
+
requestTimestamps.shift();
|
|
25
|
+
}
|
|
26
|
+
if (requestTimestamps.length < RATE_LIMIT) {
|
|
27
|
+
requestTimestamps.push(now);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const oldestInWindow = requestTimestamps[0];
|
|
31
|
+
const waitMs = Math.max(1, oldestInWindow + RATE_WINDOW_MS - now + 50);
|
|
32
|
+
await new Promise((resolve) => setTimeout(resolve, waitMs));
|
|
33
|
+
}
|
|
13
34
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const waitMs = oldestInWindow + RATE_WINDOW_MS - now + 50; // 50ms buffer
|
|
17
|
-
await new Promise((resolve) => setTimeout(resolve, waitMs));
|
|
35
|
+
finally {
|
|
36
|
+
release();
|
|
18
37
|
}
|
|
19
|
-
requestTimestamps.push(Date.now());
|
|
20
38
|
}
|
|
21
39
|
export class FortnoxApiError extends Error {
|
|
22
40
|
statusCode;
|
|
23
41
|
fortnoxMessage;
|
|
24
42
|
details;
|
|
43
|
+
retryAfterMs;
|
|
25
44
|
hint;
|
|
26
|
-
constructor(statusCode, fortnoxMessage, details, endpoint) {
|
|
45
|
+
constructor(statusCode, fortnoxMessage, details, endpoint, retryAfterMs) {
|
|
27
46
|
const hint = getErrorHint(statusCode, fortnoxMessage, endpoint);
|
|
28
47
|
const profile = getResolvedProfile();
|
|
29
48
|
const profileTag = profile.toLowerCase() !== DEFAULT_PROFILE ? `[profile: ${profile}] ` : '';
|
|
@@ -34,10 +53,23 @@ export class FortnoxApiError extends Error {
|
|
|
34
53
|
this.statusCode = statusCode;
|
|
35
54
|
this.fortnoxMessage = fortnoxMessage;
|
|
36
55
|
this.details = details;
|
|
56
|
+
this.retryAfterMs = retryAfterMs;
|
|
37
57
|
this.name = 'FortnoxApiError';
|
|
38
58
|
this.hint = hint;
|
|
39
59
|
}
|
|
40
60
|
}
|
|
61
|
+
export class FortnoxRequestTimeoutError extends Error {
|
|
62
|
+
outcomeUnknown;
|
|
63
|
+
constructor(method, endpoint, timeoutMs, isMutation) {
|
|
64
|
+
const mutation = isMutation ?? !['GET', 'HEAD', 'OPTIONS'].includes(method);
|
|
65
|
+
const suffix = mutation
|
|
66
|
+
? ' The outcome is unknown; verify the result in Fortnox before retrying to avoid duplicate side effects.'
|
|
67
|
+
: ' It is safe to retry the read request.';
|
|
68
|
+
super(`Fortnox ${method} ${endpoint} timed out after ${timeoutMs} ms.${suffix}`);
|
|
69
|
+
this.name = 'FortnoxRequestTimeoutError';
|
|
70
|
+
this.outcomeUnknown = mutation;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
41
73
|
function getErrorHint(statusCode, message, endpoint) {
|
|
42
74
|
// Payroll: creating an employee fails with a null "ftgavtalid" when Fortnox
|
|
43
75
|
// can't assign a company/employment agreement — which happens when
|
|
@@ -60,7 +92,7 @@ function getErrorHint(statusCode, message, endpoint) {
|
|
|
60
92
|
case 404:
|
|
61
93
|
return 'Resource not found. Verify the ID/number exists in Fortnox.';
|
|
62
94
|
case 429:
|
|
63
|
-
return 'Rate limited by Fortnox.
|
|
95
|
+
return 'Rate limited by Fortnox. Read requests are retried automatically; mutations are not retried to avoid duplicate side effects.';
|
|
64
96
|
default:
|
|
65
97
|
if (statusCode >= 500) {
|
|
66
98
|
return 'Fortnox server error. Try again in a moment.';
|
|
@@ -104,7 +136,41 @@ function endpointToScope(endpoint) {
|
|
|
104
136
|
}
|
|
105
137
|
return undefined;
|
|
106
138
|
}
|
|
107
|
-
|
|
139
|
+
function errorCode(err) {
|
|
140
|
+
let current = err;
|
|
141
|
+
for (let depth = 0; depth < 4 && current && typeof current === 'object'; depth++) {
|
|
142
|
+
const value = current;
|
|
143
|
+
if (typeof value.code === 'string')
|
|
144
|
+
return value.code;
|
|
145
|
+
current = value.cause;
|
|
146
|
+
}
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
function isTimeoutError(err) {
|
|
150
|
+
return (err instanceof Error &&
|
|
151
|
+
(err.name === 'TimeoutError' || err.name === 'AbortError' || errorCode(err) === 'ABORT_ERR'));
|
|
152
|
+
}
|
|
153
|
+
function isTransientNetworkError(err) {
|
|
154
|
+
if (isTimeoutError(err))
|
|
155
|
+
return true;
|
|
156
|
+
const code = errorCode(err);
|
|
157
|
+
if (code &&
|
|
158
|
+
['ECONNRESET', 'ETIMEDOUT', 'EAI_AGAIN', 'ENETUNREACH', 'ECONNREFUSED'].includes(code)) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
return err instanceof TypeError && /fetch failed/i.test(err.message);
|
|
162
|
+
}
|
|
163
|
+
function retryAfterDelay(response) {
|
|
164
|
+
const raw = response.headers?.get?.('retry-after');
|
|
165
|
+
if (!raw)
|
|
166
|
+
return undefined;
|
|
167
|
+
const seconds = Number(raw);
|
|
168
|
+
const delay = Number.isFinite(seconds) ? seconds * 1000 : new Date(raw).getTime() - Date.now();
|
|
169
|
+
if (!Number.isFinite(delay))
|
|
170
|
+
return undefined;
|
|
171
|
+
return Math.min(Math.max(0, delay), MAX_RETRY_DELAY_MS);
|
|
172
|
+
}
|
|
173
|
+
async function retryWithBackoff(fn, retryable, maxRetries = MAX_RETRIES) {
|
|
108
174
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
109
175
|
try {
|
|
110
176
|
return await fn();
|
|
@@ -120,73 +186,201 @@ async function retryWithBackoff(fn, retryable, maxRetries = 3) {
|
|
|
120
186
|
if (!retryable.includes(err.statusCode))
|
|
121
187
|
throw err;
|
|
122
188
|
}
|
|
123
|
-
else if (err
|
|
124
|
-
!err.message.includes('ECONNRESET') &&
|
|
125
|
-
!err.message.includes('ETIMEDOUT')) {
|
|
189
|
+
else if (!isTransientNetworkError(err)) {
|
|
126
190
|
throw err;
|
|
127
191
|
}
|
|
128
|
-
const delay =
|
|
192
|
+
const delay = err instanceof FortnoxApiError && err.retryAfterMs !== undefined
|
|
193
|
+
? err.retryAfterMs
|
|
194
|
+
: Math.min(1000 * Math.pow(2, attempt), MAX_RETRY_DELAY_MS);
|
|
129
195
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
130
196
|
}
|
|
131
197
|
}
|
|
132
198
|
throw new Error('Unreachable');
|
|
133
199
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
url.searchParams.set(key, String(value));
|
|
145
|
-
}
|
|
200
|
+
// Issue the HTTP request and translate a non-2xx answer into a FortnoxApiError.
|
|
201
|
+
// Returns the raw Response so callers can decide how to read the body.
|
|
202
|
+
async function sendRequest(endpoint, options, method, timeoutMs) {
|
|
203
|
+
await waitForRateLimit();
|
|
204
|
+
const token = await getValidToken();
|
|
205
|
+
const url = new URL(`${BASE_URL}/${endpoint}`);
|
|
206
|
+
if (options.params) {
|
|
207
|
+
for (const [key, value] of Object.entries(options.params)) {
|
|
208
|
+
if (value !== undefined) {
|
|
209
|
+
url.searchParams.set(key, String(value));
|
|
146
210
|
}
|
|
147
211
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
212
|
+
}
|
|
213
|
+
// Accept is always application/json, even for the endpoints that answer with a
|
|
214
|
+
// PDF. This looks wrong but is not: Fortnox rejects Accept: application/pdf (and
|
|
215
|
+
// application/octet-stream) on its PDF endpoints with
|
|
216
|
+
// {"ErrorInformation":{"error":1,"message":"Invalid response type","code":1000030}}.
|
|
217
|
+
// Do not "fix" this header.
|
|
218
|
+
const headers = {
|
|
219
|
+
Authorization: `Bearer ${token}`,
|
|
220
|
+
Accept: 'application/json',
|
|
221
|
+
};
|
|
222
|
+
const fetchOptions = {
|
|
223
|
+
method,
|
|
224
|
+
headers,
|
|
225
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
226
|
+
};
|
|
227
|
+
if (options.rawBody !== undefined) {
|
|
228
|
+
// A raw body (e.g. FormData for a multipart file upload): do NOT set
|
|
229
|
+
// Content-Type — fetch/undici derives it (and the multipart boundary)
|
|
230
|
+
// from the body itself.
|
|
231
|
+
fetchOptions.body = options.rawBody;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
headers['Content-Type'] = 'application/json';
|
|
235
|
+
if (options.body) {
|
|
236
|
+
fetchOptions.body = JSON.stringify(options.body);
|
|
161
237
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
238
|
+
}
|
|
239
|
+
const response = await fetch(url.toString(), fetchOptions);
|
|
240
|
+
if (!response.ok) {
|
|
241
|
+
let errorMessage = `HTTP ${response.status}`;
|
|
242
|
+
let details;
|
|
243
|
+
try {
|
|
244
|
+
const errorBody = (await response.json());
|
|
245
|
+
if (errorBody?.ErrorInformation) {
|
|
246
|
+
errorMessage = errorBody.ErrorInformation.message || errorMessage;
|
|
247
|
+
details = `Error code: ${errorBody.ErrorInformation.code}`;
|
|
166
248
|
}
|
|
167
249
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
let errorMessage = `HTTP ${response.status}`;
|
|
171
|
-
let details;
|
|
172
|
-
try {
|
|
173
|
-
const errorBody = (await response.json());
|
|
174
|
-
if (errorBody?.ErrorInformation) {
|
|
175
|
-
errorMessage = errorBody.ErrorInformation.message || errorMessage;
|
|
176
|
-
details = `Error code: ${errorBody.ErrorInformation.code}`;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
catch {
|
|
180
|
-
// ignore parse errors
|
|
181
|
-
}
|
|
182
|
-
throw new FortnoxApiError(response.status, errorMessage, details, endpoint);
|
|
250
|
+
catch {
|
|
251
|
+
// ignore parse errors
|
|
183
252
|
}
|
|
253
|
+
throw new FortnoxApiError(response.status, errorMessage, details, endpoint, retryAfterDelay(response));
|
|
254
|
+
}
|
|
255
|
+
return response;
|
|
256
|
+
}
|
|
257
|
+
// Shared retry/timeout envelope; `readBody` turns a successful Response into T.
|
|
258
|
+
async function request(endpoint, options, readBody) {
|
|
259
|
+
const method = (options.method || 'GET').toUpperCase();
|
|
260
|
+
const isMutation = options.mutation ?? !(method === 'GET' || method === 'HEAD' || method === 'OPTIONS');
|
|
261
|
+
const retryable = !isMutation;
|
|
262
|
+
const timeoutMs = options.rawBody === undefined ? REQUEST_TIMEOUT_MS : UPLOAD_TIMEOUT_MS;
|
|
263
|
+
try {
|
|
264
|
+
return await retryWithBackoff(async () => readBody(await sendRequest(endpoint, options, method, timeoutMs)), retryable);
|
|
265
|
+
}
|
|
266
|
+
catch (err) {
|
|
267
|
+
if (isTimeoutError(err)) {
|
|
268
|
+
throw new FortnoxRequestTimeoutError(method, endpoint, timeoutMs, isMutation);
|
|
269
|
+
}
|
|
270
|
+
throw err;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
export async function fortnoxRequest(endpoint, options = {}) {
|
|
274
|
+
return request(endpoint, options, async (response) => {
|
|
184
275
|
// Some endpoints return empty responses (e.g., DELETE)
|
|
185
276
|
const text = await response.text();
|
|
186
277
|
if (!text)
|
|
187
278
|
return undefined;
|
|
188
279
|
return JSON.parse(text);
|
|
189
|
-
}
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
// Summarize an unexpected (non-binary) body for an error message, preferring the
|
|
283
|
+
// Fortnox error envelope when the body turns out to be one.
|
|
284
|
+
function describeUnexpectedBody(buf) {
|
|
285
|
+
const text = buf.toString('utf-8', 0, 2000).trim();
|
|
286
|
+
try {
|
|
287
|
+
const parsed = JSON.parse(text);
|
|
288
|
+
const info = parsed?.ErrorInformation;
|
|
289
|
+
if (info?.message) {
|
|
290
|
+
return info.code === undefined ? info.message : `${info.message} (code ${info.code})`;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
// not JSON — fall through to the raw excerpt
|
|
295
|
+
}
|
|
296
|
+
return text.slice(0, 200) || '<empty body>';
|
|
297
|
+
}
|
|
298
|
+
const PDF_MAGIC = '%PDF-';
|
|
299
|
+
const PDF_TRAILER = '%%EOF';
|
|
300
|
+
function startsWithPdfMagic(buf) {
|
|
301
|
+
return buf.subarray(0, PDF_MAGIC.length).toString('latin1') === PDF_MAGIC;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* A PDF that both starts with the magic number and carries its end-of-file
|
|
305
|
+
* trailer, i.e. one that was not cut short in transit. Used where a *partial*
|
|
306
|
+
* document would be worse than none — replacing an already-saved copy, say.
|
|
307
|
+
* The trailer may be followed by whitespace, so search the tail rather than
|
|
308
|
+
* requiring it at the very end.
|
|
309
|
+
*/
|
|
310
|
+
function isCompletePdf(buf) {
|
|
311
|
+
if (!startsWithPdfMagic(buf))
|
|
312
|
+
return false;
|
|
313
|
+
const tail = buf.subarray(Math.max(0, buf.length - 1024)).toString('latin1');
|
|
314
|
+
return tail.includes(PDF_TRAILER);
|
|
315
|
+
}
|
|
316
|
+
/** Fortnox can answer 2xx with an error envelope; detect one in a raw body. */
|
|
317
|
+
function fortnoxErrorInBody(buf) {
|
|
318
|
+
if (startsWithPdfMagic(buf))
|
|
319
|
+
return undefined;
|
|
320
|
+
try {
|
|
321
|
+
const parsed = JSON.parse(buf.toString('utf-8', 0, 4096));
|
|
322
|
+
const info = parsed?.ErrorInformation;
|
|
323
|
+
return info?.message ? { message: info.message, code: info.code } : undefined;
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
return undefined;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Fetch a PDF from one of Fortnox's document endpoints. Shares rate limiting,
|
|
331
|
+
* retries, timeouts and error mapping with `fortnoxRequest`.
|
|
332
|
+
*
|
|
333
|
+
* The returned bytes are validated by their magic number rather than by the
|
|
334
|
+
* Content-Type header: Fortnox can answer 200 with a JSON error envelope, and a
|
|
335
|
+
* proxy can return an HTML error page, either of which would otherwise be saved
|
|
336
|
+
* as `invoice-1001.pdf` and look like success until someone opened the file.
|
|
337
|
+
*/
|
|
338
|
+
export async function fortnoxRequestPdf(endpoint, options = {}) {
|
|
339
|
+
return request(endpoint, options, async (response) => {
|
|
340
|
+
const buf = Buffer.from(await response.arrayBuffer());
|
|
341
|
+
if (!startsWithPdfMagic(buf)) {
|
|
342
|
+
const contentType = response.headers?.get?.('content-type') || 'an unknown content type';
|
|
343
|
+
throw new Error(`Fortnox returned ${contentType} that is not a PDF for ${endpoint}: ${describeUnexpectedBody(buf)}`);
|
|
344
|
+
}
|
|
345
|
+
return buf;
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* For endpoints where the PDF is a by-product of a state change — Fortnox's
|
|
350
|
+
* `/print` both returns the document and sets `Sent`.
|
|
351
|
+
*
|
|
352
|
+
* Once the server has answered 2xx the mutation has happened, so nothing about
|
|
353
|
+
* the body may raise: a truncated or malformed payload is reported as "no PDF"
|
|
354
|
+
* rather than as an error, because throwing here would turn a completed
|
|
355
|
+
* accounting change into a reported failure. Always treated as a mutation, so
|
|
356
|
+
* it is never auto-retried.
|
|
357
|
+
*/
|
|
358
|
+
export async function fortnoxRequestPdfFromMutation(endpoint, options = {}) {
|
|
359
|
+
return request(endpoint, { ...options, mutation: true }, async (response) => {
|
|
360
|
+
let buf;
|
|
361
|
+
try {
|
|
362
|
+
buf = Buffer.from(await response.arrayBuffer());
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
// Body unreadable (truncated stream, aborted transfer). The status line
|
|
366
|
+
// already said the action succeeded; report it as such.
|
|
367
|
+
return undefined;
|
|
368
|
+
}
|
|
369
|
+
if (isCompletePdf(buf))
|
|
370
|
+
return buf;
|
|
371
|
+
// A well-formed Fortnox error envelope is positive evidence that the action
|
|
372
|
+
// did NOT happen — unlike an unreadable body, which is merely inconclusive.
|
|
373
|
+
// Fortnox can send these with a 2xx status, so this has to be checked here
|
|
374
|
+
// rather than left to the status code.
|
|
375
|
+
const failure = fortnoxErrorInBody(buf);
|
|
376
|
+
if (failure) {
|
|
377
|
+
throw new FortnoxApiError(response.status, failure.message, `Error code: ${failure.code}`, endpoint);
|
|
378
|
+
}
|
|
379
|
+
// Something else came back — an incomplete PDF, or a payload we cannot
|
|
380
|
+
// interpret. Inconclusive, so treat the action as done but offer no
|
|
381
|
+
// document: callers must not overwrite a good file with this.
|
|
382
|
+
return undefined;
|
|
383
|
+
});
|
|
190
384
|
}
|
|
191
385
|
/**
|
|
192
386
|
* Fetch all pages of a paginated Fortnox list endpoint.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fortnox-client.js","sourceRoot":"","sources":["../src/fortnox-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fortnox-client.js","sourceRoot":"","sources":["../src/fortnox-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -32,7 +32,7 @@ import { registerScheduleTimeTools } from './tools/scheduletimes.js';
|
|
|
32
32
|
export function createServer() {
|
|
33
33
|
const server = new McpServer({
|
|
34
34
|
name: 'fortnox-mcp',
|
|
35
|
-
version: '0.4.
|
|
35
|
+
version: '0.4.1',
|
|
36
36
|
});
|
|
37
37
|
registerCustomerTools(server);
|
|
38
38
|
registerInvoiceTools(server);
|
|
@@ -26,6 +26,44 @@ export interface SendEmailOptions {
|
|
|
26
26
|
bcc?: string;
|
|
27
27
|
}
|
|
28
28
|
export declare function sendInvoice(documentNumber: string, method?: SendMethod, emailOptions?: SendEmailOptions): Promise<Record<string, unknown>>;
|
|
29
|
+
/**
|
|
30
|
+
* Fetch an invoice as a PDF. Always uses /preview, which returns the same
|
|
31
|
+
* document as /print but leaves the invoice untouched.
|
|
32
|
+
*
|
|
33
|
+
* Marking the invoice as sent is deliberately NOT folded in here: callers that
|
|
34
|
+
* want both run this first, write the bytes out, and only then call
|
|
35
|
+
* `markInvoicePrinted`. Doing it the other way round means a full disk or a bad
|
|
36
|
+
* path leaves an invoice flagged as sent with no PDF to show for it.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getInvoicePdf(documentNumber: string): Promise<Buffer>;
|
|
39
|
+
export interface MarkInvoicePrintedResult {
|
|
40
|
+
/** The invoice's state after printing. */
|
|
41
|
+
invoice: Record<string, unknown>;
|
|
42
|
+
/**
|
|
43
|
+
* Whether that state was actually read back from Fortnox. When false, the
|
|
44
|
+
* print request was accepted but its effect could not be confirmed — callers
|
|
45
|
+
* must report the outcome as unknown rather than as sent.
|
|
46
|
+
*/
|
|
47
|
+
confirmed: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* The document Fortnox generated for this print action, when it came back
|
|
50
|
+
* intact. Callers saving a copy should prefer these bytes over a separately
|
|
51
|
+
* fetched /preview: the two are distinct requests, so a concurrent edit could
|
|
52
|
+
* otherwise leave the saved file a version behind the one marked as sent.
|
|
53
|
+
*/
|
|
54
|
+
pdf?: Buffer;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Mark an invoice as sent via Fortnox's /print action, and report its resulting
|
|
58
|
+
* state. /print is a GET that changes data, so it is flagged as a mutation to
|
|
59
|
+
* keep it out of the automatic retry path.
|
|
60
|
+
*
|
|
61
|
+
* Once the /print request succeeds the invoice has been changed, so from that
|
|
62
|
+
* point on this function does not throw: neither a malformed PDF body nor a
|
|
63
|
+
* failed read-back may turn a completed accounting change into a reported
|
|
64
|
+
* failure.
|
|
65
|
+
*/
|
|
66
|
+
export declare function markInvoicePrinted(documentNumber: string): Promise<MarkInvoicePrintedResult>;
|
|
29
67
|
export declare function bookkeepInvoice(documentNumber: string): Promise<Record<string, unknown>>;
|
|
30
68
|
export declare function creditInvoice(documentNumber: string): Promise<Record<string, unknown>>;
|
|
31
69
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../../src/operations/invoices.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../../src/operations/invoices.ts"],"names":[],"mappings":"AAYA,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,eAAe,CAAC,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CAChG;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,YAAY,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuB7F;AAED,wBAAsB,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAGzF;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC;AAED,wBAAsB,aAAa,CACjC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUlC;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,UAAoB,EAC5B,YAAY,CAAC,EAAE,gBAAgB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8BlC;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3E;AAED,MAAM,WAAW,wBAAwB;IACvC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,wBAAwB,CAAC,CAuBnC;AAED,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAQ9F;AAED,wBAAsB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAQ5F"}
|