lib-fints 1.4.1 → 1.4.3

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 (274) hide show
  1. package/README.md +1 -1
  2. package/dist/camtParser.js +21 -9
  3. package/dist/client.js +31 -20
  4. package/dist/config.js +10 -6
  5. package/dist/dataElements/AlphaNumeric.js +1 -1
  6. package/dist/dataElements/DataElement.js +2 -1
  7. package/dist/dataElements/Digits.js +1 -1
  8. package/dist/dataElements/Float.js +1 -1
  9. package/dist/dataElements/Numeric.js +2 -2
  10. package/dist/dataElements/Text.js +1 -1
  11. package/dist/dataGroups/Account.js +1 -1
  12. package/dist/dataGroups/Balance.js +2 -2
  13. package/dist/dataGroups/BankIdentification.js +1 -1
  14. package/dist/dataGroups/DataGroup.js +13 -6
  15. package/dist/dataGroups/InternationalAccount.js +1 -1
  16. package/dist/dataGroups/Money.js +1 -1
  17. package/dist/dataGroups/RefMessage.js +1 -1
  18. package/dist/dataGroups/SepaAccount.js +2 -2
  19. package/dist/dataGroups/SepaAccountParameters.js +2 -2
  20. package/dist/dataGroups/TimeStamp.js +1 -1
  21. package/dist/decoder.js +12 -6
  22. package/dist/dialog.js +33 -19
  23. package/dist/encoder.js +16 -4
  24. package/dist/format.js +2 -2
  25. package/dist/httpClient.js +4 -2
  26. package/dist/index.js +10 -10
  27. package/dist/interactions/balanceInteraction.js +2 -5
  28. package/dist/interactions/creditcardStatementInteraction.js +11 -11
  29. package/dist/interactions/customerInteraction.js +1 -1
  30. package/dist/interactions/endDialogInteraction.js +4 -4
  31. package/dist/interactions/initDialogInteraction.js +23 -20
  32. package/dist/interactions/portfolioInteraction.js +3 -3
  33. package/dist/interactions/sepaAccountInteraction.js +3 -3
  34. package/dist/interactions/statementInteractionCAMT.js +4 -4
  35. package/dist/interactions/statementInteractionMT940.js +4 -4
  36. package/dist/interactions/tanMediaInteraction.js +4 -4
  37. package/dist/message.js +51 -18
  38. package/dist/mt535parser.js +3 -5
  39. package/dist/mt940parser.js +18 -17
  40. package/dist/parser.js +1 -1
  41. package/dist/segment.js +12 -7
  42. package/dist/segmentDefinition.js +5 -2
  43. package/dist/segmentHeader.js +1 -1
  44. package/dist/segments/DIKKU.js +3 -3
  45. package/dist/segments/DKKKU.js +2 -2
  46. package/dist/segments/HIBPA.js +2 -2
  47. package/dist/segments/HICAZ.js +1 -1
  48. package/dist/segments/HICAZS.js +3 -3
  49. package/dist/segments/HIKAZS.js +7 -3
  50. package/dist/segments/HIKIM.js +1 -1
  51. package/dist/segments/HIKOM.js +1 -1
  52. package/dist/segments/HIPINS.js +3 -3
  53. package/dist/segments/HIRMG.js +1 -1
  54. package/dist/segments/HIRMS.js +1 -1
  55. package/dist/segments/HISAL.js +3 -3
  56. package/dist/segments/HISPAS.js +3 -4
  57. package/dist/segments/HISYN.js +1 -1
  58. package/dist/segments/HITAB.js +3 -3
  59. package/dist/segments/HITAN.js +3 -3
  60. package/dist/segments/HITANS.js +3 -3
  61. package/dist/segments/HIUPA.js +2 -2
  62. package/dist/segments/HIUPD.js +8 -4
  63. package/dist/segments/HKCAZ.js +3 -3
  64. package/dist/segments/HKIDN.js +1 -1
  65. package/dist/segments/HKKAZ.js +3 -3
  66. package/dist/segments/HKSAL.js +3 -3
  67. package/dist/segments/HKSPA.js +1 -1
  68. package/dist/segments/HKTAB.js +1 -1
  69. package/dist/segments/HKTAN.js +3 -3
  70. package/dist/segments/HKVVB.js +1 -1
  71. package/dist/segments/HKWPD.js +1 -1
  72. package/dist/segments/HNHBK.js +1 -1
  73. package/dist/segments/HNSHA.js +1 -1
  74. package/dist/segments/HNSHK.js +14 -6
  75. package/dist/segments/HNVSK.js +10 -6
  76. package/dist/segments/registry.js +31 -31
  77. package/dist/tests/HIBPA.test.js +3 -3
  78. package/dist/tests/HICAZS.test.js +2 -2
  79. package/dist/tests/HIPINS.test.js +2 -2
  80. package/dist/tests/HIRMG.test.js +2 -2
  81. package/dist/tests/HITAB.test.js +5 -5
  82. package/dist/tests/HITANS.test.js +2 -2
  83. package/dist/tests/HIUPA.test.js +2 -2
  84. package/dist/tests/HIUPD.test.js +2 -2
  85. package/dist/tests/HIWPD.test.js +2 -2
  86. package/dist/tests/HKCAZ.test.js +3 -3
  87. package/dist/tests/HKIDN.test.js +2 -2
  88. package/dist/tests/HKSAL.test.js +3 -3
  89. package/dist/tests/HKTAN.test.js +4 -4
  90. package/dist/tests/HKWPD.test.js +2 -2
  91. package/dist/tests/HNSHK.test.js +2 -2
  92. package/dist/tests/HNVSK.test.js +2 -2
  93. package/dist/tests/camtParser.test.js +188 -3
  94. package/dist/tests/client.test.js +15 -15
  95. package/dist/tests/datatypes.test.js +1 -1
  96. package/dist/tests/dialog.test.js +21 -14
  97. package/dist/tests/message.test.js +4 -4
  98. package/dist/tests/mt535parser.test.js +1 -3
  99. package/dist/types/accountBalance.d.ts.map +1 -1
  100. package/dist/types/bankAccount.d.ts +2 -2
  101. package/dist/types/bankAccount.d.ts.map +1 -1
  102. package/dist/types/bankAnswer.d.ts.map +1 -1
  103. package/dist/types/bankTransaction.d.ts.map +1 -1
  104. package/dist/types/bankingInformation.d.ts +2 -2
  105. package/dist/types/bankingInformation.d.ts.map +1 -1
  106. package/dist/types/bpd.d.ts +3 -3
  107. package/dist/types/bpd.d.ts.map +1 -1
  108. package/dist/types/camtParser.d.ts +1 -1
  109. package/dist/types/camtParser.d.ts.map +1 -1
  110. package/dist/types/client.d.ts +11 -11
  111. package/dist/types/client.d.ts.map +1 -1
  112. package/dist/types/config.d.ts +4 -4
  113. package/dist/types/config.d.ts.map +1 -1
  114. package/dist/types/creditCardStatement.d.ts.map +1 -1
  115. package/dist/types/dataElements/AlphaNumeric.d.ts.map +1 -1
  116. package/dist/types/dataElements/Amount.d.ts.map +1 -1
  117. package/dist/types/dataElements/Binary.d.ts.map +1 -1
  118. package/dist/types/dataElements/Country.d.ts.map +1 -1
  119. package/dist/types/dataElements/Currency.d.ts.map +1 -1
  120. package/dist/types/dataElements/Dat.d.ts.map +1 -1
  121. package/dist/types/dataElements/DataElement.d.ts +3 -3
  122. package/dist/types/dataElements/DataElement.d.ts.map +1 -1
  123. package/dist/types/dataElements/Digits.d.ts.map +1 -1
  124. package/dist/types/dataElements/Float.d.ts.map +1 -1
  125. package/dist/types/dataElements/Identification.d.ts.map +1 -1
  126. package/dist/types/dataElements/Numeric.d.ts.map +1 -1
  127. package/dist/types/dataElements/Text.d.ts.map +1 -1
  128. package/dist/types/dataElements/Time.d.ts.map +1 -1
  129. package/dist/types/dataElements/YesNo.d.ts.map +1 -1
  130. package/dist/types/dataGroups/Account.d.ts.map +1 -1
  131. package/dist/types/dataGroups/Balance.d.ts +1 -1
  132. package/dist/types/dataGroups/Balance.d.ts.map +1 -1
  133. package/dist/types/dataGroups/BankIdentification.d.ts.map +1 -1
  134. package/dist/types/dataGroups/DataGroup.d.ts +3 -3
  135. package/dist/types/dataGroups/DataGroup.d.ts.map +1 -1
  136. package/dist/types/dataGroups/InternationalAccount.d.ts +1 -1
  137. package/dist/types/dataGroups/InternationalAccount.d.ts.map +1 -1
  138. package/dist/types/dataGroups/Money.d.ts.map +1 -1
  139. package/dist/types/dataGroups/RefMessage.d.ts.map +1 -1
  140. package/dist/types/dataGroups/SepaAccount.d.ts +1 -1
  141. package/dist/types/dataGroups/SepaAccount.d.ts.map +1 -1
  142. package/dist/types/dataGroups/TimeStamp.d.ts.map +1 -1
  143. package/dist/types/decoder.d.ts +2 -2
  144. package/dist/types/decoder.d.ts.map +1 -1
  145. package/dist/types/dialog.d.ts +2 -2
  146. package/dist/types/dialog.d.ts.map +1 -1
  147. package/dist/types/encoder.d.ts +2 -2
  148. package/dist/types/encoder.d.ts.map +1 -1
  149. package/dist/types/httpClient.d.ts +1 -1
  150. package/dist/types/httpClient.d.ts.map +1 -1
  151. package/dist/types/index.d.ts +12 -13
  152. package/dist/types/index.d.ts.map +1 -1
  153. package/dist/types/interactions/balanceInteraction.d.ts +5 -5
  154. package/dist/types/interactions/balanceInteraction.d.ts.map +1 -1
  155. package/dist/types/interactions/creditcardStatementInteraction.d.ts +6 -6
  156. package/dist/types/interactions/creditcardStatementInteraction.d.ts.map +1 -1
  157. package/dist/types/interactions/customerInteraction.d.ts +6 -6
  158. package/dist/types/interactions/customerInteraction.d.ts.map +1 -1
  159. package/dist/types/interactions/endDialogInteraction.d.ts +6 -6
  160. package/dist/types/interactions/endDialogInteraction.d.ts.map +1 -1
  161. package/dist/types/interactions/initDialogInteraction.d.ts +5 -5
  162. package/dist/types/interactions/initDialogInteraction.d.ts.map +1 -1
  163. package/dist/types/interactions/portfolioInteraction.d.ts +5 -5
  164. package/dist/types/interactions/portfolioInteraction.d.ts.map +1 -1
  165. package/dist/types/interactions/sepaAccountInteraction.d.ts +5 -5
  166. package/dist/types/interactions/sepaAccountInteraction.d.ts.map +1 -1
  167. package/dist/types/interactions/statementInteractionCAMT.d.ts +4 -4
  168. package/dist/types/interactions/statementInteractionCAMT.d.ts.map +1 -1
  169. package/dist/types/interactions/statementInteractionMT940.d.ts +4 -4
  170. package/dist/types/interactions/statementInteractionMT940.d.ts.map +1 -1
  171. package/dist/types/interactions/tanMediaInteraction.d.ts +4 -4
  172. package/dist/types/interactions/tanMediaInteraction.d.ts.map +1 -1
  173. package/dist/types/message.d.ts +3 -3
  174. package/dist/types/message.d.ts.map +1 -1
  175. package/dist/types/mt535parser.d.ts +0 -1
  176. package/dist/types/mt535parser.d.ts.map +1 -1
  177. package/dist/types/mt940parser.d.ts +1 -2
  178. package/dist/types/mt940parser.d.ts.map +1 -1
  179. package/dist/types/partedSegment.d.ts +1 -1
  180. package/dist/types/partedSegment.d.ts.map +1 -1
  181. package/dist/types/segment.d.ts +1 -1
  182. package/dist/types/segment.d.ts.map +1 -1
  183. package/dist/types/segmentDefinition.d.ts +2 -2
  184. package/dist/types/segmentDefinition.d.ts.map +1 -1
  185. package/dist/types/segmentHeader.d.ts.map +1 -1
  186. package/dist/types/segments/DIKKU.d.ts +4 -4
  187. package/dist/types/segments/DIKKU.d.ts.map +1 -1
  188. package/dist/types/segments/DKKKU.d.ts +3 -3
  189. package/dist/types/segments/DKKKU.d.ts.map +1 -1
  190. package/dist/types/segments/HIBPA.d.ts +5 -5
  191. package/dist/types/segments/HIBPA.d.ts.map +1 -1
  192. package/dist/types/segments/HICAZ.d.ts +2 -2
  193. package/dist/types/segments/HICAZ.d.ts.map +1 -1
  194. package/dist/types/segments/HICAZS.d.ts +1 -1
  195. package/dist/types/segments/HICAZS.d.ts.map +1 -1
  196. package/dist/types/segments/HIKAZ.d.ts +1 -1
  197. package/dist/types/segments/HIKAZ.d.ts.map +1 -1
  198. package/dist/types/segments/HIKAZS.d.ts +1 -1
  199. package/dist/types/segments/HIKAZS.d.ts.map +1 -1
  200. package/dist/types/segments/HIKIM.d.ts +2 -2
  201. package/dist/types/segments/HIKIM.d.ts.map +1 -1
  202. package/dist/types/segments/HIKOM.d.ts +3 -3
  203. package/dist/types/segments/HIKOM.d.ts.map +1 -1
  204. package/dist/types/segments/HIPINS.d.ts +1 -1
  205. package/dist/types/segments/HIPINS.d.ts.map +1 -1
  206. package/dist/types/segments/HIRMG.d.ts +1 -1
  207. package/dist/types/segments/HIRMG.d.ts.map +1 -1
  208. package/dist/types/segments/HIRMS.d.ts +2 -2
  209. package/dist/types/segments/HIRMS.d.ts.map +1 -1
  210. package/dist/types/segments/HISAL.d.ts +7 -7
  211. package/dist/types/segments/HISAL.d.ts.map +1 -1
  212. package/dist/types/segments/HISPA.d.ts +2 -2
  213. package/dist/types/segments/HISPA.d.ts.map +1 -1
  214. package/dist/types/segments/HISPAS.d.ts +2 -2
  215. package/dist/types/segments/HISPAS.d.ts.map +1 -1
  216. package/dist/types/segments/HISYN.d.ts +2 -2
  217. package/dist/types/segments/HISYN.d.ts.map +1 -1
  218. package/dist/types/segments/HITAB.d.ts +4 -4
  219. package/dist/types/segments/HITAB.d.ts.map +1 -1
  220. package/dist/types/segments/HITAN.d.ts +5 -5
  221. package/dist/types/segments/HITAN.d.ts.map +1 -1
  222. package/dist/types/segments/HITANS.d.ts +2 -2
  223. package/dist/types/segments/HITANS.d.ts.map +1 -1
  224. package/dist/types/segments/HIUPA.d.ts +3 -3
  225. package/dist/types/segments/HIUPA.d.ts.map +1 -1
  226. package/dist/types/segments/HIUPD.d.ts +6 -6
  227. package/dist/types/segments/HIUPD.d.ts.map +1 -1
  228. package/dist/types/segments/HIWPD.d.ts +1 -1
  229. package/dist/types/segments/HIWPD.d.ts.map +1 -1
  230. package/dist/types/segments/HKCAZ.d.ts +5 -5
  231. package/dist/types/segments/HKCAZ.d.ts.map +1 -1
  232. package/dist/types/segments/HKEND.d.ts +1 -1
  233. package/dist/types/segments/HKEND.d.ts.map +1 -1
  234. package/dist/types/segments/HKIDN.d.ts +3 -3
  235. package/dist/types/segments/HKIDN.d.ts.map +1 -1
  236. package/dist/types/segments/HKKAZ.d.ts +5 -5
  237. package/dist/types/segments/HKKAZ.d.ts.map +1 -1
  238. package/dist/types/segments/HKSAL.d.ts +6 -6
  239. package/dist/types/segments/HKSAL.d.ts.map +1 -1
  240. package/dist/types/segments/HKSPA.d.ts +3 -3
  241. package/dist/types/segments/HKSPA.d.ts.map +1 -1
  242. package/dist/types/segments/HKSYN.d.ts +2 -2
  243. package/dist/types/segments/HKSYN.d.ts.map +1 -1
  244. package/dist/types/segments/HKTAB.d.ts +3 -3
  245. package/dist/types/segments/HKTAB.d.ts.map +1 -1
  246. package/dist/types/segments/HKTAN.d.ts +6 -6
  247. package/dist/types/segments/HKTAN.d.ts.map +1 -1
  248. package/dist/types/segments/HKVVB.d.ts +3 -3
  249. package/dist/types/segments/HKVVB.d.ts.map +1 -1
  250. package/dist/types/segments/HKWPD.d.ts +2 -2
  251. package/dist/types/segments/HKWPD.d.ts.map +1 -1
  252. package/dist/types/segments/HNHBK.d.ts +3 -3
  253. package/dist/types/segments/HNHBK.d.ts.map +1 -1
  254. package/dist/types/segments/HNHBS.d.ts +1 -1
  255. package/dist/types/segments/HNHBS.d.ts.map +1 -1
  256. package/dist/types/segments/HNSHA.d.ts +3 -3
  257. package/dist/types/segments/HNSHA.d.ts.map +1 -1
  258. package/dist/types/segments/HNSHK.d.ts +4 -4
  259. package/dist/types/segments/HNSHK.d.ts.map +1 -1
  260. package/dist/types/segments/HNVSD.d.ts +2 -2
  261. package/dist/types/segments/HNVSD.d.ts.map +1 -1
  262. package/dist/types/segments/HNVSK.d.ts +4 -4
  263. package/dist/types/segments/HNVSK.d.ts.map +1 -1
  264. package/dist/types/segments/businessTransactionParameter.d.ts +2 -2
  265. package/dist/types/segments/businessTransactionParameter.d.ts.map +1 -1
  266. package/dist/types/segments/registry.d.ts +1 -1
  267. package/dist/types/segments/registry.d.ts.map +1 -1
  268. package/dist/types/tanMethod.d.ts +1 -1
  269. package/dist/types/tanMethod.d.ts.map +1 -1
  270. package/dist/types/unknownSegment.d.ts +1 -1
  271. package/dist/types/unknownSegment.d.ts.map +1 -1
  272. package/dist/types/upd.d.ts +2 -2
  273. package/dist/types/upd.d.ts.map +1 -1
  274. package/package.json +48 -47
@@ -1,10 +1,10 @@
1
- import { Time } from '../dataElements/Time.js';
2
- import { Dat } from '../dataElements/Dat.js';
1
+ import { AlphaNumeric } from '../dataElements/AlphaNumeric.js';
3
2
  import { Binary } from '../dataElements/Binary.js';
3
+ import { Dat } from '../dataElements/Dat.js';
4
+ import { Identification } from '../dataElements/Identification.js';
4
5
  import { Numeric } from '../dataElements/Numeric.js';
5
- import { AlphaNumeric } from '../dataElements/AlphaNumeric.js';
6
+ import { Time } from '../dataElements/Time.js';
6
7
  import { BankIdentification } from '../dataGroups/BankIdentification.js';
7
- import { Identification } from '../dataElements/Identification.js';
8
8
  import { DataGroup } from '../dataGroups/DataGroup.js';
9
9
  import { SegmentDefinition } from '../segmentDefinition.js';
10
10
  /**
@@ -21,7 +21,11 @@ export class HNVSK extends SegmentDefinition {
21
21
  new DataGroup('secProfile', [new AlphaNumeric('secMethod', 1, 1, 3), new Numeric('secVersion', 1, 1, 3)], 1, 1),
22
22
  new Numeric('secFunc', 1, 1, 3),
23
23
  new Numeric('secRole', 1, 1, 3),
24
- new DataGroup('secId', [new Numeric('partyType', 1, 1, 3), new Binary('cid', 0, 1, 256), new Identification('partyID', 0, 1)], 1, 1),
24
+ new DataGroup('secId', [
25
+ new Numeric('partyType', 1, 1, 3),
26
+ new Binary('cid', 0, 1, 256),
27
+ new Identification('partyID', 0, 1),
28
+ ], 1, 1),
25
29
  new DataGroup('dateTime', [new Numeric('type', 1, 1, 3), new Dat('date', 0, 1), new Time('time', 0, 1)], 1, 1),
26
30
  new DataGroup('encryption', [
27
31
  new Numeric('use', 1, 1, 3),
@@ -42,7 +46,7 @@ export class HNVSK extends SegmentDefinition {
42
46
  new Numeric('compressMethod', 1, 1, 3),
43
47
  new DataGroup('certificate', [new Numeric('type', 1, 1, 3), new Binary('content', 1, 1, 4096)], 0, 1),
44
48
  ];
45
- setSegmentNumber(segmentNumber) {
49
+ setSegmentNumber(_segmentNumber) {
46
50
  return 0;
47
51
  }
48
52
  }
@@ -1,44 +1,44 @@
1
- import { HNHBK } from './HNHBK.js';
2
- import { HNHBS } from './HNHBS.js';
3
- import { HNVSK } from './HNVSK.js';
4
- import { HNVSD } from './HNVSD.js';
5
- import { HNSHK } from './HNSHK.js';
6
- import { HNSHA } from './HNSHA.js';
7
- import { HKIDN } from './HKIDN.js';
8
- import { HKVVB } from './HKVVB.js';
9
- import { HKSYN } from './HKSYN.js';
10
- import { HKTAN } from './HKTAN.js';
11
- import { HKTAB } from './HKTAB.js';
12
- import { HIRMG } from './HIRMG.js';
13
- import { HIRMS } from './HIRMS.js';
1
+ import { PARTED } from '../partedSegment.js';
2
+ import { UNKNOW } from '../unknownSegment.js';
3
+ import { DIKKU } from './DIKKU.js';
4
+ import { DKKKU } from './DKKKU.js';
14
5
  import { HIBPA } from './HIBPA.js';
15
- import { HIKOM } from './HIKOM.js';
6
+ import { HICAZ } from './HICAZ.js';
7
+ import { HICAZS } from './HICAZS.js';
8
+ import { HIKAZ } from './HIKAZ.js';
9
+ import { HIKAZS } from './HIKAZS.js';
16
10
  import { HIKIM } from './HIKIM.js';
17
- import { HISYN } from './HISYN.js';
11
+ import { HIKOM } from './HIKOM.js';
18
12
  import { HIPINS } from './HIPINS.js';
13
+ import { HIRMG } from './HIRMG.js';
14
+ import { HIRMS } from './HIRMS.js';
15
+ import { HISAL } from './HISAL.js';
16
+ import { HISPA } from './HISPA.js';
17
+ import { HISPAS } from './HISPAS.js';
18
+ import { HISYN } from './HISYN.js';
19
+ import { HITAB } from './HITAB.js';
19
20
  import { HITAN } from './HITAN.js';
20
21
  import { HITANS } from './HITANS.js';
21
22
  import { HIUPA } from './HIUPA.js';
22
23
  import { HIUPD } from './HIUPD.js';
24
+ import { HIWPD } from './HIWPD.js';
25
+ import { HKCAZ } from './HKCAZ.js';
23
26
  import { HKEND } from './HKEND.js';
24
- import { HKSAL } from './HKSAL.js';
25
- import { HISAL } from './HISAL.js';
27
+ import { HKIDN } from './HKIDN.js';
26
28
  import { HKKAZ } from './HKKAZ.js';
27
- import { HIKAZ } from './HIKAZ.js';
28
- import { HIKAZS } from './HIKAZS.js';
29
- import { HKCAZ } from './HKCAZ.js';
30
- import { HICAZ } from './HICAZ.js';
31
- import { HICAZS } from './HICAZS.js';
32
- import { HITAB } from './HITAB.js';
33
- import { HKWPD } from './HKWPD.js';
34
- import { HIWPD } from './HIWPD.js';
29
+ import { HKSAL } from './HKSAL.js';
35
30
  import { HKSPA } from './HKSPA.js';
36
- import { HISPA } from './HISPA.js';
37
- import { HISPAS } from './HISPAS.js';
38
- import { DIKKU } from './DIKKU.js';
39
- import { DKKKU } from './DKKKU.js';
40
- import { UNKNOW } from '../unknownSegment.js';
41
- import { PARTED } from '../partedSegment.js';
31
+ import { HKSYN } from './HKSYN.js';
32
+ import { HKTAB } from './HKTAB.js';
33
+ import { HKTAN } from './HKTAN.js';
34
+ import { HKVVB } from './HKVVB.js';
35
+ import { HKWPD } from './HKWPD.js';
36
+ import { HNHBK } from './HNHBK.js';
37
+ import { HNHBS } from './HNHBS.js';
38
+ import { HNSHA } from './HNSHA.js';
39
+ import { HNSHK } from './HNSHK.js';
40
+ import { HNVSD } from './HNVSD.js';
41
+ import { HNVSK } from './HNVSK.js';
42
42
  const registry = new Map();
43
43
  export function registerSegments() {
44
44
  registerSegmentDefinition(new HNHBK());
@@ -1,7 +1,7 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
3
- import { HIBPA } from '../segments/HIBPA.js';
1
+ import { describe, expect, it } from 'vitest';
4
2
  import { decode, encode } from '../segment.js';
3
+ import { HIBPA } from '../segments/HIBPA.js';
4
+ import { registerSegments } from '../segments/registry.js';
5
5
  registerSegments();
6
6
  describe('HIBPA', () => {
7
7
  it('has correct id', () => {
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HICAZS', () => {
6
6
  it('decode and encode roundtrip matches', () => {
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HIPINS', () => {
6
6
  it('decode and encode roundtrip matches', () => {
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode, segmentToString } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HIRMG', () => {
6
6
  it('decodes correctly', () => {
@@ -1,15 +1,15 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
3
- import { HITAB } from '../segments/HITAB.js';
1
+ import { describe, expect, it } from 'vitest';
4
2
  import { decode, encode, segmentToString } from '../segment.js';
3
+ import { HITAB } from '../segments/HITAB.js';
4
+ import { registerSegments } from '../segments/registry.js';
5
5
  registerSegments();
6
6
  describe('HITAB', () => {
7
7
  it('decodes correctly', () => {
8
8
  const text = "HITAB:5:4:3+0+A:1:::::::::::Media1::::::::+A:1:::::::::::Media2::::::::'";
9
9
  const segment = decode(text);
10
10
  expect(segment.mediaList).toBeDefined();
11
- expect(segment.mediaList.length).toBe(2);
12
- expect(segment.mediaList[0].name).toBe('Media1');
11
+ expect(segment.mediaList?.length).toBe(2);
12
+ expect(segment.mediaList?.[0].name).toBe('Media1');
13
13
  });
14
14
  it('decode and encode roundtrip matches', () => {
15
15
  HITAB.Id;
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HITANS', () => {
6
6
  it('decode and encode roundtrip matches', () => {
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HIUPA', () => {
6
6
  it('decode and encode roundtrip matches', () => {
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HIUPD', () => {
6
6
  it('decode and encode roundtrip matches', () => {
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HIWPD', () => {
6
6
  it('decode and encode roundtrip matches', () => {
@@ -1,7 +1,7 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
3
- import { HKCAZ } from '../segments/HKCAZ.js';
1
+ import { describe, expect, it } from 'vitest';
4
2
  import { decode, encode } from '../segment.js';
3
+ import { HKCAZ } from '../segments/HKCAZ.js';
4
+ import { registerSegments } from '../segments/registry.js';
5
5
  registerSegments();
6
6
  describe('HKCAZ v1', () => {
7
7
  it('encode', () => {
@@ -1,7 +1,7 @@
1
- import { describe, it, expect } from 'vitest';
1
+ import { describe, expect, it } from 'vitest';
2
+ import { decode, encode } from '../segment.js';
2
3
  import { HKIDN } from '../segments/HKIDN.js';
3
4
  import { registerSegments } from '../segments/registry.js';
4
- import { decode, encode } from '../segment.js';
5
5
  registerSegments();
6
6
  describe('HKIDN', () => {
7
7
  it('encodes correctly', () => {
@@ -1,7 +1,7 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
3
- import { HKSAL } from '../segments/HKSAL.js';
1
+ import { describe, expect, it } from 'vitest';
4
2
  import { decode, encode } from '../segment.js';
3
+ import { HKSAL } from '../segments/HKSAL.js';
4
+ import { registerSegments } from '../segments/registry.js';
5
5
  registerSegments();
6
6
  describe('HKSAL v8', () => {
7
7
  it('encode', () => {
@@ -1,8 +1,8 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
3
- import { HKTAN } from '../segments/HKTAN.js';
4
- import { decode, encode } from '../segment.js';
1
+ import { describe, expect, it } from 'vitest';
5
2
  import { TanProcess } from '../codes.js';
3
+ import { decode, encode } from '../segment.js';
4
+ import { HKTAN } from '../segments/HKTAN.js';
5
+ import { registerSegments } from '../segments/registry.js';
6
6
  registerSegments();
7
7
  describe('HKTAN', () => {
8
8
  it('encode', () => {
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HKWPD', () => {
6
6
  it('decode and encode roundtrip matches with all fields', () => {
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HNSHK', () => {
6
6
  it('decode and encode roundtrip matches', () => {
@@ -1,6 +1,6 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { registerSegments } from '../segments/registry.js';
1
+ import { describe, expect, it } from 'vitest';
3
2
  import { decode, encode } from '../segment.js';
3
+ import { registerSegments } from '../segments/registry.js';
4
4
  registerSegments();
5
5
  describe('HNVSK', () => {
6
6
  it('decode and encode roundtrip matches', () => {
@@ -1,4 +1,4 @@
1
- import { describe, it, expect } from 'vitest';
1
+ import { describe, expect, it } from 'vitest';
2
2
  import { CamtParser } from '../camtParser.js';
3
3
  describe('CamtParser', () => {
4
4
  it('should parse CAMT.052 XML with balances and transactions', () => {
@@ -458,8 +458,8 @@ describe('CamtParser', () => {
458
458
  expect(statement.closingBalance.date.getDate()).toBe(22);
459
459
  // Test available balance (ITBD)
460
460
  expect(statement.availableBalance).toBeDefined();
461
- expect(statement.availableBalance.value).toBe(4500.0);
462
- expect(statement.availableBalance.currency).toBe('EUR');
461
+ expect(statement.availableBalance?.value).toBe(4500.0);
462
+ expect(statement.availableBalance?.currency).toBe('EUR');
463
463
  // Test transaction with comprehensive fields
464
464
  expect(statement.transactions).toHaveLength(1);
465
465
  const transaction = statement.transactions[0];
@@ -670,4 +670,189 @@ describe('CamtParser', () => {
670
670
  expect(transaction.purpose).toBe('Payment with party structure');
671
671
  expect(transaction.amount).toBe(200.0);
672
672
  });
673
+ it('should handle multiple entries in RmtInf (Ustrd)', () => {
674
+ const camtXml = `<?xml version="1.0" encoding="ISO-8859-1"?>
675
+ <Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.052.001.08"
676
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
677
+ xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.052.001.08 camt.052.001.08.xsd">
678
+ <BkToCstmrAcctRpt>
679
+ <GrpHdr>
680
+ <MsgId>52D20260106T1009246445830N000000000</MsgId>
681
+ <CreDtTm>2026-01-06T10:09:24.0+01:00</CreDtTm>
682
+ </GrpHdr>
683
+ <Rpt>
684
+ <Id>0752D522026010610092464000001000</Id>
685
+ <RptPgntn>
686
+ <PgNb>1</PgNb>
687
+ <LastPgInd>true</LastPgInd>
688
+ </RptPgntn>
689
+ <ElctrncSeqNb>000000000</ElctrncSeqNb>
690
+ <CreDtTm>2026-01-06T10:09:24.0+01:00</CreDtTm>
691
+ <Acct>
692
+ <Id>
693
+ <IBAN>DE06940594210000027227</IBAN>
694
+ </Id>
695
+ <Ccy>EUR</Ccy>
696
+ <Ownr>
697
+ <Nm>John Doe</Nm>
698
+ </Ownr>
699
+ <Svcr>
700
+ <FinInstnId>
701
+ <BICFI>BANKABC1XXX</BICFI>
702
+ <Nm>ABC Bank</Nm>
703
+ <Othr>
704
+ <Id>DE 123456789</Id>
705
+ <Issr>UmsStId</Issr>
706
+ </Othr>
707
+ </FinInstnId>
708
+ </Svcr>
709
+ </Acct>
710
+ <Bal>
711
+ <Tp>
712
+ <CdOrPrtry>
713
+ <Cd>OPBD</Cd>
714
+ </CdOrPrtry>
715
+ </Tp>
716
+ <Amt Ccy="EUR">27.31</Amt>
717
+ <CdtDbtInd>DBIT</CdtDbtInd>
718
+ <Dt>
719
+ <Dt>2026-01-05</Dt>
720
+ </Dt>
721
+ </Bal>
722
+ <Bal>
723
+ <Tp>
724
+ <CdOrPrtry>
725
+ <Cd>CLBD</Cd>
726
+ </CdOrPrtry>
727
+ </Tp>
728
+ <Amt Ccy="EUR">234.81</Amt>
729
+ <CdtDbtInd>DBIT</CdtDbtInd>
730
+ <Dt>
731
+ <Dt>2026-01-05</Dt>
732
+ </Dt>
733
+ </Bal>
734
+ <Ntry>
735
+ <Amt Ccy="EUR">179.46</Amt>
736
+ <CdtDbtInd>DBIT</CdtDbtInd>
737
+ <Sts>
738
+ <Cd>BOOK</Cd>
739
+ </Sts>
740
+ <BookgDt>
741
+ <Dt>2026-01-05</Dt>
742
+ </BookgDt>
743
+ <ValDt>
744
+ <Dt>2026-01-05</Dt>
745
+ </ValDt>
746
+ <AcctSvcrRef>TXN003</AcctSvcrRef>
747
+ <BkTxCd>
748
+ <Domn>
749
+ <Cd>PMNT</Cd>
750
+ <Fmly>
751
+ <Cd>ICDT</Cd>
752
+ <SubFmlyCd>ESCT</SubFmlyCd>
753
+ </Fmly>
754
+ </Domn>
755
+ <Prtry>
756
+ <Cd>NTRF+116+02089</Cd>
757
+ <Issr>DK</Issr>
758
+ </Prtry>
759
+ </BkTxCd>
760
+ <NtryDtls>
761
+ <TxDtls>
762
+ <Refs>
763
+ <MsgId>test msgid</MsgId>
764
+ <PmtInfId>VG 2025 QUARTAL IV 12345678</PmtInfId>
765
+ <EndToEndId>VG 2025 QUARTAL IV</EndToEndId>
766
+ </Refs>
767
+ <Amt Ccy="EUR">179.46</Amt>
768
+ <BkTxCd>
769
+ <Domn>
770
+ <Cd>PMNT</Cd>
771
+ <Fmly>
772
+ <Cd>ICDT</Cd>
773
+ <SubFmlyCd>ESCT</SubFmlyCd>
774
+ </Fmly>
775
+ </Domn>
776
+ <Prtry>
777
+ <Cd>NTRF+116+02189</Cd>
778
+ <Issr>DK</Issr>
779
+ </Prtry>
780
+ </BkTxCd>
781
+ <RltdPties>
782
+ <Dbtr>
783
+ <Pty>
784
+ <Nm>DOE</Nm>
785
+ </Pty>
786
+ </Dbtr>
787
+ <DbtrAcct>
788
+ <Id>
789
+ <IBAN>DE12345678901234567890</IBAN>
790
+ </Id>
791
+ </DbtrAcct>
792
+ <Cdtr>
793
+ <Pty>
794
+ <Nm>ABC Bank</Nm>
795
+ </Pty>
796
+ </Cdtr>
797
+ <CdtrAcct>
798
+ <Id>
799
+ <IBAN>DE12345678901234567891</IBAN>
800
+ </Id>
801
+ </CdtrAcct>
802
+ </RltdPties>
803
+ <RltdAgts>
804
+ <CdtrAgt>
805
+ <FinInstnId>
806
+ <BICFI>BANKABC1XXX</BICFI>
807
+ </FinInstnId>
808
+ </CdtrAgt>
809
+ </RltdAgts>
810
+ <RmtInf>
811
+ <Ustrd>28,65EUR EREF: VG 2025 QUARTAL IV IBAN</Ustrd>
812
+ <Ustrd>: DE12345678901234567891 BIC: BANKABC1XXX</Ustrd>
813
+ </RmtInf>
814
+ </TxDtls>
815
+ </NtryDtls>
816
+ <AddtlNtryInf>ENTGELT gem. Vereinbarung</AddtlNtryInf>
817
+ </Ntry>
818
+ </Rpt>
819
+ </BkToCstmrAcctRpt>
820
+ </Document>`;
821
+ const parser = new CamtParser(camtXml);
822
+ const statements = parser.parse();
823
+ expect(statements).toHaveLength(1);
824
+ const statement = statements[0];
825
+ expect(statement.transactions).toHaveLength(1);
826
+ const transaction = statement.transactions[0];
827
+ // Check all Transaction fields filled by the parser
828
+ expect(transaction.amount).toBe(-179.46);
829
+ expect(transaction.customerReference).toBe('VG 2025 QUARTAL IV');
830
+ expect(transaction.bankReference).toBe('TXN003');
831
+ expect(transaction.purpose).toBe('28,65EUR EREF: VG 2025 QUARTAL IV IBAN: DE12345678901234567891 BIC: BANKABC1XXX');
832
+ expect(transaction.remoteName).toBe('ABC Bank');
833
+ expect(transaction.remoteAccountNumber).toBe('DE12345678901234567891');
834
+ expect(transaction.remoteBankId).toBe('BANKABC1XXX');
835
+ expect(transaction.e2eReference).toBe('VG 2025 QUARTAL IV');
836
+ // Check date fields
837
+ expect(transaction.valueDate).toBeInstanceOf(Date);
838
+ expect(transaction.valueDate.getFullYear()).toBe(2026);
839
+ expect(transaction.valueDate.getMonth()).toBe(0); // November (0-based)
840
+ expect(transaction.valueDate.getDate()).toBe(5);
841
+ expect(transaction.entryDate).toBeInstanceOf(Date);
842
+ expect(transaction.entryDate.getFullYear()).toBe(2026);
843
+ expect(transaction.entryDate.getMonth()).toBe(0); // November (0-based)
844
+ expect(transaction.entryDate.getDate()).toBe(5);
845
+ // Check transaction type and code fields
846
+ expect(transaction.fundsCode).toBe('PMNT');
847
+ expect(transaction.transactionType).toBe('ICDT');
848
+ expect(transaction.transactionCode).toBe('ESCT');
849
+ // Check additional information fields
850
+ expect(transaction.additionalInformation).toBe('ENTGELT gem. Vereinbarung');
851
+ expect(transaction.bookingText).toBe('ENTGELT gem. Vereinbarung'); // Should match additionalInformation
852
+ // Verify optional fields not set in this test
853
+ expect(transaction.primeNotesNr).toBeUndefined();
854
+ expect(transaction.remoteIdentifier).toBeUndefined();
855
+ expect(transaction.client).toBeUndefined();
856
+ expect(transaction.textKeyExtension).toBeUndefined();
857
+ });
673
858
  });
@@ -1,9 +1,9 @@
1
1
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import { AccountType } from '../bankAccount.js';
2
3
  import { FinTSClient } from '../client.js';
3
- import { Dialog } from '../dialog.js';
4
- import { FinTSConfig } from '../config.js';
5
4
  import { Language } from '../codes.js';
6
- import { AccountType } from '../bankAccount.js';
5
+ import { FinTSConfig } from '../config.js';
6
+ import { Dialog } from '../dialog.js';
7
7
  describe('FinTSClient', () => {
8
8
  const client = new FinTSClient(FinTSConfig.fromBankingInformation('product', '1.0', {
9
9
  systemId: 'SYSTEM01',
@@ -200,7 +200,7 @@ describe('FinTSClient', () => {
200
200
  expect(response.success).toBe(true);
201
201
  expect(response.requiresTan).toBe(false);
202
202
  expect(response.balance).toBeDefined();
203
- expect(response.balance.balance).toBe(2500.0);
203
+ expect(response.balance?.balance).toBe(2500.0);
204
204
  expect(dialogContinueMock).toHaveBeenCalledWith('TANREF123', '123456');
205
205
  });
206
206
  });
@@ -332,8 +332,8 @@ describe('FinTSClient', () => {
332
332
  const response = (await client.getAccountStatements('1234567890'));
333
333
  expect(response.success).toBe(true);
334
334
  expect(response.statements).toBeDefined();
335
- expect(response.statements.length).toBe(1);
336
- expect(response.statements[0].account).toBe('1234567890');
335
+ expect(response.statements?.length).toBe(1);
336
+ expect(response.statements?.[0].account).toBe('1234567890');
337
337
  });
338
338
  it('throws error when account does not support statements', async () => {
339
339
  await expect(client.getAccountStatements('9999999999')).rejects.toThrow('Account 9999999999 not found in UPD');
@@ -382,8 +382,8 @@ describe('FinTSClient', () => {
382
382
  const response = (await client.getAccountStatements('1234567890', undefined, undefined, false));
383
383
  expect(response.success).toBe(true);
384
384
  expect(response.statements).toBeDefined();
385
- expect(response.statements.length).toBe(1);
386
- expect(response.statements[0].account).toBe('1234567890');
385
+ expect(response.statements?.length).toBe(1);
386
+ expect(response.statements?.[0].account).toBe('1234567890');
387
387
  });
388
388
  });
389
389
  describe('getAccountStatementsWithTan', () => {
@@ -452,8 +452,8 @@ describe('FinTSClient', () => {
452
452
  const response = (await client.getPortfolio('9876543210'));
453
453
  expect(response.success).toBe(true);
454
454
  expect(response.portfolioStatement?.holdings).toBeDefined();
455
- expect(response.portfolioStatement.holdings.length).toBe(1);
456
- expect(response.portfolioStatement.totalValue).toBe(2550.0);
455
+ expect(response.portfolioStatement?.holdings.length).toBe(1);
456
+ expect(response.portfolioStatement?.totalValue).toBe(2550.0);
457
457
  });
458
458
  it('fetches portfolio with optional parameters', async () => {
459
459
  dialogStartMock.mockResolvedValueOnce(new Map([
@@ -490,9 +490,9 @@ describe('FinTSClient', () => {
490
490
  ]));
491
491
  const response = (await client.getPortfolio('9876543210', 'EUR', '1', 10));
492
492
  expect(response.success).toBe(true);
493
- expect(response.portfolioStatement.holdings).toBeDefined();
494
- expect(response.portfolioStatement.holdings.length).toBe(1);
495
- expect(response.portfolioStatement.holdings[0].isin).toBe('DE0001234567');
493
+ expect(response.portfolioStatement?.holdings).toBeDefined();
494
+ expect(response.portfolioStatement?.holdings.length).toBe(1);
495
+ expect(response.portfolioStatement?.holdings[0].isin).toBe('DE0001234567');
496
496
  });
497
497
  });
498
498
  describe('getPortfolioWithTan', () => {
@@ -553,8 +553,8 @@ describe('FinTSClient', () => {
553
553
  const response = (await client.getCreditCardStatements('1111222233'));
554
554
  expect(response.success).toBe(true);
555
555
  expect(response.statements).toBeDefined();
556
- expect(response.statements.length).toBe(1);
557
- expect(response.statements[0].closingBalance?.value).toBe(-150.0);
556
+ expect(response.statements?.length).toBe(1);
557
+ expect(response.statements?.[0].closingBalance?.value).toBe(-150.0);
558
558
  });
559
559
  });
560
560
  describe('getCreditCardStatementsWithTan', () => {
@@ -1,4 +1,4 @@
1
- import { describe, it, expect } from 'vitest';
1
+ import { describe, expect, it } from 'vitest';
2
2
  import { BankIdentification } from '../dataGroups/BankIdentification.js';
3
3
  describe('BankIdentification', () => {
4
4
  it('encodes correctly', () => {