lib-fints 1.1.0 → 1.1.1

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.md CHANGED
@@ -15,7 +15,7 @@ In order to communicate with banks via the FinTS protocol you have to register a
15
15
  > In order to fulfill the PSD2 requirements regarding transparency about the software used by customers, the German Banking Industry has established a process for registering FinTS products in order to be able to provide customers with information regarding FinTS usage.
16
16
  > FinTS product registration is currently offered free of charge by the German Banking Industry.
17
17
 
18
- [ZKA Registration Website](https://www.hbci-zka.de/register/prod_register.htm)
18
+ [ZKA Registration Website](https://www.fints.org/de/hersteller/produktregistrierung)
19
19
 
20
20
  ### Runtime Environment
21
21
 
@@ -21,7 +21,9 @@ export class TanMediaInteraction extends CustomerOrderInteraction {
21
21
  handleResponse(response, clientResponse) {
22
22
  const hitab = response.findSegment(HITAB.Id);
23
23
  if (hitab) {
24
- clientResponse.tanMediaList = hitab.mediaList.map((media) => media.name).filter((name) => name);
24
+ clientResponse.tanMediaList = (hitab.mediaList ?? [])
25
+ .map((media) => media.name)
26
+ .filter((name) => name);
25
27
  }
26
28
  }
27
29
  }
package/dist/segment.js CHANGED
@@ -45,10 +45,11 @@ export function segmentToString(segment) {
45
45
  const segmentDefinition = getSegmentDefinition(segment.header.segId);
46
46
  let texts = segmentDefinition.getElementsForVersion(segment.header.version).map((element) => {
47
47
  if (element.maxCount > 1) {
48
- return keyedSegment[element.name]
49
- .map((value) => element.toString(value))
50
- .filter((text) => !!text)
51
- .join('; ');
48
+ return (keyedSegment[element.name] ??
49
+ []
50
+ .map((value) => element.toString(value))
51
+ .filter((text) => !!text)
52
+ .join('; '));
52
53
  }
53
54
  else {
54
55
  return element.toString(keyedSegment[element.name]);
@@ -1,12 +1,13 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
  import { registerSegments } from '../segments/registry.js';
3
3
  import { HITAB } from '../segments/HITAB.js';
4
- import { decode, encode } from '../segment.js';
4
+ import { decode, encode, segmentToString } from '../segment.js';
5
5
  registerSegments();
6
6
  describe('HITAB', () => {
7
7
  it('decodes correctly', () => {
8
8
  const text = "HITAB:5:4:3+0+A:1:::::::::::Media1::::::::+A:1:::::::::::Media2::::::::'";
9
9
  const segment = decode(text);
10
+ expect(segment.mediaList).toBeDefined();
10
11
  expect(segment.mediaList.length).toBe(2);
11
12
  expect(segment.mediaList[0].name).toBe('Media1');
12
13
  });
@@ -16,4 +17,10 @@ describe('HITAB', () => {
16
17
  const segment = decode(text);
17
18
  expect(encode(segment)).toBe(text);
18
19
  });
20
+ it('decodes and stringifies when list is empty', () => {
21
+ HITAB.Id;
22
+ const text = 'HITAB:4:5:3+0';
23
+ const segment = decode(text);
24
+ expect(segmentToString(segment)).toBe(' 4. HITAB v5 RefSeg: 3; tanUsage: 0');
25
+ });
19
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tanMediaInteraction.d.ts","sourceRoot":"","sources":["../../../src/interactions/tanMediaInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuB,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,mBAAoB,SAAQ,wBAAwB;;IAK/D,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,EAAE;IAgB5C,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB;CAMnE"}
1
+ {"version":3,"file":"tanMediaInteraction.d.ts","sourceRoot":"","sources":["../../../src/interactions/tanMediaInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuB,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACvD,YAAY,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,mBAAoB,SAAQ,wBAAwB;;IAKhE,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,EAAE;IAgB5C,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB;CAQlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../src/segment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACrB,MAAM,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA6B5C;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAQ5C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA0BxD"}
1
+ {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../src/segment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACrB,MAAM,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA6B5C;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAQ5C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA6BxD"}
@@ -7,7 +7,7 @@ import { Segment } from '../segment.js';
7
7
  import { SegmentDefinition } from '../segmentDefinition.js';
8
8
  export type HITABSegment = Segment & {
9
9
  tanUsage: TanUsage;
10
- mediaList: TanMedia[];
10
+ mediaList?: TanMedia[];
11
11
  };
12
12
  export type TanMedia = {
13
13
  class: TanMediaClass;
@@ -1 +1 @@
1
- {"version":3,"file":"HITAB.d.ts","sourceRoot":"","sources":["../../../src/segments/HITAB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAA6B,MAAM,uCAAuC,CAAC;AACxG,OAAO,EAAE,OAAO,EAAgB,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,qBAAa,KAAM,SAAQ,iBAAiB;IAC1C,MAAM,CAAC,EAAE,SAAa;IACtB,OAAO,SAAK;IACZ,QAAQ,0BA0BN;CACH"}
1
+ {"version":3,"file":"HITAB.d.ts","sourceRoot":"","sources":["../../../src/segments/HITAB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAA6B,MAAM,uCAAuC,CAAC;AACxG,OAAO,EAAE,OAAO,EAAgB,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,cAAc,CAAC,EAAE,IAAI,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,qBAAa,KAAM,SAAQ,iBAAiB;IAC3C,MAAM,CAAC,EAAE,SAAa;IACtB,OAAO,SAAK;IACZ,QAAQ,0BA0BN;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lib-fints",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "Typescript/Javascript client library for Online-Banking via the FinTS 3.0 protocol with PIN/TAN",
5
5
  "engines": {
6
6
  "node": ">=18.0.0"