//! MIT License, Topher Winward 2015. //! https://github.com/Winwardo/js-builder-decorator "use strict";!function(){var a=function(a,b){function c(a){if(null===a||"object"!=typeof a)return a;var b=a;for(var d in a)b[d]=c(a[d]);return b}var d=require("underscore"),e=function(a,b){var d=c(a);if(b===!0)for(var e in d)d[e]=null;return d},f=function(a,b){void 0==b&&(b={});var f;f=a instanceof Function?e(new a,b.allFieldsMustBeSet):e(a,b.allFieldsMustBeSet);var g={__builderData:f},h=function(a){return function(b){var c=d.clone(this.__builderData);c[a]=b;var e={};return e=i(e,f),j(e),e.__builderData=c,e}},i=function(a,b){var d=c(a);for(var e in b)d[e]=h(e);return d};g=i(g,f);var j=function(a){var d=c(a);return d.build=function(){var a=this;if(b.allFieldsMustBeSet){var d=[];for(var e in a.__builderData){var g=a.__builderData[e];(null===g||void 0===g)&&d.push(e)}if(0!==d.length)throw"The following fields were not set: "+d}var h={},i=function(a,b){var d,e=a[b];return d=null===e?null:c(a[b]),function(){return d}};for(var e in f)b.lockFunctionsAfterBuild&&f[e]instanceof Function?h[e]=a.__builderData[e]:h[e]=i(a.__builderData,e);return h},d};return g=j(g)};return function(){return f(a,b)}};"undefined"!=typeof module&&(module.exports={BuilderDecorator:a}),"undefined"!=typeof window&&(window.BuilderDecorator=a)}();