From d3162b3836b90c7c099d7932f25b68f3e3f0172e Mon Sep 17 00:00:00 2001 From: Gregory Brzeski Date: Sun, 5 Jan 2025 21:36:01 +0100 Subject: [PATCH 1/2] transaction details: extend gvc to more than 3 digits and add new separator --- lib/field86structure.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/field86structure.js b/lib/field86structure.js index a058106..0be2e62 100644 --- a/lib/field86structure.js +++ b/lib/field86structure.js @@ -25,7 +25,7 @@ class Field86StructureParser { return; } else if (prefix === '/') { // assume /XXX/ fields tagRe = '\\/[0-9A-Z]{2,4}\\/'; - } else if ('>?'.includes(prefix)) { // assume >DD fields + } else if ('?><'.includes(prefix)) { // assume >DD fields tagRe = `\\${prefix}\\d{2}`; } else { return; // known separator not found @@ -47,9 +47,10 @@ class Field86StructureParser { const parsedStruc = {}; - if (details.match(/^\d\d\d[?>]/)) { - parsedStruc.gvc = details.substr(0,3); - details = details.substr(3); + const gvc = details.match(/^(\d\d\d+)[?><]/); + if (gvc) { + parsedStruc.gvc = gvc[1]; + details = details.substr(gvc[1].length); } const rule = Field86StructureParser.buildTagRe(details); From 8bb191200e77ad23d8f88cb62c523ed37c15b412 Mon Sep 17 00:00:00 2001 From: Gregory Brzeski Date: Sun, 5 Jan 2025 21:37:00 +0100 Subject: [PATCH 2/2] transaction details: add new separator to README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6629d2c..edf45f1 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ are additionally validated for: The `transaction.structuredDetails` attribute can be used to access structured data from statement transaction details (SWIFT "86" tag). The following structured detail formats are supported: -- `'DD'`, where `` can be `'>'` or `'?'` and `DD` is two digits +- `'DD'`, where `` can be `'>'`, `'<'` or `'?'` and `DD` is two digits - `'/TAG/value'`, where `TAG` is 2 to 4 uppercase chars. **Example**