diff --git a/lib/specs/spec_1.js b/lib/specs/spec_1.js index 6944fea..3b4207e 100644 --- a/lib/specs/spec_1.js +++ b/lib/specs/spec_1.js @@ -1,11 +1,20 @@ const uuid = require("uuid/v4"); const empty = require("is-empty"); const Ajv = require("ajv"); +const URI = require("uri-js"); const { - asData + asData, + isBoolean, + isInteger, + isString, + isDate, + isBinary } = require("../utils/fun.js"); +const isValidType = (v) => + (isBoolean(v) || isInteger(v) || isString(v) || isDate(v) || isBinary(v)); + const RESERVED_ATTRIBUTES = { type: "type", specversion: "specversion", @@ -165,7 +174,11 @@ Spec1.prototype.getData = function() { Spec1.prototype.addExtension = function(key, value){ if(!RESERVED_ATTRIBUTES.hasOwnProperty(key)){ - this.payload[key] = value; + if(isValidType(value)){ + this.payload[key] = value; + } else { + throw {message: "Invalid type of extension value"}; + } } else { throw {message: "Reserved attribute name: '" + key + "'"}; }