@develit-services/bank 0.3.60 → 0.4.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.
Files changed (45) hide show
  1. package/dist/database/schema.cjs +9 -9
  2. package/dist/database/schema.d.cts +4 -5
  3. package/dist/database/schema.d.mts +4 -5
  4. package/dist/database/schema.d.ts +4 -5
  5. package/dist/database/schema.mjs +3 -3
  6. package/dist/export/worker.cjs +91 -85
  7. package/dist/export/worker.d.cts +23 -766
  8. package/dist/export/worker.d.mts +23 -766
  9. package/dist/export/worker.d.ts +23 -766
  10. package/dist/export/worker.mjs +72 -66
  11. package/dist/export/workflows.cjs +215 -211
  12. package/dist/export/workflows.d.cts +4 -4
  13. package/dist/export/workflows.d.mts +4 -4
  14. package/dist/export/workflows.d.ts +4 -4
  15. package/dist/export/workflows.mjs +210 -206
  16. package/dist/export/wrangler.d.cts +3 -1
  17. package/dist/export/wrangler.d.mts +3 -1
  18. package/dist/export/wrangler.d.ts +3 -1
  19. package/dist/shared/bank.B51e8oDT.mjs +104 -0
  20. package/dist/shared/{bank.Dh_H_5rC.d.cts → bank.BJvgLwyZ.d.cts} +2 -0
  21. package/dist/shared/{bank.Dh_H_5rC.d.mts → bank.BJvgLwyZ.d.mts} +2 -0
  22. package/dist/shared/{bank.Dh_H_5rC.d.ts → bank.BJvgLwyZ.d.ts} +2 -0
  23. package/dist/shared/bank.BUSlmr6r.mjs +13 -0
  24. package/dist/shared/{bank.CMbfx0u7.cjs → bank.BeIpkWR-.cjs} +3 -14
  25. package/dist/shared/bank.Bg3Pdwm4.cjs +44 -0
  26. package/dist/shared/bank.CDoYUKBx.d.cts +748 -0
  27. package/dist/shared/bank.CDoYUKBx.d.mts +748 -0
  28. package/dist/shared/bank.CDoYUKBx.d.ts +748 -0
  29. package/dist/shared/{bank.CNEv3Rac.cjs → bank.CfSZTfWS.cjs} +634 -179
  30. package/dist/shared/{bank.XJJV8p4b.d.cts → bank.CsJuzqZH.d.cts} +2401 -2117
  31. package/dist/shared/{bank.XJJV8p4b.d.mts → bank.CsJuzqZH.d.mts} +2401 -2117
  32. package/dist/shared/{bank.XJJV8p4b.d.ts → bank.CsJuzqZH.d.ts} +2401 -2117
  33. package/dist/shared/bank.DEvSNsEs.cjs +114 -0
  34. package/dist/shared/{bank.DgGcjhmM.mjs → bank.DinCwx0P.mjs} +627 -179
  35. package/dist/shared/bank.Dpx6PvkA.mjs +33 -0
  36. package/dist/shared/bank.c38V_FCq.cjs +15 -0
  37. package/dist/shared/{bank.BqGzJNC6.mjs → bank.qc8ALZwm.mjs} +4 -14
  38. package/dist/types.cjs +51 -33
  39. package/dist/types.d.cts +164 -39
  40. package/dist/types.d.mts +164 -39
  41. package/dist/types.d.ts +164 -39
  42. package/dist/types.mjs +4 -3
  43. package/package.json +7 -10
  44. package/dist/shared/bank.CXpc8168.cjs +0 -212
  45. package/dist/shared/bank.DSsVeR3F.mjs +0 -202
@@ -1,212 +0,0 @@
1
- 'use strict';
2
-
3
- const drizzle = require('./bank.CNEv3Rac.cjs');
4
- const backendSdk = require('@develit-io/backend-sdk');
5
- const drizzleOrm = require('drizzle-orm');
6
- require('date-fns');
7
- require('jose');
8
- require('@develit-io/general-codes');
9
- require('./bank.CMbfx0u7.cjs');
10
- const node_crypto = require('node:crypto');
11
-
12
- const createPaymentCommand = (db, { payment }) => {
13
- return {
14
- command: db.insert(drizzle.tables.payment).values({
15
- ...payment,
16
- creditorIban: payment.creditor.iban,
17
- debtorIban: payment.debtor.iban
18
- }).returning()
19
- };
20
- };
21
-
22
- const upsertBatchCommand = (db, { batch }) => {
23
- const id = batch.id || backendSdk.uuidv4();
24
- const command = db.insert(drizzle.tables.batch).values({
25
- ...batch,
26
- id
27
- }).onConflictDoUpdate({
28
- target: drizzle.tables.batch.id,
29
- set: {
30
- ...batch
31
- }
32
- }).returning();
33
- return {
34
- id,
35
- command
36
- };
37
- };
38
-
39
- const getAccountByIdQuery = async (db, { accountId }) => {
40
- return await db.select().from(drizzle.tables.account).where(drizzleOrm.eq(drizzle.tables.account.id, accountId)).get();
41
- };
42
-
43
- const getBatchByIdQuery = async (db, { batchId }) => {
44
- return await db.select().from(drizzle.tables.batch).where(drizzleOrm.eq(drizzle.tables.batch.id, batchId)).get();
45
- };
46
-
47
- const getCredentialsByAccountId = async (db, encryptionKey, { accountId }) => {
48
- const cred = await db.select().from(drizzle.tables.accountCredentials).where(drizzleOrm.eq(drizzle.tables.accountCredentials.accountId, accountId)).get();
49
- return cred ? {
50
- ...cred,
51
- value: await decrypt(cred.value, encryptionKey)
52
- } : void 0;
53
- };
54
-
55
- class CreditasConnector extends drizzle.FinbricksConnector {
56
- constructor(config) {
57
- super("CREDITAS", config);
58
- }
59
- }
60
-
61
- class FioConnector extends drizzle.FinbricksConnector {
62
- constructor(config) {
63
- super("FIO", config);
64
- }
65
- }
66
-
67
- class MonetaConnector extends drizzle.FinbricksConnector {
68
- constructor(config) {
69
- super("MONETA", config);
70
- }
71
- }
72
-
73
- class AirBankConnector extends drizzle.FinbricksConnector {
74
- constructor(config) {
75
- super("AIRBANK", config);
76
- }
77
- }
78
-
79
- class CSASConnector extends drizzle.FinbricksConnector {
80
- constructor(config) {
81
- super("CSAS", config);
82
- }
83
- }
84
-
85
- const initiateConnector = ({
86
- bank,
87
- env,
88
- connectedAccounts
89
- }) => {
90
- switch (bank) {
91
- case "ERSTE":
92
- return new drizzle.ErsteConnector({
93
- API_KEY: env.ERSTE_API_KEY,
94
- CLIENT_ID: env.ERSTE_CLIENT_ID,
95
- CLIENT_SECRET: env.ERSTE_CLIENT_SECRET,
96
- REDIRECT_URI: env.REDIRECT_URI,
97
- AUTH_URI: env.ERSTE_AUTH_URI,
98
- PAYMENTS_URI: env.ERSTE_PAYMENTS_URI,
99
- ACCOUNTS_URI: env.ERSTE_ACCOUNTS_URI,
100
- connectedAccounts
101
- });
102
- case "CREDITAS":
103
- return new CreditasConnector({
104
- BASE_URI: env.FINBRICKS_BASE_URI,
105
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
106
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
107
- REDIRECT_URI: env.REDIRECT_URI,
108
- connectedAccounts
109
- });
110
- case "MOCK_COBS":
111
- return new drizzle.MockCobsConnector({
112
- BASE_URI: env.FINBRICKS_BASE_URI,
113
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
114
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
115
- REDIRECT_URI: env.REDIRECT_URI,
116
- connectedAccounts
117
- });
118
- case "FIO":
119
- return new FioConnector({
120
- BASE_URI: env.FINBRICKS_BASE_URI,
121
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
122
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
123
- REDIRECT_URI: env.REDIRECT_URI,
124
- connectedAccounts
125
- });
126
- case "MONETA":
127
- return new MonetaConnector({
128
- BASE_URI: env.FINBRICKS_BASE_URI,
129
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
130
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
131
- REDIRECT_URI: env.REDIRECT_URI,
132
- connectedAccounts
133
- });
134
- case "AIRBANK":
135
- return new AirBankConnector({
136
- BASE_URI: env.FINBRICKS_BASE_URI,
137
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
138
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
139
- REDIRECT_URI: env.REDIRECT_URI,
140
- connectedAccounts
141
- });
142
- case "CSAS":
143
- return new CSASConnector({
144
- BASE_URI: env.FINBRICKS_BASE_URI,
145
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
146
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
147
- REDIRECT_URI: env.REDIRECT_URI,
148
- connectedAccounts
149
- });
150
- default:
151
- return new drizzle.MockConnector();
152
- }
153
- };
154
-
155
- async function importAesKey(base64Key) {
156
- const raw = Uint8Array.from(atob(base64Key), (c) => c.charCodeAt(0));
157
- return await crypto.subtle.importKey("raw", raw, { name: "AES-GCM" }, false, [
158
- "encrypt",
159
- "decrypt"
160
- ]);
161
- }
162
- async function encrypt(value, key) {
163
- const encoder = new TextEncoder();
164
- const iv = crypto.getRandomValues(new Uint8Array(12));
165
- const ciphertext = await crypto.subtle.encrypt(
166
- { name: "AES-GCM", iv },
167
- key,
168
- encoder.encode(value)
169
- );
170
- const combined = new Uint8Array(iv.length + ciphertext.byteLength);
171
- combined.set(iv, 0);
172
- combined.set(new Uint8Array(ciphertext), iv.length);
173
- return btoa(String.fromCharCode(...combined));
174
- }
175
- async function decrypt(base64, key) {
176
- const raw = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
177
- const iv = raw.slice(0, 12);
178
- const ciphertext = raw.slice(12);
179
- const decrypted = await crypto.subtle.decrypt(
180
- { name: "AES-GCM", iv },
181
- key,
182
- ciphertext
183
- );
184
- return new TextDecoder().decode(decrypted);
185
- }
186
- function canonicalize(value) {
187
- if (value === null || typeof value !== "object") return value;
188
- if (Array.isArray(value)) {
189
- return value.map(canonicalize);
190
- }
191
- const obj = value;
192
- const sorted = Object.keys(obj).sort().reduce((acc, key) => {
193
- acc[key] = canonicalize(obj[key]);
194
- return acc;
195
- }, {});
196
- return sorted;
197
- }
198
- function checksum(input) {
199
- const canonical = canonicalize(input);
200
- const json = JSON.stringify(canonical);
201
- return node_crypto.createHash("sha256").update(json).digest("hex");
202
- }
203
-
204
- exports.checksum = checksum;
205
- exports.createPaymentCommand = createPaymentCommand;
206
- exports.encrypt = encrypt;
207
- exports.getAccountByIdQuery = getAccountByIdQuery;
208
- exports.getBatchByIdQuery = getBatchByIdQuery;
209
- exports.getCredentialsByAccountId = getCredentialsByAccountId;
210
- exports.importAesKey = importAesKey;
211
- exports.initiateConnector = initiateConnector;
212
- exports.upsertBatchCommand = upsertBatchCommand;
@@ -1,202 +0,0 @@
1
- import { t as tables, F as FinbricksConnector, M as MockConnector, a as MockCobsConnector, E as ErsteConnector } from './bank.DgGcjhmM.mjs';
2
- import { uuidv4 } from '@develit-io/backend-sdk';
3
- import { eq } from 'drizzle-orm';
4
- import 'date-fns';
5
- import 'jose';
6
- import '@develit-io/general-codes';
7
- import './bank.BqGzJNC6.mjs';
8
- import { createHash } from 'node:crypto';
9
-
10
- const createPaymentCommand = (db, { payment }) => {
11
- return {
12
- command: db.insert(tables.payment).values({
13
- ...payment,
14
- creditorIban: payment.creditor.iban,
15
- debtorIban: payment.debtor.iban
16
- }).returning()
17
- };
18
- };
19
-
20
- const upsertBatchCommand = (db, { batch }) => {
21
- const id = batch.id || uuidv4();
22
- const command = db.insert(tables.batch).values({
23
- ...batch,
24
- id
25
- }).onConflictDoUpdate({
26
- target: tables.batch.id,
27
- set: {
28
- ...batch
29
- }
30
- }).returning();
31
- return {
32
- id,
33
- command
34
- };
35
- };
36
-
37
- const getAccountByIdQuery = async (db, { accountId }) => {
38
- return await db.select().from(tables.account).where(eq(tables.account.id, accountId)).get();
39
- };
40
-
41
- const getBatchByIdQuery = async (db, { batchId }) => {
42
- return await db.select().from(tables.batch).where(eq(tables.batch.id, batchId)).get();
43
- };
44
-
45
- const getCredentialsByAccountId = async (db, encryptionKey, { accountId }) => {
46
- const cred = await db.select().from(tables.accountCredentials).where(eq(tables.accountCredentials.accountId, accountId)).get();
47
- return cred ? {
48
- ...cred,
49
- value: await decrypt(cred.value, encryptionKey)
50
- } : void 0;
51
- };
52
-
53
- class CreditasConnector extends FinbricksConnector {
54
- constructor(config) {
55
- super("CREDITAS", config);
56
- }
57
- }
58
-
59
- class FioConnector extends FinbricksConnector {
60
- constructor(config) {
61
- super("FIO", config);
62
- }
63
- }
64
-
65
- class MonetaConnector extends FinbricksConnector {
66
- constructor(config) {
67
- super("MONETA", config);
68
- }
69
- }
70
-
71
- class AirBankConnector extends FinbricksConnector {
72
- constructor(config) {
73
- super("AIRBANK", config);
74
- }
75
- }
76
-
77
- class CSASConnector extends FinbricksConnector {
78
- constructor(config) {
79
- super("CSAS", config);
80
- }
81
- }
82
-
83
- const initiateConnector = ({
84
- bank,
85
- env,
86
- connectedAccounts
87
- }) => {
88
- switch (bank) {
89
- case "ERSTE":
90
- return new ErsteConnector({
91
- API_KEY: env.ERSTE_API_KEY,
92
- CLIENT_ID: env.ERSTE_CLIENT_ID,
93
- CLIENT_SECRET: env.ERSTE_CLIENT_SECRET,
94
- REDIRECT_URI: env.REDIRECT_URI,
95
- AUTH_URI: env.ERSTE_AUTH_URI,
96
- PAYMENTS_URI: env.ERSTE_PAYMENTS_URI,
97
- ACCOUNTS_URI: env.ERSTE_ACCOUNTS_URI,
98
- connectedAccounts
99
- });
100
- case "CREDITAS":
101
- return new CreditasConnector({
102
- BASE_URI: env.FINBRICKS_BASE_URI,
103
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
104
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
105
- REDIRECT_URI: env.REDIRECT_URI,
106
- connectedAccounts
107
- });
108
- case "MOCK_COBS":
109
- return new MockCobsConnector({
110
- BASE_URI: env.FINBRICKS_BASE_URI,
111
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
112
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
113
- REDIRECT_URI: env.REDIRECT_URI,
114
- connectedAccounts
115
- });
116
- case "FIO":
117
- return new FioConnector({
118
- BASE_URI: env.FINBRICKS_BASE_URI,
119
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
120
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
121
- REDIRECT_URI: env.REDIRECT_URI,
122
- connectedAccounts
123
- });
124
- case "MONETA":
125
- return new MonetaConnector({
126
- BASE_URI: env.FINBRICKS_BASE_URI,
127
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
128
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
129
- REDIRECT_URI: env.REDIRECT_URI,
130
- connectedAccounts
131
- });
132
- case "AIRBANK":
133
- return new AirBankConnector({
134
- BASE_URI: env.FINBRICKS_BASE_URI,
135
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
136
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
137
- REDIRECT_URI: env.REDIRECT_URI,
138
- connectedAccounts
139
- });
140
- case "CSAS":
141
- return new CSASConnector({
142
- BASE_URI: env.FINBRICKS_BASE_URI,
143
- MERCHANT_ID: env.FINBRICKS_MERCHANT_ID,
144
- PRIVATE_KEY_PEM: env.FINBRICKS_PRIVATE_KEY_PEM,
145
- REDIRECT_URI: env.REDIRECT_URI,
146
- connectedAccounts
147
- });
148
- default:
149
- return new MockConnector();
150
- }
151
- };
152
-
153
- async function importAesKey(base64Key) {
154
- const raw = Uint8Array.from(atob(base64Key), (c) => c.charCodeAt(0));
155
- return await crypto.subtle.importKey("raw", raw, { name: "AES-GCM" }, false, [
156
- "encrypt",
157
- "decrypt"
158
- ]);
159
- }
160
- async function encrypt(value, key) {
161
- const encoder = new TextEncoder();
162
- const iv = crypto.getRandomValues(new Uint8Array(12));
163
- const ciphertext = await crypto.subtle.encrypt(
164
- { name: "AES-GCM", iv },
165
- key,
166
- encoder.encode(value)
167
- );
168
- const combined = new Uint8Array(iv.length + ciphertext.byteLength);
169
- combined.set(iv, 0);
170
- combined.set(new Uint8Array(ciphertext), iv.length);
171
- return btoa(String.fromCharCode(...combined));
172
- }
173
- async function decrypt(base64, key) {
174
- const raw = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
175
- const iv = raw.slice(0, 12);
176
- const ciphertext = raw.slice(12);
177
- const decrypted = await crypto.subtle.decrypt(
178
- { name: "AES-GCM", iv },
179
- key,
180
- ciphertext
181
- );
182
- return new TextDecoder().decode(decrypted);
183
- }
184
- function canonicalize(value) {
185
- if (value === null || typeof value !== "object") return value;
186
- if (Array.isArray(value)) {
187
- return value.map(canonicalize);
188
- }
189
- const obj = value;
190
- const sorted = Object.keys(obj).sort().reduce((acc, key) => {
191
- acc[key] = canonicalize(obj[key]);
192
- return acc;
193
- }, {});
194
- return sorted;
195
- }
196
- function checksum(input) {
197
- const canonical = canonicalize(input);
198
- const json = JSON.stringify(canonical);
199
- return createHash("sha256").update(json).digest("hex");
200
- }
201
-
202
- export { getCredentialsByAccountId as a, initiateConnector as b, createPaymentCommand as c, getBatchByIdQuery as d, checksum as e, encrypt as f, getAccountByIdQuery as g, importAesKey as i, upsertBatchCommand as u };