@coderoftime/fints 0.0.0-stage → 0.1.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 (254) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +28 -0
  3. package/README.md +156 -2
  4. package/dist/core/account.d.ts +140 -0
  5. package/dist/core/account.d.ts.map +1 -0
  6. package/dist/core/account.js +174 -0
  7. package/dist/core/account.js.map +1 -0
  8. package/dist/core/amount.d.ts +62 -0
  9. package/dist/core/amount.d.ts.map +1 -0
  10. package/dist/core/amount.js +189 -0
  11. package/dist/core/amount.js.map +1 -0
  12. package/dist/core/balance.d.ts +54 -0
  13. package/dist/core/balance.d.ts.map +1 -0
  14. package/dist/core/balance.js +53 -0
  15. package/dist/core/balance.js.map +1 -0
  16. package/dist/core/bank-info.d.ts +49 -0
  17. package/dist/core/bank-info.d.ts.map +1 -0
  18. package/dist/core/bank-info.js +52 -0
  19. package/dist/core/bank-info.js.map +1 -0
  20. package/dist/core/client.d.ts +126 -0
  21. package/dist/core/client.d.ts.map +1 -0
  22. package/dist/core/client.js +2 -0
  23. package/dist/core/client.js.map +1 -0
  24. package/dist/core/config.d.ts +68 -0
  25. package/dist/core/config.d.ts.map +1 -0
  26. package/dist/core/config.js +113 -0
  27. package/dist/core/config.js.map +1 -0
  28. package/dist/core/errors.d.ts +91 -0
  29. package/dist/core/errors.d.ts.map +1 -0
  30. package/dist/core/errors.js +182 -0
  31. package/dist/core/errors.js.map +1 -0
  32. package/dist/core/feedback.d.ts +69 -0
  33. package/dist/core/feedback.d.ts.map +1 -0
  34. package/dist/core/feedback.js +124 -0
  35. package/dist/core/feedback.js.map +1 -0
  36. package/dist/core/transaction.d.ts +98 -0
  37. package/dist/core/transaction.d.ts.map +1 -0
  38. package/dist/core/transaction.js +91 -0
  39. package/dist/core/transaction.js.map +1 -0
  40. package/dist/core/transport.d.ts +37 -0
  41. package/dist/core/transport.d.ts.map +1 -0
  42. package/dist/core/transport.js +92 -0
  43. package/dist/core/transport.js.map +1 -0
  44. package/dist/formats/camt.d.ts +12 -0
  45. package/dist/formats/camt.d.ts.map +1 -0
  46. package/dist/formats/camt.js +159 -0
  47. package/dist/formats/camt.js.map +1 -0
  48. package/dist/formats/mt940.d.ts +42 -0
  49. package/dist/formats/mt940.d.ts.map +1 -0
  50. package/dist/formats/mt940.js +297 -0
  51. package/dist/formats/mt940.js.map +1 -0
  52. package/dist/formats/readers.d.ts +11 -0
  53. package/dist/formats/readers.d.ts.map +1 -0
  54. package/dist/formats/readers.js +47 -0
  55. package/dist/formats/readers.js.map +1 -0
  56. package/dist/formats/sepa-purpose.d.ts +22 -0
  57. package/dist/formats/sepa-purpose.d.ts.map +1 -0
  58. package/dist/formats/sepa-purpose.js +68 -0
  59. package/dist/formats/sepa-purpose.js.map +1 -0
  60. package/dist/index.d.ts +28 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +27 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/session/app-approval.d.ts +60 -0
  65. package/dist/session/app-approval.d.ts.map +1 -0
  66. package/dist/session/app-approval.js +215 -0
  67. package/dist/session/app-approval.js.map +1 -0
  68. package/dist/session/bank-connection.d.ts +28 -0
  69. package/dist/session/bank-connection.d.ts.map +1 -0
  70. package/dist/session/bank-connection.js +48 -0
  71. package/dist/session/bank-connection.js.map +1 -0
  72. package/dist/session/dialog-runner.d.ts +34 -0
  73. package/dist/session/dialog-runner.d.ts.map +1 -0
  74. package/dist/session/dialog-runner.js +112 -0
  75. package/dist/session/dialog-runner.js.map +1 -0
  76. package/dist/session/login-guard.d.ts +73 -0
  77. package/dist/session/login-guard.d.ts.map +1 -0
  78. package/dist/session/login-guard.js +109 -0
  79. package/dist/session/login-guard.js.map +1 -0
  80. package/dist/session/parameter-data.d.ts +83 -0
  81. package/dist/session/parameter-data.d.ts.map +1 -0
  82. package/dist/session/parameter-data.js +68 -0
  83. package/dist/session/parameter-data.js.map +1 -0
  84. package/dist/session/pin-tan-client.d.ts +54 -0
  85. package/dist/session/pin-tan-client.d.ts.map +1 -0
  86. package/dist/session/pin-tan-client.js +153 -0
  87. package/dist/session/pin-tan-client.js.map +1 -0
  88. package/dist/session/pin-tan-dialog.d.ts +71 -0
  89. package/dist/session/pin-tan-dialog.d.ts.map +1 -0
  90. package/dist/session/pin-tan-dialog.js +124 -0
  91. package/dist/session/pin-tan-dialog.js.map +1 -0
  92. package/dist/session/protocol.d.ts +209 -0
  93. package/dist/session/protocol.d.ts.map +1 -0
  94. package/dist/session/protocol.js +75 -0
  95. package/dist/session/protocol.js.map +1 -0
  96. package/dist/session/response-handler.d.ts +48 -0
  97. package/dist/session/response-handler.d.ts.map +1 -0
  98. package/dist/session/response-handler.js +121 -0
  99. package/dist/session/response-handler.js.map +1 -0
  100. package/dist/session/sepa-accounts.d.ts +34 -0
  101. package/dist/session/sepa-accounts.d.ts.map +1 -0
  102. package/dist/session/sepa-accounts.js +96 -0
  103. package/dist/session/sepa-accounts.js.map +1 -0
  104. package/dist/session/session-setup.d.ts +72 -0
  105. package/dist/session/session-setup.d.ts.map +1 -0
  106. package/dist/session/session-setup.js +160 -0
  107. package/dist/session/session-setup.js.map +1 -0
  108. package/dist/session/session-state.d.ts +47 -0
  109. package/dist/session/session-state.d.ts.map +1 -0
  110. package/dist/session/session-state.js +147 -0
  111. package/dist/session/session-state.js.map +1 -0
  112. package/dist/session/tan-selection.d.ts +88 -0
  113. package/dist/session/tan-selection.d.ts.map +1 -0
  114. package/dist/session/tan-selection.js +178 -0
  115. package/dist/session/tan-selection.js.map +1 -0
  116. package/dist/session/user-prompts.d.ts +61 -0
  117. package/dist/session/user-prompts.d.ts.map +1 -0
  118. package/dist/session/user-prompts.js +164 -0
  119. package/dist/session/user-prompts.js.map +1 -0
  120. package/dist/tan/challenge.d.ts +114 -0
  121. package/dist/tan/challenge.d.ts.map +1 -0
  122. package/dist/tan/challenge.js +185 -0
  123. package/dist/tan/challenge.js.map +1 -0
  124. package/dist/tan/flicker.d.ts +36 -0
  125. package/dist/tan/flicker.d.ts.map +1 -0
  126. package/dist/tan/flicker.js +262 -0
  127. package/dist/tan/flicker.js.map +1 -0
  128. package/dist/tan/tan-image.d.ts +21 -0
  129. package/dist/tan/tan-image.d.ts.map +1 -0
  130. package/dist/tan/tan-image.js +41 -0
  131. package/dist/tan/tan-image.js.map +1 -0
  132. package/dist/tan/tan-models.d.ts +145 -0
  133. package/dist/tan/tan-models.d.ts.map +1 -0
  134. package/dist/tan/tan-models.js +148 -0
  135. package/dist/tan/tan-models.js.map +1 -0
  136. package/dist/util/async.d.ts +24 -0
  137. package/dist/util/async.d.ts.map +1 -0
  138. package/dist/util/async.js +49 -0
  139. package/dist/util/async.js.map +1 -0
  140. package/dist/util/bytes.d.ts +23 -0
  141. package/dist/util/bytes.d.ts.map +1 -0
  142. package/dist/util/bytes.js +136 -0
  143. package/dist/util/bytes.js.map +1 -0
  144. package/dist/util/call-context.d.ts +12 -0
  145. package/dist/util/call-context.d.ts.map +1 -0
  146. package/dist/util/call-context.js +29 -0
  147. package/dist/util/call-context.js.map +1 -0
  148. package/dist/util/dates.d.ts +62 -0
  149. package/dist/util/dates.d.ts.map +1 -0
  150. package/dist/util/dates.js +169 -0
  151. package/dist/util/dates.js.map +1 -0
  152. package/dist/util/errors.d.ts +9 -0
  153. package/dist/util/errors.d.ts.map +1 -0
  154. package/dist/util/errors.js +15 -0
  155. package/dist/util/errors.js.map +1 -0
  156. package/dist/util/immutable-map.d.ts +16 -0
  157. package/dist/util/immutable-map.d.ts.map +1 -0
  158. package/dist/util/immutable-map.js +38 -0
  159. package/dist/util/immutable-map.js.map +1 -0
  160. package/dist/util/json.d.ts +13 -0
  161. package/dist/util/json.d.ts.map +1 -0
  162. package/dist/util/json.js +44 -0
  163. package/dist/util/json.js.map +1 -0
  164. package/dist/util/text.d.ts +20 -0
  165. package/dist/util/text.d.ts.map +1 -0
  166. package/dist/util/text.js +78 -0
  167. package/dist/util/text.js.map +1 -0
  168. package/dist/util/xml.d.ts +35 -0
  169. package/dist/util/xml.d.ts.map +1 -0
  170. package/dist/util/xml.js +183 -0
  171. package/dist/util/xml.js.map +1 -0
  172. package/dist/v3/account-extension.d.ts +25 -0
  173. package/dist/v3/account-extension.d.ts.map +1 -0
  174. package/dist/v3/account-extension.js +176 -0
  175. package/dist/v3/account-extension.js.map +1 -0
  176. package/dist/v3/client.d.ts +24 -0
  177. package/dist/v3/client.d.ts.map +1 -0
  178. package/dist/v3/client.js +16 -0
  179. package/dist/v3/client.js.map +1 -0
  180. package/dist/v3/dialog.d.ts +78 -0
  181. package/dist/v3/dialog.d.ts.map +1 -0
  182. package/dist/v3/dialog.js +138 -0
  183. package/dist/v3/dialog.js.map +1 -0
  184. package/dist/v3/message.d.ts +72 -0
  185. package/dist/v3/message.d.ts.map +1 -0
  186. package/dist/v3/message.js +259 -0
  187. package/dist/v3/message.js.map +1 -0
  188. package/dist/v3/parameters.d.ts +79 -0
  189. package/dist/v3/parameters.d.ts.map +1 -0
  190. package/dist/v3/parameters.js +396 -0
  191. package/dist/v3/parameters.js.map +1 -0
  192. package/dist/v3/protocol.d.ts +68 -0
  193. package/dist/v3/protocol.d.ts.map +1 -0
  194. package/dist/v3/protocol.js +263 -0
  195. package/dist/v3/protocol.js.map +1 -0
  196. package/dist/v3/segments.d.ts +89 -0
  197. package/dist/v3/segments.d.ts.map +1 -0
  198. package/dist/v3/segments.js +283 -0
  199. package/dist/v3/segments.js.map +1 -0
  200. package/dist/v3/syntax.d.ts +76 -0
  201. package/dist/v3/syntax.d.ts.map +1 -0
  202. package/dist/v3/syntax.js +301 -0
  203. package/dist/v3/syntax.js.map +1 -0
  204. package/package.json +63 -4
  205. package/src/core/account.ts +250 -0
  206. package/src/core/amount.ts +209 -0
  207. package/src/core/balance.ts +84 -0
  208. package/src/core/bank-info.ts +66 -0
  209. package/src/core/client.ts +149 -0
  210. package/src/core/config.ts +141 -0
  211. package/src/core/errors.ts +203 -0
  212. package/src/core/feedback.ts +137 -0
  213. package/src/core/transaction.ts +156 -0
  214. package/src/core/transport.ts +114 -0
  215. package/src/formats/camt.ts +169 -0
  216. package/src/formats/mt940.ts +333 -0
  217. package/src/formats/readers.ts +56 -0
  218. package/src/formats/sepa-purpose.ts +75 -0
  219. package/src/index.ts +68 -0
  220. package/src/session/app-approval.ts +265 -0
  221. package/src/session/bank-connection.ts +51 -0
  222. package/src/session/dialog-runner.ts +119 -0
  223. package/src/session/login-guard.ts +135 -0
  224. package/src/session/parameter-data.ts +137 -0
  225. package/src/session/pin-tan-client.ts +186 -0
  226. package/src/session/pin-tan-dialog.ts +160 -0
  227. package/src/session/protocol.ts +311 -0
  228. package/src/session/response-handler.ts +130 -0
  229. package/src/session/sepa-accounts.ts +97 -0
  230. package/src/session/session-setup.ts +165 -0
  231. package/src/session/session-state.ts +170 -0
  232. package/src/session/tan-selection.ts +192 -0
  233. package/src/session/user-prompts.ts +174 -0
  234. package/src/tan/challenge.ts +252 -0
  235. package/src/tan/flicker.ts +270 -0
  236. package/src/tan/tan-image.ts +36 -0
  237. package/src/tan/tan-models.ts +247 -0
  238. package/src/util/async.ts +53 -0
  239. package/src/util/bytes.ts +135 -0
  240. package/src/util/call-context.ts +40 -0
  241. package/src/util/dates.ts +193 -0
  242. package/src/util/errors.ts +16 -0
  243. package/src/util/immutable-map.ts +47 -0
  244. package/src/util/json.ts +51 -0
  245. package/src/util/text.ts +82 -0
  246. package/src/util/xml.ts +172 -0
  247. package/src/v3/account-extension.ts +190 -0
  248. package/src/v3/client.ts +29 -0
  249. package/src/v3/dialog.ts +199 -0
  250. package/src/v3/message.ts +321 -0
  251. package/src/v3/parameters.ts +451 -0
  252. package/src/v3/protocol.ts +331 -0
  253. package/src/v3/segments.ts +331 -0
  254. package/src/v3/syntax.ts +307 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segments.js","sourceRoot":"","sources":["../../src/v3/segments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /** One (group) data element of a received segment: unescaped text bytes or binary data. */
2
+ export declare class DataElement {
3
+ readonly bytes: Uint8Array;
4
+ readonly isBinary: boolean;
5
+ private decoded;
6
+ constructor(bytes: Uint8Array, isBinary: boolean);
7
+ get isEmpty(): boolean;
8
+ get text(): string;
9
+ }
10
+ /**
11
+ * A received segment: data elements separated by `+`, each a group of elements separated by `:`.
12
+ *
13
+ * Index 0 is the segment header (type, number, version, reference); the data elements follow from index 1.
14
+ */
15
+ export declare class Segment {
16
+ readonly elements: readonly (readonly DataElement[])[];
17
+ constructor(elements: readonly (readonly DataElement[])[]);
18
+ get type(): string;
19
+ get version(): number;
20
+ get length(): number;
21
+ group(index: number): readonly DataElement[];
22
+ element(index: number, sub?: number): DataElement | undefined;
23
+ text(index: number, sub?: number): string | undefined;
24
+ binary(index: number, sub?: number): Uint8Array | undefined;
25
+ integer(index: number, sub?: number): number | undefined;
26
+ /** The texts of the group at `index`; `undefined` for empty elements. */
27
+ texts(index: number): (string | undefined)[];
28
+ encode(): Uint8Array;
29
+ toString(): string;
30
+ }
31
+ /**
32
+ * Encodes `value` in ISO 8859-1, the FinTS 3.0 character set, or in UTF-8 where it does not fit: such text can only
33
+ * come from a bank that sends UTF-8, such as a TAN medium named `Max’s iPhone`. The clients check the login data for
34
+ * ISO 8859-1 up front.
35
+ */
36
+ export declare function encodeText(value: string): Uint8Array;
37
+ /** Whether `value` fits into ISO 8859-1, the FinTS 3.0 character set. */
38
+ export declare function isLatin1(value: string): boolean;
39
+ /**
40
+ * Splits a FinTS 3.0 message into segments, resolving escapes and binary data (`@length@bytes`).
41
+ *
42
+ * Throws `FormatError` for a negative binary length.
43
+ */
44
+ export declare function parseSegments(data: Uint8Array): Segment[];
45
+ /** Binary data in a segment to send, written as `@length@bytes`. */
46
+ export declare class Binary {
47
+ readonly bytes: Uint8Array;
48
+ constructor(bytes: Uint8Array);
49
+ }
50
+ /** A value of a segment to send; see `SegmentSpec`. */
51
+ export type SegmentValue = string | number | boolean | Binary | null | undefined | readonly SegmentValue[];
52
+ /**
53
+ * A segment to send.
54
+ *
55
+ * `elements` holds the data elements after the header: `null` or `undefined` for an empty element, an array for a data
56
+ * element group, a boolean for `J`/`N`, `Binary` for binary data and anything else as its text, without leading and
57
+ * trailing blanks. Trailing empty elements are left out, as the specification asks.
58
+ */
59
+ export declare class SegmentSpec {
60
+ readonly type: string;
61
+ readonly version: number;
62
+ readonly elements: readonly SegmentValue[];
63
+ /** The number of the segment an answer refers to (Bezugssegment); requests have none. */
64
+ readonly reference?: number | undefined;
65
+ constructor(type: string, version: number, elements: readonly SegmentValue[],
66
+ /** The number of the segment an answer refers to (Bezugssegment); requests have none. */
67
+ reference?: number | undefined);
68
+ /**
69
+ * A segment given by the field numbers of its data elements, as in the specification (1 is the first data element
70
+ * after the header); missing numbers stay empty.
71
+ */
72
+ static numbered(type: string, version: number, fields: Readonly<Record<number, SegmentValue>>): SegmentSpec;
73
+ /** Encodes the segment with `number`. */
74
+ build(number: number): Uint8Array;
75
+ }
76
+ //# sourceMappingURL=syntax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../src/v3/syntax.ts"],"names":[],"mappings":"AAuBA,2FAA2F;AAC3F,qBAAa,WAAW;IAIpB,QAAQ,CAAC,KAAK,EAAE,UAAU;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO;IAJ5B,OAAO,CAAC,OAAO,CAAqB;gBAGzB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,OAAO;IAG5B,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAGjB;CACF;AAED;;;;GAIG;AACH,qBAAa,OAAO;IACN,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE;gBAA7C,QAAQ,EAAE,SAAS,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE;IAElE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE;IAI5C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,WAAW,GAAG,SAAS;IAIxD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,GAAG,SAAS;IAMhD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,UAAU,GAAG,SAAS;IAMtD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,GAAG,SAAS;IAInD,yEAAyE;IACzE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;IAI5C,MAAM,IAAI,UAAU;IAcpB,QAAQ,IAAI,MAAM;CAGnB;AAgBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEpD;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,EAAE,CAuEzD;AAED,oEAAoE;AACpE,qBAAa,MAAM;IACL,QAAQ,CAAC,KAAK,EAAE,UAAU;gBAAjB,KAAK,EAAE,UAAU;CACvC;AAED,uDAAuD;AACvD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,YAAY,EAAE,CAAC;AAE3G;;;;;;GAMG;AACH,qBAAa,WAAW;IAEpB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE;IAC1C,yFAAyF;IACzF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM;gBAJlB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,YAAY,EAAE;IAC1C,yFAAyF;IAChF,SAAS,CAAC,EAAE,MAAM,YAAA;IAG7B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,WAAW;IAO3G,yCAAyC;IACzC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;CAclC"}
@@ -0,0 +1,301 @@
1
+ // Internal to the package, and named after the FinTS specification. Documentation is where the meaning is not evident.
2
+ import { BytesBuilder, latin1Decode, latin1Encode, utf8Encode } from '../util/bytes.js';
3
+ import { FormatError } from '../util/errors.js';
4
+ import { decodeBankText, tryParseInt } from '../util/text.js';
5
+ // FinTS 3.0 syntax characters.
6
+ const dataElementSeparator = 0x2b; // '+'
7
+ const groupElementSeparator = 0x3a; // ':'
8
+ const segmentTerminator = 0x27; // "'"
9
+ const escapeCharacter = 0x3f; // '?'
10
+ const binaryMarker = 0x40; // '@'
11
+ function isSyntaxCharacter(byte) {
12
+ return (byte === dataElementSeparator ||
13
+ byte === groupElementSeparator ||
14
+ byte === segmentTerminator ||
15
+ byte === escapeCharacter ||
16
+ byte === binaryMarker);
17
+ }
18
+ /** One (group) data element of a received segment: unescaped text bytes or binary data. */
19
+ export class DataElement {
20
+ bytes;
21
+ isBinary;
22
+ decoded;
23
+ constructor(bytes, isBinary) {
24
+ this.bytes = bytes;
25
+ this.isBinary = isBinary;
26
+ }
27
+ get isEmpty() {
28
+ return !this.isBinary && this.bytes.length === 0;
29
+ }
30
+ get text() {
31
+ this.decoded ??= decodeBankText(this.bytes);
32
+ return this.decoded;
33
+ }
34
+ }
35
+ /**
36
+ * A received segment: data elements separated by `+`, each a group of elements separated by `:`.
37
+ *
38
+ * Index 0 is the segment header (type, number, version, reference); the data elements follow from index 1.
39
+ */
40
+ export class Segment {
41
+ elements;
42
+ constructor(elements) {
43
+ this.elements = elements;
44
+ }
45
+ get type() {
46
+ return this.text(0)?.trim() ?? '';
47
+ }
48
+ get version() {
49
+ return this.integer(0, 2) ?? 0;
50
+ }
51
+ get length() {
52
+ return this.elements.length;
53
+ }
54
+ group(index) {
55
+ return this.elements[index] ?? [];
56
+ }
57
+ element(index, sub = 0) {
58
+ return this.group(index)[sub];
59
+ }
60
+ text(index, sub = 0) {
61
+ const e = this.element(index, sub);
62
+ if (e === undefined || e.isEmpty)
63
+ return undefined;
64
+ return e.text;
65
+ }
66
+ binary(index, sub = 0) {
67
+ const e = this.element(index, sub);
68
+ if (e === undefined || e.isEmpty)
69
+ return undefined;
70
+ return e.bytes;
71
+ }
72
+ integer(index, sub = 0) {
73
+ return tryParseInt(this.text(index, sub)?.trim());
74
+ }
75
+ /** The texts of the group at `index`; `undefined` for empty elements. */
76
+ texts(index) {
77
+ return this.group(index).map((e) => (e.isEmpty ? undefined : e.text));
78
+ }
79
+ encode() {
80
+ const out = new BytesBuilder();
81
+ this.elements.forEach((g, i) => {
82
+ if (i > 0)
83
+ out.addByte(dataElementSeparator);
84
+ g.forEach((e, j) => {
85
+ if (j > 0)
86
+ out.addByte(groupElementSeparator);
87
+ if (e.isBinary)
88
+ writeBinary(out, e.bytes);
89
+ else
90
+ writeEscaped(out, e.bytes);
91
+ });
92
+ });
93
+ out.addByte(segmentTerminator);
94
+ return out.takeBytes();
95
+ }
96
+ toString() {
97
+ return decodeBankText(this.encode());
98
+ }
99
+ }
100
+ function writeEscaped(out, bytes) {
101
+ const escaped = [];
102
+ for (const b of bytes) {
103
+ if (isSyntaxCharacter(b))
104
+ escaped.push(escapeCharacter);
105
+ escaped.push(b);
106
+ }
107
+ out.add(escaped);
108
+ }
109
+ function writeBinary(out, bytes) {
110
+ out.add(latin1Encode(`@${bytes.length}@`));
111
+ out.add(bytes);
112
+ }
113
+ /**
114
+ * Encodes `value` in ISO 8859-1, the FinTS 3.0 character set, or in UTF-8 where it does not fit: such text can only
115
+ * come from a bank that sends UTF-8, such as a TAN medium named `Max’s iPhone`. The clients check the login data for
116
+ * ISO 8859-1 up front.
117
+ */
118
+ export function encodeText(value) {
119
+ return isLatin1(value) ? latin1Encode(value) : utf8Encode(value);
120
+ }
121
+ /** Whether `value` fits into ISO 8859-1, the FinTS 3.0 character set. */
122
+ export function isLatin1(value) {
123
+ for (let i = 0; i < value.length; i++)
124
+ if (value.charCodeAt(i) > 0xff)
125
+ return false;
126
+ return true;
127
+ }
128
+ /**
129
+ * Splits a FinTS 3.0 message into segments, resolving escapes and binary data (`@length@bytes`).
130
+ *
131
+ * Throws `FormatError` for a negative binary length.
132
+ */
133
+ export function parseSegments(data) {
134
+ const segments = [];
135
+ let elements = [];
136
+ let group = [];
137
+ let current = [];
138
+ let binary;
139
+ let segmentStarted = false;
140
+ const endElement = () => {
141
+ group.push(binary !== undefined ? new DataElement(binary, true) : new DataElement(Uint8Array.from(current), false));
142
+ current = [];
143
+ binary = undefined;
144
+ };
145
+ const endSegment = () => {
146
+ endElement();
147
+ elements.push(group);
148
+ const segment = new Segment(elements);
149
+ // Skip empty segments, such as a stray double terminator.
150
+ if (segment.type !== '')
151
+ segments.push(segment);
152
+ elements = [];
153
+ group = [];
154
+ segmentStarted = false;
155
+ };
156
+ let i = 0;
157
+ while (i < data.length) {
158
+ const c = data[i];
159
+ if (c === escapeCharacter) {
160
+ if (i + 1 < data.length)
161
+ current.push(data[i + 1]);
162
+ segmentStarted = true;
163
+ i += 2;
164
+ continue;
165
+ }
166
+ if (c === binaryMarker && current.length === 0 && binary === undefined) {
167
+ const end = data.indexOf(binaryMarker, i + 1);
168
+ const length = end > i + 1 ? tryParseInt(latin1Decode(data.subarray(i + 1, end))) : undefined;
169
+ if (length !== undefined && length < 0)
170
+ throw new FormatError('Negative binary length');
171
+ // Compared this way round, a huge length cannot overflow the sum.
172
+ if (length !== undefined && length <= data.length - (end + 1)) {
173
+ binary = data.subarray(end + 1, end + 1 + length);
174
+ segmentStarted = true;
175
+ i = end + 1 + length;
176
+ continue;
177
+ }
178
+ }
179
+ if (c === groupElementSeparator) {
180
+ endElement();
181
+ }
182
+ else if (c === dataElementSeparator) {
183
+ endElement();
184
+ elements.push(group);
185
+ group = [];
186
+ }
187
+ else if (c === segmentTerminator) {
188
+ endSegment();
189
+ }
190
+ else {
191
+ // Line breaks and spaces between segments are padding, not content.
192
+ const isPadding = !segmentStarted &&
193
+ current.length === 0 &&
194
+ elements.length === 0 &&
195
+ group.length === 0 &&
196
+ (c === 0x0a || c === 0x0d || c === 0x20);
197
+ if (!isPadding) {
198
+ current.push(c);
199
+ segmentStarted = true;
200
+ }
201
+ }
202
+ i++;
203
+ }
204
+ if (segmentStarted && current.length > 0)
205
+ endSegment();
206
+ return segments;
207
+ }
208
+ /** Binary data in a segment to send, written as `@length@bytes`. */
209
+ export class Binary {
210
+ bytes;
211
+ constructor(bytes) {
212
+ this.bytes = bytes;
213
+ }
214
+ }
215
+ /**
216
+ * A segment to send.
217
+ *
218
+ * `elements` holds the data elements after the header: `null` or `undefined` for an empty element, an array for a data
219
+ * element group, a boolean for `J`/`N`, `Binary` for binary data and anything else as its text, without leading and
220
+ * trailing blanks. Trailing empty elements are left out, as the specification asks.
221
+ */
222
+ export class SegmentSpec {
223
+ type;
224
+ version;
225
+ elements;
226
+ reference;
227
+ constructor(type, version, elements,
228
+ /** The number of the segment an answer refers to (Bezugssegment); requests have none. */
229
+ reference) {
230
+ this.type = type;
231
+ this.version = version;
232
+ this.elements = elements;
233
+ this.reference = reference;
234
+ }
235
+ /**
236
+ * A segment given by the field numbers of its data elements, as in the specification (1 is the first data element
237
+ * after the header); missing numbers stay empty.
238
+ */
239
+ static numbered(type, version, fields) {
240
+ const count = Math.max(0, ...Object.keys(fields).map(Number));
241
+ const elements = [];
242
+ for (let number = 1; number <= count; number++)
243
+ elements.push(fields[number]);
244
+ return new SegmentSpec(type, version, elements);
245
+ }
246
+ /** Encodes the segment with `number`. */
247
+ build(number) {
248
+ const out = new BytesBuilder();
249
+ out.add(encodeText(`${this.type}:${number}:${this.version}${this.reference === undefined ? '' : `:${this.reference}`}`));
250
+ const encoded = this.elements.map(encodeGroup);
251
+ while (encoded.length > 0 && encoded.at(-1).length === 0)
252
+ encoded.pop();
253
+ for (const e of encoded) {
254
+ out.addByte(dataElementSeparator);
255
+ out.add(e);
256
+ }
257
+ out.addByte(segmentTerminator);
258
+ return out.takeBytes();
259
+ }
260
+ }
261
+ function isGroup(value) {
262
+ return Array.isArray(value);
263
+ }
264
+ function encodeGroup(value) {
265
+ const parts = [];
266
+ const flatten = (v) => {
267
+ if (isGroup(v))
268
+ v.forEach(flatten);
269
+ else
270
+ parts.push(encodeValue(v));
271
+ };
272
+ flatten(value);
273
+ while (parts.length > 0 && parts.at(-1).length === 0)
274
+ parts.pop();
275
+ const out = new BytesBuilder();
276
+ parts.forEach((part, i) => {
277
+ if (i > 0)
278
+ out.addByte(groupElementSeparator);
279
+ out.add(part);
280
+ });
281
+ return out.takeBytes();
282
+ }
283
+ function encodeValue(value) {
284
+ const out = new BytesBuilder();
285
+ if (value === null || value === undefined) {
286
+ // Empty.
287
+ }
288
+ else if (value instanceof Binary) {
289
+ writeBinary(out, value.bytes);
290
+ }
291
+ else if (typeof value === 'boolean') {
292
+ out.addByte(value ? 0x4a : 0x4e); // 'J' or 'N'
293
+ }
294
+ else {
295
+ // All but binary data go without leading and trailing blanks (Formals B.4.1). Encode first, then escape the bytes,
296
+ // so that nothing unescaped slips into the syntax.
297
+ writeEscaped(out, encodeText(String(value).trim()));
298
+ }
299
+ return out.takeBytes();
300
+ }
301
+ //# sourceMappingURL=syntax.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../src/v3/syntax.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,65 @@
1
1
  {
2
2
  "name": "@coderoftime/fints",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "FinTS 3.0 client for German banks: accounts, balances and transactions with PIN/TAN, PSD2 strong customer authentication and decoupled app approval.",
5
+ "keywords": [
6
+ "fints",
7
+ "hbci",
8
+ "banking",
9
+ "psd2",
10
+ "mt940",
11
+ "camt",
12
+ "germany"
13
+ ],
14
+ "license": "BSD-3-Clause",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://gitlab.com/coderoftime/fints-ts.git"
18
+ },
19
+ "homepage": "https://gitlab.com/coderoftime/fints-ts",
20
+ "bugs": {
21
+ "url": "https://gitlab.com/coderoftime/fints-ts/-/issues"
22
+ },
23
+ "type": "module",
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "default": "./dist/index.js"
28
+ }
29
+ },
30
+ "types": "./dist/index.d.ts",
31
+ "files": [
32
+ "dist",
33
+ "src",
34
+ "CHANGELOG.md"
35
+ ],
36
+ "sideEffects": false,
37
+ "engines": {
38
+ "node": ">=22.12"
39
+ },
40
+ "scripts": {
41
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
42
+ "typecheck": "tsc --noEmit",
43
+ "lint": "eslint .",
44
+ "format": "prettier --write .",
45
+ "format:check": "prettier --check .",
46
+ "test": "vitest run",
47
+ "check": "npm run typecheck && npm run lint && npm run format:check && npm test",
48
+ "prepublishOnly": "npm run check && npm run build",
49
+ "test:ci": "vitest run --reporter=default --reporter=junit --outputFile.junit=reports/junit.xml",
50
+ "check:package": "npm run build && publint && npm pack --dry-run"
51
+ },
52
+ "devDependencies": {
53
+ "@eslint/js": "^10.0.1",
54
+ "@types/node": "^26.6.4",
55
+ "eslint": "^10.12.0",
56
+ "prettier": "^3.9.9",
57
+ "publint": "^0.3.25",
58
+ "typescript": "~6.0.3",
59
+ "typescript-eslint": "^8.71.1",
60
+ "vitest": "^5.0.3"
61
+ },
62
+ "publishConfig": {
63
+ "access": "public"
64
+ }
65
+ }