@coderoftime/fints 0.1.0 → 0.3.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 (289) hide show
  1. package/CHANGELOG.md +519 -1
  2. package/README.md +138 -40
  3. package/dist/client.d.ts +49 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +242 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/core/account.d.ts +46 -7
  8. package/dist/core/account.d.ts.map +1 -1
  9. package/dist/core/account.js +143 -24
  10. package/dist/core/account.js.map +1 -1
  11. package/dist/core/amount.d.ts +15 -4
  12. package/dist/core/amount.d.ts.map +1 -1
  13. package/dist/core/amount.js +46 -9
  14. package/dist/core/amount.js.map +1 -1
  15. package/dist/core/balance.d.ts +4 -0
  16. package/dist/core/balance.d.ts.map +1 -1
  17. package/dist/core/balance.js +11 -5
  18. package/dist/core/balance.js.map +1 -1
  19. package/dist/core/bank-info.d.ts +21 -4
  20. package/dist/core/bank-info.d.ts.map +1 -1
  21. package/dist/core/bank-info.js +26 -5
  22. package/dist/core/bank-info.js.map +1 -1
  23. package/dist/core/client.d.ts +81 -19
  24. package/dist/core/client.d.ts.map +1 -1
  25. package/dist/core/config.d.ts +40 -20
  26. package/dist/core/config.d.ts.map +1 -1
  27. package/dist/core/config.js +85 -30
  28. package/dist/core/config.js.map +1 -1
  29. package/dist/core/errors.d.ts +100 -26
  30. package/dist/core/errors.d.ts.map +1 -1
  31. package/dist/core/errors.js +136 -53
  32. package/dist/core/errors.js.map +1 -1
  33. package/dist/core/feedback.d.ts +11 -1
  34. package/dist/core/feedback.d.ts.map +1 -1
  35. package/dist/core/feedback.js +14 -2
  36. package/dist/core/feedback.js.map +1 -1
  37. package/dist/core/transaction.d.ts +11 -1
  38. package/dist/core/transaction.d.ts.map +1 -1
  39. package/dist/core/transaction.js +21 -4
  40. package/dist/core/transaction.js.map +1 -1
  41. package/dist/core/transport.d.ts +48 -6
  42. package/dist/core/transport.d.ts.map +1 -1
  43. package/dist/core/transport.js +126 -29
  44. package/dist/core/transport.js.map +1 -1
  45. package/dist/formats/camt.d.ts +28 -5
  46. package/dist/formats/camt.d.ts.map +1 -1
  47. package/dist/formats/camt.js +132 -50
  48. package/dist/formats/camt.js.map +1 -1
  49. package/dist/formats/mt940.d.ts +29 -5
  50. package/dist/formats/mt940.d.ts.map +1 -1
  51. package/dist/formats/mt940.js +209 -113
  52. package/dist/formats/mt940.js.map +1 -1
  53. package/dist/formats/readers.d.ts +6 -2
  54. package/dist/formats/readers.d.ts.map +1 -1
  55. package/dist/formats/readers.js +28 -29
  56. package/dist/formats/readers.js.map +1 -1
  57. package/dist/formats/record-budget.d.ts +7 -0
  58. package/dist/formats/record-budget.d.ts.map +1 -0
  59. package/dist/formats/record-budget.js +17 -0
  60. package/dist/formats/record-budget.js.map +1 -0
  61. package/dist/formats/sepa-purpose.d.ts +9 -0
  62. package/dist/formats/sepa-purpose.d.ts.map +1 -1
  63. package/dist/formats/sepa-purpose.js +32 -2
  64. package/dist/formats/sepa-purpose.js.map +1 -1
  65. package/dist/index.d.ts +3 -3
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +2 -2
  68. package/dist/index.js.map +1 -1
  69. package/dist/session/app-approval.d.ts +11 -5
  70. package/dist/session/app-approval.d.ts.map +1 -1
  71. package/dist/session/app-approval.js +23 -12
  72. package/dist/session/app-approval.js.map +1 -1
  73. package/dist/session/dialog-runner.d.ts +11 -11
  74. package/dist/session/dialog-runner.d.ts.map +1 -1
  75. package/dist/session/dialog-runner.js +34 -19
  76. package/dist/session/dialog-runner.js.map +1 -1
  77. package/dist/session/login-guard.d.ts +54 -49
  78. package/dist/session/login-guard.d.ts.map +1 -1
  79. package/dist/session/login-guard.js +170 -83
  80. package/dist/session/login-guard.js.map +1 -1
  81. package/dist/session/sepa-accounts.d.ts +20 -14
  82. package/dist/session/sepa-accounts.d.ts.map +1 -1
  83. package/dist/session/sepa-accounts.js +62 -46
  84. package/dist/session/sepa-accounts.js.map +1 -1
  85. package/dist/session/session-setup.d.ts +41 -24
  86. package/dist/session/session-setup.d.ts.map +1 -1
  87. package/dist/session/session-setup.js +106 -63
  88. package/dist/session/session-setup.js.map +1 -1
  89. package/dist/session/session-state.d.ts +10 -6
  90. package/dist/session/session-state.d.ts.map +1 -1
  91. package/dist/session/session-state.js +72 -18
  92. package/dist/session/session-state.js.map +1 -1
  93. package/dist/session/signed-dialog.d.ts +83 -0
  94. package/dist/session/signed-dialog.d.ts.map +1 -0
  95. package/dist/session/signed-dialog.js +185 -0
  96. package/dist/session/signed-dialog.js.map +1 -0
  97. package/dist/session/tan-selection.d.ts +26 -18
  98. package/dist/session/tan-selection.d.ts.map +1 -1
  99. package/dist/session/tan-selection.js +44 -33
  100. package/dist/session/tan-selection.js.map +1 -1
  101. package/dist/session/user-prompts.d.ts +14 -5
  102. package/dist/session/user-prompts.d.ts.map +1 -1
  103. package/dist/session/user-prompts.js +53 -18
  104. package/dist/session/user-prompts.js.map +1 -1
  105. package/dist/tan/challenge.d.ts +47 -24
  106. package/dist/tan/challenge.d.ts.map +1 -1
  107. package/dist/tan/challenge.js +56 -51
  108. package/dist/tan/challenge.js.map +1 -1
  109. package/dist/tan/flicker.d.ts +11 -1
  110. package/dist/tan/flicker.d.ts.map +1 -1
  111. package/dist/tan/flicker.js +70 -24
  112. package/dist/tan/flicker.js.map +1 -1
  113. package/dist/tan/tan-image.d.ts +6 -2
  114. package/dist/tan/tan-image.d.ts.map +1 -1
  115. package/dist/tan/tan-image.js +14 -6
  116. package/dist/tan/tan-image.js.map +1 -1
  117. package/dist/tan/tan-models.d.ts +14 -2
  118. package/dist/tan/tan-models.d.ts.map +1 -1
  119. package/dist/tan/tan-models.js +24 -7
  120. package/dist/tan/tan-models.js.map +1 -1
  121. package/dist/util/arguments.d.ts +13 -0
  122. package/dist/util/arguments.d.ts.map +1 -0
  123. package/dist/util/arguments.js +40 -0
  124. package/dist/util/arguments.js.map +1 -0
  125. package/dist/util/async.d.ts +4 -3
  126. package/dist/util/async.d.ts.map +1 -1
  127. package/dist/util/async.js +6 -7
  128. package/dist/util/async.js.map +1 -1
  129. package/dist/util/bytes.d.ts +3 -4
  130. package/dist/util/bytes.d.ts.map +1 -1
  131. package/dist/util/bytes.js +13 -21
  132. package/dist/util/bytes.js.map +1 -1
  133. package/dist/util/call-context.d.ts.map +1 -1
  134. package/dist/util/call-context.js +3 -2
  135. package/dist/util/call-context.js.map +1 -1
  136. package/dist/util/dates.d.ts +6 -20
  137. package/dist/util/dates.d.ts.map +1 -1
  138. package/dist/util/dates.js +58 -28
  139. package/dist/util/dates.js.map +1 -1
  140. package/dist/util/errors.d.ts +13 -3
  141. package/dist/util/errors.d.ts.map +1 -1
  142. package/dist/util/errors.js +19 -6
  143. package/dist/util/errors.js.map +1 -1
  144. package/dist/util/immutable-map.d.ts +5 -2
  145. package/dist/util/immutable-map.d.ts.map +1 -1
  146. package/dist/util/immutable-map.js +15 -12
  147. package/dist/util/immutable-map.js.map +1 -1
  148. package/dist/util/inspect.d.ts +11 -0
  149. package/dist/util/inspect.d.ts.map +1 -0
  150. package/dist/util/inspect.js +14 -0
  151. package/dist/util/inspect.js.map +1 -0
  152. package/dist/util/json.d.ts +4 -0
  153. package/dist/util/json.d.ts.map +1 -1
  154. package/dist/util/json.js +18 -0
  155. package/dist/util/json.js.map +1 -1
  156. package/dist/util/text.d.ts +38 -5
  157. package/dist/util/text.d.ts.map +1 -1
  158. package/dist/util/text.js +90 -16
  159. package/dist/util/text.js.map +1 -1
  160. package/dist/util/xml.d.ts +9 -6
  161. package/dist/util/xml.d.ts.map +1 -1
  162. package/dist/util/xml.js +129 -56
  163. package/dist/util/xml.js.map +1 -1
  164. package/dist/v3/account-extension.d.ts.map +1 -1
  165. package/dist/v3/account-extension.js +7 -10
  166. package/dist/v3/account-extension.js.map +1 -1
  167. package/dist/v3/bank-connection.d.ts +54 -0
  168. package/dist/v3/bank-connection.d.ts.map +1 -0
  169. package/dist/v3/bank-connection.js +118 -0
  170. package/dist/v3/bank-connection.js.map +1 -0
  171. package/dist/v3/dialog.d.ts +84 -46
  172. package/dist/v3/dialog.d.ts.map +1 -1
  173. package/dist/v3/dialog.js +174 -60
  174. package/dist/v3/dialog.js.map +1 -1
  175. package/dist/v3/message.d.ts +32 -11
  176. package/dist/v3/message.d.ts.map +1 -1
  177. package/dist/v3/message.js +144 -83
  178. package/dist/v3/message.js.map +1 -1
  179. package/dist/v3/parameter-store.d.ts +111 -0
  180. package/dist/v3/parameter-store.d.ts.map +1 -0
  181. package/dist/v3/parameter-store.js +197 -0
  182. package/dist/v3/parameter-store.js.map +1 -0
  183. package/dist/v3/parameters.d.ts +44 -17
  184. package/dist/v3/parameters.d.ts.map +1 -1
  185. package/dist/v3/parameters.js +136 -60
  186. package/dist/v3/parameters.js.map +1 -1
  187. package/dist/v3/protocol.d.ts +50 -50
  188. package/dist/v3/protocol.d.ts.map +1 -1
  189. package/dist/v3/protocol.js +91 -210
  190. package/dist/v3/protocol.js.map +1 -1
  191. package/dist/v3/queries.d.ts +51 -0
  192. package/dist/v3/queries.d.ts.map +1 -0
  193. package/dist/v3/queries.js +128 -0
  194. package/dist/v3/queries.js.map +1 -0
  195. package/dist/v3/segments.d.ts +43 -19
  196. package/dist/v3/segments.d.ts.map +1 -1
  197. package/dist/v3/segments.js +84 -33
  198. package/dist/v3/segments.js.map +1 -1
  199. package/dist/v3/syntax.d.ts +68 -13
  200. package/dist/v3/syntax.d.ts.map +1 -1
  201. package/dist/v3/syntax.js +183 -102
  202. package/dist/v3/syntax.js.map +1 -1
  203. package/package.json +10 -6
  204. package/src/client.ts +293 -0
  205. package/src/core/account.ts +153 -24
  206. package/src/core/amount.ts +45 -10
  207. package/src/core/balance.ts +12 -5
  208. package/src/core/bank-info.ts +29 -5
  209. package/src/core/client.ts +83 -19
  210. package/src/core/config.ts +95 -35
  211. package/src/core/errors.ts +148 -54
  212. package/src/core/feedback.ts +16 -2
  213. package/src/core/transaction.ts +22 -4
  214. package/src/core/transport.ts +153 -32
  215. package/src/formats/camt.ts +153 -45
  216. package/src/formats/mt940.ts +244 -122
  217. package/src/formats/readers.ts +28 -31
  218. package/src/formats/record-budget.ts +18 -0
  219. package/src/formats/sepa-purpose.ts +29 -2
  220. package/src/index.ts +4 -2
  221. package/src/session/app-approval.ts +51 -38
  222. package/src/session/dialog-runner.ts +61 -31
  223. package/src/session/login-guard.ts +189 -87
  224. package/src/session/sepa-accounts.ts +63 -45
  225. package/src/session/session-setup.ts +105 -68
  226. package/src/session/session-state.ts +74 -23
  227. package/src/session/signed-dialog.ts +222 -0
  228. package/src/session/tan-selection.ts +50 -39
  229. package/src/session/user-prompts.ts +62 -18
  230. package/src/tan/challenge.ts +87 -64
  231. package/src/tan/flicker.ts +72 -23
  232. package/src/tan/tan-image.ts +15 -6
  233. package/src/tan/tan-models.ts +26 -7
  234. package/src/util/arguments.ts +40 -0
  235. package/src/util/async.ts +10 -9
  236. package/src/util/bytes.ts +14 -20
  237. package/src/util/call-context.ts +3 -2
  238. package/src/util/dates.ts +64 -33
  239. package/src/util/errors.ts +22 -6
  240. package/src/util/immutable-map.ts +15 -12
  241. package/src/util/inspect.ts +14 -0
  242. package/src/util/json.ts +16 -0
  243. package/src/util/text.ts +87 -15
  244. package/src/util/xml.ts +130 -52
  245. package/src/v3/account-extension.ts +7 -12
  246. package/src/v3/bank-connection.ts +126 -0
  247. package/src/v3/dialog.ts +186 -92
  248. package/src/v3/message.ts +140 -79
  249. package/src/v3/parameter-store.ts +226 -0
  250. package/src/v3/parameters.ts +166 -66
  251. package/src/v3/protocol.ts +103 -253
  252. package/src/v3/queries.ts +198 -0
  253. package/src/v3/segments.ts +86 -31
  254. package/src/v3/syntax.ts +172 -93
  255. package/dist/session/bank-connection.d.ts +0 -28
  256. package/dist/session/bank-connection.d.ts.map +0 -1
  257. package/dist/session/bank-connection.js +0 -48
  258. package/dist/session/bank-connection.js.map +0 -1
  259. package/dist/session/parameter-data.d.ts +0 -83
  260. package/dist/session/parameter-data.d.ts.map +0 -1
  261. package/dist/session/parameter-data.js +0 -68
  262. package/dist/session/parameter-data.js.map +0 -1
  263. package/dist/session/pin-tan-client.d.ts +0 -54
  264. package/dist/session/pin-tan-client.d.ts.map +0 -1
  265. package/dist/session/pin-tan-client.js +0 -153
  266. package/dist/session/pin-tan-client.js.map +0 -1
  267. package/dist/session/pin-tan-dialog.d.ts +0 -71
  268. package/dist/session/pin-tan-dialog.d.ts.map +0 -1
  269. package/dist/session/pin-tan-dialog.js +0 -124
  270. package/dist/session/pin-tan-dialog.js.map +0 -1
  271. package/dist/session/protocol.d.ts +0 -209
  272. package/dist/session/protocol.d.ts.map +0 -1
  273. package/dist/session/protocol.js +0 -75
  274. package/dist/session/protocol.js.map +0 -1
  275. package/dist/session/response-handler.d.ts +0 -48
  276. package/dist/session/response-handler.d.ts.map +0 -1
  277. package/dist/session/response-handler.js +0 -121
  278. package/dist/session/response-handler.js.map +0 -1
  279. package/dist/v3/client.d.ts +0 -24
  280. package/dist/v3/client.d.ts.map +0 -1
  281. package/dist/v3/client.js +0 -16
  282. package/dist/v3/client.js.map +0 -1
  283. package/src/session/bank-connection.ts +0 -51
  284. package/src/session/parameter-data.ts +0 -137
  285. package/src/session/pin-tan-client.ts +0 -186
  286. package/src/session/pin-tan-dialog.ts +0 -160
  287. package/src/session/protocol.ts +0 -311
  288. package/src/session/response-handler.ts +0 -130
  289. package/src/v3/client.ts +0 -29
@@ -0,0 +1,197 @@
1
+ // Internal to the package, and named after the FinTS specification. Documentation is where the meaning is not evident.
2
+ import { FormatError } from '../util/errors.js';
3
+ import { readOptionalBoolean, readOptionalObject, readOptionalString } from '../util/json.js';
4
+ import { trimBlanks } from '../util/text.js';
5
+ import { Bpd3, decodeSegments, Upd3 } from './parameters.js';
6
+ import { Verbatim } from './syntax.js';
7
+ /**
8
+ * The parameter data and IDs the bank sends the user `config` names, which the messages and business transactions
9
+ * take, and which the saved state keeps: the bank and user parameter data, the customer system ID, and the names of
10
+ * the TAN media as the bank sent them.
11
+ */
12
+ export class ParameterStore {
13
+ config;
14
+ systemIdValue;
15
+ bpd;
16
+ /**
17
+ * Whether the bank parameter data came from the anonymous dialog. They serve until those of a dialog signed with the
18
+ * PIN come: the bank may send a user other ones (PIN/TAN B.4.3.1), and the anonymous dialog may have had to do
19
+ * without the announcement of strong customer authentication. So signed dialogs report version 0 for them, which has
20
+ * the bank send its parameter data anew.
21
+ */
22
+ bpdAnonymous = false;
23
+ /** The limits a refresh took from the anonymous dialog's parameter data (`keepRefreshedLimits`). */
24
+ refreshedLimits;
25
+ upd;
26
+ /**
27
+ * The names of the TAN media in the bank's last list whose text would not go back as the bank sent them, by their
28
+ * text, as `parseTanMedia` notes them (`readTanMediumNames` for a state of 0.2.0). Saved with the state, as the
29
+ * medium in use is.
30
+ */
31
+ tanMediumNames = new Map();
32
+ constructor(config) {
33
+ this.config = config;
34
+ }
35
+ /** The bank parameter data received so far, if any. */
36
+ get bankParameters() {
37
+ return this.bpd;
38
+ }
39
+ /** The user parameter data received so far, if any. */
40
+ get userParameters() {
41
+ return this.upd;
42
+ }
43
+ /**
44
+ * The customer system ID the bank assigned in the synchronization, as `Segment.verbatim` reads it; `undefined`
45
+ * before. No dialog signed with the PIN starts without it.
46
+ */
47
+ get systemId() {
48
+ return this.systemIdValue;
49
+ }
50
+ /**
51
+ * The limits on the messages the client sends: those of the bank parameter data, unless a refresh took others
52
+ * (`keepRefreshedLimits`).
53
+ */
54
+ get limits() {
55
+ const bpd = this.bpd;
56
+ return this.refreshedLimits ?? { pinLength: bpd?.pinTan.pinLength, maxMessageSize: bpd?.bankInfo.maxMessageSize };
57
+ }
58
+ /**
59
+ * The version of the bank parameter data a dialog reports: 0 where there are none, only the anonymous dialog's, or
60
+ * where limits a refresh took stand in for theirs (`keepRefreshedLimits`).
61
+ */
62
+ get reportedBpdVersion() {
63
+ return this.bpd === undefined || this.bpdAnonymous || this.refreshedLimits !== undefined ? 0 : this.bpd.version;
64
+ }
65
+ /**
66
+ * The version of the user parameter data a signed dialog reports: 0 where there are none, or where they name another
67
+ * user ID than the one logging in, so that the bank sends the user's anew. They may be another user's, as where a
68
+ * relay mixed up the answers to the synchronizations of two users and the bank takes the other user's customer system
69
+ * ID. A bank that names the user by another ID than the login's, such as for an alias, only sends its user parameter
70
+ * data at every login.
71
+ */
72
+ get reportedUpdVersion() {
73
+ const upd = this.upd;
74
+ return upd !== undefined && upd.userId === this.config.userId ? upd.version : 0;
75
+ }
76
+ /**
77
+ * Drops the customer system ID the bank no longer accepts, so that a synchronization is required again, and with it
78
+ * the user parameter data, which the next login delivers anew: what came along with an ID the bank does not know may
79
+ * not be the user's either (`reportedUpdVersion`). Returns whether there was an ID.
80
+ */
81
+ forgetSystemId() {
82
+ const had = this.systemIdValue !== undefined;
83
+ this.systemIdValue = undefined;
84
+ this.upd = undefined;
85
+ return had;
86
+ }
87
+ /**
88
+ * Keeps the parameter data and IDs in `response`, an answer to the opening of a signed dialog: the login, which may be
89
+ * a synchronization, or its approval. The bank sends them there (Formals C.3.1); taken from the answer to an order,
90
+ * the parameter data a bank repeats there in part would replace the complete ones.
91
+ */
92
+ keep(response) {
93
+ this.keepBankParameters(response, false);
94
+ this.upd = Upd3.fromSegments(response.segments, this.config.bankCode, this.config.countryCode) ?? this.upd;
95
+ this.systemIdValue = response.find('HISYN')?.verbatim(1) ?? this.systemIdValue;
96
+ }
97
+ /**
98
+ * Keeps the bank parameter data in `response`, the answer of an anonymous dialog, where there are none from a dialog
99
+ * signed with the PIN: until those come, the dialogs signed with the PIN have the bank send its parameter data anew,
100
+ * since it may send a user other ones (PIN/TAN B.4.3.1). Keeps nothing that belongs to a user.
101
+ */
102
+ keepAnonymous(response) {
103
+ if (this.bpd === undefined || this.bpdAnonymous)
104
+ this.keepBankParameters(response, true);
105
+ }
106
+ /**
107
+ * Keeps the limits of the bank parameter data in `response`, the answer of an anonymous dialog the client asked for
108
+ * after the limits kept ruled out a login: those may be outdated, as saved ones are. Parameter data of the version
109
+ * kept tell nothing new, and the bank may send a user other ones than the anonymous dialog (PIN/TAN B.4.3.1), so of
110
+ * those of another version it keeps the limits only, and the PIN lengths only where they state them (HIPINS). They
111
+ * stand in for those kept until a dialog signed with the PIN brings parameter data.
112
+ */
113
+ keepRefreshedLimits(response) {
114
+ const fresh = Bpd3.fromSegments(response.segments, this.config.bankCode);
115
+ if (fresh === undefined || fresh.version === this.bpd?.version)
116
+ return;
117
+ this.refreshedLimits = {
118
+ pinLength: fresh.pinTan.pinLength ?? this.limits.pinLength,
119
+ maxMessageSize: fresh.bankInfo.maxMessageSize,
120
+ };
121
+ }
122
+ keepBankParameters(response, anonymous) {
123
+ const bpd = Bpd3.fromSegments(response.segments, this.config.bankCode);
124
+ if (bpd === undefined)
125
+ return;
126
+ this.bpd = bpd;
127
+ this.bpdAnonymous = anonymous;
128
+ this.refreshedLimits = undefined;
129
+ }
130
+ /** Keeps `names`, the names of the bank's latest list of TAN media as `parseTanMedia` notes them. */
131
+ keepTanMediumNames(names) {
132
+ this.tanMediumNames = names;
133
+ }
134
+ /**
135
+ * The TAN medium `name` to send: as the bank sent it, where its last list of TAN media noted that (`parseTanMedia`);
136
+ * otherwise as text, which goes out without the blanks at either end a name the app passes may have.
137
+ */
138
+ tanMediumToSend(name) {
139
+ const asSent = this.tanMediumNames.get(name);
140
+ return asSent === undefined ? name : new Verbatim(asSent);
141
+ }
142
+ /** The parameter data and IDs as JSON data, for the client's saved state. */
143
+ saveState() {
144
+ return {
145
+ systemId: this.systemIdValue ?? null,
146
+ bpd: this.bpd?.encoded ?? null,
147
+ bpdAnonymous: this.bpdAnonymous,
148
+ upd: this.upd?.encoded ?? null,
149
+ tanMediumNames: Object.fromEntries(this.tanMediumNames),
150
+ [blanksNotedKey]: true,
151
+ };
152
+ }
153
+ /**
154
+ * Restores what `saveState` saved, with `tanMedium`, the medium in use the state holds; throws if `saved` is damaged,
155
+ * leaving the store unchanged.
156
+ */
157
+ restoreState(saved, tanMedium) {
158
+ const bpd = readOptionalString(saved, 'bpd');
159
+ const upd = readOptionalString(saved, 'upd');
160
+ const restoredSystemId = readOptionalString(saved, 'systemId');
161
+ // A state of fints-ts 0.1 or the Dart package 0.2.0 does not tell, so its parameter data are fetched anew.
162
+ const restoredBpdAnonymous = readOptionalBoolean(saved, 'bpdAnonymous') ?? true;
163
+ const restoredBpd = bpd === undefined ? undefined : Bpd3.fromSegments(decodeSegments(bpd), this.config.bankCode);
164
+ const restoredUpd = upd === undefined
165
+ ? undefined
166
+ : Upd3.fromSegments(decodeSegments(upd), this.config.bankCode, this.config.countryCode);
167
+ const restoredNames = readTanMediumNames(saved, tanMedium);
168
+ this.systemIdValue = restoredSystemId;
169
+ this.bpd = restoredBpd;
170
+ this.bpdAnonymous = restoredBpdAnonymous;
171
+ this.refreshedLimits = undefined;
172
+ this.upd = restoredUpd;
173
+ this.tanMediumNames = restoredNames;
174
+ }
175
+ }
176
+ /** The key of the saved state that tells the TAN medium names apart from those version 0.2.0 saved. */
177
+ const blanksNotedKey = 'tanMediumBlanksNoted';
178
+ /**
179
+ * The TAN medium names `saveState` saved; none in a state of fints-ts 0.1 or the Dart package 0.2.0.
180
+ *
181
+ * Version 0.2.0 noted no name with blanks at either end, and sent every name as it is, so `tanMedium` keeps going out
182
+ * with its blanks from such a state: the bank may have listed it so.
183
+ */
184
+ function readTanMediumNames(saved, tanMedium) {
185
+ const listed = readOptionalObject(saved, 'tanMediumNames');
186
+ const names = new Map(Object.entries(listed ?? {}).map(([name, asSent]) => {
187
+ if (typeof asSent !== 'string')
188
+ throw new FormatError('Saved state: a TAN medium name is not a string');
189
+ return [name, asSent];
190
+ }));
191
+ const savedBy020 = listed !== undefined && readOptionalBoolean(saved, blanksNotedKey) !== true;
192
+ if (savedBy020 && tanMedium !== undefined && trimBlanks(tanMedium) !== tanMedium && !names.has(tanMedium)) {
193
+ names.set(tanMedium, tanMedium);
194
+ }
195
+ return names;
196
+ }
197
+ //# sourceMappingURL=parameter-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-store.js","sourceRoot":"","sources":["../../src/v3/parameter-store.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,27 @@
1
1
  import { Account } from '../core/account.js';
2
2
  import type { Balance } from '../core/balance.js';
3
3
  import { BankInfo } from '../core/bank-info.js';
4
- import { type BankParameters, type UserParameters } from '../session/parameter-data.js';
5
4
  import { TanMethod } from '../tan/tan-models.js';
6
5
  import { type Segment } from './syntax.js';
6
+ /** `bpd`, or `FinTsProtocolError` if the bank has not sent its parameter data yet. */
7
+ export declare function requireBankParameters(bpd: Bpd3 | undefined): Bpd3;
7
8
  /** FinTS 3.0 bank parameter data (BPD): HIBPA and the parameter segments (`HI…S`), parsed once. */
8
- export declare class Bpd3 implements BankParameters {
9
- readonly segments: readonly Segment[];
9
+ export declare class Bpd3 {
10
10
  readonly bankInfo: BankInfo;
11
11
  /** The two-step TAN methods of HITANS versions 6 and 7, by security function. */
12
12
  private readonly offeredMethods;
13
+ /** Two-step TAN methods the bank offers and the client can run. */
13
14
  readonly tanMethods: readonly TanMethod[];
15
+ /** Security functions of the two-step methods the bank offers in a form the client cannot run. */
14
16
  readonly unsupportedTanMethods: readonly string[];
15
17
  readonly pinTan: PinTanParameters;
16
- /** camt formats the bank offers for HKCAZ. */
18
+ /** The camt.052 formats the bank offers for HKCAZ, the one camt message the client reads. */
17
19
  readonly camtFormats: readonly string[];
20
+ /**
21
+ * Whether an international account (KTI) may name the national account as well: HISPAS does not rule it out
22
+ * ("Nationale Kontoverbindung erlaubt").
23
+ */
24
+ readonly nationalAccountAllowed: boolean;
18
25
  /** Versions of each parameter segment, by segment type. */
19
26
  private readonly versions;
20
27
  /**
@@ -22,17 +29,16 @@ export declare class Bpd3 implements BankParameters {
22
29
  * these may be sent once the parameter data are known; `0`, the default, only before (Formals C.3.1.3).
23
30
  */
24
31
  readonly dialogLanguage: number;
32
+ /** The segments as the saved state keeps them. */
33
+ readonly encoded: string;
25
34
  private constructor();
35
+ /** The version of the parameter data, which the client reports back so that the bank sends newer ones only. */
26
36
  get version(): number;
27
- get pinLength(): {
28
- min: number | undefined;
29
- max: number | undefined;
30
- };
31
- allowsWithPinTan(transaction: string): boolean;
32
37
  /** The BPD in `all`, or `undefined` if they contain no HIBPA segment. */
33
38
  static fromSegments(all: readonly Segment[], fallbackBankCode: string): Bpd3 | undefined;
34
39
  /** The parameter segment type of a business transaction: `HKSAL` → `HISALS`. */
35
40
  static parameterName(transaction: string): string;
41
+ /** The highest version of `transaction` that the bank offers and the client `implemented`. */
36
42
  bestVersion(transaction: string, implemented: ReadonlySet<number>): number | undefined;
37
43
  /** The version of the HKTAN segments that go with `method`; `undefined` for a method the bank does not offer. */
38
44
  tanVersion(method: TanMethod): number | undefined;
@@ -43,11 +49,11 @@ export declare class Bpd3 implements BankParameters {
43
49
  */
44
50
  export declare class PinTanParameters {
45
51
  private readonly tanRequired;
46
- /** The shortest and longest PIN the bank takes. */
52
+ /** The shortest and longest PIN the bank takes; `undefined` where the bank parameter data have no HIPINS. */
47
53
  readonly pinLength: {
48
54
  min: number | undefined;
49
55
  max: number | undefined;
50
- };
56
+ } | undefined;
51
57
  private constructor();
52
58
  /** Reads the HIPINS segment of the highest version. */
53
59
  static parse(segments: readonly Segment[]): PinTanParameters;
@@ -57,23 +63,44 @@ export declare class PinTanParameters {
57
63
  allowsWithPinTan(segmentType: string): boolean;
58
64
  }
59
65
  /** FinTS 3.0 user parameter data (UPD): HIUPA and the accounts (HIUPD), parsed once. */
60
- export declare class Upd3 implements UserParameters {
61
- readonly segments: readonly Segment[];
66
+ export declare class Upd3 {
67
+ /** The user the bank sent them for; `undefined` where it names none. */
68
+ readonly userId: string | undefined;
69
+ /** The version of the parameter data, which the client reports back so that the bank sends newer ones only. */
62
70
  readonly version: number;
71
+ /**
72
+ * Whether the lists of permitted transactions are complete: the bank permits nothing they leave out ("UPD-Verwendung"
73
+ * 0).
74
+ */
63
75
  readonly listsAllTransactions: boolean;
76
+ /** The transactions any entry lists as permitted, with or without an account. */
64
77
  readonly listedTransactions: ReadonlySet<string>;
65
78
  /** The accounts with the extension each carries, where it does. */
66
79
  private readonly entries;
80
+ /** The accounts the user may access. */
67
81
  readonly accounts: readonly Account[];
82
+ /** The segments as the saved state keeps them. */
83
+ readonly encoded: string;
68
84
  /** `listsAll` tells whether HIUPA declares the lists of permitted transactions complete ("UPD-Verwendung" 0). */
69
85
  private constructor();
70
- /** FinTS 3.0 UPD do not list the allowed TAN methods; the bank reports them with return code 3920. */
71
- get allowedTanMethods(): readonly string[];
86
+ /**
87
+ * The balance of `account` the user parameter data carry, where it holds all a balance query would deliver, so that
88
+ * the client asks for none (Formals E.3.1, F.3.2); `undefined` otherwise.
89
+ */
72
90
  completeBalance(account: Account): Balance | undefined;
73
91
  /** The UPD in `all`, or `undefined` if they contain no HIUPA segment. */
74
92
  static fromSegments(all: readonly Segment[], defaultBankCode: string, defaultCountry: string): Upd3 | undefined;
75
93
  }
76
- /** Serializes parameter segments for the saved state. */
77
- export declare function encodeSegments(segments: readonly Segment[]): string;
94
+ /**
95
+ * The version of `transaction` to send, for `account` where it concerns one: the highest the bank offers and the client
96
+ * `implemented`. `undefined` where there is none, or the parameter data do not permit the transaction
97
+ * (`permitsTransaction`).
98
+ */
99
+ export declare function offeredVersion(bpd: Bpd3 | undefined, upd: Upd3 | undefined, transaction: string, implemented: ReadonlySet<number>, options: {
100
+ account?: Account;
101
+ requiresEntry?: boolean;
102
+ }): number | undefined;
103
+ /** Whether the bank lists `transaction`, such as `HKCAZ`, as permitted for `account`. */
104
+ export declare function lists(account: Account, transaction: string): boolean;
78
105
  export declare function decodeSegments(data: string): Segment[];
79
106
  //# sourceMappingURL=parameters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../src/v3/parameters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../src/v3/parameters.ts"],"names":[],"mappings":"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"}