@coderoftime/fints 0.2.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.
- package/CHANGELOG.md +377 -0
- package/README.md +31 -23
- package/dist/client.d.ts +3 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +52 -9
- package/dist/client.js.map +1 -1
- package/dist/core/account.d.ts +15 -4
- package/dist/core/account.d.ts.map +1 -1
- package/dist/core/account.js +84 -36
- package/dist/core/account.js.map +1 -1
- package/dist/core/amount.d.ts +13 -3
- package/dist/core/amount.d.ts.map +1 -1
- package/dist/core/amount.js +42 -8
- package/dist/core/amount.js.map +1 -1
- package/dist/core/balance.d.ts +3 -0
- package/dist/core/balance.d.ts.map +1 -1
- package/dist/core/balance.js +5 -0
- package/dist/core/balance.js.map +1 -1
- package/dist/core/bank-info.d.ts +20 -3
- package/dist/core/bank-info.d.ts.map +1 -1
- package/dist/core/bank-info.js +25 -4
- package/dist/core/bank-info.js.map +1 -1
- package/dist/core/client.d.ts +42 -15
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/config.d.ts +15 -7
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +29 -14
- package/dist/core/config.js.map +1 -1
- package/dist/core/errors.d.ts +17 -5
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +25 -7
- package/dist/core/errors.js.map +1 -1
- package/dist/core/feedback.d.ts +7 -0
- package/dist/core/feedback.d.ts.map +1 -1
- package/dist/core/feedback.js +10 -1
- package/dist/core/feedback.js.map +1 -1
- package/dist/core/transaction.d.ts +5 -0
- package/dist/core/transaction.d.ts.map +1 -1
- package/dist/core/transaction.js +12 -0
- package/dist/core/transaction.js.map +1 -1
- package/dist/core/transport.d.ts +22 -7
- package/dist/core/transport.d.ts.map +1 -1
- package/dist/core/transport.js +51 -11
- package/dist/core/transport.js.map +1 -1
- package/dist/formats/camt.d.ts +7 -4
- package/dist/formats/camt.d.ts.map +1 -1
- package/dist/formats/camt.js +53 -54
- package/dist/formats/camt.js.map +1 -1
- package/dist/formats/mt940.d.ts +18 -6
- package/dist/formats/mt940.d.ts.map +1 -1
- package/dist/formats/mt940.js +83 -66
- package/dist/formats/mt940.js.map +1 -1
- package/dist/formats/readers.d.ts.map +1 -1
- package/dist/formats/readers.js +6 -2
- package/dist/formats/readers.js.map +1 -1
- package/dist/formats/sepa-purpose.d.ts +7 -4
- package/dist/formats/sepa-purpose.d.ts.map +1 -1
- package/dist/formats/sepa-purpose.js +18 -9
- package/dist/formats/sepa-purpose.js.map +1 -1
- package/dist/session/dialog-runner.d.ts +5 -2
- package/dist/session/dialog-runner.d.ts.map +1 -1
- package/dist/session/dialog-runner.js +23 -7
- package/dist/session/dialog-runner.js.map +1 -1
- package/dist/session/login-guard.d.ts +4 -4
- package/dist/session/login-guard.d.ts.map +1 -1
- package/dist/session/login-guard.js +29 -14
- package/dist/session/login-guard.js.map +1 -1
- package/dist/session/session-setup.d.ts +14 -5
- package/dist/session/session-setup.d.ts.map +1 -1
- package/dist/session/session-setup.js +30 -9
- package/dist/session/session-setup.js.map +1 -1
- package/dist/session/session-state.d.ts +4 -3
- package/dist/session/session-state.d.ts.map +1 -1
- package/dist/session/session-state.js +28 -9
- package/dist/session/session-state.js.map +1 -1
- package/dist/session/signed-dialog.d.ts +19 -13
- package/dist/session/signed-dialog.d.ts.map +1 -1
- package/dist/session/signed-dialog.js +45 -30
- package/dist/session/signed-dialog.js.map +1 -1
- package/dist/session/user-prompts.d.ts +6 -1
- package/dist/session/user-prompts.d.ts.map +1 -1
- package/dist/session/user-prompts.js +19 -4
- package/dist/session/user-prompts.js.map +1 -1
- package/dist/tan/challenge.d.ts +15 -13
- package/dist/tan/challenge.d.ts.map +1 -1
- package/dist/tan/challenge.js +32 -26
- package/dist/tan/challenge.js.map +1 -1
- package/dist/tan/flicker.d.ts +5 -1
- package/dist/tan/flicker.d.ts.map +1 -1
- package/dist/tan/flicker.js +42 -30
- package/dist/tan/flicker.js.map +1 -1
- package/dist/tan/tan-image.d.ts +4 -1
- package/dist/tan/tan-image.d.ts.map +1 -1
- package/dist/tan/tan-image.js +8 -2
- package/dist/tan/tan-image.js.map +1 -1
- package/dist/tan/tan-models.d.ts +9 -1
- package/dist/tan/tan-models.d.ts.map +1 -1
- package/dist/tan/tan-models.js +14 -2
- package/dist/tan/tan-models.js.map +1 -1
- package/dist/util/arguments.d.ts +13 -0
- package/dist/util/arguments.d.ts.map +1 -0
- package/dist/util/arguments.js +40 -0
- package/dist/util/arguments.js.map +1 -0
- package/dist/util/async.d.ts +4 -1
- package/dist/util/async.d.ts.map +1 -1
- package/dist/util/async.js +6 -3
- package/dist/util/async.js.map +1 -1
- package/dist/util/bytes.d.ts +1 -1
- package/dist/util/bytes.d.ts.map +1 -1
- package/dist/util/bytes.js +3 -3
- package/dist/util/bytes.js.map +1 -1
- package/dist/util/dates.d.ts +3 -10
- package/dist/util/dates.d.ts.map +1 -1
- package/dist/util/dates.js +49 -39
- package/dist/util/dates.js.map +1 -1
- package/dist/util/errors.d.ts +5 -3
- package/dist/util/errors.d.ts.map +1 -1
- package/dist/util/errors.js +8 -4
- package/dist/util/errors.js.map +1 -1
- package/dist/util/immutable-map.d.ts +5 -2
- package/dist/util/immutable-map.d.ts.map +1 -1
- package/dist/util/immutable-map.js +15 -12
- package/dist/util/immutable-map.js.map +1 -1
- package/dist/util/inspect.d.ts +11 -0
- package/dist/util/inspect.d.ts.map +1 -0
- package/dist/util/inspect.js +14 -0
- package/dist/util/inspect.js.map +1 -0
- package/dist/util/text.d.ts +18 -2
- package/dist/util/text.d.ts.map +1 -1
- package/dist/util/text.js +50 -5
- package/dist/util/text.js.map +1 -1
- package/dist/util/xml.d.ts +6 -4
- package/dist/util/xml.d.ts.map +1 -1
- package/dist/util/xml.js +106 -44
- package/dist/util/xml.js.map +1 -1
- package/dist/v3/bank-connection.d.ts +23 -3
- package/dist/v3/bank-connection.d.ts.map +1 -1
- package/dist/v3/bank-connection.js +66 -6
- package/dist/v3/bank-connection.js.map +1 -1
- package/dist/v3/dialog.d.ts +6 -2
- package/dist/v3/dialog.d.ts.map +1 -1
- package/dist/v3/dialog.js +20 -9
- package/dist/v3/dialog.js.map +1 -1
- package/dist/v3/message.d.ts +18 -10
- package/dist/v3/message.d.ts.map +1 -1
- package/dist/v3/message.js +92 -75
- package/dist/v3/message.js.map +1 -1
- package/dist/v3/parameter-store.d.ts +43 -7
- package/dist/v3/parameter-store.d.ts.map +1 -1
- package/dist/v3/parameter-store.js +69 -15
- package/dist/v3/parameter-store.js.map +1 -1
- package/dist/v3/parameters.d.ts +12 -11
- package/dist/v3/parameters.d.ts.map +1 -1
- package/dist/v3/parameters.js +57 -35
- package/dist/v3/parameters.js.map +1 -1
- package/dist/v3/protocol.d.ts +16 -9
- package/dist/v3/protocol.d.ts.map +1 -1
- package/dist/v3/protocol.js +57 -26
- package/dist/v3/protocol.js.map +1 -1
- package/dist/v3/queries.d.ts +2 -2
- package/dist/v3/queries.d.ts.map +1 -1
- package/dist/v3/queries.js +24 -16
- package/dist/v3/queries.js.map +1 -1
- package/dist/v3/segments.d.ts +18 -11
- package/dist/v3/segments.d.ts.map +1 -1
- package/dist/v3/segments.js +30 -21
- package/dist/v3/segments.js.map +1 -1
- package/dist/v3/syntax.d.ts +15 -11
- package/dist/v3/syntax.d.ts.map +1 -1
- package/dist/v3/syntax.js +30 -15
- package/dist/v3/syntax.js.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +58 -17
- package/src/core/account.ts +91 -35
- package/src/core/amount.ts +42 -9
- package/src/core/balance.ts +6 -0
- package/src/core/bank-info.ts +28 -4
- package/src/core/client.ts +42 -15
- package/src/core/config.ts +37 -18
- package/src/core/errors.ts +27 -7
- package/src/core/feedback.ts +12 -1
- package/src/core/transaction.ts +13 -0
- package/src/core/transport.ts +62 -16
- package/src/formats/camt.ts +62 -51
- package/src/formats/mt940.ts +114 -78
- package/src/formats/readers.ts +6 -2
- package/src/formats/sepa-purpose.ts +17 -9
- package/src/session/dialog-runner.ts +34 -7
- package/src/session/login-guard.ts +29 -13
- package/src/session/session-setup.ts +27 -9
- package/src/session/session-state.ts +25 -8
- package/src/session/signed-dialog.ts +60 -30
- package/src/session/user-prompts.ts +28 -3
- package/src/tan/challenge.ts +50 -36
- package/src/tan/flicker.ts +40 -29
- package/src/tan/tan-image.ts +9 -2
- package/src/tan/tan-models.ts +16 -2
- package/src/util/arguments.ts +40 -0
- package/src/util/async.ts +10 -4
- package/src/util/bytes.ts +3 -3
- package/src/util/dates.ts +52 -38
- package/src/util/errors.ts +9 -4
- package/src/util/immutable-map.ts +15 -12
- package/src/util/inspect.ts +14 -0
- package/src/util/text.ts +47 -5
- package/src/util/xml.ts +105 -38
- package/src/v3/bank-connection.ts +65 -6
- package/src/v3/dialog.ts +18 -8
- package/src/v3/message.ts +81 -72
- package/src/v3/parameter-store.ts +82 -16
- package/src/v3/parameters.ts +68 -41
- package/src/v3/protocol.ts +61 -28
- package/src/v3/queries.ts +26 -18
- package/src/v3/segments.ts +32 -20
- package/src/v3/syntax.ts +31 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-setup.js","sourceRoot":"","sources":["../../src/session/session-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAGrE
|
|
1
|
+
{"version":3,"file":"session-setup.js","sourceRoot":"","sources":["../../src/session/session-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,10 @@ export declare function saveSession(parameters: ParameterStore, guard: LoginGuar
|
|
|
8
8
|
* The session saved in `json`, and the parameter data and the guard's refused login restored from it.
|
|
9
9
|
*
|
|
10
10
|
* A missing or damaged state, or one saved for another user, bank, server or protocol version, gives a new session,
|
|
11
|
-
* which only costs a new synchronization. The refused login
|
|
12
|
-
* for another server or protocol version as well, and where the rest is
|
|
13
|
-
*
|
|
11
|
+
* which only costs a new synchronization. The refused login and the count of logins whose answer was lost belong to the
|
|
12
|
+
* user at the bank, so they come first: they hold for another server or protocol version as well, and where the rest is
|
|
13
|
+
* damaged; a state saved by fints-ts 0.1 or the Dart package 0.2.0 has neither. A damaged section of their own fails
|
|
14
|
+
* closed: it restores a refusal without return codes, since it may have held one.
|
|
14
15
|
*/
|
|
15
16
|
export declare function restoreSession(json: string | undefined, parameters: ParameterStore, guard: LoginGuard): SessionState;
|
|
16
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/session/session-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,EAQL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAQpE,qGAAqG;AACrG,wBAAgB,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,CAUxG;AAED
|
|
1
|
+
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/session/session-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,EAQL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAQpE,qGAAqG;AACrG,wBAAgB,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,CAUxG;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,GAAG,YAAY,CAsBpH;AAYD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,cAAc,CAAqB;IAE3C,yGAAyG;IACzG,IAAI,cAAc,IAAI,SAAS,MAAM,EAAE,GAAG,SAAS,CAElD;IAED,kDAAkD;IAClD,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,qCAAqC;IACrC,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,uEAAuE;IACvE,sBAAsB,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAIlE;;;OAGG;IACH,YAAY,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzE,yDAAyD;IACzD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI9C,iGAAiG;IACjG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,OAAO,EAAE,GAAG,SAAS;IAI5E,mGAAmG;IACnG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKrF,4EAA4E;IAC5E,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY;IAa/C,gCAAgC;IAChC,MAAM,IAAI,UAAU;CASrB"}
|
|
@@ -23,9 +23,10 @@ export function saveSession(parameters, guard, session) {
|
|
|
23
23
|
* The session saved in `json`, and the parameter data and the guard's refused login restored from it.
|
|
24
24
|
*
|
|
25
25
|
* A missing or damaged state, or one saved for another user, bank, server or protocol version, gives a new session,
|
|
26
|
-
* which only costs a new synchronization. The refused login
|
|
27
|
-
* for another server or protocol version as well, and where the rest is
|
|
28
|
-
*
|
|
26
|
+
* which only costs a new synchronization. The refused login and the count of logins whose answer was lost belong to the
|
|
27
|
+
* user at the bank, so they come first: they hold for another server or protocol version as well, and where the rest is
|
|
28
|
+
* damaged; a state saved by fints-ts 0.1 or the Dart package 0.2.0 has neither. A damaged section of their own fails
|
|
29
|
+
* closed: it restores a refusal without return codes, since it may have held one.
|
|
29
30
|
*/
|
|
30
31
|
export function restoreSession(json, parameters, guard) {
|
|
31
32
|
if (json === undefined)
|
|
@@ -34,17 +35,21 @@ export function restoreSession(json, parameters, guard) {
|
|
|
34
35
|
const saved = JSON.parse(json);
|
|
35
36
|
if (!isJsonObject(saved) || saved.format !== stateFormat)
|
|
36
37
|
return new SessionState();
|
|
37
|
-
|
|
38
|
+
// Entries of another type differ like any other value, so that a damaged server entry keeps the refused login.
|
|
39
|
+
const owner = saved.owner ?? [];
|
|
40
|
+
if (!Array.isArray(owner))
|
|
41
|
+
return new SessionState();
|
|
42
|
+
const [server, ...user] = owner;
|
|
38
43
|
const expected = userOf(parameters.config);
|
|
39
44
|
if (user.length !== expected.length || user.some((value, i) => value !== expected[i]))
|
|
40
45
|
return new SessionState();
|
|
41
|
-
const
|
|
42
|
-
if (
|
|
43
|
-
guard.restoreState(
|
|
46
|
+
const guardState = savedGuardState(saved);
|
|
47
|
+
if (guardState !== undefined)
|
|
48
|
+
guard.restoreState(guardState);
|
|
44
49
|
if (server !== hostOf(parameters.config.url) || saved.version !== protocolVersion)
|
|
45
50
|
return new SessionState();
|
|
46
51
|
const session = SessionState.fromJson(readObject(saved, 'session'));
|
|
47
|
-
parameters.restoreState(readObject(saved, 'protocol'));
|
|
52
|
+
parameters.restoreState(readObject(saved, 'protocol'), session.tanMedium);
|
|
48
53
|
return session;
|
|
49
54
|
}
|
|
50
55
|
catch (error) {
|
|
@@ -118,7 +123,9 @@ export class SessionState {
|
|
|
118
123
|
state.useTanMethod(readOptionalString(json, 'tanMethod'), readOptionalString(json, 'tanMedium'));
|
|
119
124
|
if (allowedMethods !== undefined)
|
|
120
125
|
state.rememberAllowedMethods(allowedMethods);
|
|
121
|
-
|
|
126
|
+
// fints-ts 0.1 and the Dart package 0.2.0 saved an empty list as well, which completes nothing; without it, the
|
|
127
|
+
// list is asked for again.
|
|
128
|
+
if (sepaAccounts !== undefined && sepaAccounts.length > 0)
|
|
122
129
|
state.cacheSepaAccounts(sepaAccounts, sepaUpdVersion);
|
|
123
130
|
return state;
|
|
124
131
|
}
|
|
@@ -159,6 +166,18 @@ function accountFromJson(json) {
|
|
|
159
166
|
function guardStateToJson(state) {
|
|
160
167
|
return { refusal: state.refusal?.map(feedbackToJson) ?? null, unreadLogins: state.unreadLogins };
|
|
161
168
|
}
|
|
169
|
+
/** The guard's section of `saved`, `undefined` where there is none; a damaged one is a refusal without return codes. */
|
|
170
|
+
function savedGuardState(saved) {
|
|
171
|
+
try {
|
|
172
|
+
const json = readOptionalObject(saved, 'loginGuard');
|
|
173
|
+
return json === undefined ? undefined : guardStateFromJson(json);
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
if (error instanceof FormatError)
|
|
177
|
+
return { refusal: [], unreadLogins: 0 };
|
|
178
|
+
throw error;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
162
181
|
function guardStateFromJson(json) {
|
|
163
182
|
return {
|
|
164
183
|
refusal: readOptionalList(json, 'refusal', isJsonObject)?.map(feedbackFromJson),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/session/session-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAoB,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,iBAAiB,CAAC;AAIzB,yEAAyE;AACzE,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,wHAAwH;AACxH,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,qGAAqG;AACrG,MAAM,UAAU,WAAW,CAAC,UAA0B,EAAE,KAAiB,EAAE,OAAqB;IAC9F,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QACjC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE;QACzB,gDAAgD;QAChD,QAAQ,EAAE,UAAU,CAAC,SAAS,EAAE;QAChC,UAAU,EAAE,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;KAChD,CAAC,CAAC;AACL,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/session/session-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,14 +31,11 @@ export declare class SignedDialog {
|
|
|
31
31
|
* TAN media while no medium is chosen yet (`FinTs3Dialog.startWith`); returns both answers.
|
|
32
32
|
*/
|
|
33
33
|
loginWith(order: SegmentSpec): Promise<IncomingMessage3[]>;
|
|
34
|
-
/** Sends `order`, the first page of a query, and completes the approval the bank asks for. */
|
|
35
|
-
send(order: SegmentSpec): Promise<IncomingMessage3>;
|
|
36
34
|
/**
|
|
37
|
-
* Sends `order`
|
|
38
|
-
*
|
|
39
|
-
* page. Throws `FinTsProtocolError` if it asks for one.
|
|
35
|
+
* Sends `order` and completes the approval the bank asks for. `admitApproval` runs before the user is asked, and
|
|
36
|
+
* refuses the approval by throwing.
|
|
40
37
|
*/
|
|
41
|
-
|
|
38
|
+
send(order: SegmentSpec, admitApproval?: () => void): Promise<IncomingMessage3>;
|
|
42
39
|
/**
|
|
43
40
|
* Ends the dialog at the bank; does nothing if it is not active. Of the answer only a rejected PIN counts, which the
|
|
44
41
|
* guard judges: the dialog is over either way.
|
|
@@ -52,16 +49,25 @@ export declare class SignedDialog {
|
|
|
52
49
|
*/
|
|
53
50
|
private receive;
|
|
54
51
|
/**
|
|
55
|
-
*
|
|
56
|
-
* the
|
|
57
|
-
*
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
* Sends the login `send` and settles its answer. New login data next to an error in the answer to its approval are
|
|
53
|
+
* retired all the same (`retireLoginData`), although the guard counts that error as no refusal; next to an error in
|
|
54
|
+
* the answer to the login they are its refusal already (`loginRefusalFor`).
|
|
55
|
+
*/
|
|
56
|
+
private settleLogin;
|
|
57
|
+
/**
|
|
58
|
+
* Where `response` answers a login, a request of `kind` other than `order`, or its approval with new login data,
|
|
59
|
+
* retires them (`retireLoginData`). It runs before any approval, which would cost the user a TAN for a session that
|
|
60
|
+
* ends anyway.
|
|
60
61
|
*/
|
|
61
62
|
private retireOldLoginData;
|
|
62
63
|
/**
|
|
63
|
-
*
|
|
64
|
-
* with the
|
|
64
|
+
* Ends the dialog, whose answer to a request of `kind` brought new login data with `feedback`, stops the client from
|
|
65
|
+
* logging in with the old ones, and fails the call with `FinTsLoginDataChangedError` (Rückmeldungscodes C.6).
|
|
66
|
+
*/
|
|
67
|
+
private retireLoginData;
|
|
68
|
+
/**
|
|
69
|
+
* Receives `response`, the answer to a request of `kind`, then completes the approval it asks for, once
|
|
70
|
+
* `admitApproval` has let it; returns it joined with the response that completes the approval.
|
|
65
71
|
*
|
|
66
72
|
* Throws `FinTsProtocolError` if that response asks for an approval once more: the bank has not executed the message
|
|
67
73
|
* then either, and read as done it would report an empty result.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signed-dialog.d.ts","sourceRoot":"","sources":["../../src/session/signed-dialog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signed-dialog.d.ts","sourceRoot":"","sources":["../../src/session/signed-dialog.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAY,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,YAAY;IAGxC,+DAA+D;IAC/D,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,sGAAsG;IACtG,KAAK,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIrD;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAMhE;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIrF;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAUf;;;;OAIG;YACW,WAAW;IAezB;;;;OAIG;YACW,kBAAkB;IAKhC;;;OAGG;YACW,eAAe;IAM7B;;;;;;OAMG;YACW,MAAM;IAqBpB,sHAAsH;IACtH,OAAO,CAAC,WAAW;IAOnB,8GAA8G;YAChG,QAAQ;IAatB,mHAAmH;IACnH,OAAO,CAAC,gBAAgB;CAUzB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { requireLatin1 } from '../core/config.js';
|
|
2
|
-
import { bankErrorFor, FinTsLoginDataChangedError, FinTsProtocolError, FinTsTanCancelledError, } from '../core/errors.js';
|
|
3
|
-
import { allowedTanMethodsIn, FeedbackCodes, hasCode, hasErrors, userWarnings } from '../core/feedback.js';
|
|
2
|
+
import { bankErrorFor, FinTsBankError, FinTsLoginDataChangedError, FinTsLoginRefusedError, FinTsProtocolError, FinTsTanCancelledError, } from '../core/errors.js';
|
|
3
|
+
import { allowedTanMethodsIn, FeedbackCodes, hasCode, hasErrors, userWarnings, } from '../core/feedback.js';
|
|
4
4
|
import { invalidArgument } from '../util/errors.js';
|
|
5
|
+
import { trimBlanks, withAsciiForms } from '../util/text.js';
|
|
5
6
|
import { IncomingMessage3 } from '../v3/message.js';
|
|
6
7
|
import { appApprovalWait } from './app-approval.js';
|
|
7
8
|
/**
|
|
@@ -22,8 +23,8 @@ export class SignedDialog {
|
|
|
22
23
|
return this.dialog.isActive;
|
|
23
24
|
}
|
|
24
25
|
/** Logs in, which opens the dialog; with `synchronize` the bank also assigns a customer system ID. */
|
|
25
|
-
|
|
26
|
-
return this.
|
|
26
|
+
login(synchronize = false) {
|
|
27
|
+
return this.settleLogin(() => this.dialog.start(synchronize));
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Logs in, asking strong authentication for `order`, then sends `order` in a message of its own, as for listing the
|
|
@@ -31,25 +32,15 @@ export class SignedDialog {
|
|
|
31
32
|
*/
|
|
32
33
|
async loginWith(order) {
|
|
33
34
|
const start = this.dialog.startWith(order);
|
|
34
|
-
const login = await this.
|
|
35
|
+
const login = await this.settleLogin(start.login);
|
|
35
36
|
return [login, await this.settle(await start.order(), 'order')];
|
|
36
37
|
}
|
|
37
|
-
/** Sends `order`, the first page of a query, and completes the approval the bank asks for. */
|
|
38
|
-
async send(order) {
|
|
39
|
-
return this.settle(await this.dialog.send(order), 'order');
|
|
40
|
-
}
|
|
41
38
|
/**
|
|
42
|
-
* Sends `order`
|
|
43
|
-
*
|
|
44
|
-
* page. Throws `FinTsProtocolError` if it asks for one.
|
|
39
|
+
* Sends `order` and completes the approval the bank asks for. `admitApproval` runs before the user is asked, and
|
|
40
|
+
* refuses the approval by throwing.
|
|
45
41
|
*/
|
|
46
|
-
async
|
|
47
|
-
|
|
48
|
-
this.receive(response, 'order', false);
|
|
49
|
-
if (this.dialog.approvalAskedIn(response) !== undefined) {
|
|
50
|
-
throw new FinTsProtocolError('The bank asks for an approval of a further page of the same query');
|
|
51
|
-
}
|
|
52
|
-
return response;
|
|
42
|
+
async send(order, admitApproval) {
|
|
43
|
+
return this.settle(await this.dialog.send(order), 'order', admitApproval);
|
|
53
44
|
}
|
|
54
45
|
/**
|
|
55
46
|
* Ends the dialog at the bank; does nothing if it is not active. Of the answer only a rejected PIN counts, which the
|
|
@@ -80,33 +71,57 @@ export class SignedDialog {
|
|
|
80
71
|
throw refusal ?? error;
|
|
81
72
|
}
|
|
82
73
|
/**
|
|
83
|
-
*
|
|
84
|
-
* the
|
|
85
|
-
*
|
|
86
|
-
|
|
87
|
-
|
|
74
|
+
* Sends the login `send` and settles its answer. New login data next to an error in the answer to its approval are
|
|
75
|
+
* retired all the same (`retireLoginData`), although the guard counts that error as no refusal; next to an error in
|
|
76
|
+
* the answer to the login they are its refusal already (`loginRefusalFor`).
|
|
77
|
+
*/
|
|
78
|
+
async settleLogin(send) {
|
|
79
|
+
try {
|
|
80
|
+
return await this.settle(await send(), 'login');
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (!(error instanceof FinTsBankError) ||
|
|
84
|
+
error instanceof FinTsLoginRefusedError ||
|
|
85
|
+
!hasCode(error.feedback, FeedbackCodes.newLoginData)) {
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
return this.retireLoginData(error.feedback, 'approval');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Where `response` answers a login, a request of `kind` other than `order`, or its approval with new login data,
|
|
93
|
+
* retires them (`retireLoginData`). It runs before any approval, which would cost the user a TAN for a session that
|
|
94
|
+
* ends anyway.
|
|
88
95
|
*/
|
|
89
96
|
async retireOldLoginData(response, kind) {
|
|
90
97
|
if (kind === 'order' || !hasCode(response.feedback, FeedbackCodes.newLoginData))
|
|
91
98
|
return;
|
|
99
|
+
await this.retireLoginData(response.feedback, kind);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Ends the dialog, whose answer to a request of `kind` brought new login data with `feedback`, stops the client from
|
|
103
|
+
* logging in with the old ones, and fails the call with `FinTsLoginDataChangedError` (Rückmeldungscodes C.6).
|
|
104
|
+
*/
|
|
105
|
+
async retireLoginData(feedback, kind) {
|
|
92
106
|
await this.end();
|
|
93
|
-
const error = new FinTsLoginDataChangedError(
|
|
107
|
+
const error = new FinTsLoginDataChangedError(feedback);
|
|
94
108
|
throw this.session.guard.judge(error, kind, this.dialog.method) ?? error;
|
|
95
109
|
}
|
|
96
110
|
/**
|
|
97
|
-
* Receives `response`, the answer to a request of `kind`, then completes the approval it asks for
|
|
98
|
-
* with the response that completes the approval.
|
|
111
|
+
* Receives `response`, the answer to a request of `kind`, then completes the approval it asks for, once
|
|
112
|
+
* `admitApproval` has let it; returns it joined with the response that completes the approval.
|
|
99
113
|
*
|
|
100
114
|
* Throws `FinTsProtocolError` if that response asks for an approval once more: the bank has not executed the message
|
|
101
115
|
* then either, and read as done it would report an empty result.
|
|
102
116
|
*/
|
|
103
|
-
async settle(response, kind) {
|
|
117
|
+
async settle(response, kind, admitApproval) {
|
|
104
118
|
const opening = kind !== 'order';
|
|
105
119
|
this.receive(response, kind, opening);
|
|
106
120
|
await this.retireOldLoginData(response, kind);
|
|
107
121
|
const approval = this.dialog.approvalAskedIn(response);
|
|
108
122
|
if (approval === undefined)
|
|
109
123
|
return response;
|
|
124
|
+
admitApproval?.();
|
|
110
125
|
const approved = approval.challenge.isDecoupled
|
|
111
126
|
? await this.awaitAppApproval(approval, opening)
|
|
112
127
|
: await this.enterTan(approval, opening);
|
|
@@ -132,8 +147,8 @@ export class SignedDialog {
|
|
|
132
147
|
if (answer.kind === 'approved') {
|
|
133
148
|
throw invalidArgument('Answered a TAN challenge with an approval in the banking app', 'tanCallback');
|
|
134
149
|
}
|
|
135
|
-
// NFKC,
|
|
136
|
-
const tan = answer.kind === 'tan' ? answer.tan
|
|
150
|
+
// Not NFKC, which also changes characters FinTS 3.0 sends as they are, such as `²`, in a TAN the bank compares.
|
|
151
|
+
const tan = answer.kind === 'tan' ? trimBlanks(withAsciiForms(answer.tan)) : '';
|
|
137
152
|
if (tan === '')
|
|
138
153
|
throw new FinTsTanCancelledError();
|
|
139
154
|
const response = await approval.submitTan(requireTanOf(approval.challenge.method, tan));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signed-dialog.js","sourceRoot":"","sources":["../../src/session/signed-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"signed-dialog.js","sourceRoot":"","sources":["../../src/session/signed-dialog.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,17 @@ import type { TanMedium, TanMethod } from '../tan/tan-models.js';
|
|
|
11
11
|
* callbacks that only inform the app wait for `reportingCallbackErrors`, as `FinTsClientOptions` promises.
|
|
12
12
|
*/
|
|
13
13
|
export declare class UserPrompts {
|
|
14
|
-
private readonly options;
|
|
15
14
|
private closed;
|
|
16
15
|
/** The first error an informing callback threw during the running call. */
|
|
17
16
|
private callbackError;
|
|
18
17
|
/** Aborts the waits under way; each wait removes its abort when it is over, or when nothing waits for it any more. */
|
|
19
18
|
private readonly aborts;
|
|
19
|
+
/** The callbacks as the client was built with them, as in the Dart package, whose options are final. */
|
|
20
|
+
private readonly options;
|
|
21
|
+
/**
|
|
22
|
+
* Throws `TypeError` for a `tanCallback` that is no function, and for another callback that is neither a function
|
|
23
|
+
* nor `undefined` or `null`, which mean none.
|
|
24
|
+
*/
|
|
20
25
|
constructor(options: FinTsClientOptions);
|
|
21
26
|
/** Ends every wait; the client calls it once. */
|
|
22
27
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-prompts.d.ts","sourceRoot":"","sources":["../../src/session/user-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"user-prompts.d.ts","sourceRoot":"","sources":["../../src/session/user-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAWjE;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IAEvB,2EAA2E;IAC3E,OAAO,CAAC,aAAa,CAAiC;IAEtD,sHAAsH;IACtH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAEhD,wGAAwG;IACxG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IAEpC;;;OAGG;gBACS,OAAO,EAAE,kBAAkB;IAavC,iDAAiD;IACjD,KAAK,IAAI,IAAI;IAMb,wDAAwD;IACxD,SAAS,IAAI,IAAI;IAIjB;;;OAGG;IACG,uBAAuB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASpE,sGAAsG;IACtG,IAAI,MAAM,IAAI,aAAa,GAAG,SAAS,CAQtC;IAED,2EAA2E;IAC3E,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAS3C,2EAA2E;IAC3E,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASzC,OAAO,CAAC,MAAM;IAQd;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAInD,sEAAsE;IACtE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnE;;;;OAIG;IACG,YAAY,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAUxE;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAUnE;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;CA0BrB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { clientClosedError } from '../core/errors.js';
|
|
2
2
|
import { TanAnswer } from '../tan/challenge.js';
|
|
3
|
+
import { optionalFunction, requireFunction } from '../util/arguments.js';
|
|
3
4
|
import { Deferred } from '../util/async.js';
|
|
4
5
|
import { invalidArgument } from '../util/errors.js';
|
|
5
6
|
/**
|
|
@@ -10,14 +11,28 @@ import { invalidArgument } from '../util/errors.js';
|
|
|
10
11
|
* callbacks that only inform the app wait for `reportingCallbackErrors`, as `FinTsClientOptions` promises.
|
|
11
12
|
*/
|
|
12
13
|
export class UserPrompts {
|
|
13
|
-
options;
|
|
14
14
|
closed = false;
|
|
15
15
|
/** The first error an informing callback threw during the running call. */
|
|
16
16
|
callbackError;
|
|
17
17
|
/** Aborts the waits under way; each wait removes its abort when it is over, or when nothing waits for it any more. */
|
|
18
18
|
aborts = new Set();
|
|
19
|
+
/** The callbacks as the client was built with them, as in the Dart package, whose options are final. */
|
|
20
|
+
options;
|
|
21
|
+
/**
|
|
22
|
+
* Throws `TypeError` for a `tanCallback` that is no function, and for another callback that is neither a function
|
|
23
|
+
* nor `undefined` or `null`, which mean none.
|
|
24
|
+
*/
|
|
19
25
|
constructor(options) {
|
|
20
|
-
|
|
26
|
+
const tanCallback = requireFunction(options.tanCallback, 'tanCallback');
|
|
27
|
+
this.options = {
|
|
28
|
+
// Called on the app's options, which a callback written as a method of them may refer to as `this`.
|
|
29
|
+
tanCallback: (challenge) => tanCallback.call(options, challenge),
|
|
30
|
+
tanMethodSelector: optionalFunction(options.tanMethodSelector, 'tanMethodSelector'),
|
|
31
|
+
tanMediumSelector: optionalFunction(options.tanMediumSelector, 'tanMediumSelector'),
|
|
32
|
+
onBankMessage: optionalFunction(options.onBankMessage, 'onBankMessage'),
|
|
33
|
+
onWarning: optionalFunction(options.onWarning, 'onWarning'),
|
|
34
|
+
logger: optionalFunction(options.logger, 'logger'),
|
|
35
|
+
};
|
|
21
36
|
}
|
|
22
37
|
/** Ends every wait; the client calls it once. */
|
|
23
38
|
close() {
|
|
@@ -111,7 +126,7 @@ export class UserPrompts {
|
|
|
111
126
|
if (candidates.length === 1 || selector === undefined)
|
|
112
127
|
return candidates[0];
|
|
113
128
|
const chosen = await this.unlessClosed(() => selector(candidates));
|
|
114
|
-
if (chosen === undefined)
|
|
129
|
+
if (chosen === undefined || chosen === null)
|
|
115
130
|
return candidates[0];
|
|
116
131
|
const match = candidates.find((m) => m.securityFunction === chosen.securityFunction);
|
|
117
132
|
if (match === undefined)
|
|
@@ -128,7 +143,7 @@ export class UserPrompts {
|
|
|
128
143
|
if (media.length === 1 || selector === undefined)
|
|
129
144
|
return media[0];
|
|
130
145
|
const chosen = await this.unlessClosed(() => selector(media));
|
|
131
|
-
if (chosen === undefined)
|
|
146
|
+
if (chosen === undefined || chosen === null)
|
|
132
147
|
return media[0];
|
|
133
148
|
const match = media.find((m) => m.name === chosen.name);
|
|
134
149
|
if (match === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-prompts.js","sourceRoot":"","sources":["../../src/session/user-prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAqB,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"user-prompts.js","sourceRoot":"","sources":["../../src/session/user-prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/tan/challenge.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inspectCustom } from '../util/inspect.js';
|
|
1
2
|
import { FlickerCode } from './flicker.js';
|
|
2
3
|
import { TanImage } from './tan-image.js';
|
|
3
4
|
import type { TanMedium, TanMethod } from './tan-models.js';
|
|
@@ -67,13 +68,18 @@ export declare class TanChallenge {
|
|
|
67
68
|
* A method with structured challenges (`TanMethod.structuredChallenge`) may use the formatting tags the specification
|
|
68
69
|
* defines. Line breaks, paragraphs and list items become new lines. Bold, italics, underlining and list tags are
|
|
69
70
|
* removed, and the entity references of such markup are resolved. Any other challenge stays as the bank sent it,
|
|
70
|
-
* which is how the specification wants it shown.
|
|
71
|
+
* which is how the specification wants it shown. So does a structured challenge of more than 65,536 characters.
|
|
71
72
|
*
|
|
72
73
|
* Show it as text, such as with `textContent`, or `{{ }}` in Vue, and `white-space: pre-line` for its line breaks;
|
|
73
74
|
* never as HTML (`innerHTML`, `v-html`). It keeps the tags the specification does not define, and `<` becomes
|
|
74
75
|
* `<`, so that as HTML the bank's text could run scripts in the app.
|
|
75
76
|
*/
|
|
76
77
|
get plainMessage(): string | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* What Node.js's `util.inspect` and `console.log` show: the method, the kind of challenge and the attempt; not the
|
|
80
|
+
* text, the reference, the challenge data, the image or the medium, which may name the user, the account or the order.
|
|
81
|
+
*/
|
|
82
|
+
[inspectCustom](): string;
|
|
77
83
|
}
|
|
78
84
|
/** `challenge` again, counted as the next prompt for the same approval, with the bank's new instructions `message`. */
|
|
79
85
|
export declare function nextAttempt(challenge: TanChallenge, message?: string): TanChallenge;
|
|
@@ -82,8 +88,8 @@ export declare function withResolved(challenge: TanChallenge, resolved: Promise<
|
|
|
82
88
|
/** The user's answer to a `TanChallenge`: `TanAnswer.tan(…)`, `TanAnswer.approved` or `TanAnswer.cancelled`. */
|
|
83
89
|
export type TanAnswer =
|
|
84
90
|
/**
|
|
85
|
-
* The TAN the user entered; an empty one cancels a TAN challenge. Blanks around it do not count, and
|
|
86
|
-
*
|
|
91
|
+
* The TAN the user entered; an empty one cancels a TAN challenge. Blanks around it do not count, and full-width
|
|
92
|
+
* characters, as East Asian input methods type them, count as their ASCII counterparts.
|
|
87
93
|
*/
|
|
88
94
|
{
|
|
89
95
|
readonly kind: 'tan';
|
|
@@ -102,13 +108,9 @@ export declare const TanAnswer: Readonly<{
|
|
|
102
108
|
/** The TAN the user entered; an empty one cancels a TAN challenge (`TanAnswer`). */
|
|
103
109
|
tan: (tan: string) => TanAnswer;
|
|
104
110
|
/** The user reports the approval in the banking app (`TanChallenge.isDecoupled`); the client then asks the bank. */
|
|
105
|
-
approved:
|
|
106
|
-
readonly kind: "approved";
|
|
107
|
-
};
|
|
111
|
+
approved: TanAnswer;
|
|
108
112
|
/** The user cancels: the client ends the bank dialog, and the call fails with `FinTsTanCancelledError`. */
|
|
109
|
-
cancelled:
|
|
110
|
-
readonly kind: "cancelled";
|
|
111
|
-
};
|
|
113
|
+
cancelled: TanAnswer;
|
|
112
114
|
}>;
|
|
113
115
|
/**
|
|
114
116
|
* Shows the `TanChallenge` to the user and returns the `TanAnswer`: `TanAnswer.tan(…)` for a TAN, `TanAnswer.approved`
|
|
@@ -128,8 +130,8 @@ export declare const TanAnswer: Readonly<{
|
|
|
128
130
|
* handlers of the earlier prompt's `resolved` have run.
|
|
129
131
|
*/
|
|
130
132
|
export type TanCallback = (challenge: TanChallenge) => TanAnswer | Promise<TanAnswer>;
|
|
131
|
-
/** Picks one of several allowed TAN methods; the first is used when this returns `undefined`. */
|
|
132
|
-
export type TanMethodSelector = (methods: readonly TanMethod[]) => TanMethod | undefined | Promise<TanMethod | undefined>;
|
|
133
|
-
/** Picks one of several active TAN media; the first is used when this returns `undefined`. */
|
|
134
|
-
export type TanMediumSelector = (media: readonly TanMedium[]) => TanMedium | undefined | Promise<TanMedium | undefined>;
|
|
133
|
+
/** Picks one of several allowed TAN methods; the first is used when this returns `undefined` or `null`. */
|
|
134
|
+
export type TanMethodSelector = (methods: readonly TanMethod[]) => TanMethod | null | undefined | Promise<TanMethod | null | undefined>;
|
|
135
|
+
/** Picks one of several active TAN media; the first is used when this returns `undefined` or `null`. */
|
|
136
|
+
export type TanMediumSelector = (media: readonly TanMedium[]) => TanMedium | null | undefined | Promise<TanMedium | null | undefined>;
|
|
135
137
|
//# sourceMappingURL=challenge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"challenge.d.ts","sourceRoot":"","sources":["../../src/tan/challenge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"challenge.d.ts","sourceRoot":"","sources":["../../src/tan/challenge.ts"],"names":[],"mappings":"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"}
|