Skip to content

Commit

Permalink
Remove a property lookup during validation
Browse files Browse the repository at this point in the history
  • Loading branch information
talyssonoc committed Jan 25, 2017
1 parent cc55ef7 commit 238af41
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 18 deletions.
8 changes: 4 additions & 4 deletions src/attributesDecorator.js
Expand Up @@ -7,8 +7,8 @@ const {
} = require('./propertyDescriptors');

const {
validationDescriptor,
staticValidationDescriptor
validationDescriptorForSchema,
staticValidationDescriptorForSchema
} = require('./validation');

const define = Object.defineProperty;
Expand Down Expand Up @@ -44,7 +44,7 @@ function attributesDecorator(declaredSchema) {
value: declaredSchema
});

define(WrapperClass, 'validate', staticValidationDescriptor);
define(WrapperClass, 'validate', staticValidationDescriptorForSchema(declaredSchema));

define(WrapperClass.prototype, SCHEMA, {
value: declaredSchema
Expand All @@ -65,7 +65,7 @@ function attributesDecorator(declaredSchema) {
});
});

define(WrapperClass.prototype, 'validate', validationDescriptor);
define(WrapperClass.prototype, 'validate', validationDescriptorForSchema(declaredSchema));

define(WrapperClass.prototype, 'toJSON', serializationDescriptor);

Expand Down
33 changes: 19 additions & 14 deletions src/validation/index.js
Expand Up @@ -58,25 +58,30 @@ exports.validationForSchema = function validationForSchema(schema) {
};
};

exports.validationDescriptor = {
value: function validate() {
const validation = this[SCHEMA][VALIDATE];
const serializedStructure = this.toJSON();
exports.validationDescriptorForSchema = function validationDescriptorForSchema(schema) {
const validation = schema[VALIDATE];

return validateData(validation, serializedStructure);
}
};
return {
value: function validate() {
const serializedStructure = this.toJSON();

exports.staticValidationDescriptor = {
value: function validate(data) {
if(data[SCHEMA]) {
data = data.toJSON();
return validateData(validation, serializedStructure);
}
};
};

const validation = this[SCHEMA][VALIDATE];
exports.staticValidationDescriptorForSchema = function staticValidationDescriptorForSchema(schema) {
const validation = schema[VALIDATE];

return validateData(validation, data);
}
return {
value: function validate(data) {
if(data[SCHEMA]) {
data = data.toJSON();
}

return validateData(validation, data);
}
};
};

function validateData(validation, data) {
Expand Down

0 comments on commit 238af41

Please sign in to comment.