lib-fints 1.3.0 → 1.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.
- package/README.md +43 -40
- package/dist/camtParser.js +412 -0
- package/dist/client.js +58 -80
- package/dist/dataGroups/SepaAccount.js +17 -0
- package/dist/dataGroups/SepaAccountParameters.js +16 -0
- package/dist/dialog.js +126 -108
- package/dist/httpClient.js +17 -3
- package/dist/index.js +1 -0
- package/dist/interactions/balanceInteraction.js +1 -1
- package/dist/interactions/customerInteraction.js +28 -3
- package/dist/interactions/endDialogInteraction.js +17 -0
- package/dist/interactions/initDialogInteraction.js +18 -8
- package/dist/interactions/sepaAccountInteraction.js +48 -0
- package/dist/interactions/statementInteractionCAMT.js +54 -0
- package/dist/interactions/{statementInteraction.js → statementInteractionMT940.js} +11 -8
- package/dist/interactions/tanMediaInteraction.js +4 -0
- package/dist/segments/HICAZ.js +22 -0
- package/dist/segments/HICAZS.js +19 -0
- package/dist/segments/HISPA.js +14 -0
- package/dist/segments/HISPAS.js +14 -0
- package/dist/segments/HKCAZ.js +28 -0
- package/dist/segments/HKSPA.js +21 -0
- package/dist/segments/registry.js +16 -2
- package/dist/statement.js +1 -0
- package/dist/tests/HICAZS.test.js +18 -0
- package/dist/tests/HKCAZ.test.js +47 -0
- package/dist/tests/camtParser.test.js +673 -0
- package/dist/tests/client.test.js +21 -16
- package/dist/tests/dialog.test.js +234 -0
- package/dist/types/bankAccount.d.ts +2 -3
- package/dist/types/bankAccount.d.ts.map +1 -1
- package/dist/types/camtParser.d.ts +31 -0
- package/dist/types/camtParser.d.ts.map +1 -0
- package/dist/types/client.d.ts +4 -4
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/config.d.ts +2 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/dataGroups/SepaAccount.d.ts +11 -0
- package/dist/types/dataGroups/SepaAccount.d.ts.map +1 -0
- package/dist/types/dataGroups/SepaAccountParameters.d.ts +13 -0
- package/dist/types/dataGroups/SepaAccountParameters.d.ts.map +1 -0
- package/dist/types/dialog.d.ts +12 -8
- package/dist/types/dialog.d.ts.map +1 -1
- package/dist/types/httpClient.d.ts +2 -1
- package/dist/types/httpClient.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interactions/customerInteraction.d.ts +13 -3
- package/dist/types/interactions/customerInteraction.d.ts.map +1 -1
- package/dist/types/interactions/endDialogInteraction.d.ts +13 -0
- package/dist/types/interactions/endDialogInteraction.d.ts.map +1 -0
- package/dist/types/interactions/initDialogInteraction.d.ts +2 -3
- package/dist/types/interactions/initDialogInteraction.d.ts.map +1 -1
- package/dist/types/interactions/sepaAccountInteraction.d.ts +17 -0
- package/dist/types/interactions/sepaAccountInteraction.d.ts.map +1 -0
- package/dist/types/interactions/{statementInteraction.d.ts → statementInteractionCAMT.d.ts} +4 -7
- package/dist/types/interactions/statementInteractionCAMT.d.ts.map +1 -0
- package/dist/types/interactions/statementInteractionMT940.d.ts +13 -0
- package/dist/types/interactions/statementInteractionMT940.d.ts.map +1 -0
- package/dist/types/interactions/tanMediaInteraction.d.ts.map +1 -1
- package/dist/types/mt940parser.d.ts +2 -38
- package/dist/types/mt940parser.d.ts.map +1 -1
- package/dist/types/segments/HICAZ.d.ts +22 -0
- package/dist/types/segments/HICAZ.d.ts.map +1 -0
- package/dist/types/segments/HICAZS.d.ts +17 -0
- package/dist/types/segments/HICAZS.d.ts.map +1 -0
- package/dist/types/segments/HISPA.d.ts +17 -0
- package/dist/types/segments/HISPA.d.ts.map +1 -0
- package/dist/types/segments/HISPAS.d.ts +14 -0
- package/dist/types/segments/HISPAS.d.ts.map +1 -0
- package/dist/types/segments/HKCAZ.d.ts +27 -0
- package/dist/types/segments/HKCAZ.d.ts.map +1 -0
- package/dist/types/segments/HKKAZ.d.ts +1 -1
- package/dist/types/segments/HKSAL.d.ts +1 -1
- package/dist/types/segments/HKSPA.d.ts +21 -0
- package/dist/types/segments/HKSPA.d.ts.map +1 -0
- package/dist/types/segments/HKTAN.d.ts +1 -1
- package/dist/types/segments/registry.d.ts.map +1 -1
- package/dist/types/statement.d.ts +39 -0
- package/dist/types/statement.d.ts.map +1 -0
- package/dist/types/tests/HICAZS.test.d.ts +2 -0
- package/dist/types/tests/HICAZS.test.d.ts.map +1 -0
- package/dist/types/tests/HKCAZ.test.d.ts +2 -0
- package/dist/types/tests/HKCAZ.test.d.ts.map +1 -0
- package/dist/types/tests/camtParser.test.d.ts +2 -0
- package/dist/types/tests/camtParser.test.d.ts.map +1 -0
- package/dist/types/tests/dialog.test.d.ts +2 -0
- package/dist/types/tests/dialog.test.d.ts.map +1 -0
- package/package.json +7 -4
- package/dist/types/interactions/statementInteraction.d.ts.map +0 -1
|
@@ -3,31 +3,36 @@ import { FinTSClient } from '../client.js';
|
|
|
3
3
|
import { Dialog } from '../dialog.js';
|
|
4
4
|
import { FinTSConfig } from '../config.js';
|
|
5
5
|
describe('FinTSClient', () => {
|
|
6
|
-
let
|
|
7
|
-
let
|
|
6
|
+
let dialogStartMock;
|
|
7
|
+
let dialogContinueMock;
|
|
8
8
|
beforeEach(() => {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
dialogStartMock = vi.spyOn(Dialog.prototype, 'start');
|
|
10
|
+
dialogContinueMock = vi.spyOn(Dialog.prototype, 'continue');
|
|
11
11
|
});
|
|
12
12
|
afterEach(() => {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
dialogStartMock.mockRestore();
|
|
14
|
+
dialogContinueMock.mockRestore();
|
|
15
15
|
});
|
|
16
16
|
it('sends a message', async () => {
|
|
17
17
|
const client = new FinTSClient(FinTSConfig.forFirstTimeUse('product', '1.0', 'http://localhost', '12030000', 'user'));
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
dialogStartMock.mockResolvedValueOnce(new Map([
|
|
19
|
+
[
|
|
20
|
+
'HKIDN',
|
|
21
|
+
{
|
|
22
|
+
dialogId: 'DIALOG1',
|
|
23
|
+
success: true,
|
|
24
|
+
requiresTan: false,
|
|
25
|
+
bankingInformationUpdated: true,
|
|
26
|
+
bankingInformation: { systemId: 'SYSTEM01', bankMessages: [] },
|
|
27
|
+
bankAnswers: [{ code: 20, text: 'Auftrag ausgeführt' }],
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
]));
|
|
26
31
|
const response = await client.synchronize();
|
|
27
32
|
expect(response.success).toBe(true);
|
|
28
33
|
expect(response.requiresTan).toBe(false);
|
|
29
34
|
expect(response.bankingInformation).toBeDefined();
|
|
30
|
-
expect(
|
|
31
|
-
expect(
|
|
35
|
+
expect(dialogStartMock).toHaveBeenCalledOnce();
|
|
36
|
+
expect(dialogContinueMock).toHaveBeenCalledTimes(0);
|
|
32
37
|
});
|
|
33
38
|
});
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { Dialog } from '../dialog.js';
|
|
3
|
+
import { FinTSConfig } from '../config.js';
|
|
4
|
+
import { Message } from '../message.js';
|
|
5
|
+
import { InitDialogInteraction } from '../interactions/initDialogInteraction.js';
|
|
6
|
+
import { Language, TanMediaRequirement } from '../codes.js';
|
|
7
|
+
import { SepaAccountInteraction } from '../interactions/sepaAccountInteraction.js';
|
|
8
|
+
import { registerSegments } from '../segments/registry.js';
|
|
9
|
+
// Mock HttpClient to prevent real HTTP calls
|
|
10
|
+
vi.mock('../httpClient.js', () => ({
|
|
11
|
+
HttpClient: vi.fn().mockImplementation(() => ({
|
|
12
|
+
sendMessage: vi.fn(),
|
|
13
|
+
})),
|
|
14
|
+
}));
|
|
15
|
+
describe('Dialog', () => {
|
|
16
|
+
let config;
|
|
17
|
+
let dialog;
|
|
18
|
+
let httpClientSendMessageMock;
|
|
19
|
+
registerSegments();
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
const bankingInformation = {
|
|
22
|
+
systemId: 'MOCK_SYSTEM_ID',
|
|
23
|
+
bankMessages: [],
|
|
24
|
+
bpd: {
|
|
25
|
+
version: 1,
|
|
26
|
+
bankId: '12030000',
|
|
27
|
+
bankName: 'Mock Bank',
|
|
28
|
+
countryCode: 280,
|
|
29
|
+
url: 'http://mock.bank.url',
|
|
30
|
+
allowedTransactions: [
|
|
31
|
+
{
|
|
32
|
+
transId: 'HKSPA',
|
|
33
|
+
tanRequired: false,
|
|
34
|
+
versions: [1, 2, 3],
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
supportedTanMethods: [
|
|
38
|
+
{
|
|
39
|
+
id: 940,
|
|
40
|
+
tanProcess: 1,
|
|
41
|
+
name: 'chipTAN',
|
|
42
|
+
version: 6,
|
|
43
|
+
isDecoupled: false,
|
|
44
|
+
activeTanMediaCount: 1,
|
|
45
|
+
activeTanMedia: ['TEST_MEDIA'],
|
|
46
|
+
tanMediaRequirement: TanMediaRequirement.Optional,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
availableTanMethodIds: [940],
|
|
50
|
+
supportedLanguages: [Language.German],
|
|
51
|
+
maxTransactionsPerMessage: 1,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
config = FinTSConfig.fromBankingInformation('TestProduct', '1.0', bankingInformation, 'testuser', '12345', 940, // tanMethodId
|
|
55
|
+
'TEST_MEDIA' // tanMediaName
|
|
56
|
+
);
|
|
57
|
+
// Create dialog instance
|
|
58
|
+
dialog = new Dialog(config);
|
|
59
|
+
vi.spyOn(dialog.currentInteraction, 'handleClientResponse').mockReturnValue({
|
|
60
|
+
dialogId: 'MOCK_DIALOG_123',
|
|
61
|
+
success: true,
|
|
62
|
+
requiresTan: false,
|
|
63
|
+
bankAnswers: [{ code: 20, text: 'Success' }],
|
|
64
|
+
});
|
|
65
|
+
vi.spyOn(dialog.interactions[dialog.interactions.length - 1], 'handleClientResponse').mockReturnValue({
|
|
66
|
+
dialogId: 'MOCK_DIALOG_123',
|
|
67
|
+
success: true,
|
|
68
|
+
requiresTan: false,
|
|
69
|
+
bankAnswers: [{ code: 100, text: 'Dialog ended' }],
|
|
70
|
+
});
|
|
71
|
+
// Mock the HttpClient.sendMessage method
|
|
72
|
+
httpClientSendMessageMock = vi.mocked(dialog.httpClient.sendMessage);
|
|
73
|
+
const responseMessage = new Message([]);
|
|
74
|
+
httpClientSendMessageMock.mockResolvedValue(responseMessage);
|
|
75
|
+
});
|
|
76
|
+
afterEach(() => {
|
|
77
|
+
vi.clearAllMocks();
|
|
78
|
+
});
|
|
79
|
+
describe('constructor', () => {
|
|
80
|
+
it('creates a new dialog with provided config', () => {
|
|
81
|
+
expect(dialog.config).toBe(config);
|
|
82
|
+
expect(dialog.dialogId).toBe('0');
|
|
83
|
+
expect(dialog.lastMessageNumber).toBe(0);
|
|
84
|
+
expect(dialog.interactions).toHaveLength(2);
|
|
85
|
+
expect(dialog.interactions[0]).toBeInstanceOf(InitDialogInteraction);
|
|
86
|
+
expect(dialog.currentInteractionIndex).toBe(0);
|
|
87
|
+
expect(dialog.isInitialized).toBe(false);
|
|
88
|
+
expect(dialog.hasEnded).toBe(false);
|
|
89
|
+
expect(dialog.httpClient.sendMessage).toBeDefined();
|
|
90
|
+
});
|
|
91
|
+
it('creates dialog with syncSystemId option', () => {
|
|
92
|
+
const syncDialog = new Dialog(config, true);
|
|
93
|
+
const initDialogInteraction = syncDialog.interactions[0];
|
|
94
|
+
expect(initDialogInteraction).toBeInstanceOf(InitDialogInteraction);
|
|
95
|
+
expect(initDialogInteraction.syncSystemId).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
it('throws error when no config is provided', () => {
|
|
98
|
+
expect(() => new Dialog(null)).toThrow('configuration must be provided');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('currentInteraction getter', () => {
|
|
102
|
+
it('returns the current interaction', () => {
|
|
103
|
+
expect(dialog.currentInteraction).toBeInstanceOf(InitDialogInteraction);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe('start()', () => {
|
|
107
|
+
it('successfully starts and ends a dialog', async () => {
|
|
108
|
+
const sepaInteraction = new SepaAccountInteraction();
|
|
109
|
+
vi.spyOn(sepaInteraction, 'handleClientResponse').mockReturnValue({
|
|
110
|
+
dialogId: 'MOCK_DIALOG_123',
|
|
111
|
+
success: true,
|
|
112
|
+
requiresTan: false,
|
|
113
|
+
bankAnswers: [{ code: 20, text: 'Success' }],
|
|
114
|
+
});
|
|
115
|
+
dialog.addCustomerInteraction(sepaInteraction);
|
|
116
|
+
const responses = await dialog.start();
|
|
117
|
+
expect(dialog.dialogId).toBe('MOCK_DIALOG_123');
|
|
118
|
+
expect(httpClientSendMessageMock).toHaveBeenCalledTimes(3);
|
|
119
|
+
expect(responses).toBeInstanceOf(Map);
|
|
120
|
+
expect(responses.size).toBe(3);
|
|
121
|
+
expect(dialog.currentInteraction).toBeUndefined();
|
|
122
|
+
expect(dialog.hasEnded).toBe(true);
|
|
123
|
+
});
|
|
124
|
+
it('throws error when dialog is already initialized', async () => {
|
|
125
|
+
dialog.isInitialized = true;
|
|
126
|
+
await expect(dialog.start()).rejects.toThrow('dialog has already been initialized');
|
|
127
|
+
});
|
|
128
|
+
it('throws error when dialog has ended', async () => {
|
|
129
|
+
dialog.hasEnded = true;
|
|
130
|
+
await expect(dialog.start()).rejects.toThrow('cannot start a dialog that has already ended');
|
|
131
|
+
});
|
|
132
|
+
it('throws error when lastMessageNumber > 0', async () => {
|
|
133
|
+
dialog.lastMessageNumber = 1;
|
|
134
|
+
await expect(dialog.start()).rejects.toThrow('dialog start can only be called on a new dialog');
|
|
135
|
+
});
|
|
136
|
+
it('handles TAN requirement correctly', async () => {
|
|
137
|
+
vi.spyOn(dialog.currentInteraction, 'handleClientResponse').mockReturnValue({
|
|
138
|
+
dialogId: 'MOCK_DIALOG_123',
|
|
139
|
+
success: true,
|
|
140
|
+
requiresTan: true,
|
|
141
|
+
tanReference: 'TAN_REF_123',
|
|
142
|
+
bankAnswers: [{ code: 3955, text: 'TAN required' }],
|
|
143
|
+
});
|
|
144
|
+
const responses = await dialog.start();
|
|
145
|
+
expect(dialog.currentInteraction).toBeInstanceOf(InitDialogInteraction);
|
|
146
|
+
expect(dialog.isInitialized).toBe(false);
|
|
147
|
+
expect(dialog.hasEnded).toBe(false);
|
|
148
|
+
const response = responses.get(dialog.currentInteraction.segId);
|
|
149
|
+
expect(response).toBeDefined();
|
|
150
|
+
expect(response.requiresTan).toBe(true);
|
|
151
|
+
expect(response.tanReference).toBe('TAN_REF_123');
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
describe('continue()', () => {
|
|
155
|
+
beforeEach(async () => {
|
|
156
|
+
vi.spyOn(dialog.currentInteraction, 'handleClientResponse').mockReturnValue({
|
|
157
|
+
dialogId: 'MOCK_DIALOG_123',
|
|
158
|
+
success: true,
|
|
159
|
+
requiresTan: true,
|
|
160
|
+
tanReference: 'TAN_REF_123',
|
|
161
|
+
bankAnswers: [{ code: 3955, text: 'TAN required' }],
|
|
162
|
+
});
|
|
163
|
+
await dialog.start();
|
|
164
|
+
vi.spyOn(dialog.currentInteraction, 'handleClientResponse').mockReturnValue({
|
|
165
|
+
dialogId: 'MOCK_DIALOG_123',
|
|
166
|
+
success: true,
|
|
167
|
+
requiresTan: false,
|
|
168
|
+
bankAnswers: [{ code: 20, text: 'Dialog initialized' }],
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
it('successfully continues with TAN', async () => {
|
|
172
|
+
const responses = await dialog.continue('TAN_REF_123', '123456');
|
|
173
|
+
expect(responses).toBeInstanceOf(Map);
|
|
174
|
+
expect(dialog.dialogId).toBe('MOCK_DIALOG_123');
|
|
175
|
+
expect(httpClientSendMessageMock).toHaveBeenCalledTimes(3);
|
|
176
|
+
expect(responses).toBeInstanceOf(Map);
|
|
177
|
+
expect(responses.size).toBe(2);
|
|
178
|
+
expect(dialog.currentInteraction).toBeUndefined();
|
|
179
|
+
expect(dialog.hasEnded).toBe(true);
|
|
180
|
+
});
|
|
181
|
+
it('successfully continues decoupled TAN method without TAN', async () => {
|
|
182
|
+
dialog.config.bankingInformation.bpd.supportedTanMethods[0].isDecoupled = true;
|
|
183
|
+
const responses = await dialog.continue('TAN_REF_123');
|
|
184
|
+
expect(responses).toBeInstanceOf(Map);
|
|
185
|
+
expect(responses.size).toBe(2);
|
|
186
|
+
expect(dialog.currentInteraction).toBeUndefined();
|
|
187
|
+
expect(dialog.hasEnded).toBe(true);
|
|
188
|
+
});
|
|
189
|
+
it('throws error when tanOrderReference is missing', async () => {
|
|
190
|
+
await expect(dialog.continue('')).rejects.toThrow('tanOrderReference must be provided to continue a customer order with a TAN');
|
|
191
|
+
});
|
|
192
|
+
it('throws error when TAN is missing for non-decoupled method', async () => {
|
|
193
|
+
// The default config already has a non-decoupled TAN method
|
|
194
|
+
await expect(dialog.continue('TAN_REF_123')).rejects.toThrow('TAN must be provided for non-decoupled TAN methods');
|
|
195
|
+
});
|
|
196
|
+
it('throws error when dialog has ended', async () => {
|
|
197
|
+
dialog.hasEnded = true;
|
|
198
|
+
await expect(dialog.continue('TAN_REF_123', '123456')).rejects.toThrow('cannot continue a customer order when dialog has already ended');
|
|
199
|
+
});
|
|
200
|
+
it('throws error when no current interaction', async () => {
|
|
201
|
+
dialog.currentInteractionIndex = dialog.interactions.length;
|
|
202
|
+
await expect(dialog.continue('TAN_REF_123', '123456')).rejects.toThrow('there is no running customer interaction in this dialog to continue');
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
describe('addCustomerInteraction()', () => {
|
|
206
|
+
let sepaAccountInteraction;
|
|
207
|
+
beforeEach(() => {
|
|
208
|
+
sepaAccountInteraction = new SepaAccountInteraction();
|
|
209
|
+
});
|
|
210
|
+
it('adds interaction to the end but before dialog end interaction by default', () => {
|
|
211
|
+
const initialLength = dialog.interactions.length;
|
|
212
|
+
dialog.addCustomerInteraction(sepaAccountInteraction);
|
|
213
|
+
expect(dialog.interactions).toHaveLength(initialLength + 1);
|
|
214
|
+
expect(dialog.interactions[dialog.interactions.length - 2]).toBe(sepaAccountInteraction);
|
|
215
|
+
expect(sepaAccountInteraction.dialog).toBe(dialog);
|
|
216
|
+
});
|
|
217
|
+
it('adds interaction after current when afterCurrent is true', () => {
|
|
218
|
+
const initialLength = dialog.interactions.length;
|
|
219
|
+
const currentIndex = dialog.currentInteractionIndex;
|
|
220
|
+
dialog.addCustomerInteraction(sepaAccountInteraction, true);
|
|
221
|
+
expect(dialog.interactions).toHaveLength(initialLength + 1);
|
|
222
|
+
expect(dialog.interactions[currentIndex + 1]).toBe(sepaAccountInteraction);
|
|
223
|
+
});
|
|
224
|
+
it('throws error when dialog has ended', () => {
|
|
225
|
+
dialog.hasEnded = true;
|
|
226
|
+
expect(() => dialog.addCustomerInteraction(sepaAccountInteraction)).toThrow('cannot queue another customer interaction when dialog has already ended');
|
|
227
|
+
});
|
|
228
|
+
it('throws error for unsupported transaction', () => {
|
|
229
|
+
// Mock unsupported transaction
|
|
230
|
+
sepaAccountInteraction.segId = 'UNSUPPORTED';
|
|
231
|
+
expect(() => dialog.addCustomerInteraction(sepaAccountInteraction)).toThrow('customer order transaction UNSUPPORTED is not supported according to the BPD');
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SepaAccount } from './dataGroups/SepaAccount.js';
|
|
2
2
|
import { AccountLimit, AllowedTransactions } from './segments/HIUPD.js';
|
|
3
3
|
export declare enum AccountType {
|
|
4
4
|
CheckingAccount = "CheckingAccount",
|
|
@@ -12,8 +12,7 @@ export declare enum AccountType {
|
|
|
12
12
|
InsurancePolicy = "InsurancePolicy",
|
|
13
13
|
Miscellaneous = "Miscellaneous"
|
|
14
14
|
}
|
|
15
|
-
export type BankAccount =
|
|
16
|
-
iban?: string;
|
|
15
|
+
export type BankAccount = SepaAccount & {
|
|
17
16
|
customerId: string;
|
|
18
17
|
accountType: AccountType;
|
|
19
18
|
currency: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bankAccount.d.ts","sourceRoot":"","sources":["../../src/bankAccount.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bankAccount.d.ts","sourceRoot":"","sources":["../../src/bankAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAExE,oBAAY,WAAW;IACtB,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,iBAAiB,sBAAsB;IACvC,qBAAqB,0BAA0B;IAC/C,mBAAmB,wBAAwB;IAC3C,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;CAC/B;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAC5C,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAWvE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Statement } from './statement.js';
|
|
2
|
+
export declare class CamtParsingError extends Error {
|
|
3
|
+
cause?: Error | undefined;
|
|
4
|
+
constructor(message: string, cause?: Error | undefined);
|
|
5
|
+
}
|
|
6
|
+
export declare class CamtParser {
|
|
7
|
+
private xmlData;
|
|
8
|
+
private parser;
|
|
9
|
+
constructor(xmlData: string);
|
|
10
|
+
parse(): Statement[];
|
|
11
|
+
private getDocumentObject;
|
|
12
|
+
private getReports;
|
|
13
|
+
private parseReport;
|
|
14
|
+
private getValueFromPath;
|
|
15
|
+
private parseBalances;
|
|
16
|
+
private parseTransactions;
|
|
17
|
+
private parseTransaction;
|
|
18
|
+
/**
|
|
19
|
+
* Extract party name from various possible CAMT structures
|
|
20
|
+
* Handles both direct name (<Dbtr><Nm>) and party structure (<Dbtr><Pty><Nm>)
|
|
21
|
+
*/
|
|
22
|
+
private extractPartyName;
|
|
23
|
+
/**
|
|
24
|
+
* Extract bank identification code from various possible CAMT structures
|
|
25
|
+
* Handles both BIC and BICFI elements
|
|
26
|
+
*/
|
|
27
|
+
private extractBankId;
|
|
28
|
+
private parseDate;
|
|
29
|
+
private parseBankTransactionCode;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=camtParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camtParser.d.ts","sourceRoot":"","sources":["../../src/camtParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,gBAAgB,CAAC;AAGjE,qBAAa,gBAAiB,SAAQ,KAAK;IACL,KAAK,CAAC;gBAA9B,OAAO,EAAE,MAAM,EAAS,KAAK,CAAC,mBAAO;CAIlD;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAY;gBAEd,OAAO,EAAE,MAAM;IAoB3B,KAAK,IAAI,SAAS,EAAE;IA8CpB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,WAAW;IAiEnB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,aAAa;IAmFrB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,gBAAgB;IA4ExB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAwCxB;;;OAGG;IACH,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,wBAAwB;CAyBjC"}
|
package/dist/types/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StatementResponse } from './interactions/
|
|
1
|
+
import { StatementResponse } from './interactions/customerInteraction.js';
|
|
2
2
|
import { AccountBalanceResponse } from './interactions/balanceInteraction.js';
|
|
3
3
|
import { PortfolioResponse } from './interactions/portfolioInteraction.js';
|
|
4
4
|
import { FinTSConfig } from './config.js';
|
|
@@ -11,7 +11,7 @@ export interface SynchronizeResponse extends InitResponse {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare class FinTSClient {
|
|
13
13
|
config: FinTSConfig;
|
|
14
|
-
private
|
|
14
|
+
private currentDialog;
|
|
15
15
|
/**
|
|
16
16
|
* Creates a new FinTS client
|
|
17
17
|
* @param config - the configuration for the client, use the static factory methods FinTSConfig.forFirstTimeUse or FinTSConfig.fromBankingInformation to create a configuration
|
|
@@ -70,9 +70,10 @@ export declare class FinTSClient {
|
|
|
70
70
|
* @param accountNumber - the account number to fetch the statements for, must be an account available in the config.baningInformation.UPD.accounts
|
|
71
71
|
* @param from - an optional start date of the period to fetch the statements for
|
|
72
72
|
* @param to - an optional end date of the period to fetch the statements for
|
|
73
|
+
* @param preferCamt - whether to prefer CAMT format over MT940 when both are supported (default: true)
|
|
73
74
|
* @returns an account statements response containing an array of statements
|
|
74
75
|
*/
|
|
75
|
-
getAccountStatements(accountNumber: string, from?: Date, to?: Date): Promise<StatementResponse>;
|
|
76
|
+
getAccountStatements(accountNumber: string, from?: Date, to?: Date, preferCamt?: boolean): Promise<StatementResponse>;
|
|
76
77
|
/**
|
|
77
78
|
* Continues the account statements fetching when a TAN is required
|
|
78
79
|
* @param tanReference The TAN reference provided in the first call's response
|
|
@@ -127,6 +128,5 @@ export declare class FinTSClient {
|
|
|
127
128
|
getCreditCardStatementsWithTan(tanReference: string, tan?: string): Promise<StatementResponse>;
|
|
128
129
|
private startCustomerOrderInteraction;
|
|
129
130
|
private continueCustomerInteractionWithTan;
|
|
130
|
-
private initDialog;
|
|
131
131
|
}
|
|
132
132
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAsB,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAwB,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM3C,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAIvE,MAAM,WAAW,mBAAoB,SAAQ,YAAY;CAAG;AAE5D;;GAEG;AACH,qBAAa,WAAW;IAOJ,MAAM,EAAE,WAAW;IANtC,OAAO,CAAC,aAAa,CAAqB;IAE1C;;;OAGG;gBACgB,MAAM,EAAE,WAAW;IAUtC;;;;OAIG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAK/C;;;OAGG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI1C;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMjD;;;;;OAKG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAK1F;;;;OAIG;IACH,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAMrD;;;;OAIG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAK/E;;;;;OAKG;IACG,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKnG;;;;OAIG;IACH,uBAAuB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAaxD;;;;;;;OAOG;IACG,oBAAoB,CACzB,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,IAAI,EACX,EAAE,CAAC,EAAE,IAAI,EACT,UAAU,GAAE,OAAc,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAuB7B;;;;;OAKG;IACG,2BAA2B,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKjG;;;;OAIG;IACH,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAMhD;;;;;;;OAOG;IACG,YAAY,CACjB,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,EACxB,UAAU,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC;IAO7B;;;;;;OAMG;IACG,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKzF;;;;OAIG;IACH,0BAA0B,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAM3D;;;;;;;OAOG;IACG,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAK7F;;;;;OAKG;IACG,8BAA8B,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAKtF,6BAA6B;YAQ7B,kCAAkC;CAUhD"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { TanMethod } from './tanMethod.js';
|
|
2
2
|
import { BankingInformation } from './bankingInformation.js';
|
|
3
|
+
import { BankAccount } from './bankAccount.js';
|
|
3
4
|
/**
|
|
4
5
|
* Configuration for the FinTS client
|
|
5
6
|
*/
|
|
@@ -94,6 +95,6 @@ export declare class FinTSConfig {
|
|
|
94
95
|
* Gets the bank account information for a specific account number
|
|
95
96
|
* @param accountNumber The account number
|
|
96
97
|
*/
|
|
97
|
-
getBankAccount(accountNumber: string):
|
|
98
|
+
getBankAccount(accountNumber: string): BankAccount;
|
|
98
99
|
}
|
|
99
100
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,qBAAa,WAAW;IAKf,SAAS,EAAE,MAAM;IACjB,cAAc,EAAE,MAAM;IAC7B,OAAO,CAAC,GAAG,CAAC;IACZ,OAAO,CAAC,kBAAkB,CAAC;IACpB,MAAM,CAAC;IACP,GAAG,CAAC;IAEJ,WAAW,CAAC;IACZ,YAAY,CAAC;IACb,UAAU,CAAC;IAClB,OAAO,CAAC,OAAO;IAdhB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,YAAY,UAAS;IAErB,OAAO;IA+CP;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,eAAe,CACrB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,GAAE,MAAY,GACvB,WAAW;IAgBd;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,sBAAsB,CAC5B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,GAAE,MAAY,GACvB,WAAW;IAgBd;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,SAAS,EAAE,CAMrC;IAED;;;OAGG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM;IAQnC;;;OAGG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM;IAYnC;;OAEG;IACH,IAAI,iBAAiB,IAAI,SAAS,GAAG,SAAS,CAE7C;IAED;;;OAGG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIhD;;;;OAIG;IACH,6BAA6B,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAK9E;;;OAGG;IACH,iCAAiC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAetE;;;OAGG;IACH,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW;CASlD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DataGroup } from './DataGroup.js';
|
|
2
|
+
import { Account } from './Account.js';
|
|
3
|
+
export type SepaAccount = Account & {
|
|
4
|
+
isSepaAccount?: boolean;
|
|
5
|
+
iban?: string;
|
|
6
|
+
bic?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare class SepaAccountGroup extends DataGroup {
|
|
9
|
+
constructor(name: string, minCount?: number, maxCount?: number, minVersion?: number, maxVersion?: number);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=SepaAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SepaAccount.d.ts","sourceRoot":"","sources":["../../../src/dataGroups/SepaAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,SAAS;gBAClC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,QAAQ,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAiB9F"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DataGroup } from './DataGroup.js';
|
|
2
|
+
export type SepaAccountParameters = {
|
|
3
|
+
individualAccountRetrievalAllowed: boolean;
|
|
4
|
+
nationalAccountAllowed: boolean;
|
|
5
|
+
structuredPurposeAllowed: boolean;
|
|
6
|
+
maxEntriesAllowed?: boolean;
|
|
7
|
+
reservedPurposePositions?: number;
|
|
8
|
+
supportedSepaFormats?: string[];
|
|
9
|
+
};
|
|
10
|
+
export declare class SepaAccountParametersGroup extends DataGroup {
|
|
11
|
+
constructor(name: string, minCount?: number, maxCount?: number, minVersion?: number, maxVersion?: number);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=SepaAccountParameters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SepaAccountParameters.d.ts","sourceRoot":"","sources":["../../../src/dataGroups/SepaAccountParameters.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,qBAAqB,GAAG;IACnC,iCAAiC,EAAE,OAAO,CAAC;IAC3C,sBAAsB,EAAE,OAAO,CAAC;IAChC,wBAAwB,EAAE,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,qBAAa,0BAA2B,SAAQ,SAAS;gBAC5C,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,QAAQ,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAiB9F"}
|
package/dist/types/dialog.d.ts
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { FinTSConfig } from './config.js';
|
|
2
2
|
import { HttpClient } from './httpClient.js';
|
|
3
|
-
import {
|
|
4
|
-
import { ClientResponse, CustomerOrderInteraction } from './interactions/customerInteraction.js';
|
|
5
|
-
import { InitDialogInteraction, InitResponse } from './interactions/initDialogInteraction.js';
|
|
3
|
+
import { ClientResponse, CustomerInteraction } from './interactions/customerInteraction.js';
|
|
6
4
|
export declare class Dialog {
|
|
7
5
|
config: FinTSConfig;
|
|
8
6
|
dialogId: string;
|
|
9
7
|
lastMessageNumber: number;
|
|
8
|
+
interactions: CustomerInteraction[];
|
|
9
|
+
responses: Map<string, ClientResponse>;
|
|
10
|
+
currentInteractionIndex: number;
|
|
10
11
|
isInitialized: boolean;
|
|
11
12
|
hasEnded: boolean;
|
|
12
13
|
httpClient: HttpClient;
|
|
13
|
-
constructor(config: FinTSConfig);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
constructor(config: FinTSConfig, syncSystemId?: boolean);
|
|
15
|
+
get currentInteraction(): CustomerInteraction;
|
|
16
|
+
start(): Promise<Map<string, ClientResponse>>;
|
|
17
|
+
continue(tanOrderReference: string, tan?: string): Promise<Map<string, ClientResponse>>;
|
|
18
|
+
addCustomerInteraction(interaction: CustomerInteraction, afterCurrent?: boolean): void;
|
|
19
|
+
private createCurrentCustomerMessage;
|
|
20
|
+
private createCurrentTanMessage;
|
|
21
|
+
private handlePartedMessages;
|
|
18
22
|
private checkEnded;
|
|
19
23
|
private getHttpClient;
|
|
20
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../src/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../src/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ7C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAA4B,MAAM,uCAAuC,CAAC;AAItH,qBAAa,MAAM;IAUC,MAAM,EAAE,WAAW;IATtC,QAAQ,EAAE,MAAM,CAAO;IACvB,iBAAiB,SAAK;IACtB,YAAY,EAAE,mBAAmB,EAAE,CAAM;IACzC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IACnD,uBAAuB,SAAK;IAC5B,aAAa,UAAS;IACtB,QAAQ,UAAS;IACjB,UAAU,EAAE,UAAU,CAAC;gBAEJ,MAAM,EAAE,WAAW,EAAE,YAAY,GAAE,OAAe;IAarE,IAAI,kBAAkB,IAAI,mBAAmB,CAE5C;IAEK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAyC7C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAmD7F,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,UAAQ,GAAG,IAAI;IAqBpF,OAAO,CAAC,4BAA4B;IAoDpC,OAAO,CAAC,uBAAuB;YAkCjB,oBAAoB;IAuClC,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,aAAa;CAGrB"}
|
|
@@ -2,7 +2,8 @@ import { CustomerMessage, Message } from './message.js';
|
|
|
2
2
|
export declare class HttpClient {
|
|
3
3
|
url: string;
|
|
4
4
|
debug: boolean;
|
|
5
|
-
|
|
5
|
+
debugRaw: boolean;
|
|
6
|
+
constructor(url: string, debug?: boolean, debugRaw?: boolean);
|
|
6
7
|
sendMessage(message: CustomerMessage): Promise<Message>;
|
|
7
8
|
}
|
|
8
9
|
//# sourceMappingURL=httpClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,OAAO,EAAE,MAAM,cAAc,CAAC;AAE9E,qBAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,OAAO,EAAE,MAAM,cAAc,CAAC;AAE9E,qBAAa,UAAU;IACH,GAAG,EAAE,MAAM;IAAS,KAAK;IAAiB,QAAQ;gBAAlD,GAAG,EAAE,MAAM,EAAS,KAAK,UAAQ,EAAS,QAAQ,UAAQ;IAEvE,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;CAiD7D"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export * from './client.js';
|
|
|
2
2
|
export * from './config.js';
|
|
3
3
|
export { ClientResponse } from './interactions/customerInteraction.js';
|
|
4
4
|
export { AccountBalanceResponse } from './interactions/balanceInteraction.js';
|
|
5
|
-
export { StatementResponse } from './interactions/
|
|
5
|
+
export { StatementResponse } from './interactions/customerInteraction.js';
|
|
6
6
|
export { PortfolioResponse } from './interactions/portfolioInteraction.js';
|
|
7
7
|
export * from './segment.js';
|
|
8
8
|
export * from './message.js';
|
|
@@ -14,6 +14,7 @@ export * from './bankingInformation.js';
|
|
|
14
14
|
export * from './accountBalance.js';
|
|
15
15
|
export * from './bpd.js';
|
|
16
16
|
export * from './upd.js';
|
|
17
|
+
export * from './statement.js';
|
|
17
18
|
export * from './mt940parser.js';
|
|
18
19
|
export * from './mt535parser.js';
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
@@ -3,6 +3,11 @@ import { Dialog } from '../dialog.js';
|
|
|
3
3
|
import { FinTSConfig } from '../config.js';
|
|
4
4
|
import { Message } from '../message.js';
|
|
5
5
|
import { Segment } from '../segment.js';
|
|
6
|
+
import { Statement } from '../statement.js';
|
|
7
|
+
export interface PhotoTan {
|
|
8
|
+
mimeType: string;
|
|
9
|
+
image: Uint8Array;
|
|
10
|
+
}
|
|
6
11
|
/**
|
|
7
12
|
* The response from the client after a customer interaction
|
|
8
13
|
* @property dialogId The dialog ID of the current dialog
|
|
@@ -22,16 +27,21 @@ export interface ClientResponse {
|
|
|
22
27
|
requiresTan: boolean;
|
|
23
28
|
tanReference?: string;
|
|
24
29
|
tanChallenge?: string;
|
|
30
|
+
tanPhoto?: PhotoTan;
|
|
25
31
|
tanMediaName?: string;
|
|
26
32
|
}
|
|
33
|
+
export interface StatementResponse extends ClientResponse {
|
|
34
|
+
statements: Statement[];
|
|
35
|
+
}
|
|
27
36
|
export declare abstract class CustomerInteraction {
|
|
28
37
|
segId: string;
|
|
29
38
|
dialog?: Dialog;
|
|
30
39
|
constructor(segId: string);
|
|
31
|
-
getSegments(
|
|
32
|
-
|
|
33
|
-
protected abstract createSegments(
|
|
40
|
+
getSegments(config: FinTSConfig): Segment[];
|
|
41
|
+
handleClientResponse(message: Message): ClientResponse;
|
|
42
|
+
protected abstract createSegments(config: FinTSConfig): Segment[];
|
|
34
43
|
protected abstract handleResponse(response: Message, clientResponse: ClientResponse): void;
|
|
44
|
+
private parseHHDUC;
|
|
35
45
|
private handleBaseResponse;
|
|
36
46
|
}
|
|
37
47
|
export declare abstract class CustomerOrderInteraction extends CustomerInteraction {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customerInteraction.d.ts","sourceRoot":"","sources":["../../../src/interactions/customerInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"customerInteraction.d.ts","sourceRoot":"","sources":["../../../src/interactions/customerInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,yBAAyB,EAAE,OAAO,CAAC;IACnC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACxD,UAAU,EAAE,SAAS,EAAE,CAAC;CACxB;AAED,8BAAsB,mBAAmB;IAGrB,KAAK,EAAE,MAAM;IAFhC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEG,KAAK,EAAE,MAAM;IAEhC,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,EAAE;IAI3C,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc;IAetD,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,EAAE;IACjE,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI;IAE1F,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,kBAAkB;CA0C1B;AAED,8BAAsB,wBAAyB,SAAQ,mBAAmB;IACvC,aAAa,EAAE,MAAM;gBAA3C,KAAK,EAAE,MAAM,EAAS,aAAa,EAAE,MAAM;CAGvD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ClientResponse, CustomerInteraction } from './customerInteraction.js';
|
|
2
|
+
import { Message } from '../message.js';
|
|
3
|
+
import { Segment } from '../segment.js';
|
|
4
|
+
import { FinTSConfig } from '../config.js';
|
|
5
|
+
export interface TanMediaResponse extends ClientResponse {
|
|
6
|
+
tanMediaList: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare class EndDialogInteraction extends CustomerInteraction {
|
|
9
|
+
constructor();
|
|
10
|
+
createSegments(init: FinTSConfig): Segment[];
|
|
11
|
+
handleResponse(response: Message, clientResponse: ClientResponse): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=endDialogInteraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endDialogInteraction.d.ts","sourceRoot":"","sources":["../../../src/interactions/endDialogInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAA4B,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACvD,YAAY,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,oBAAqB,SAAQ,mBAAmB;;IAK5D,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,EAAE;IAS5C,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc;CAGhE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ClientResponse, CustomerInteraction
|
|
1
|
+
import { ClientResponse, CustomerInteraction } from './customerInteraction.js';
|
|
2
2
|
import { Message } from '../message.js';
|
|
3
3
|
import { Segment } from '../segment.js';
|
|
4
4
|
import { FinTSConfig } from '../config.js';
|
|
@@ -9,8 +9,7 @@ export interface InitResponse extends ClientResponse {
|
|
|
9
9
|
export declare class InitDialogInteraction extends CustomerInteraction {
|
|
10
10
|
config: FinTSConfig;
|
|
11
11
|
syncSystemId: boolean;
|
|
12
|
-
|
|
13
|
-
constructor(config: FinTSConfig, syncSystemId?: boolean, followUpInteraction?: CustomerOrderInteraction | undefined);
|
|
12
|
+
constructor(config: FinTSConfig, syncSystemId?: boolean);
|
|
14
13
|
createSegments(init: FinTSConfig): Segment[];
|
|
15
14
|
handleResponse(response: Message, clientResponse: InitResponse): void;
|
|
16
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initDialogInteraction.d.ts","sourceRoot":"","sources":["../../../src/interactions/initDialogInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"initDialogInteraction.d.ts","sourceRoot":"","sources":["../../../src/interactions/initDialogInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAA4B,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAe,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAqB3E,MAAM,WAAW,YAAa,SAAQ,cAAc;IACnD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACxC;AAED,qBAAa,qBAAsB,SAAQ,mBAAmB;IAC1C,MAAM,EAAE,WAAW;IAAS,YAAY;gBAAxC,MAAM,EAAE,WAAW,EAAS,YAAY,UAAQ;IAInE,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,EAAE;IAoC5C,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY;CAyJ9D"}
|