@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
package/dist/util/async.js
CHANGED
|
@@ -35,10 +35,13 @@ export class Deferred {
|
|
|
35
35
|
*/
|
|
36
36
|
export class SerialExecutor {
|
|
37
37
|
last = Promise.resolve();
|
|
38
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Runs `action` once the actions submitted before have finished; the result is that of `action`, which the executor
|
|
40
|
+
* does not keep.
|
|
41
|
+
*/
|
|
39
42
|
run(action) {
|
|
40
|
-
const result = this.last.then(action);
|
|
41
|
-
this.last = result.
|
|
43
|
+
const result = this.last.then(() => action());
|
|
44
|
+
this.last = result.then(() => undefined, () => undefined);
|
|
42
45
|
return result;
|
|
43
46
|
}
|
|
44
47
|
}
|
package/dist/util/async.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/util/async.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,OAAO,QAAQ;IACV,OAAO,CAAa;IACrB,SAAS,CAAsB;IAC/B,QAAQ,CAA4B;IACpC,OAAO,GAAG,KAAK,CAAC;IAExB;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,kGAAkG;QAClG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,KAAQ;QACd,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,KAAc;QACnB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACjB,IAAI,
|
|
1
|
+
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/util/async.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,OAAO,QAAQ;IACV,OAAO,CAAa;IACrB,SAAS,CAAsB;IAC/B,QAAQ,CAA4B;IACpC,OAAO,GAAG,KAAK,CAAC;IAExB;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,kGAAkG;QAClG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,KAAQ;QACd,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,KAAc;QACnB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACjB,IAAI,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEhD;;;OAGG;IACH,GAAG,CAAI,MAAwB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CACrB,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
package/dist/util/bytes.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export declare function latin1Decode(bytes: Uint8Array): string;
|
|
|
14
14
|
/** The text of the UTF-16 code units `codes`. */
|
|
15
15
|
export declare function fromCharCodes(codes: Uint8Array | Uint16Array): string;
|
|
16
16
|
export declare function utf8Encode(text: string): Uint8Array;
|
|
17
|
-
/** Decodes UTF-8; throws `FormatError` for malformed data unless `allowMalformed`. */
|
|
17
|
+
/** Decodes UTF-8, without a leading BOM; throws `FormatError` for malformed data unless `allowMalformed`. */
|
|
18
18
|
export declare function utf8Decode(bytes: Uint8Array, allowMalformed?: boolean): string;
|
|
19
19
|
export declare function base64Encode(bytes: Uint8Array): string;
|
|
20
20
|
/** Decodes base64, in the standard or the URL-safe alphabet; throws `FormatError` if `text` is not base64. */
|
package/dist/util/bytes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/util/bytes.ts"],"names":[],"mappings":"AAEA,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,CAUpE;AAED,6CAA6C;AAC7C,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI;IAIhD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,SAAS,IAAI,UAAU;CAKxB;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAIrD;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEtD;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAQrE;AAMD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEnD;AAED,
|
|
1
|
+
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/util/bytes.ts"],"names":[],"mappings":"AAEA,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,CAUpE;AAED,6CAA6C;AAC7C,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI;IAIhD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,SAAS,IAAI,UAAU;CAKxB;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAIrD;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEtD;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAQrE;AAMD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEnD;AAED,6GAA6G;AAC7G,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,UAAQ,GAAG,MAAM,CAM5E;AAYD,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAoBtD;AAED,8GAA8G;AAC9G,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAqBrD"}
|
package/dist/util/bytes.js
CHANGED
|
@@ -49,12 +49,12 @@ export function fromCharCodes(codes) {
|
|
|
49
49
|
return text;
|
|
50
50
|
}
|
|
51
51
|
const utf8Encoder = new TextEncoder();
|
|
52
|
-
const utf8Decoder = new TextDecoder('utf-8', { fatal: true
|
|
53
|
-
const lenientUtf8Decoder = new TextDecoder('utf-8'
|
|
52
|
+
const utf8Decoder = new TextDecoder('utf-8', { fatal: true });
|
|
53
|
+
const lenientUtf8Decoder = new TextDecoder('utf-8');
|
|
54
54
|
export function utf8Encode(text) {
|
|
55
55
|
return utf8Encoder.encode(text);
|
|
56
56
|
}
|
|
57
|
-
/** Decodes UTF-8; throws `FormatError` for malformed data unless `allowMalformed`. */
|
|
57
|
+
/** Decodes UTF-8, without a leading BOM; throws `FormatError` for malformed data unless `allowMalformed`. */
|
|
58
58
|
export function utf8Decode(bytes, allowMalformed = false) {
|
|
59
59
|
try {
|
|
60
60
|
return (allowMalformed ? lenientUtf8Decoder : utf8Decoder).decode(bytes);
|
package/dist/util/bytes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/util/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,yCAAyC;AACzC,MAAM,UAAU,WAAW,CAAC,KAA4B;IACtD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IACxB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6CAA6C;AAC7C,MAAM,OAAO,YAAY;IACN,KAAK,GAAiB,EAAE,CAAC;IAE1C,GAAG,CAAC,KAAqC;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,aAAa,CAAC,KAA+B;IAC3D,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,uHAAuH;IACvH,gCAAgC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;QAC9C,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAW,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/util/bytes.ts"],"names":[],"mappings":"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"}
|
package/dist/util/dates.d.ts
CHANGED
|
@@ -12,24 +12,17 @@ export declare function parseFintsDate(date: string | undefined): Date | undefin
|
|
|
12
12
|
*/
|
|
13
13
|
export declare function parseFintsDateTime(date: string | undefined, time: string | undefined): Date | undefined;
|
|
14
14
|
/**
|
|
15
|
-
* Parses an ISO 8601 date `YYYY-MM-DD` as a calendar date, ignoring
|
|
16
|
-
* if it is missing or invalid.
|
|
15
|
+
* Parses an ISO 8601 date `YYYY-MM-DD` as a calendar date, ignoring what follows it, such as a time zone; `undefined`
|
|
16
|
+
* if it is missing or invalid. A `T` right after the date makes it a date and time, which must be one `parseIsoMoment`
|
|
17
|
+
* reads, and the date the day in Germany at that moment: for a time in UTC late in the evening, the next day.
|
|
17
18
|
*/
|
|
18
19
|
export declare function parseIsoDate(date: string | undefined): Date | undefined;
|
|
19
|
-
/**
|
|
20
|
-
* Parses an ISO 8601 date and time as XML Schema writes it, `YYYY-MM-DDThh:mm:ss` with optional fractional seconds and
|
|
21
|
-
* UTC offset (`Z` or `±hh:mm`), as the moment it names, to the second: in German time where it states no offset.
|
|
22
|
-
* `undefined` if it is missing or invalid.
|
|
23
|
-
*/
|
|
24
|
-
export declare function parseIsoMoment(dateTime: string | undefined): Date | undefined;
|
|
25
20
|
/**
|
|
26
21
|
* Parses a FinTS 3.0 date `YYYYMMDD` and time `HHMMSS` given in UTC+01:00 all year round, as the account extension of
|
|
27
22
|
* the user parameter data states its times (Formals E.3.1); `undefined` if either is missing or invalid. A time with
|
|
28
23
|
* fewer than six digits lost its leading zeros as a JSON number.
|
|
29
24
|
*/
|
|
30
25
|
export declare function parseUtcPlusOneDateTime(date: string | undefined, time: string | undefined): Date | undefined;
|
|
31
|
-
/** The calendar day a German clock shows at `moment`, as a local `Date` at midnight like every calendar date. */
|
|
32
|
-
export declare function germanDay(moment: Date): Date;
|
|
33
26
|
/**
|
|
34
27
|
* The date, with a day beyond the end of the month moved to its last day: banks write 30 February or 31 April for
|
|
35
28
|
* month-end bookings. `undefined` for a month or day that no month has.
|
package/dist/util/dates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../src/util/dates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../src/util/dates.ts"],"names":[],"mappings":"AAeA,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAE/C;AAED,2CAA2C;AAC3C,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAE/C;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAE7C;AAWD,sGAAsG;AACtG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAEzE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAGvG;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAIvE;AA+CD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAG5G;AAwDD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAGtF;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAK/D;AAQD,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;AACxC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;AAKhE,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,GAAG,SAAS,EAAE,GAAG,GAAE,IAAiB,GAAG,IAAI,GAAG,SAAS,CAI7F"}
|
package/dist/util/dates.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// A value is either a calendar date, a local `Date` at midnight of which only the day counts, or the exact moment of a
|
|
2
|
-
// date with a time of day, which the bank states in German time (see `germanTime`)
|
|
3
|
-
// date without a valid time of day is not a moment.
|
|
2
|
+
// date with a time of day, which the bank states in German time (see `germanTime`) unless it gives the UTC offset. The
|
|
3
|
+
// parsers keep the two apart: a date without a valid time of day is not a moment. A time of day runs from 00:00:00 to
|
|
4
|
+
// 23:59:59, and 24:00:00, which ISO 8601 and XML Schema allow for the end of a day, is midnight of the next.
|
|
4
5
|
const hourMs = 3_600_000;
|
|
5
6
|
function twoDigits(n) {
|
|
6
7
|
return n.toString().padStart(2, '0');
|
|
@@ -23,8 +24,8 @@ export function formatIsoDate(d) {
|
|
|
23
24
|
const fintsDate = /^(\d{4})(\d{2})(\d{2})$/;
|
|
24
25
|
const fintsTime = /^(\d{2})(\d{2})(\d{2})/;
|
|
25
26
|
const isoDate = /^(\d{4})-(\d{2})-(\d{2})/;
|
|
26
|
-
|
|
27
|
-
const
|
|
27
|
+
// The time of an XML Schema `dateTime`, whose UTC offset lies between -14:00 and +14:00.
|
|
28
|
+
const isoTime = /^(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|[+-](?:(?:0\d|1[0-3]):[0-5]\d|14:00))?$/;
|
|
28
29
|
/** Parses a FinTS 3.0 date `YYYYMMDD` as a calendar date; `undefined` if it is missing or invalid. */
|
|
29
30
|
export function parseFintsDate(date) {
|
|
30
31
|
return parseDate(fintsDate, date);
|
|
@@ -34,51 +35,63 @@ export function parseFintsDate(date) {
|
|
|
34
35
|
* invalid.
|
|
35
36
|
*/
|
|
36
37
|
export function parseFintsDateTime(date, time) {
|
|
37
|
-
|
|
38
|
+
const clock = clockOn(parseDate(fintsDate, date), match(fintsTime, time));
|
|
39
|
+
return clock && germanTime(...clock);
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
40
|
-
* Parses an ISO 8601 date `YYYY-MM-DD` as a calendar date, ignoring
|
|
41
|
-
* if it is missing or invalid.
|
|
42
|
+
* Parses an ISO 8601 date `YYYY-MM-DD` as a calendar date, ignoring what follows it, such as a time zone; `undefined`
|
|
43
|
+
* if it is missing or invalid. A `T` right after the date makes it a date and time, which must be one `parseIsoMoment`
|
|
44
|
+
* reads, and the date the day in Germany at that moment: for a time in UTC late in the evening, the next day.
|
|
42
45
|
*/
|
|
43
46
|
export function parseIsoDate(date) {
|
|
44
|
-
|
|
47
|
+
if (date?.charAt(10) !== 'T')
|
|
48
|
+
return parseDate(isoDate, date);
|
|
49
|
+
const moment = parseIsoMoment(date);
|
|
50
|
+
return moment && germanDay(moment);
|
|
45
51
|
}
|
|
46
52
|
/**
|
|
47
53
|
* Parses an ISO 8601 date and time as XML Schema writes it, `YYYY-MM-DDThh:mm:ss` with optional fractional seconds and
|
|
48
|
-
* UTC offset (`Z` or `±hh:mm`), as the moment it names, to the second: in German time where it states no
|
|
49
|
-
* `undefined` if it is
|
|
54
|
+
* UTC offset (`Z` or `±hh:mm` up to ±14:00), as the moment it names, to the second: in German time where it states no
|
|
55
|
+
* offset. `undefined` if it is invalid.
|
|
50
56
|
*/
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
|
|
57
|
+
function parseIsoMoment(dateTime) {
|
|
58
|
+
const t = isoTime.exec(dateTime.slice(11));
|
|
59
|
+
const clock = clockOn(parseDate(isoDate, dateTime), t);
|
|
60
|
+
if (clock === undefined)
|
|
54
61
|
return undefined;
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
const zone = t?.[5];
|
|
63
|
+
return zone === undefined ? germanTime(...clock) : new Date(utc(...clock) - offsetMs(zone));
|
|
64
|
+
}
|
|
65
|
+
/** The UTC offset `Z` or `±hh:mm` in milliseconds. */
|
|
66
|
+
function offsetMs(zone) {
|
|
67
|
+
if (zone === 'Z')
|
|
68
|
+
return 0;
|
|
69
|
+
const ms = (Number(zone.slice(1, 3)) * 60 + Number(zone.slice(4))) * 60_000;
|
|
70
|
+
return zone.startsWith('-') ? -ms : ms;
|
|
71
|
+
}
|
|
72
|
+
function match(pattern, text) {
|
|
73
|
+
return text === undefined ? null : pattern.exec(text);
|
|
63
74
|
}
|
|
64
75
|
function parseDate(pattern, date) {
|
|
65
|
-
const d =
|
|
76
|
+
const d = match(pattern, date);
|
|
66
77
|
return d ? validDate(Number(d[1]), Number(d[2]), Number(d[3])) : undefined;
|
|
67
78
|
}
|
|
68
|
-
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
79
|
+
/**
|
|
80
|
+
* The time of day `t` on `day`, where `t` matched hour, minute and second, and maybe a fraction of a second after them;
|
|
81
|
+
* `undefined` if either is missing or the time is invalid.
|
|
82
|
+
*/
|
|
83
|
+
function clockOn(day, t) {
|
|
84
|
+
if (day === undefined || !t)
|
|
72
85
|
return undefined;
|
|
73
86
|
const [hour, minute, second] = [Number(t[1]), Number(t[2]), Number(t[3])];
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (
|
|
87
|
+
// The fraction counts only here: 24:00:00.5 lies past the end of the day.
|
|
88
|
+
if (hour === 24 && minute === 0 && second === 0 && !/[1-9]/.test(t[4] ?? '')) {
|
|
89
|
+
const next = localDate(day.getFullYear(), day.getMonth() + 1, day.getDate() + 1);
|
|
90
|
+
return [next.getFullYear(), next.getMonth() + 1, next.getDate(), 0, 0, 0];
|
|
91
|
+
}
|
|
92
|
+
if (hour > 23 || minute > 59 || second > 59)
|
|
80
93
|
return undefined;
|
|
81
|
-
return
|
|
94
|
+
return [day.getFullYear(), day.getMonth() + 1, day.getDate(), hour, minute, second];
|
|
82
95
|
}
|
|
83
96
|
/**
|
|
84
97
|
* Parses a FinTS 3.0 date `YYYYMMDD` and time `HHMMSS` given in UTC+01:00 all year round, as the account extension of
|
|
@@ -86,11 +99,8 @@ function moment(day, timePattern, time) {
|
|
|
86
99
|
* fewer than six digits lost its leading zeros as a JSON number.
|
|
87
100
|
*/
|
|
88
101
|
export function parseUtcPlusOneDateTime(date, time) {
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
if (day === undefined || t === undefined)
|
|
92
|
-
return undefined;
|
|
93
|
-
return new Date(utc(day.getFullYear(), day.getMonth() + 1, day.getDate(), ...t) - hourMs);
|
|
102
|
+
const clock = clockOn(parseDate(fintsDate, date), match(fintsTime, time?.padStart(6, '0')));
|
|
103
|
+
return clock && new Date(utc(...clock) - hourMs);
|
|
94
104
|
}
|
|
95
105
|
/**
|
|
96
106
|
* The moment a German clock shows the given time.
|
|
@@ -105,7 +115,7 @@ function germanTime(year, month, day, hour, minute, second) {
|
|
|
105
115
|
return new Date(isSummerTime(summer) ? summer : clock - hourMs);
|
|
106
116
|
}
|
|
107
117
|
/** The calendar day a German clock shows at `moment`, as a local `Date` at midnight like every calendar date. */
|
|
108
|
-
|
|
118
|
+
function germanDay(moment) {
|
|
109
119
|
const utcMs = moment.getTime();
|
|
110
120
|
const clock = new Date(utcMs + (isSummerTime(utcMs) ? 2 : 1) * hourMs);
|
|
111
121
|
return localDate(clock.getUTCFullYear(), clock.getUTCMonth() + 1, clock.getUTCDate());
|
package/dist/util/dates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../../src/util/dates.ts"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,sHAAsH;AACtH,
|
|
1
|
+
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../../src/util/dates.ts"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,uHAAuH;AACvH,sHAAsH;AACtH,6GAA6G;AAE7G,MAAM,MAAM,GAAG,SAAS,CAAC;AAEzB,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,IAAI,CAAC,CAAO;IACnB,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,eAAe,CAAC,CAAO;IACrC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,eAAe,CAAC,CAAO;IACrC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAC,CAAO;IACnC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,SAAS,GAAG,yBAAyB,CAAC;AAC5C,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAC3C,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAC3C,yFAAyF;AACzF,MAAM,OAAO,GAAG,4EAA4E,CAAC;AAK7F,sGAAsG;AACtG,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,OAAO,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAwB,EAAE,IAAwB;IACnF,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,OAAO,KAAK,IAAI,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAwB;IACnD,IAAI,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,sDAAsD;AACtD,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5E,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,KAAK,CAAC,OAAe,EAAE,IAAwB;IACtD,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,IAAwB;IAC1D,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,GAAqB,EAAE,CAAyB;IAC/D,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,0EAA0E;IAC1E,IAAI,IAAI,KAAK,EAAE,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACtF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAwB,EAAE,IAAwB;IACxF,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,IAAY,EAAE,MAAc,EAAE,MAAc;IACxG,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AAClE,CAAC;AAED,iHAAiH;AACjH,SAAS,SAAS,CAAC,MAAY;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IACvE,OAAO,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;IAC3C,OAAO,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,+EAA+E;AAC/E,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACzE,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,sHAAsH;AACtH,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,IAAY,EAAE,MAAc,EAAE,MAAc;IACjG,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,mGAAmG;AACnG,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IACzD,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,iHAAiH;AACjH,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IACzD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3F,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IAClE,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC;IACrE,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,SAAS,GAAG,yBAAyB,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,0DAA0D;AAC1D,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC9C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAKD,MAAM,UAAU,QAAQ,CAAC,CAAmB;IAC1C,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,WAAW,CAAC,MAAY;IACtC,OAAO,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAqB,EAAE,MAAY,IAAI,IAAI,EAAE;IACzE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACvD,CAAC"}
|
package/dist/util/errors.d.ts
CHANGED
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
* Data that do not have the expected format, such as a malformed MT940 line or amount.
|
|
3
3
|
*
|
|
4
4
|
* The message leaves out `source`, which may hold account data, such as amounts, names and IBANs, so that logs and
|
|
5
|
-
* crash reports do not collect them.
|
|
5
|
+
* crash reports do not collect them. For the same reason `source` is a getter, not a field: `JSON.stringify` and
|
|
6
|
+
* Node.js's report of an uncaught error show an error's fields as they are.
|
|
6
7
|
*/
|
|
7
8
|
export declare class FormatError extends Error {
|
|
9
|
+
#private;
|
|
8
10
|
name: string;
|
|
9
|
-
/** The part of the data that is malformed, where the parser can tell it. */
|
|
10
|
-
readonly source: string | undefined;
|
|
11
11
|
constructor(message: string, source?: string);
|
|
12
|
+
/** The part of the data that is malformed, where the parser can tell it. */
|
|
13
|
+
get source(): string | undefined;
|
|
12
14
|
}
|
|
13
15
|
/** Throws a `FormatError`, where an expression is expected, such as `value ?? fail('…')`. */
|
|
14
16
|
export declare function fail(message: string, source?: string): never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/util/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/util/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,KAAK;;IAC3B,IAAI,SAAiB;gBAIlB,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAK5C,4EAA4E;IAC5E,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;CACF;AAED,6FAA6F;AAC7F,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAE5D;AAED,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAEzE"}
|
package/dist/util/errors.js
CHANGED
|
@@ -2,15 +2,19 @@
|
|
|
2
2
|
* Data that do not have the expected format, such as a malformed MT940 line or amount.
|
|
3
3
|
*
|
|
4
4
|
* The message leaves out `source`, which may hold account data, such as amounts, names and IBANs, so that logs and
|
|
5
|
-
* crash reports do not collect them.
|
|
5
|
+
* crash reports do not collect them. For the same reason `source` is a getter, not a field: `JSON.stringify` and
|
|
6
|
+
* Node.js's report of an uncaught error show an error's fields as they are.
|
|
6
7
|
*/
|
|
7
8
|
export class FormatError extends Error {
|
|
8
9
|
name = 'FormatError';
|
|
9
|
-
|
|
10
|
-
source;
|
|
10
|
+
#source;
|
|
11
11
|
constructor(message, source) {
|
|
12
12
|
super(message);
|
|
13
|
-
this
|
|
13
|
+
this.#source = source;
|
|
14
|
+
}
|
|
15
|
+
/** The part of the data that is malformed, where the parser can tell it. */
|
|
16
|
+
get source() {
|
|
17
|
+
return this.#source;
|
|
14
18
|
}
|
|
15
19
|
}
|
|
16
20
|
/** Throws a `FormatError`, where an expression is expected, such as `value ?? fail('…')`. */
|
package/dist/util/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/util/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/util/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,GAAG,aAAa,CAAC;IAErB,OAAO,CAAqB;IAErC,YAAY,OAAe,EAAE,MAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,4EAA4E;IAC5E,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAED,6FAA6F;AAC7F,MAAM,UAAU,IAAI,CAAC,OAAe,EAAE,MAAe;IACnD,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,IAAa;IAC5D,OAAO,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC;AAChG,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* A map that cannot be changed, also not at runtime: it has no `set`, `delete` or `clear`, and no other code reaches
|
|
3
|
+
* the map that holds its entries.
|
|
4
|
+
*/
|
|
2
5
|
export declare class ImmutableMap<K, V> implements ReadonlyMap<K, V> {
|
|
3
|
-
private
|
|
6
|
+
#private;
|
|
4
7
|
constructor(entries?: Iterable<readonly [K, V]>);
|
|
5
8
|
get size(): number;
|
|
6
9
|
get(key: K): V | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"immutable-map.d.ts","sourceRoot":"","sources":["../../src/util/immutable-map.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"immutable-map.d.ts","sourceRoot":"","sources":["../../src/util/immutable-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,YAAY,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAG9C,OAAO,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAI/C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAM3E,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAI9B,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC;IAItB,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC;IAIxB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAIxC,+DAA+D;IAC/D,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;CAG5B"}
|
|
@@ -1,38 +1,41 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* A map that cannot be changed, also not at runtime: it has no `set`, `delete` or `clear`, and no other code reaches
|
|
3
|
+
* the map that holds its entries.
|
|
4
|
+
*/
|
|
2
5
|
export class ImmutableMap {
|
|
3
|
-
map;
|
|
6
|
+
#map;
|
|
4
7
|
constructor(entries) {
|
|
5
|
-
this
|
|
8
|
+
this.#map = new Map(entries);
|
|
6
9
|
}
|
|
7
10
|
get size() {
|
|
8
|
-
return this
|
|
11
|
+
return this.#map.size;
|
|
9
12
|
}
|
|
10
13
|
get(key) {
|
|
11
|
-
return this
|
|
14
|
+
return this.#map.get(key);
|
|
12
15
|
}
|
|
13
16
|
has(key) {
|
|
14
|
-
return this
|
|
17
|
+
return this.#map.has(key);
|
|
15
18
|
}
|
|
16
19
|
forEach(callback) {
|
|
17
|
-
this
|
|
20
|
+
this.#map.forEach((value, key) => {
|
|
18
21
|
callback(value, key, this);
|
|
19
22
|
});
|
|
20
23
|
}
|
|
21
24
|
entries() {
|
|
22
|
-
return this
|
|
25
|
+
return this.#map.entries();
|
|
23
26
|
}
|
|
24
27
|
keys() {
|
|
25
|
-
return this
|
|
28
|
+
return this.#map.keys();
|
|
26
29
|
}
|
|
27
30
|
values() {
|
|
28
|
-
return this
|
|
31
|
+
return this.#map.values();
|
|
29
32
|
}
|
|
30
33
|
[Symbol.iterator]() {
|
|
31
|
-
return this
|
|
34
|
+
return this.#map.entries();
|
|
32
35
|
}
|
|
33
36
|
/** A plain object of the entries, for JSON and for display. */
|
|
34
37
|
toJSON() {
|
|
35
|
-
return Object.fromEntries([...this
|
|
38
|
+
return Object.fromEntries([...this.#map].map(([key, value]) => [String(key), value]));
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
//# sourceMappingURL=immutable-map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"immutable-map.js","sourceRoot":"","sources":["../../src/util/immutable-map.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"immutable-map.js","sourceRoot":"","sources":["../../src/util/immutable-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,YAAY;IACd,IAAI,CAAY;IAEzB,YAAY,OAAmC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,QAA4D;QAClE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC/B,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,+DAA+D;IAC/D,MAAM;QACJ,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The key of the method by which Node.js's `util.inspect`, and so `console.log`, shows an object, as do Deno and Bun:
|
|
3
|
+
* its registered name, so that no Node.js import is needed.
|
|
4
|
+
*/
|
|
5
|
+
export declare const inspectCustom: unique symbol;
|
|
6
|
+
/**
|
|
7
|
+
* `value` frozen, with `show` as what `util.inspect` shows of it instead of its fields. The method is no enumerable
|
|
8
|
+
* property, so that `JSON.stringify`, `structuredClone` and comparisons in tests see the same plain object as before.
|
|
9
|
+
*/
|
|
10
|
+
export declare function frozenWithInspect<T extends object>(value: T, show: (value: T) => string): Readonly<T>;
|
|
11
|
+
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/util/inspect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,aAAa,eAA2C,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAGrG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The key of the method by which Node.js's `util.inspect`, and so `console.log`, shows an object, as do Deno and Bun:
|
|
3
|
+
* its registered name, so that no Node.js import is needed.
|
|
4
|
+
*/
|
|
5
|
+
export const inspectCustom = Symbol.for('nodejs.util.inspect.custom');
|
|
6
|
+
/**
|
|
7
|
+
* `value` frozen, with `show` as what `util.inspect` shows of it instead of its fields. The method is no enumerable
|
|
8
|
+
* property, so that `JSON.stringify`, `structuredClone` and comparisons in tests see the same plain object as before.
|
|
9
|
+
*/
|
|
10
|
+
export function frozenWithInspect(value, show) {
|
|
11
|
+
Object.defineProperty(value, inspectCustom, { value: () => show(value) });
|
|
12
|
+
return Object.freeze(value);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/util/inspect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAEtE;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAmB,KAAQ,EAAE,IAA0B;IACtF,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/util/text.d.ts
CHANGED
|
@@ -19,19 +19,35 @@ export declare function decodeWindows1252(bytes: Uint8Array): string;
|
|
|
19
19
|
* little to identify one in a log.
|
|
20
20
|
*/
|
|
21
21
|
export declare function maskedId(id: string): string;
|
|
22
|
+
/** `count` and `noun`, in the plural unless `count` is 1, such as `3 transactions`. */
|
|
23
|
+
export declare function counted(count: number, noun: string): string;
|
|
22
24
|
/** Whether `value` fits into ISO 8859-1, the FinTS 3.0 character set. */
|
|
23
25
|
export declare function isLatin1(value: string): boolean;
|
|
24
|
-
/** `text` without blanks
|
|
26
|
+
/** `text` without blanks (`isBlank`) at its `start` and its `end`. */
|
|
27
|
+
export declare function trimBlanks(text: string, { start, end }?: {
|
|
28
|
+
start?: boolean | undefined;
|
|
29
|
+
end?: boolean | undefined;
|
|
30
|
+
}): string;
|
|
31
|
+
/** `text` without blanks around it (`trimBlanks`); `undefined` if that leaves nothing. */
|
|
25
32
|
export declare function nonBlank(text: string | undefined): string | undefined;
|
|
26
33
|
/**
|
|
27
34
|
* The character the numeric character reference `name` names, such as `#x41` or `#65`; `undefined` for any other name,
|
|
28
35
|
* and for a number that is no character as XML defines them: `NUL`, half a surrogate pair, or beyond Unicode.
|
|
29
36
|
*/
|
|
30
37
|
export declare function characterReference(name: string): string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* `text` with its full-width characters, which East Asian input methods type, as their ASCII counterparts: U+FF01 to
|
|
40
|
+
* U+FF5E as U+0021 to U+007E, and the ideographic space U+3000 as a blank.
|
|
41
|
+
*/
|
|
42
|
+
export declare function withAsciiForms(text: string): string;
|
|
31
43
|
/** `text` without spaces and line breaks. */
|
|
32
44
|
export declare function withoutWhitespace(text: string): string;
|
|
33
45
|
/** Decodes base64 that may be broken into lines; throws `FormatError` if it is invalid. */
|
|
34
46
|
export declare function decodeBase64Lines(text: string): Uint8Array;
|
|
35
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* The integer `text` states, decimal digits with an optional sign and blanks around, `-0` as 0; `undefined` for
|
|
49
|
+
* anything else, such as hex, and for a value beyond `Number.MAX_SAFE_INTEGER`, which a number holds only
|
|
50
|
+
* approximately.
|
|
51
|
+
*/
|
|
36
52
|
export declare function tryParseInt(text: string | undefined): number | undefined;
|
|
37
53
|
//# sourceMappingURL=text.d.ts.map
|
package/dist/util/text.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/util/text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/util/text.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CASxD;AAED,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAcvD;AAYD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAO3D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,uFAAuF;AACvF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAG/C;AAYD,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAY,EAAE,GAAU,EAAE;;;CAAK,GAAG,MAAM,CAMlF;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGrE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAInD;AAED,6CAA6C;AAC7C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOxE"}
|