From 4d8b56d9c372a091ba5da865c9cbf9809fe15eaa Mon Sep 17 00:00:00 2001 From: Jad Date: Sat, 14 Oct 2017 12:19:11 +0300 Subject: [PATCH 1/3] Added extension support for non-numeric extension ids --- lib/definitions.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/definitions.js b/lib/definitions.js index 81a4ac8..aa69f31 100644 --- a/lib/definitions.js +++ b/lib/definitions.js @@ -37,7 +37,7 @@ class Definitions { self.components[json.name] = json; if (json.extensions) { - var extensions = []; + var extensions = {}; for (var key in json.extensions) { extensions[json.extensions[key].id] = json.extensions[key]; @@ -176,15 +176,12 @@ class Definitions { if (this.components[fieldType].extensions !== undefined) { if (decoded.id !== undefined) { - var extensionDef = this.components[fieldType].extensions.find(function(extension) { - if (extension) { - return extension.id == decoded.id; - } else { - return 0; - } - }); - - if (extensionDef) { + var extensions = this.components[fieldType].extensions; + var extensionDef = false; + for(var extensionId in extensions) { + if(extensionId == decoded.id) extensionDef = extensions[extensionId]; + } + if (extensionDef != false) { decoded.payload = this.decode_fields(reader, extensionDef.fields); } else { console.warn('Error: Extensions of field type ' + fieldType + ' with id ' + decoded.id + ' is missing. (' + field.name + ').'); From f386fdc837f19ca05033970a4664ac2603d3c172 Mon Sep 17 00:00:00 2001 From: Jad Date: Sat, 14 Oct 2017 12:20:29 +0300 Subject: [PATCH 2/3] Update definitions.js --- lib/definitions.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/definitions.js b/lib/definitions.js index aa69f31..8d55e7f 100644 --- a/lib/definitions.js +++ b/lib/definitions.js @@ -176,11 +176,11 @@ class Definitions { if (this.components[fieldType].extensions !== undefined) { if (decoded.id !== undefined) { - var extensions = this.components[fieldType].extensions; - var extensionDef = false; - for(var extensionId in extensions) { - if(extensionId == decoded.id) extensionDef = extensions[extensionId]; - } + var extensions = this.components[fieldType].extensions; + var extensionDef = false; + for(var extensionId in extensions) { + if(extensionId == decoded.id) extensionDef = extensions[extensionId]; + } if (extensionDef != false) { decoded.payload = this.decode_fields(reader, extensionDef.fields); } else { From 0065f52eabab2cb0154a9aacb365793dbfd220aa Mon Sep 17 00:00:00 2001 From: Jad Date: Sat, 14 Oct 2017 12:21:14 +0300 Subject: [PATCH 3/3] Added support for non-numeric extension ids. --- lib/definitions.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/definitions.js b/lib/definitions.js index 8d55e7f..e887f7d 100644 --- a/lib/definitions.js +++ b/lib/definitions.js @@ -179,7 +179,8 @@ class Definitions { var extensions = this.components[fieldType].extensions; var extensionDef = false; for(var extensionId in extensions) { - if(extensionId == decoded.id) extensionDef = extensions[extensionId]; + if(extensionId == decoded.id) + extensionDef = extensions[extensionId]; } if (extensionDef != false) { decoded.payload = this.decode_fields(reader, extensionDef.fields);