diff --git a/package.json b/package.json index 6ac1544..c881daf 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "author": "Sven Slootweg", "license": "WTFPL", "dependencies": { - "checkit": "^0.7.0", "deep-assign": "^2.0.0", "default-value": "^1.0.0", "dotty": "0.0.2" diff --git a/src/create-composite-object.js b/src/create-composite-object.js index b1cc411..5f097bc 100644 --- a/src/create-composite-object.js +++ b/src/create-composite-object.js @@ -5,6 +5,7 @@ const defaultValue = require("default-value"); const createObject = require("./create-object"); const createPropertyMapper = require("./property-mapper"); +const requireProperties = require("./require-properties"); const max = require("./util/max"); const min = require("./util/min"); @@ -16,6 +17,8 @@ function getPosition(object) { } module.exports = function createCompositeObject(options) { + requireProperties(options, ["drawOrder", "objects"]); + let mapProperties = createPropertyMapper(options.propertyMap); let initialPropertySet = mapProperties(options); diff --git a/src/index.js b/src/index.js index 5aad1f8..8830816 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - validateSync: require("./validate-sync"), + requireProperties: require("./require-properties"), createObject: require("./create-object"), createCompositeObject: require("./create-composite-object") } diff --git a/src/require-properties.js b/src/require-properties.js new file mode 100644 index 0000000..d5f033d --- /dev/null +++ b/src/require-properties.js @@ -0,0 +1,17 @@ +'use strict'; + +module.exports = function requireProperties(object, properties) { + let missingProperties = []; + + properties.forEach((property) => { + if (object[property] == null) { + missingProperties.push(property); + } + }); + + if (missingProperties.length > 0) { + throw new Error(`Missing required properties: ${missingProperties.join(", ")}`); + } else { + return true; + } +}; diff --git a/src/validate-sync.js b/src/validate-sync.js deleted file mode 100644 index a581e70..0000000 --- a/src/validate-sync.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -const checkit = require("checkit"); - -module.exports = function(object, rules) { - let [error, validated] = checkit(rules).runSync(object); - - if (error != null) { - throw error; - } else { - return validated; - } -};