@develit-services/bank 6.1.5 → 6.2.1
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/dist/base.cjs +2 -2
- package/dist/base.d.cts +10 -10
- package/dist/base.d.mts +10 -10
- package/dist/base.d.ts +10 -10
- package/dist/base.mjs +2 -2
- package/dist/database/schema.d.cts +1 -1
- package/dist/database/schema.d.mts +1 -1
- package/dist/database/schema.d.ts +1 -1
- package/dist/export/workflows.cjs +78 -29
- package/dist/export/workflows.mjs +74 -29
- package/dist/service.cjs +3 -0
- package/dist/service.d.cts +20 -0
- package/dist/service.d.mts +20 -0
- package/dist/service.d.ts +20 -0
- package/dist/service.mjs +3 -0
- package/dist/shared/{bank.r1xIlFBl.d.cts → bank.B5yr_YIB.d.cts} +2 -2
- package/dist/shared/{bank.r1xIlFBl.d.mts → bank.B5yr_YIB.d.mts} +2 -2
- package/dist/shared/{bank.r1xIlFBl.d.ts → bank.B5yr_YIB.d.ts} +2 -2
- package/dist/shared/{bank.Cu_7g0PZ.d.ts → bank.B720-BP-.d.ts} +1 -1
- package/dist/shared/{bank.BW_2lyPj.d.mts → bank.BE4BJCuX.d.cts} +1 -1
- package/dist/shared/{bank.DOriJdJs.mjs → bank.CGuCPc4G.mjs} +86 -33
- package/dist/shared/{bank.CgtmsGme.cjs → bank.CQHw4fZp.cjs} +1 -1
- package/dist/shared/{bank.CUpE2dDT.cjs → bank.CeQZODQ2.cjs} +85 -31
- package/dist/shared/{bank.CRQln83_.d.cts → bank.DtfSqAaY.d.mts} +1 -1
- package/dist/shared/{bank.DrAb7VfO.mjs → bank.Tt5XZ2jk.mjs} +1 -1
- package/dist/types.cjs +1 -1
- package/dist/types.d.cts +4 -4
- package/dist/types.d.mts +4 -4
- package/dist/types.d.ts +4 -4
- package/dist/types.mjs +1 -1
- package/package.json +3 -2
package/dist/service.d.cts
CHANGED
|
@@ -33,6 +33,10 @@ declare const BANK_SERVICE_BINDINGS: {
|
|
|
33
33
|
readonly kind: "d1";
|
|
34
34
|
readonly suffix: "bank";
|
|
35
35
|
};
|
|
36
|
+
readonly BANK_SYNC_R2: {
|
|
37
|
+
readonly kind: "r2";
|
|
38
|
+
readonly suffix: "bank-sync-payloads";
|
|
39
|
+
};
|
|
36
40
|
readonly QUEUE_BUS_QUEUE: {
|
|
37
41
|
readonly kind: "queueProducer";
|
|
38
42
|
readonly suffix: "queue-bus";
|
|
@@ -73,6 +77,10 @@ declare const baseBankServiceConfig: (project: string, version: string, options?
|
|
|
73
77
|
readonly kind: "d1";
|
|
74
78
|
readonly suffix: "bank";
|
|
75
79
|
};
|
|
80
|
+
readonly BANK_SYNC_R2: {
|
|
81
|
+
readonly kind: "r2";
|
|
82
|
+
readonly suffix: "bank-sync-payloads";
|
|
83
|
+
};
|
|
76
84
|
readonly QUEUE_BUS_QUEUE: {
|
|
77
85
|
readonly kind: "queueProducer";
|
|
78
86
|
readonly suffix: "queue-bus";
|
|
@@ -112,6 +120,10 @@ declare const baseBankServiceConfig: (project: string, version: string, options?
|
|
|
112
120
|
readonly kind: "d1";
|
|
113
121
|
readonly suffix: "bank";
|
|
114
122
|
};
|
|
123
|
+
readonly BANK_SYNC_R2: {
|
|
124
|
+
readonly kind: "r2";
|
|
125
|
+
readonly suffix: "bank-sync-payloads";
|
|
126
|
+
};
|
|
115
127
|
readonly QUEUE_BUS_QUEUE: {
|
|
116
128
|
readonly kind: "queueProducer";
|
|
117
129
|
readonly suffix: "queue-bus";
|
|
@@ -155,6 +167,10 @@ declare function bankServiceConfig(project: string, version: string, options?: P
|
|
|
155
167
|
readonly kind: "d1";
|
|
156
168
|
readonly suffix: "bank";
|
|
157
169
|
};
|
|
170
|
+
readonly BANK_SYNC_R2: {
|
|
171
|
+
readonly kind: "r2";
|
|
172
|
+
readonly suffix: "bank-sync-payloads";
|
|
173
|
+
};
|
|
158
174
|
readonly QUEUE_BUS_QUEUE: {
|
|
159
175
|
readonly kind: "queueProducer";
|
|
160
176
|
readonly suffix: "queue-bus";
|
|
@@ -196,6 +212,10 @@ declare function bankServiceConfig(project: string, version: string, options?: P
|
|
|
196
212
|
readonly kind: "d1";
|
|
197
213
|
readonly suffix: "bank";
|
|
198
214
|
};
|
|
215
|
+
readonly BANK_SYNC_R2: {
|
|
216
|
+
readonly kind: "r2";
|
|
217
|
+
readonly suffix: "bank-sync-payloads";
|
|
218
|
+
};
|
|
199
219
|
readonly QUEUE_BUS_QUEUE: {
|
|
200
220
|
readonly kind: "queueProducer";
|
|
201
221
|
readonly suffix: "queue-bus";
|
package/dist/service.d.mts
CHANGED
|
@@ -33,6 +33,10 @@ declare const BANK_SERVICE_BINDINGS: {
|
|
|
33
33
|
readonly kind: "d1";
|
|
34
34
|
readonly suffix: "bank";
|
|
35
35
|
};
|
|
36
|
+
readonly BANK_SYNC_R2: {
|
|
37
|
+
readonly kind: "r2";
|
|
38
|
+
readonly suffix: "bank-sync-payloads";
|
|
39
|
+
};
|
|
36
40
|
readonly QUEUE_BUS_QUEUE: {
|
|
37
41
|
readonly kind: "queueProducer";
|
|
38
42
|
readonly suffix: "queue-bus";
|
|
@@ -73,6 +77,10 @@ declare const baseBankServiceConfig: (project: string, version: string, options?
|
|
|
73
77
|
readonly kind: "d1";
|
|
74
78
|
readonly suffix: "bank";
|
|
75
79
|
};
|
|
80
|
+
readonly BANK_SYNC_R2: {
|
|
81
|
+
readonly kind: "r2";
|
|
82
|
+
readonly suffix: "bank-sync-payloads";
|
|
83
|
+
};
|
|
76
84
|
readonly QUEUE_BUS_QUEUE: {
|
|
77
85
|
readonly kind: "queueProducer";
|
|
78
86
|
readonly suffix: "queue-bus";
|
|
@@ -112,6 +120,10 @@ declare const baseBankServiceConfig: (project: string, version: string, options?
|
|
|
112
120
|
readonly kind: "d1";
|
|
113
121
|
readonly suffix: "bank";
|
|
114
122
|
};
|
|
123
|
+
readonly BANK_SYNC_R2: {
|
|
124
|
+
readonly kind: "r2";
|
|
125
|
+
readonly suffix: "bank-sync-payloads";
|
|
126
|
+
};
|
|
115
127
|
readonly QUEUE_BUS_QUEUE: {
|
|
116
128
|
readonly kind: "queueProducer";
|
|
117
129
|
readonly suffix: "queue-bus";
|
|
@@ -155,6 +167,10 @@ declare function bankServiceConfig(project: string, version: string, options?: P
|
|
|
155
167
|
readonly kind: "d1";
|
|
156
168
|
readonly suffix: "bank";
|
|
157
169
|
};
|
|
170
|
+
readonly BANK_SYNC_R2: {
|
|
171
|
+
readonly kind: "r2";
|
|
172
|
+
readonly suffix: "bank-sync-payloads";
|
|
173
|
+
};
|
|
158
174
|
readonly QUEUE_BUS_QUEUE: {
|
|
159
175
|
readonly kind: "queueProducer";
|
|
160
176
|
readonly suffix: "queue-bus";
|
|
@@ -196,6 +212,10 @@ declare function bankServiceConfig(project: string, version: string, options?: P
|
|
|
196
212
|
readonly kind: "d1";
|
|
197
213
|
readonly suffix: "bank";
|
|
198
214
|
};
|
|
215
|
+
readonly BANK_SYNC_R2: {
|
|
216
|
+
readonly kind: "r2";
|
|
217
|
+
readonly suffix: "bank-sync-payloads";
|
|
218
|
+
};
|
|
199
219
|
readonly QUEUE_BUS_QUEUE: {
|
|
200
220
|
readonly kind: "queueProducer";
|
|
201
221
|
readonly suffix: "queue-bus";
|
package/dist/service.d.ts
CHANGED
|
@@ -33,6 +33,10 @@ declare const BANK_SERVICE_BINDINGS: {
|
|
|
33
33
|
readonly kind: "d1";
|
|
34
34
|
readonly suffix: "bank";
|
|
35
35
|
};
|
|
36
|
+
readonly BANK_SYNC_R2: {
|
|
37
|
+
readonly kind: "r2";
|
|
38
|
+
readonly suffix: "bank-sync-payloads";
|
|
39
|
+
};
|
|
36
40
|
readonly QUEUE_BUS_QUEUE: {
|
|
37
41
|
readonly kind: "queueProducer";
|
|
38
42
|
readonly suffix: "queue-bus";
|
|
@@ -73,6 +77,10 @@ declare const baseBankServiceConfig: (project: string, version: string, options?
|
|
|
73
77
|
readonly kind: "d1";
|
|
74
78
|
readonly suffix: "bank";
|
|
75
79
|
};
|
|
80
|
+
readonly BANK_SYNC_R2: {
|
|
81
|
+
readonly kind: "r2";
|
|
82
|
+
readonly suffix: "bank-sync-payloads";
|
|
83
|
+
};
|
|
76
84
|
readonly QUEUE_BUS_QUEUE: {
|
|
77
85
|
readonly kind: "queueProducer";
|
|
78
86
|
readonly suffix: "queue-bus";
|
|
@@ -112,6 +120,10 @@ declare const baseBankServiceConfig: (project: string, version: string, options?
|
|
|
112
120
|
readonly kind: "d1";
|
|
113
121
|
readonly suffix: "bank";
|
|
114
122
|
};
|
|
123
|
+
readonly BANK_SYNC_R2: {
|
|
124
|
+
readonly kind: "r2";
|
|
125
|
+
readonly suffix: "bank-sync-payloads";
|
|
126
|
+
};
|
|
115
127
|
readonly QUEUE_BUS_QUEUE: {
|
|
116
128
|
readonly kind: "queueProducer";
|
|
117
129
|
readonly suffix: "queue-bus";
|
|
@@ -155,6 +167,10 @@ declare function bankServiceConfig(project: string, version: string, options?: P
|
|
|
155
167
|
readonly kind: "d1";
|
|
156
168
|
readonly suffix: "bank";
|
|
157
169
|
};
|
|
170
|
+
readonly BANK_SYNC_R2: {
|
|
171
|
+
readonly kind: "r2";
|
|
172
|
+
readonly suffix: "bank-sync-payloads";
|
|
173
|
+
};
|
|
158
174
|
readonly QUEUE_BUS_QUEUE: {
|
|
159
175
|
readonly kind: "queueProducer";
|
|
160
176
|
readonly suffix: "queue-bus";
|
|
@@ -196,6 +212,10 @@ declare function bankServiceConfig(project: string, version: string, options?: P
|
|
|
196
212
|
readonly kind: "d1";
|
|
197
213
|
readonly suffix: "bank";
|
|
198
214
|
};
|
|
215
|
+
readonly BANK_SYNC_R2: {
|
|
216
|
+
readonly kind: "r2";
|
|
217
|
+
readonly suffix: "bank-sync-payloads";
|
|
218
|
+
};
|
|
199
219
|
readonly QUEUE_BUS_QUEUE: {
|
|
200
220
|
readonly kind: "queueProducer";
|
|
201
221
|
readonly suffix: "queue-bus";
|
package/dist/service.mjs
CHANGED
|
@@ -4,6 +4,9 @@ const BANK_SERVICE_BINDINGS = {
|
|
|
4
4
|
SECRETS_STORE: { kind: "service", target: "secrets-store", bare: true },
|
|
5
5
|
BANK_KV: { kind: "kv", suffix: "bank" },
|
|
6
6
|
BANK_D1: { kind: "d1", suffix: "bank" },
|
|
7
|
+
// Spillover for `fetch bank payments` results too large to return from a
|
|
8
|
+
// Workflow step directly — see sync-payments-store.ts.
|
|
9
|
+
BANK_SYNC_R2: { kind: "r2", suffix: "bank-sync-payloads" },
|
|
7
10
|
QUEUE_BUS_QUEUE: { kind: "queueProducer", suffix: "queue-bus" },
|
|
8
11
|
NOTIFICATIONS_QUEUE: { kind: "queueProducer", suffix: "notifications" },
|
|
9
12
|
SYNC_ACCOUNT_PAYMENTS_WORKFLOW: {
|
|
@@ -3656,7 +3656,7 @@ declare const payment: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
3656
3656
|
name: string;
|
|
3657
3657
|
tableName: "payment";
|
|
3658
3658
|
dataType: "string enum";
|
|
3659
|
-
data: "PROCESSING" | "
|
|
3659
|
+
data: "PROCESSING" | "PENDING" | "BOOKED" | "CANCELLED" | "REJECTED" | "SCHEDULED" | "HOLD" | "INFO";
|
|
3660
3660
|
driverParam: string;
|
|
3661
3661
|
notNull: true;
|
|
3662
3662
|
hasDefault: false;
|
|
@@ -4160,7 +4160,7 @@ declare const paymentRequest: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
4160
4160
|
name: string;
|
|
4161
4161
|
tableName: "payment_request";
|
|
4162
4162
|
dataType: "string enum";
|
|
4163
|
-
data: "AUTHORIZED" | "COMPLETED" | "
|
|
4163
|
+
data: "AUTHORIZED" | "COMPLETED" | "BOOKED" | "REJECTED" | "OPENED" | "SETTLED" | "CLOSED";
|
|
4164
4164
|
driverParam: string;
|
|
4165
4165
|
notNull: true;
|
|
4166
4166
|
hasDefault: false;
|
|
@@ -3656,7 +3656,7 @@ declare const payment: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
3656
3656
|
name: string;
|
|
3657
3657
|
tableName: "payment";
|
|
3658
3658
|
dataType: "string enum";
|
|
3659
|
-
data: "PROCESSING" | "
|
|
3659
|
+
data: "PROCESSING" | "PENDING" | "BOOKED" | "CANCELLED" | "REJECTED" | "SCHEDULED" | "HOLD" | "INFO";
|
|
3660
3660
|
driverParam: string;
|
|
3661
3661
|
notNull: true;
|
|
3662
3662
|
hasDefault: false;
|
|
@@ -4160,7 +4160,7 @@ declare const paymentRequest: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
4160
4160
|
name: string;
|
|
4161
4161
|
tableName: "payment_request";
|
|
4162
4162
|
dataType: "string enum";
|
|
4163
|
-
data: "AUTHORIZED" | "COMPLETED" | "
|
|
4163
|
+
data: "AUTHORIZED" | "COMPLETED" | "BOOKED" | "REJECTED" | "OPENED" | "SETTLED" | "CLOSED";
|
|
4164
4164
|
driverParam: string;
|
|
4165
4165
|
notNull: true;
|
|
4166
4166
|
hasDefault: false;
|
|
@@ -3656,7 +3656,7 @@ declare const payment: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
3656
3656
|
name: string;
|
|
3657
3657
|
tableName: "payment";
|
|
3658
3658
|
dataType: "string enum";
|
|
3659
|
-
data: "PROCESSING" | "
|
|
3659
|
+
data: "PROCESSING" | "PENDING" | "BOOKED" | "CANCELLED" | "REJECTED" | "SCHEDULED" | "HOLD" | "INFO";
|
|
3660
3660
|
driverParam: string;
|
|
3661
3661
|
notNull: true;
|
|
3662
3662
|
hasDefault: false;
|
|
@@ -4160,7 +4160,7 @@ declare const paymentRequest: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
|
|
|
4160
4160
|
name: string;
|
|
4161
4161
|
tableName: "payment_request";
|
|
4162
4162
|
dataType: "string enum";
|
|
4163
|
-
data: "AUTHORIZED" | "COMPLETED" | "
|
|
4163
|
+
data: "AUTHORIZED" | "COMPLETED" | "BOOKED" | "REJECTED" | "OPENED" | "SETTLED" | "CLOSED";
|
|
4164
4164
|
driverParam: string;
|
|
4165
4165
|
notNull: true;
|
|
4166
4166
|
hasDefault: false;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as CurrencyCode, R as BankCode, a1 as CountryCode, P as PaymentRequestSelectType } from './bank.
|
|
1
|
+
import { e as CurrencyCode, R as BankCode, a1 as CountryCode, P as PaymentRequestSelectType } from './bank.B5yr_YIB.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
type ReferenceType = `${'VS' | 'SS' | 'KS'}:${number}`;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as CurrencyCode, R as BankCode, a1 as CountryCode, P as PaymentRequestSelectType } from './bank.
|
|
1
|
+
import { e as CurrencyCode, R as BankCode, a1 as CountryCode, P as PaymentRequestSelectType } from './bank.B5yr_YIB.cjs';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
type ReferenceType = `${'VS' | 'SS' | 'KS'}:${number}`;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { uuidv4, createInternalError, bicSchema, useResult, structuredAddressSchema } from '@develit-io/backend-sdk';
|
|
1
|
+
import { uuidv4, createInternalError, bicSchema, useResult, isInternalError, structuredAddressSchema } from '@develit-io/backend-sdk';
|
|
2
2
|
import { format, parseISO } from 'date-fns';
|
|
3
3
|
import { s as schema, h as account, i as accountCredentials, o as ott } from './bank.BT7HayCV.mjs';
|
|
4
4
|
import { defineRelations, and, not, inArray, isNull } from 'drizzle-orm';
|
|
@@ -881,12 +881,13 @@ function mapToFinbricksAddress(addr) {
|
|
|
881
881
|
}
|
|
882
882
|
const town = addr.city?.trim();
|
|
883
883
|
const country = addr.countryCode?.trim();
|
|
884
|
-
|
|
884
|
+
const mapped = {
|
|
885
885
|
...streetName && { streetName },
|
|
886
886
|
...buildingNumber && { buildingNumber },
|
|
887
887
|
...town && { town },
|
|
888
888
|
...country && { country }
|
|
889
889
|
};
|
|
890
|
+
return Object.keys(mapped).length > 0 ? mapped : void 0;
|
|
890
891
|
}
|
|
891
892
|
class FinbricksConnector extends IBankConnector {
|
|
892
893
|
constructor(provider, {
|
|
@@ -1519,6 +1520,19 @@ class CsobConnector extends FinbricksConnector {
|
|
|
1519
1520
|
}
|
|
1520
1521
|
}
|
|
1521
1522
|
|
|
1523
|
+
function extractErrorDetails(err) {
|
|
1524
|
+
if (err instanceof Error) return { message: err.message };
|
|
1525
|
+
if (typeof err === "object" && err !== null && "message" in err) {
|
|
1526
|
+
const obj = err;
|
|
1527
|
+
return {
|
|
1528
|
+
message: String(obj.message),
|
|
1529
|
+
status: typeof obj.status === "number" ? obj.status : void 0,
|
|
1530
|
+
code: typeof obj.code === "string" ? obj.code : void 0
|
|
1531
|
+
};
|
|
1532
|
+
}
|
|
1533
|
+
return { message: JSON.stringify(err) };
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1522
1536
|
const dbuAccountConfigSchema = z.object({
|
|
1523
1537
|
with4EyeApproval: z.enum(["Y", "N"]).default("Y"),
|
|
1524
1538
|
realizeImmediate: z.enum(["Y", "N"]).default("Y"),
|
|
@@ -1528,6 +1542,42 @@ const dbuAccountConfigSchema = z.object({
|
|
|
1528
1542
|
partialRealization: z.enum(["Y", "N"]).default("N"),
|
|
1529
1543
|
forceRealization: z.enum(["Y", "N"]).default("N")
|
|
1530
1544
|
});
|
|
1545
|
+
const LOG_PREVIEW_BYTES = 500;
|
|
1546
|
+
function previewForLog(value) {
|
|
1547
|
+
const json = JSON.stringify(value);
|
|
1548
|
+
if (json === void 0 || json.length <= LOG_PREVIEW_BYTES) return value;
|
|
1549
|
+
return {
|
|
1550
|
+
preview: json.slice(0, LOG_PREVIEW_BYTES),
|
|
1551
|
+
truncated: true,
|
|
1552
|
+
fullLength: json.length
|
|
1553
|
+
};
|
|
1554
|
+
}
|
|
1555
|
+
const FETCH_RETRY_ATTEMPTS = 3;
|
|
1556
|
+
const FETCH_RETRY_BASE_DELAY_MS = 250;
|
|
1557
|
+
async function fetchWithRetry(fetcher, url, init, requestId) {
|
|
1558
|
+
for (let attempt = 1; attempt <= FETCH_RETRY_ATTEMPTS; attempt++) {
|
|
1559
|
+
try {
|
|
1560
|
+
return await fetcher.fetch(url, init);
|
|
1561
|
+
} catch (error) {
|
|
1562
|
+
const isLastAttempt = attempt === FETCH_RETRY_ATTEMPTS;
|
|
1563
|
+
console.warn(
|
|
1564
|
+
JSON.stringify({
|
|
1565
|
+
event: "[DBU] fetch failed",
|
|
1566
|
+
requestId,
|
|
1567
|
+
attempt,
|
|
1568
|
+
maxAttempts: FETCH_RETRY_ATTEMPTS,
|
|
1569
|
+
willRetry: !isLastAttempt,
|
|
1570
|
+
error: extractErrorDetails(error).message
|
|
1571
|
+
})
|
|
1572
|
+
);
|
|
1573
|
+
if (isLastAttempt) throw error;
|
|
1574
|
+
await new Promise(
|
|
1575
|
+
(resolve) => setTimeout(resolve, FETCH_RETRY_BASE_DELAY_MS * attempt)
|
|
1576
|
+
);
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1579
|
+
throw new Error("fetchWithRetry: exhausted attempts without a result");
|
|
1580
|
+
}
|
|
1531
1581
|
class DbuConnector extends IBankConnector {
|
|
1532
1582
|
constructor({
|
|
1533
1583
|
BASE_URL,
|
|
@@ -1597,20 +1647,21 @@ class DbuConnector extends IBankConnector {
|
|
|
1597
1647
|
fetchOptions.body = JSON.stringify(body);
|
|
1598
1648
|
}
|
|
1599
1649
|
console.log(
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
)
|
|
1650
|
+
JSON.stringify({
|
|
1651
|
+
event: "[DBU] request",
|
|
1652
|
+
method,
|
|
1653
|
+
url: url.toString(),
|
|
1654
|
+
requestId,
|
|
1655
|
+
headers: defaultHeaders,
|
|
1656
|
+
body: previewForLog(body ?? null)
|
|
1657
|
+
})
|
|
1658
|
+
);
|
|
1659
|
+
response = await fetchWithRetry(
|
|
1660
|
+
this.api,
|
|
1661
|
+
url.toString(),
|
|
1662
|
+
fetchOptions,
|
|
1663
|
+
requestId
|
|
1612
1664
|
);
|
|
1613
|
-
response = await this.api.fetch(url.toString(), fetchOptions);
|
|
1614
1665
|
const responseText = await response.text().catch(() => "unable to read response");
|
|
1615
1666
|
if (!response.ok) {
|
|
1616
1667
|
let parsedBody = responseText;
|
|
@@ -1645,21 +1696,18 @@ class DbuConnector extends IBankConnector {
|
|
|
1645
1696
|
parseError: parseError instanceof Error ? parseError.message : String(parseError)
|
|
1646
1697
|
});
|
|
1647
1698
|
throw createInternalError(parseError, {
|
|
1648
|
-
message:
|
|
1699
|
+
message: `Failed to parse DBU response as JSON: ${parseError instanceof Error ? parseError.message : String(parseError)} (preview: ${responseText.substring(0, 500)})`
|
|
1649
1700
|
});
|
|
1650
1701
|
}
|
|
1651
1702
|
console.log(
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
null,
|
|
1661
|
-
2
|
|
1662
|
-
)
|
|
1703
|
+
JSON.stringify({
|
|
1704
|
+
event: "[DBU] response",
|
|
1705
|
+
status: response.status,
|
|
1706
|
+
url: url.toString(),
|
|
1707
|
+
requestId,
|
|
1708
|
+
bytes: responseText.length,
|
|
1709
|
+
body: previewForLog(data)
|
|
1710
|
+
})
|
|
1663
1711
|
);
|
|
1664
1712
|
return data;
|
|
1665
1713
|
} catch (error) {
|
|
@@ -1676,7 +1724,10 @@ class DbuConnector extends IBankConnector {
|
|
|
1676
1724
|
stack: error instanceof Error ? error.stack : void 0
|
|
1677
1725
|
}
|
|
1678
1726
|
});
|
|
1679
|
-
throw error;
|
|
1727
|
+
if (isInternalError(error)) throw error;
|
|
1728
|
+
throw createInternalError(error, {
|
|
1729
|
+
message: `DBU ${method} ${endpoint} (requestId=${requestId}) failed: ${extractErrorDetails(error).message}`
|
|
1730
|
+
});
|
|
1680
1731
|
}
|
|
1681
1732
|
}
|
|
1682
1733
|
mapDbuCurrencyCode(dbuCurrency) {
|
|
@@ -1989,14 +2040,14 @@ class DbuConnector extends IBankConnector {
|
|
|
1989
2040
|
account,
|
|
1990
2041
|
filter
|
|
1991
2042
|
}) {
|
|
2043
|
+
let offset = 0;
|
|
2044
|
+
let pageNumber = 1;
|
|
1992
2045
|
try {
|
|
1993
2046
|
const dateFrom = format(filter.dateFrom, "yyyy-MM-dd");
|
|
1994
2047
|
const dateTo = format(filter.dateTo || /* @__PURE__ */ new Date(), "yyyy-MM-dd");
|
|
1995
2048
|
const allPayments = [];
|
|
1996
|
-
|
|
1997
|
-
const limit = 10;
|
|
2049
|
+
const limit = 50;
|
|
1998
2050
|
let hasMoreData = true;
|
|
1999
|
-
let pageNumber = 1;
|
|
2000
2051
|
const baseRequestId = uuidv4().replace(/-/g, "");
|
|
2001
2052
|
while (hasMoreData) {
|
|
2002
2053
|
const response = await this.makeRequest(
|
|
@@ -2046,8 +2097,10 @@ class DbuConnector extends IBankConnector {
|
|
|
2046
2097
|
}
|
|
2047
2098
|
return allPayments;
|
|
2048
2099
|
} catch (error) {
|
|
2100
|
+
const details = extractErrorDetails(error);
|
|
2049
2101
|
throw createInternalError(error, {
|
|
2050
|
-
message:
|
|
2102
|
+
message: `Failed to fetch payments from DBU API (page ${pageNumber}, offset ${offset}): ${details.message}`,
|
|
2103
|
+
code: details.code
|
|
2051
2104
|
});
|
|
2052
2105
|
}
|
|
2053
2106
|
}
|
|
@@ -2614,4 +2667,4 @@ const getPaymentDirection = (payment, iban) => {
|
|
|
2614
2667
|
return "OUTGOING";
|
|
2615
2668
|
};
|
|
2616
2669
|
|
|
2617
|
-
export { useFinbricksFetch as A, BASE_TERMINAL_STATUSES as B, CsobConnector as C, DbuConnector as D, ErsteConnector as E, FINBRICKS_ENDPOINTS as F, tables as G, relations as H, IBankConnector as I,
|
|
2670
|
+
export { useFinbricksFetch as A, BASE_TERMINAL_STATUSES as B, CsobConnector as C, DbuConnector as D, ErsteConnector as E, FINBRICKS_ENDPOINTS as F, tables as G, relations as H, IBankConnector as I, extractErrorDetails as J, KBConnector as K, buildEndToEndId as L, MockCobsConnector as M, getNonTerminalPaymentRequestsQuery as N, calculateCzechIban as O, FinbricksClient as a, FinbricksConnector as b, MockConnector as c, accountCredentialsInsertSchema as d, accountCredentialsSelectSchema as e, accountCredentialsUpdateSchema as f, accountInsertSchema as g, accountSelectSchema as h, accountUpdateSchema as i, assignAccount as j, dbuAccountConfigSchema as k, hasPaymentAccountAssigned as l, isPaymentCompleted as m, isPendingStatus as n, isProcessedStatus as o, isTerminalStatus as p, ottInsertSchema as q, ottSelectSchema as r, ottUpdateSchema as s, signFinbricksJws as t, toBatchedPayment as u, toBatchedPaymentFromPaymentRequest as v, toCompletedPayment as w, toIncomingPayment as x, toPaymentRequestInsert as y, toPreparedPayment as z };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const drizzleOrm = require('drizzle-orm');
|
|
4
|
-
const paymentDirection = require('./bank.
|
|
4
|
+
const paymentDirection = require('./bank.CeQZODQ2.cjs');
|
|
5
5
|
const backendSdk = require('@develit-io/backend-sdk');
|
|
6
6
|
require('./bank.Ca3jzmIb.cjs');
|
|
7
7
|
require('date-fns');
|
|
@@ -883,12 +883,13 @@ function mapToFinbricksAddress(addr) {
|
|
|
883
883
|
}
|
|
884
884
|
const town = addr.city?.trim();
|
|
885
885
|
const country = addr.countryCode?.trim();
|
|
886
|
-
|
|
886
|
+
const mapped = {
|
|
887
887
|
...streetName && { streetName },
|
|
888
888
|
...buildingNumber && { buildingNumber },
|
|
889
889
|
...town && { town },
|
|
890
890
|
...country && { country }
|
|
891
891
|
};
|
|
892
|
+
return Object.keys(mapped).length > 0 ? mapped : void 0;
|
|
892
893
|
}
|
|
893
894
|
class FinbricksConnector extends IBankConnector {
|
|
894
895
|
constructor(provider, {
|
|
@@ -1521,6 +1522,19 @@ class CsobConnector extends FinbricksConnector {
|
|
|
1521
1522
|
}
|
|
1522
1523
|
}
|
|
1523
1524
|
|
|
1525
|
+
function extractErrorDetails(err) {
|
|
1526
|
+
if (err instanceof Error) return { message: err.message };
|
|
1527
|
+
if (typeof err === "object" && err !== null && "message" in err) {
|
|
1528
|
+
const obj = err;
|
|
1529
|
+
return {
|
|
1530
|
+
message: String(obj.message),
|
|
1531
|
+
status: typeof obj.status === "number" ? obj.status : void 0,
|
|
1532
|
+
code: typeof obj.code === "string" ? obj.code : void 0
|
|
1533
|
+
};
|
|
1534
|
+
}
|
|
1535
|
+
return { message: JSON.stringify(err) };
|
|
1536
|
+
}
|
|
1537
|
+
|
|
1524
1538
|
const dbuAccountConfigSchema = zod.z.object({
|
|
1525
1539
|
with4EyeApproval: zod.z.enum(["Y", "N"]).default("Y"),
|
|
1526
1540
|
realizeImmediate: zod.z.enum(["Y", "N"]).default("Y"),
|
|
@@ -1530,6 +1544,42 @@ const dbuAccountConfigSchema = zod.z.object({
|
|
|
1530
1544
|
partialRealization: zod.z.enum(["Y", "N"]).default("N"),
|
|
1531
1545
|
forceRealization: zod.z.enum(["Y", "N"]).default("N")
|
|
1532
1546
|
});
|
|
1547
|
+
const LOG_PREVIEW_BYTES = 500;
|
|
1548
|
+
function previewForLog(value) {
|
|
1549
|
+
const json = JSON.stringify(value);
|
|
1550
|
+
if (json === void 0 || json.length <= LOG_PREVIEW_BYTES) return value;
|
|
1551
|
+
return {
|
|
1552
|
+
preview: json.slice(0, LOG_PREVIEW_BYTES),
|
|
1553
|
+
truncated: true,
|
|
1554
|
+
fullLength: json.length
|
|
1555
|
+
};
|
|
1556
|
+
}
|
|
1557
|
+
const FETCH_RETRY_ATTEMPTS = 3;
|
|
1558
|
+
const FETCH_RETRY_BASE_DELAY_MS = 250;
|
|
1559
|
+
async function fetchWithRetry(fetcher, url, init, requestId) {
|
|
1560
|
+
for (let attempt = 1; attempt <= FETCH_RETRY_ATTEMPTS; attempt++) {
|
|
1561
|
+
try {
|
|
1562
|
+
return await fetcher.fetch(url, init);
|
|
1563
|
+
} catch (error) {
|
|
1564
|
+
const isLastAttempt = attempt === FETCH_RETRY_ATTEMPTS;
|
|
1565
|
+
console.warn(
|
|
1566
|
+
JSON.stringify({
|
|
1567
|
+
event: "[DBU] fetch failed",
|
|
1568
|
+
requestId,
|
|
1569
|
+
attempt,
|
|
1570
|
+
maxAttempts: FETCH_RETRY_ATTEMPTS,
|
|
1571
|
+
willRetry: !isLastAttempt,
|
|
1572
|
+
error: extractErrorDetails(error).message
|
|
1573
|
+
})
|
|
1574
|
+
);
|
|
1575
|
+
if (isLastAttempt) throw error;
|
|
1576
|
+
await new Promise(
|
|
1577
|
+
(resolve) => setTimeout(resolve, FETCH_RETRY_BASE_DELAY_MS * attempt)
|
|
1578
|
+
);
|
|
1579
|
+
}
|
|
1580
|
+
}
|
|
1581
|
+
throw new Error("fetchWithRetry: exhausted attempts without a result");
|
|
1582
|
+
}
|
|
1533
1583
|
class DbuConnector extends IBankConnector {
|
|
1534
1584
|
constructor({
|
|
1535
1585
|
BASE_URL,
|
|
@@ -1599,20 +1649,21 @@ class DbuConnector extends IBankConnector {
|
|
|
1599
1649
|
fetchOptions.body = JSON.stringify(body);
|
|
1600
1650
|
}
|
|
1601
1651
|
console.log(
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
)
|
|
1652
|
+
JSON.stringify({
|
|
1653
|
+
event: "[DBU] request",
|
|
1654
|
+
method,
|
|
1655
|
+
url: url.toString(),
|
|
1656
|
+
requestId,
|
|
1657
|
+
headers: defaultHeaders,
|
|
1658
|
+
body: previewForLog(body ?? null)
|
|
1659
|
+
})
|
|
1660
|
+
);
|
|
1661
|
+
response = await fetchWithRetry(
|
|
1662
|
+
this.api,
|
|
1663
|
+
url.toString(),
|
|
1664
|
+
fetchOptions,
|
|
1665
|
+
requestId
|
|
1614
1666
|
);
|
|
1615
|
-
response = await this.api.fetch(url.toString(), fetchOptions);
|
|
1616
1667
|
const responseText = await response.text().catch(() => "unable to read response");
|
|
1617
1668
|
if (!response.ok) {
|
|
1618
1669
|
let parsedBody = responseText;
|
|
@@ -1647,21 +1698,18 @@ class DbuConnector extends IBankConnector {
|
|
|
1647
1698
|
parseError: parseError instanceof Error ? parseError.message : String(parseError)
|
|
1648
1699
|
});
|
|
1649
1700
|
throw backendSdk.createInternalError(parseError, {
|
|
1650
|
-
message:
|
|
1701
|
+
message: `Failed to parse DBU response as JSON: ${parseError instanceof Error ? parseError.message : String(parseError)} (preview: ${responseText.substring(0, 500)})`
|
|
1651
1702
|
});
|
|
1652
1703
|
}
|
|
1653
1704
|
console.log(
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
null,
|
|
1663
|
-
2
|
|
1664
|
-
)
|
|
1705
|
+
JSON.stringify({
|
|
1706
|
+
event: "[DBU] response",
|
|
1707
|
+
status: response.status,
|
|
1708
|
+
url: url.toString(),
|
|
1709
|
+
requestId,
|
|
1710
|
+
bytes: responseText.length,
|
|
1711
|
+
body: previewForLog(data)
|
|
1712
|
+
})
|
|
1665
1713
|
);
|
|
1666
1714
|
return data;
|
|
1667
1715
|
} catch (error) {
|
|
@@ -1678,7 +1726,10 @@ class DbuConnector extends IBankConnector {
|
|
|
1678
1726
|
stack: error instanceof Error ? error.stack : void 0
|
|
1679
1727
|
}
|
|
1680
1728
|
});
|
|
1681
|
-
throw error;
|
|
1729
|
+
if (backendSdk.isInternalError(error)) throw error;
|
|
1730
|
+
throw backendSdk.createInternalError(error, {
|
|
1731
|
+
message: `DBU ${method} ${endpoint} (requestId=${requestId}) failed: ${extractErrorDetails(error).message}`
|
|
1732
|
+
});
|
|
1682
1733
|
}
|
|
1683
1734
|
}
|
|
1684
1735
|
mapDbuCurrencyCode(dbuCurrency) {
|
|
@@ -1991,14 +2042,14 @@ class DbuConnector extends IBankConnector {
|
|
|
1991
2042
|
account,
|
|
1992
2043
|
filter
|
|
1993
2044
|
}) {
|
|
2045
|
+
let offset = 0;
|
|
2046
|
+
let pageNumber = 1;
|
|
1994
2047
|
try {
|
|
1995
2048
|
const dateFrom = dateFns.format(filter.dateFrom, "yyyy-MM-dd");
|
|
1996
2049
|
const dateTo = dateFns.format(filter.dateTo || /* @__PURE__ */ new Date(), "yyyy-MM-dd");
|
|
1997
2050
|
const allPayments = [];
|
|
1998
|
-
|
|
1999
|
-
const limit = 10;
|
|
2051
|
+
const limit = 50;
|
|
2000
2052
|
let hasMoreData = true;
|
|
2001
|
-
let pageNumber = 1;
|
|
2002
2053
|
const baseRequestId = backendSdk.uuidv4().replace(/-/g, "");
|
|
2003
2054
|
while (hasMoreData) {
|
|
2004
2055
|
const response = await this.makeRequest(
|
|
@@ -2048,8 +2099,10 @@ class DbuConnector extends IBankConnector {
|
|
|
2048
2099
|
}
|
|
2049
2100
|
return allPayments;
|
|
2050
2101
|
} catch (error) {
|
|
2102
|
+
const details = extractErrorDetails(error);
|
|
2051
2103
|
throw backendSdk.createInternalError(error, {
|
|
2052
|
-
message:
|
|
2104
|
+
message: `Failed to fetch payments from DBU API (page ${pageNumber}, offset ${offset}): ${details.message}`,
|
|
2105
|
+
code: details.code
|
|
2053
2106
|
});
|
|
2054
2107
|
}
|
|
2055
2108
|
}
|
|
@@ -2637,6 +2690,7 @@ exports.assignAccount = assignAccount;
|
|
|
2637
2690
|
exports.buildEndToEndId = buildEndToEndId;
|
|
2638
2691
|
exports.calculateCzechIban = calculateCzechIban;
|
|
2639
2692
|
exports.dbuAccountConfigSchema = dbuAccountConfigSchema;
|
|
2693
|
+
exports.extractErrorDetails = extractErrorDetails;
|
|
2640
2694
|
exports.getNonTerminalPaymentRequestsQuery = getNonTerminalPaymentRequestsQuery;
|
|
2641
2695
|
exports.hasPaymentAccountAssigned = hasPaymentAccountAssigned;
|
|
2642
2696
|
exports.isPaymentCompleted = isPaymentCompleted;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as CurrencyCode, R as BankCode, a1 as CountryCode, P as PaymentRequestSelectType } from './bank.
|
|
1
|
+
import { e as CurrencyCode, R as BankCode, a1 as CountryCode, P as PaymentRequestSelectType } from './bank.B5yr_YIB.mjs';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
type ReferenceType = `${'VS' | 'SS' | 'KS'}:${number}`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sql, and, eq, isNull } from 'drizzle-orm';
|
|
2
|
-
import { G as tables, b as FinbricksConnector,
|
|
2
|
+
import { G as tables, b as FinbricksConnector, L as buildEndToEndId, c as MockConnector, D as DbuConnector, C as CsobConnector, K as KBConnector, M as MockCobsConnector, E as ErsteConnector } from './bank.CGuCPc4G.mjs';
|
|
3
3
|
import { uuidv4 } from '@develit-io/backend-sdk';
|
|
4
4
|
import './bank.BT7HayCV.mjs';
|
|
5
5
|
import 'date-fns';
|
package/dist/types.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const paymentDirection = require('./shared/bank.
|
|
3
|
+
const paymentDirection = require('./shared/bank.CeQZODQ2.cjs');
|
|
4
4
|
const database_schema = require('./shared/bank.Ca3jzmIb.cjs');
|
|
5
5
|
const batchLifecycle = require('./shared/bank.NF8bZBy0.cjs');
|
|
6
6
|
const generalCodes = require('@develit-io/general-codes');
|