fints-lib 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README_advanced_usage.md +70 -0
- package/dist/client.d.ts +89 -0
- package/dist/client.js +473 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.d.ts +15 -0
- package/dist/constants.js +19 -0
- package/dist/constants.js.map +1 -0
- package/dist/dialog.d.ts +111 -0
- package/dist/dialog.js +187 -0
- package/dist/dialog.js.map +1 -0
- package/dist/error-codes.d.ts +39 -0
- package/dist/error-codes.js +228 -0
- package/dist/error-codes.js.map +1 -0
- package/dist/errors/fints-error.d.ts +55 -0
- package/dist/errors/fints-error.js +131 -0
- package/dist/errors/fints-error.js.map +1 -0
- package/dist/errors/response-error.d.ts +6 -0
- package/dist/errors/response-error.js +20 -0
- package/dist/errors/response-error.js.map +1 -0
- package/dist/errors/tan-required-error.d.ts +40 -0
- package/dist/errors/tan-required-error.js +54 -0
- package/dist/errors/tan-required-error.js.map +1 -0
- package/dist/format.d.ts +81 -0
- package/dist/format.js +112 -0
- package/dist/format.js.map +1 -0
- package/dist/http-connection.d.ts +36 -0
- package/dist/http-connection.js +109 -0
- package/dist/http-connection.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +4 -0
- package/dist/logger.js +13 -0
- package/dist/logger.js.map +1 -0
- package/dist/mt535.d.ts +19 -0
- package/dist/mt535.js +153 -0
- package/dist/mt535.js.map +1 -0
- package/dist/mt940-86-structured.d.ts +47 -0
- package/dist/mt940-86-structured.js +213 -0
- package/dist/mt940-86-structured.js.map +1 -0
- package/dist/pain-formats.d.ts +50 -0
- package/dist/pain-formats.js +7 -0
- package/dist/pain-formats.js.map +1 -0
- package/dist/pain.d.ts +21 -0
- package/dist/pain.js +315 -0
- package/dist/pain.js.map +1 -0
- package/dist/parse.d.ts +46 -0
- package/dist/parse.js +97 -0
- package/dist/parse.js.map +1 -0
- package/dist/pin-tan-client.d.ts +47 -0
- package/dist/pin-tan-client.js +35 -0
- package/dist/pin-tan-client.js.map +1 -0
- package/dist/request.d.ts +90 -0
- package/dist/request.js +102 -0
- package/dist/request.js.map +1 -0
- package/dist/response.d.ts +104 -0
- package/dist/response.js +197 -0
- package/dist/response.js.map +1 -0
- package/dist/return-value.d.ts +37 -0
- package/dist/return-value.js +31 -0
- package/dist/return-value.js.map +1 -0
- package/dist/segments/hibpa.d.ts +22 -0
- package/dist/segments/hibpa.js +36 -0
- package/dist/segments/hibpa.js.map +1 -0
- package/dist/segments/hiccs.d.ts +14 -0
- package/dist/segments/hiccs.js +28 -0
- package/dist/segments/hiccs.js.map +1 -0
- package/dist/segments/hiccss.d.ts +13 -0
- package/dist/segments/hiccss.js +24 -0
- package/dist/segments/hiccss.js.map +1 -0
- package/dist/segments/hicdb.d.ts +17 -0
- package/dist/segments/hicdb.js +62 -0
- package/dist/segments/hicdb.js.map +1 -0
- package/dist/segments/hicdbs.d.ts +16 -0
- package/dist/segments/hicdbs.js +28 -0
- package/dist/segments/hicdbs.js.map +1 -0
- package/dist/segments/hidse.d.ts +14 -0
- package/dist/segments/hidse.js +28 -0
- package/dist/segments/hidse.js.map +1 -0
- package/dist/segments/hidses.d.ts +13 -0
- package/dist/segments/hidses.js +24 -0
- package/dist/segments/hidses.js.map +1 -0
- package/dist/segments/hikaz.d.ts +16 -0
- package/dist/segments/hikaz.js +31 -0
- package/dist/segments/hikaz.js.map +1 -0
- package/dist/segments/hikazs.d.ts +16 -0
- package/dist/segments/hikazs.js +28 -0
- package/dist/segments/hikazs.js.map +1 -0
- package/dist/segments/hirmg.d.ts +17 -0
- package/dist/segments/hirmg.js +39 -0
- package/dist/segments/hirmg.js.map +1 -0
- package/dist/segments/hirms.d.ts +16 -0
- package/dist/segments/hirms.js +37 -0
- package/dist/segments/hirms.js.map +1 -0
- package/dist/segments/hisal.d.ts +22 -0
- package/dist/segments/hisal.js +33 -0
- package/dist/segments/hisal.js.map +1 -0
- package/dist/segments/hisals.d.ts +16 -0
- package/dist/segments/hisals.js +28 -0
- package/dist/segments/hisals.js.map +1 -0
- package/dist/segments/hispa.d.ts +16 -0
- package/dist/segments/hispa.js +31 -0
- package/dist/segments/hispa.js.map +1 -0
- package/dist/segments/hispas.d.ts +14 -0
- package/dist/segments/hispas.js +28 -0
- package/dist/segments/hispas.js.map +1 -0
- package/dist/segments/hisyn.d.ts +15 -0
- package/dist/segments/hisyn.js +26 -0
- package/dist/segments/hisyn.js.map +1 -0
- package/dist/segments/hitan.d.ts +18 -0
- package/dist/segments/hitan.js +66 -0
- package/dist/segments/hitan.js.map +1 -0
- package/dist/segments/hitans.d.ts +18 -0
- package/dist/segments/hitans.js +46 -0
- package/dist/segments/hitans.js.map +1 -0
- package/dist/segments/hiupd.d.ts +16 -0
- package/dist/segments/hiupd.js +34 -0
- package/dist/segments/hiupd.js.map +1 -0
- package/dist/segments/hiwpd.d.ts +15 -0
- package/dist/segments/hiwpd.js +26 -0
- package/dist/segments/hiwpd.js.map +1 -0
- package/dist/segments/hiwpds.d.ts +16 -0
- package/dist/segments/hiwpds.js +32 -0
- package/dist/segments/hiwpds.js.map +1 -0
- package/dist/segments/hkccs.d.ts +18 -0
- package/dist/segments/hkccs.js +32 -0
- package/dist/segments/hkccs.js.map +1 -0
- package/dist/segments/hkcdb.d.ts +19 -0
- package/dist/segments/hkcdb.js +30 -0
- package/dist/segments/hkcdb.js.map +1 -0
- package/dist/segments/hkdse.d.ts +18 -0
- package/dist/segments/hkdse.js +27 -0
- package/dist/segments/hkdse.js.map +1 -0
- package/dist/segments/hkend.d.ts +12 -0
- package/dist/segments/hkend.js +24 -0
- package/dist/segments/hkend.js.map +1 -0
- package/dist/segments/hkidn.d.ts +19 -0
- package/dist/segments/hkidn.js +33 -0
- package/dist/segments/hkidn.js.map +1 -0
- package/dist/segments/hkkaz.d.ts +20 -0
- package/dist/segments/hkkaz.js +42 -0
- package/dist/segments/hkkaz.js.map +1 -0
- package/dist/segments/hksal.d.ts +18 -0
- package/dist/segments/hksal.js +35 -0
- package/dist/segments/hksal.js.map +1 -0
- package/dist/segments/hkspa.d.ts +18 -0
- package/dist/segments/hkspa.js +31 -0
- package/dist/segments/hkspa.js.map +1 -0
- package/dist/segments/hksyn.d.ts +16 -0
- package/dist/segments/hksyn.js +31 -0
- package/dist/segments/hksyn.js.map +1 -0
- package/dist/segments/hktab.d.ts +17 -0
- package/dist/segments/hktab.js +31 -0
- package/dist/segments/hktab.js.map +1 -0
- package/dist/segments/hktan.d.ts +19 -0
- package/dist/segments/hktan.js +66 -0
- package/dist/segments/hktan.js.map +1 -0
- package/dist/segments/hkvvb.d.ts +17 -0
- package/dist/segments/hkvvb.js +39 -0
- package/dist/segments/hkvvb.js.map +1 -0
- package/dist/segments/hkwpd.d.ts +21 -0
- package/dist/segments/hkwpd.js +39 -0
- package/dist/segments/hkwpd.js.map +1 -0
- package/dist/segments/hnhbk.d.ts +22 -0
- package/dist/segments/hnhbk.js +54 -0
- package/dist/segments/hnhbk.js.map +1 -0
- package/dist/segments/hnhbs.d.ts +16 -0
- package/dist/segments/hnhbs.js +29 -0
- package/dist/segments/hnhbs.js.map +1 -0
- package/dist/segments/hnsha.d.ts +18 -0
- package/dist/segments/hnsha.js +30 -0
- package/dist/segments/hnsha.js.map +1 -0
- package/dist/segments/hnshk.d.ts +21 -0
- package/dist/segments/hnshk.js +44 -0
- package/dist/segments/hnshk.js.map +1 -0
- package/dist/segments/hnvsd.d.ts +25 -0
- package/dist/segments/hnvsd.js +31 -0
- package/dist/segments/hnvsd.js.map +1 -0
- package/dist/segments/hnvsk.d.ts +15 -0
- package/dist/segments/hnvsk.js +51 -0
- package/dist/segments/hnvsk.js.map +1 -0
- package/dist/segments/index.d.ts +40 -0
- package/dist/segments/index.js +57 -0
- package/dist/segments/index.js.map +1 -0
- package/dist/segments/segment.d.ts +60 -0
- package/dist/segments/segment.js +74 -0
- package/dist/segments/segment.js.map +1 -0
- package/dist/tan-method.d.ts +36 -0
- package/dist/tan-method.js +224 -0
- package/dist/tan-method.js.map +1 -0
- package/dist/types.d.ts +386 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +55 -0
- package/dist/utils.js +178 -0
- package/dist/utils.js.map +1 -0
- package/package.json +1 -1
package/dist/utils.js
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.encodeBase64 = encodeBase64;
|
|
7
|
+
exports.decodeBase64 = decodeBase64;
|
|
8
|
+
exports.parse = parse;
|
|
9
|
+
exports.leftPad = leftPad;
|
|
10
|
+
exports.escapeFinTS = escapeFinTS;
|
|
11
|
+
exports.unescapeFinTS = unescapeFinTS;
|
|
12
|
+
const iconv_lite_1 = __importDefault(require("iconv-lite"));
|
|
13
|
+
/**
|
|
14
|
+
* Base 64 encode a string for use with fints. Fints uses ISO-8859-1 encoding which will be the encoding used
|
|
15
|
+
* in the base 64 data.
|
|
16
|
+
*
|
|
17
|
+
* @param input The string to encode.
|
|
18
|
+
*
|
|
19
|
+
* @return The encoded string.
|
|
20
|
+
*/
|
|
21
|
+
function encodeBase64(input) {
|
|
22
|
+
return Buffer.from(iconv_lite_1.default.encode(input, "ISO-8859-1")).toString("base64");
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Decode a base 64 encoded string received from a fints server.
|
|
26
|
+
* Fints uses ISO-8859-1 encoding which will be converted into UTF-8.
|
|
27
|
+
*
|
|
28
|
+
* @param input The string to decode.
|
|
29
|
+
*
|
|
30
|
+
* @return The decoded string.
|
|
31
|
+
*/
|
|
32
|
+
function decodeBase64(input) {
|
|
33
|
+
return iconv_lite_1.default.decode(Buffer.from(input, "base64"), "ISO-8859-1");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Parse a full fints message into a set of segments containing a set of data groups containing a set of
|
|
37
|
+
* data elements.
|
|
38
|
+
* Can be parsed further by using segment classes.
|
|
39
|
+
* Bit strings with length will be resolved here.
|
|
40
|
+
*
|
|
41
|
+
* @param input The string to parse.
|
|
42
|
+
*
|
|
43
|
+
* @return Set of segments.
|
|
44
|
+
*/
|
|
45
|
+
function parse(input) {
|
|
46
|
+
if (input[input.length - 1] !== "'") {
|
|
47
|
+
throw new Error(`String must end with "'"`);
|
|
48
|
+
}
|
|
49
|
+
// Store currently active output.
|
|
50
|
+
const segments = [];
|
|
51
|
+
let groups = [];
|
|
52
|
+
let elements = [];
|
|
53
|
+
let str = "";
|
|
54
|
+
// Will be set to `true` if a `?` was encountered, which is used for escaping.
|
|
55
|
+
let escapeActive = false;
|
|
56
|
+
// Called when a segment was finished (a `'` was encountered).
|
|
57
|
+
// Will reset all state and save the current segment to the list of segments.
|
|
58
|
+
const flushSegment = () => {
|
|
59
|
+
flushGroup();
|
|
60
|
+
segments.push(groups);
|
|
61
|
+
groups = [];
|
|
62
|
+
};
|
|
63
|
+
// Called when a data group was finished (a `+` was encountered).
|
|
64
|
+
// Will reset the group and elements state and save the current group to the list of groups.
|
|
65
|
+
const flushGroup = () => {
|
|
66
|
+
flushElement();
|
|
67
|
+
groups.push(elements);
|
|
68
|
+
elements = [];
|
|
69
|
+
};
|
|
70
|
+
// Called when a data element was finished (a `:` was encountered).
|
|
71
|
+
// Will reset the string's state and save the current element to the list of elements.
|
|
72
|
+
const flushElement = () => {
|
|
73
|
+
elements.push(str);
|
|
74
|
+
str = "";
|
|
75
|
+
};
|
|
76
|
+
// Traverse the input character by character.
|
|
77
|
+
for (let i = 0; i < input.length; ++i) {
|
|
78
|
+
const character = input.charAt(i);
|
|
79
|
+
// If the last character was a questionmark, this character is escaped.
|
|
80
|
+
if (escapeActive) {
|
|
81
|
+
if (![":", "'", "+", "?", "@"].includes(character)) {
|
|
82
|
+
throw new Error(`Unexpected escape sequence "?${character}" at ${i}`);
|
|
83
|
+
}
|
|
84
|
+
str += character;
|
|
85
|
+
escapeActive = false;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
// Handle control characters or append default characters to string.
|
|
89
|
+
switch (character) {
|
|
90
|
+
case "@":
|
|
91
|
+
i++;
|
|
92
|
+
let lengthString = "";
|
|
93
|
+
for (; i < input.length; ++i) {
|
|
94
|
+
const subCharacter = input.charAt(i);
|
|
95
|
+
if (subCharacter === "@") {
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
lengthString += subCharacter;
|
|
99
|
+
}
|
|
100
|
+
i++;
|
|
101
|
+
const endIndex = i + Number(lengthString);
|
|
102
|
+
for (; i < endIndex; ++i) {
|
|
103
|
+
str += input.charAt(i);
|
|
104
|
+
}
|
|
105
|
+
i--;
|
|
106
|
+
break;
|
|
107
|
+
case "?":
|
|
108
|
+
escapeActive = true;
|
|
109
|
+
break;
|
|
110
|
+
case "'":
|
|
111
|
+
flushSegment();
|
|
112
|
+
break;
|
|
113
|
+
case "+":
|
|
114
|
+
flushGroup();
|
|
115
|
+
break;
|
|
116
|
+
case ":":
|
|
117
|
+
// An ":" was encountered, flush the current group.
|
|
118
|
+
flushElement();
|
|
119
|
+
break;
|
|
120
|
+
default:
|
|
121
|
+
str += character;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return segments;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Fill up the string with the specified character from the left.
|
|
129
|
+
*
|
|
130
|
+
* @param str String to pad.
|
|
131
|
+
* @param count Limit to which the string should be padded.
|
|
132
|
+
* @param character Character to pad the string with. Defaults to "0".
|
|
133
|
+
*
|
|
134
|
+
* @return The padded string.
|
|
135
|
+
*/
|
|
136
|
+
function leftPad(str, count, character = "0") {
|
|
137
|
+
while (str.length < count) {
|
|
138
|
+
str = `${character}${str}`;
|
|
139
|
+
}
|
|
140
|
+
return str;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Escape a string into fints representation.
|
|
144
|
+
*
|
|
145
|
+
* @param content The string to escape.
|
|
146
|
+
*
|
|
147
|
+
* @return The escaped string.
|
|
148
|
+
*/
|
|
149
|
+
function escapeFinTS(content) {
|
|
150
|
+
if (typeof content === "undefined") {
|
|
151
|
+
return "";
|
|
152
|
+
}
|
|
153
|
+
return content
|
|
154
|
+
.replace(/\?/g, "??")
|
|
155
|
+
.replace(/\+/g, "?+")
|
|
156
|
+
.replace(/:/g, "?:")
|
|
157
|
+
.replace(/'/g, "?'")
|
|
158
|
+
.replace(/@/g, "?@");
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Unescape a string from fints representation.
|
|
162
|
+
*
|
|
163
|
+
* @param content The string to unescape.
|
|
164
|
+
*
|
|
165
|
+
* @return The unescaped string.
|
|
166
|
+
*/
|
|
167
|
+
function unescapeFinTS(content) {
|
|
168
|
+
if (typeof content === "undefined") {
|
|
169
|
+
return "";
|
|
170
|
+
}
|
|
171
|
+
return content
|
|
172
|
+
.replace(/\?\?/g, "?")
|
|
173
|
+
.replace(/\?\+/g, "+")
|
|
174
|
+
.replace(/\?:/g, ":")
|
|
175
|
+
.replace(/\?'/g, "'")
|
|
176
|
+
.replace(/\?@/g, "@");
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|