talyssonoc/structure

View on GitHub
packages/structure/src/initialization/index.js

Summary

Maintainability
A
0 mins
Test Coverage
const Attributes = require('../attributes');

exports.for = function initializationForSchema(schema) {
  return {
    initialize(instance, { attributes }) {
      Attributes.setInInstance(instance, Object.create(null));

      for (let attrDefinition of schema.attributeDefinitions) {
        const attrPassedValue = attributes[attrDefinition.name];

        // will coerce through setters
        instance[attrDefinition.name] = attrDefinition.initialize(instance, attrPassedValue);
      }

      return instance;
    },
  };
};