made with requirebin
Created
July 25, 2016 00:34
-
-
Save andrewmclagan/db7d88f9866ff59aad62e01e6b6d630b to your computer and use it in GitHub Desktop.
requirebin sketch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const normalizr = require('normalizr'); | |
const response = { | |
data: { | |
id: 1, | |
title: 'Lord of the Rings', | |
pages: 9250, | |
publisher: { | |
data: { | |
id: 1, | |
name: 'HarperCollins LLC', | |
address: 'Big building next to the river', | |
city: 'Amsterdam', | |
country: { | |
data: { | |
id: 1, | |
name: 'The Netherlands', | |
population: 1000 | |
} | |
} | |
}, | |
}, | |
author: { | |
data: { | |
id: 1, | |
name: 'J.R.R Tolkien', | |
country: 'UK', | |
age: 124, | |
} | |
}, | |
characters: [ | |
{ | |
data: { | |
id: 1, | |
name: 'Bilbo Baggins', | |
race: 'Hobbit' | |
} | |
}, | |
{ | |
id: 2, | |
name: 'Gandalf The Grey', | |
race: 'Wizard' | |
}, | |
{ | |
id: 3, | |
name: 'Legolas', | |
race: 'Elf' | |
} | |
] | |
} | |
}; | |
const country = new normalizr.Schema('country'); | |
const character = new normalizr.Schema('character'); | |
const book = new normalizr.Schema('book'); | |
const publisher = new normalizr.Schema('publisher'); | |
const author = new normalizr.Schema('author'); | |
book.define({ | |
data: { | |
publisher: publisher, | |
author: author, | |
characters: normalizr.arrayOf(character) | |
}} | |
); | |
publisher.define({ | |
data: { | |
country: country | |
} | |
}); | |
const result = normalizr.normalize(response, book, { assignEntity: function (output, key, value, input) { | |
if (key === 'data') { | |
Object.keys(value).forEach(function(d){ | |
output[d] = value[d]; | |
}) | |
} else { | |
output[key] = value; | |
} | |
}}); | |
console.log(result); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
setTimeout(function(){require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var EntitySchema=function(){function EntitySchema(key){var options=arguments.length<=1||arguments[1]===undefined?{}:arguments[1];_classCallCheck(this,EntitySchema);if(!key||typeof key!=="string"){throw new Error("A string non-empty key is required")}this._key=key;this._assignEntity=options.assignEntity;var idAttribute=options.idAttribute||"id";this._getId=typeof idAttribute==="function"?idAttribute:function(x){return x[idAttribute]};this._idAttribute=idAttribute;this._meta=options.meta;this._defaults=options.defaults}_createClass(EntitySchema,[{key:"getAssignEntity",value:function getAssignEntity(){return this._assignEntity}},{key:"getKey",value:function getKey(){return this._key}},{key:"getId",value:function getId(entity){return this._getId(entity)}},{key:"getIdAttribute",value:function getIdAttribute(){return this._idAttribute}},{key:"getMeta",value:function getMeta(prop){if(!prop||typeof prop!=="string"){throw new Error("A string non-empty property name is required")}return this._meta&&this._meta[prop]}},{key:"getDefaults",value:function getDefaults(){return this._defaults}},{key:"define",value:function define(nestedSchema){for(var key in nestedSchema){if(nestedSchema.hasOwnProperty(key)){this[key]=nestedSchema[key]}}}}]);return EntitySchema}();exports.default=EntitySchema},{}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _isObject=require("lodash/isObject");var _isObject2=_interopRequireDefault(_isObject);var _UnionSchema=require("./UnionSchema");var _UnionSchema2=_interopRequireDefault(_UnionSchema);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var ArraySchema=function(){function ArraySchema(itemSchema){var options=arguments.length<=1||arguments[1]===undefined?{}:arguments[1];_classCallCheck(this,ArraySchema);if(!(0,_isObject2.default)(itemSchema)){throw new Error("ArraySchema requires item schema to be an object.")}if(options.schemaAttribute){var schemaAttribute=options.schemaAttribute;this._itemSchema=new _UnionSchema2.default(itemSchema,{schemaAttribute:schemaAttribute})}else{this._itemSchema=itemSchema}}_createClass(ArraySchema,[{key:"getItemSchema",value:function getItemSchema(){return this._itemSchema}}]);return ArraySchema}();exports.default=ArraySchema},{"./UnionSchema":3,"lodash/isObject":82}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _isObject=require("lodash/isObject");var _isObject2=_interopRequireDefault(_isObject);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var UnionSchema=function(){function UnionSchema(itemSchema,options){_classCallCheck(this,UnionSchema);if(!(0,_isObject2.default)(itemSchema)){throw new Error("UnionSchema requires item schema to be an object.")}if(!options||!options.schemaAttribute){throw new Error("UnionSchema requires schemaAttribute option.")}this._itemSchema=itemSchema;var schemaAttribute=options.schemaAttribute;this._getSchema=typeof schemaAttribute==="function"?schemaAttribute:function(x){return x[schemaAttribute]}}_createClass(UnionSchema,[{key:"getItemSchema",value:function getItemSchema(){return this._itemSchema}},{key:"getSchemaKey",value:function getSchemaKey(item){return this._getSchema(item)}}]);return UnionSchema}();exports.default=UnionSchema},{"lodash/isObject":82}],4:[function(require,module,exports){var getNative=require("./_getNative"),root=require("./_root");var DataView=getNative(root,"DataView");module.exports=DataView},{"./_getNative":35,"./_root":64}],5:[function(require,module,exports){var hashClear=require("./_hashClear"),hashDelete=require("./_hashDelete"),hashGet=require("./_hashGet"),hashHas=require("./_hashHas"),hashSet=require("./_hashSet");function Hash(entries){var index=-1,length=entries?entries.length:0;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1])}}Hash.prototype.clear=hashClear;Hash.prototype["delete"]=hashDelete;Hash.prototype.get=hashGet;Hash.prototype.has=hashHas;Hash.prototype.set=hashSet;module.exports=Hash},{"./_hashClear":39,"./_hashDelete":40,"./_hashGet":41,"./_hashHas":42,"./_hashSet":43}],6:[function(require,module,exports){var listCacheClear=require("./_listCacheClear"),listCacheDelete=require("./_listCacheDelete"),listCacheGet=require("./_listCacheGet"),listCacheHas=require("./_listCacheHas"),listCacheSet=require("./_listCacheSet");function ListCache(entries){var index=-1,length=entries?entries.length:0;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1])}}ListCache.prototype.clear=listCacheClear;ListCache.prototype["delete"]=listCacheDelete;ListCache.prototype.get=listCacheGet;ListCache.prototype.has=listCacheHas;ListCache.prototype.set=listCacheSet;module.exports=ListCache},{"./_listCacheClear":50,"./_listCacheDelete":51,"./_listCacheGet":52,"./_listCacheHas":53,"./_listCacheSet":54}],7:[function(require,module,exports){var getNative=require("./_getNative"),root=require("./_root");var Map=getNative(root,"Map");module.exports=Map},{"./_getNative":35,"./_root":64}],8:[function(require,module,exports){var mapCacheClear=require("./_mapCacheClear"),mapCacheDelete=require("./_mapCacheDelete"),mapCacheGet=require("./_mapCacheGet"),mapCacheHas=require("./_mapCacheHas"),mapCacheSet=require("./_mapCacheSet");function MapCache(entries){var index=-1,length=entries?entries.length:0;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1])}}MapCache.prototype.clear=mapCacheClear;MapCache.prototype["delete"]=mapCacheDelete;MapCache.prototype.get=mapCacheGet;MapCache.prototype.has=mapCacheHas;MapCache.prototype.set=mapCacheSet;module.exports=MapCache},{"./_mapCacheClear":55,"./_mapCacheDelete":56,"./_mapCacheGet":57,"./_mapCacheHas":58,"./_mapCacheSet":59}],9:[function(require,module,exports){var getNative=require("./_getNative"),root=require("./_root");var Promise=getNative(root,"Promise");module.exports=Promise},{"./_getNative":35,"./_root":64}],10:[function(require,module,exports){var getNative=require("./_getNative"),root=require("./_root");var Set=getNative(root,"Set");module.exports=Set},{"./_getNative":35,"./_root":64}],11:[function(require,module,exports){var MapCache=require("./_MapCache"),setCacheAdd=require("./_setCacheAdd"),setCacheHas=require("./_setCacheHas");function SetCache(values){var index=-1,length=values?values.length:0;this.__data__=new MapCache;while(++index<length){this.add(values[index])}}SetCache.prototype.add=SetCache.prototype.push=setCacheAdd;SetCache.prototype.has=setCacheHas;module.exports=SetCache},{"./_MapCache":8,"./_setCacheAdd":65,"./_setCacheHas":66}],12:[function(require,module,exports){var ListCache=require("./_ListCache"),stackClear=require("./_stackClear"),stackDelete=require("./_stackDelete"),stackGet=require("./_stackGet"),stackHas=require("./_stackHas"),stackSet=require("./_stackSet");function Stack(entries){this.__data__=new ListCache(entries)}Stack.prototype.clear=stackClear;Stack.prototype["delete"]=stackDelete;Stack.prototype.get=stackGet;Stack.prototype.has=stackHas;Stack.prototype.set=stackSet;module.exports=Stack},{"./_ListCache":6,"./_stackClear":68,"./_stackDelete":69,"./_stackGet":70,"./_stackHas":71,"./_stackSet":72}],13:[function(require,module,exports){var root=require("./_root");var Symbol=root.Symbol;module.exports=Symbol},{"./_root":64}],14:[function(require,module,exports){var root=require("./_root");var Uint8Array=root.Uint8Array;module.exports=Uint8Array},{"./_root":64}],15:[function(require,module,exports){var getNative=require("./_getNative"),root=require("./_root");var WeakMap=getNative(root,"WeakMap");module.exports=WeakMap},{"./_getNative":35,"./_root":64}],16:[function(require,module,exports){function arraySome(array,predicate){var index=-1,length=array?array.length:0;while(++index<length){if(predicate(array[index],index,array)){return true}}return false}module.exports=arraySome},{}],17:[function(require,module,exports){var eq=require("./eq");function assocIndexOf(array,key){var length=array.length;while(length--){if(eq(array[length][0],key)){return length}}return-1}module.exports=assocIndexOf},{"./eq":74}],18:[function(require,module,exports){var objectProto=Object.prototype;var objectToString=objectProto.toString;function baseGetTag(value){return objectToString.call(value)}module.exports=baseGetTag},{}],19:[function(require,module,exports){var getPrototype=require("./_getPrototype");var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;function baseHas(object,key){return object!=null&&(hasOwnProperty.call(object,key)||typeof object=="object"&&key in object&&getPrototype(object)===null)}module.exports=baseHas},{"./_getPrototype":36}],20:[function(require,module,exports){var baseIsEqualDeep=require("./_baseIsEqualDeep"),isObject=require("./isObject"),isObjectLike=require("./isObjectLike");function baseIsEqual(value,other,customizer,bitmask,stack){if(value===other){return true}if(value==null||other==null||!isObject(value)&&!isObjectLike(other)){return value!==value&&other!==other}return baseIsEqualDeep(value,other,baseIsEqual,customizer,bitmask,stack)}module.exports=baseIsEqual},{"./_baseIsEqualDeep":21,"./isObject":82,"./isObjectLike":83}],21:[function(require,module,exports){var Stack=require("./_Stack"),equalArrays=require("./_equalArrays"),equalByTag=require("./_equalByTag"),equalObjects=require("./_equalObjects"),getTag=require("./_getTag"),isArray=require("./isArray"),isHostObject=require("./_isHostObject"),isTypedArray=require("./isTypedArray");var PARTIAL_COMPARE_FLAG=2;var argsTag="[object Arguments]",arrayTag="[object Array]",objectTag="[object Object]";var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;function baseIsEqualDeep(object,other,equalFunc,customizer,bitmask,stack){var objIsArr=isArray(object),othIsArr=isArray(other),objTag=arrayTag,othTag=arrayTag;if(!objIsArr){objTag=getTag(object);objTag=objTag==argsTag?objectTag:objTag}if(!othIsArr){othTag=getTag(other);othTag=othTag==argsTag?objectTag:othTag}var objIsObj=objTag==objectTag&&!isHostObject(object),othIsObj=othTag==objectTag&&!isHostObject(other),isSameTag=objTag==othTag;if(isSameTag&&!objIsObj){stack||(stack=new Stack);return objIsArr||isTypedArray(object)?equalArrays(object,other,equalFunc,customizer,bitmask,stack):equalByTag(object,other,objTag,equalFunc,customizer,bitmask,stack)}if(!(bitmask&PARTIAL_COMPARE_FLAG)){var objIsWrapped=objIsObj&&hasOwnProperty.call(object,"__wrapped__"),othIsWrapped=othIsObj&&hasOwnProperty.call(other,"__wrapped__");if(objIsWrapped||othIsWrapped){var objUnwrapped=objIsWrapped?object.value():object,othUnwrapped=othIsWrapped?other.value():other;stack||(stack=new Stack);return equalFunc(objUnwrapped,othUnwrapped,customizer,bitmask,stack)}}if(!isSameTag){return false}stack||(stack=new Stack);return equalObjects(object,other,equalFunc,customizer,bitmask,stack)}module.exports=baseIsEqualDeep},{"./_Stack":12,"./_equalArrays":29,"./_equalByTag":30,"./_equalObjects":31,"./_getTag":37,"./_isHostObject":45,"./isArray":76,"./isTypedArray":85}],22:[function(require,module,exports){var isFunction=require("./isFunction"),isHostObject=require("./_isHostObject"),isMasked=require("./_isMasked"),isObject=require("./isObject"),toSource=require("./_toSource");var reRegExpChar=/[\\^$.*+?()[\]{}|]/g;var reIsHostCtor=/^\[object .+?Constructor\]$/;var objectProto=Object.prototype;var funcToString=Function.prototype.toString;var hasOwnProperty=objectProto.hasOwnProperty;var reIsNative=RegExp("^"+funcToString.call(hasOwnProperty).replace(reRegExpChar,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function baseIsNative(value){if(!isObject(value)||isMasked(value)){return false}var pattern=isFunction(value)||isHostObject(value)?reIsNative:reIsHostCtor;return pattern.test(toSource(value))}module.exports=baseIsNative},{"./_isHostObject":45,"./_isMasked":48,"./_toSource":73,"./isFunction":80,"./isObject":82}],23:[function(require,module,exports){var isLength=require("./isLength"),isObjectLike=require("./isObjectLike");var argsTag="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag="[object Function]",mapTag="[object Map]",numberTag="[object Number]",objectTag="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag="[object String]",weakMapTag="[object WeakMap]";var arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]";var typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=true;typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=false;var objectProto=Object.prototype;var objectToString=objectProto.toString;function baseIsTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[objectToString.call(value)]}module.exports=baseIsTypedArray},{"./isLength":81,"./isObjectLike":83}],24:[function(require,module,exports){var overArg=require("./_overArg");var nativeKeys=Object.keys;var baseKeys=overArg(nativeKeys,Object);module.exports=baseKeys},{"./_overArg":63}],25:[function(require,module,exports){function baseProperty(key){return function(object){return object==null?undefined:object[key]}}module.exports=baseProperty},{}],26:[function(require,module,exports){function baseTimes(n,iteratee){var index=-1,result=Array(n);while(++index<n){result[index]=iteratee(index)}return result}module.exports=baseTimes},{}],27:[function(require,module,exports){function baseUnary(func){return function(value){return func(value)}}module.exports=baseUnary},{}],28:[function(require,module,exports){var root=require("./_root");var coreJsData=root["__core-js_shared__"];module.exports=coreJsData},{"./_root":64}],29:[function(require,module,exports){var SetCache=require("./_SetCache"),arraySome=require("./_arraySome");var UNORDERED_COMPARE_FLAG=1,PARTIAL_COMPARE_FLAG=2;function equalArrays(array,other,equalFunc,customizer,bitmask,stack){var isPartial=bitmask&PARTIAL_COMPARE_FLAG,arrLength=array.length,othLength=other.length;if(arrLength!=othLength&&!(isPartial&&othLength>arrLength)){return false}var stacked=stack.get(array);if(stacked&&stack.get(other)){return stacked==other}var index=-1,result=true,seen=bitmask&UNORDERED_COMPARE_FLAG?new SetCache:undefined;stack.set(array,other);stack.set(other,array);while(++index<arrLength){var arrValue=array[index],othValue=other[index];if(customizer){var compared=isPartial?customizer(othValue,arrValue,index,other,array,stack):customizer(arrValue,othValue,index,array,other,stack)}if(compared!==undefined){if(compared){continue}result=false;break}if(seen){if(!arraySome(other,function(othValue,othIndex){if(!seen.has(othIndex)&&(arrValue===othValue||equalFunc(arrValue,othValue,customizer,bitmask,stack))){return seen.add(othIndex)}})){result=false;break}}else if(!(arrValue===othValue||equalFunc(arrValue,othValue,customizer,bitmask,stack))){result=false;break}}stack["delete"](array);return result}module.exports=equalArrays},{"./_SetCache":11,"./_arraySome":16}],30:[function(require,module,exports){var Symbol=require("./_Symbol"),Uint8Array=require("./_Uint8Array"),eq=require("./eq"),equalArrays=require("./_equalArrays"),mapToArray=require("./_mapToArray"),setToArray=require("./_setToArray");var UNORDERED_COMPARE_FLAG=1,PARTIAL_COMPARE_FLAG=2;var boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",mapTag="[object Map]",numberTag="[object Number]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag="[object String]",symbolTag="[object Symbol]";var arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]";var symbolProto=Symbol?Symbol.prototype:undefined,symbolValueOf=symbolProto?symbolProto.valueOf:undefined;function equalByTag(object,other,tag,equalFunc,customizer,bitmask,stack){switch(tag){case dataViewTag:if(object.byteLength!=other.byteLength||object.byteOffset!=other.byteOffset){return false}object=object.buffer;other=other.buffer;case arrayBufferTag:if(object.byteLength!=other.byteLength||!equalFunc(new Uint8Array(object),new Uint8Array(other))){return false}return true;case boolTag:case dateTag:case numberTag:return eq(+object,+other);case errorTag:return object.name==other.name&&object.message==other.message;case regexpTag:case stringTag:return object==other+"";case mapTag:var convert=mapToArray;case setTag:var isPartial=bitmask&PARTIAL_COMPARE_FLAG;convert||(convert=setToArray);if(object.size!=other.size&&!isPartial){return false}var stacked=stack.get(object);if(stacked){return stacked==other}bitmask|=UNORDERED_COMPARE_FLAG;stack.set(object,other);var result=equalArrays(convert(object),convert(other),equalFunc,customizer,bitmask,stack);stack["delete"](object);return result;case symbolTag:if(symbolValueOf){return symbolValueOf.call(object)==symbolValueOf.call(other)}}return false}module.exports=equalByTag},{"./_Symbol":13,"./_Uint8Array":14,"./_equalArrays":29,"./_mapToArray":60,"./_setToArray":67,"./eq":74}],31:[function(require,module,exports){var baseHas=require("./_baseHas"),keys=require("./keys");var PARTIAL_COMPARE_FLAG=2;function equalObjects(object,other,equalFunc,customizer,bitmask,stack){var isPartial=bitmask&PARTIAL_COMPARE_FLAG,objProps=keys(object),objLength=objProps.length,othProps=keys(other),othLength=othProps.length;if(objLength!=othLength&&!isPartial){return false}var index=objLength;while(index--){var key=objProps[index];if(!(isPartial?key in other:baseHas(other,key))){return false}}var stacked=stack.get(object);if(stacked&&stack.get(other)){return stacked==other}var result=true;stack.set(object,other);stack.set(other,object);var skipCtor=isPartial;while(++index<objLength){key=objProps[index];var objValue=object[key],othValue=other[key];if(customizer){var compared=isPartial?customizer(othValue,objValue,key,other,object,stack):customizer(objValue,othValue,key,object,other,stack)}if(!(compared===undefined?objValue===othValue||equalFunc(objValue,othValue,customizer,bitmask,stack):compared)){result=false;break}skipCtor||(skipCtor=key=="constructor")}if(result&&!skipCtor){var objCtor=object.constructor,othCtor=other.constructor;if(objCtor!=othCtor&&("constructor"in object&&"constructor"in other)&&!(typeof objCtor=="function"&&objCtor instanceof objCtor&&typeof othCtor=="function"&&othCtor instanceof othCtor)){result=false}}stack["delete"](object);return result}module.exports=equalObjects},{"./_baseHas":19,"./keys":86}],32:[function(require,module,exports){(function(global){var freeGlobal=typeof global=="object"&&global&&global.Object===Object&&global;module.exports=freeGlobal}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],33:[function(require,module,exports){var baseProperty=require("./_baseProperty");var getLength=baseProperty("length");module.exports=getLength},{"./_baseProperty":25}],34:[function(require,module,exports){var isKeyable=require("./_isKeyable");function getMapData(map,key){var data=map.__data__;return isKeyable(key)?data[typeof key=="string"?"string":"hash"]:data.map}module.exports=getMapData},{"./_isKeyable":47}],35:[function(require,module,exports){var baseIsNative=require("./_baseIsNative"),getValue=require("./_getValue");function getNative(object,key){var value=getValue(object,key);return baseIsNative(value)?value:undefined}module.exports=getNative},{"./_baseIsNative":22,"./_getValue":38}],36:[function(require,module,exports){var overArg=require("./_overArg");var nativeGetPrototype=Object.getPrototypeOf;var getPrototype=overArg(nativeGetPrototype,Object);module.exports=getPrototype},{"./_overArg":63}],37:[function(require,module,exports){var DataView=require("./_DataView"),Map=require("./_Map"),Promise=require("./_Promise"),Set=require("./_Set"),WeakMap=require("./_WeakMap"),baseGetTag=require("./_baseGetTag"),toSource=require("./_toSource");var mapTag="[object Map]",objectTag="[object Object]",promiseTag="[object Promise]",setTag="[object Set]",weakMapTag="[object WeakMap]";var dataViewTag="[object DataView]";var objectProto=Object.prototype;var objectToString=objectProto.toString;var dataViewCtorString=toSource(DataView),mapCtorString=toSource(Map),promiseCtorString=toSource(Promise),setCtorString=toSource(Set),weakMapCtorString=toSource(WeakMap);var getTag=baseGetTag;if(DataView&&getTag(new DataView(new ArrayBuffer(1)))!=dataViewTag||Map&&getTag(new Map)!=mapTag||Promise&&getTag(Promise.resolve())!=promiseTag||Set&&getTag(new Set)!=setTag||WeakMap&&getTag(new WeakMap)!=weakMapTag){getTag=function(value){var result=objectToString.call(value),Ctor=result==objectTag?value.constructor:undefined,ctorString=Ctor?toSource(Ctor):undefined;if(ctorString){switch(ctorString){case dataViewCtorString:return dataViewTag;case mapCtorString:return mapTag;case promiseCtorString:return promiseTag;case setCtorString:return setTag;case weakMapCtorString:return weakMapTag}}return result}}module.exports=getTag},{"./_DataView":4,"./_Map":7,"./_Promise":9,"./_Set":10,"./_WeakMap":15,"./_baseGetTag":18,"./_toSource":73}],38:[function(require,module,exports){function getValue(object,key){return object==null?undefined:object[key]}module.exports=getValue},{}],39:[function(require,module,exports){var nativeCreate=require("./_nativeCreate");function hashClear(){this.__data__=nativeCreate?nativeCreate(null):{}}module.exports=hashClear},{"./_nativeCreate":61}],40:[function(require,module,exports){function hashDelete(key){return this.has(key)&&delete this.__data__[key]}module.exports=hashDelete},{}],41:[function(require,module,exports){var nativeCreate=require("./_nativeCreate");var HASH_UNDEFINED="__lodash_hash_undefined__";var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;function hashGet(key){var data=this.__data__;if(nativeCreate){var result=data[key];return result===HASH_UNDEFINED?undefined:result}return hasOwnProperty.call(data,key)?data[key]:undefined}module.exports=hashGet},{"./_nativeCreate":61}],42:[function(require,module,exports){var nativeCreate=require("./_nativeCreate");var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;function hashHas(key){var data=this.__data__;return nativeCreate?data[key]!==undefined:hasOwnProperty.call(data,key)}module.exports=hashHas},{"./_nativeCreate":61}],43:[function(require,module,exports){var nativeCreate=require("./_nativeCreate");var HASH_UNDEFINED="__lodash_hash_undefined__";function hashSet(key,value){var data=this.__data__;data[key]=nativeCreate&&value===undefined?HASH_UNDEFINED:value;return this}module.exports=hashSet},{"./_nativeCreate":61}],44:[function(require,module,exports){var baseTimes=require("./_baseTimes"),isArguments=require("./isArguments"),isArray=require("./isArray"),isLength=require("./isLength"),isString=require("./isString");function indexKeys(object){var length=object?object.length:undefined;if(isLength(length)&&(isArray(object)||isString(object)||isArguments(object))){return baseTimes(length,String)}return null}module.exports=indexKeys},{"./_baseTimes":26,"./isArguments":75,"./isArray":76,"./isLength":81,"./isString":84}],45:[function(require,module,exports){function isHostObject(value){var result=false;if(value!=null&&typeof value.toString!="function"){try{result=!!(value+"")}catch(e){}}return result}module.exports=isHostObject},{}],46:[function(require,module,exports){var MAX_SAFE_INTEGER=9007199254740991;var reIsUint=/^(?:0|[1-9]\d*)$/;function isIndex(value,length){length=length==null?MAX_SAFE_INTEGER:length;return!!length&&(typeof value=="number"||reIsUint.test(value))&&(value>-1&&value%1==0&&value<length)}module.exports=isIndex},{}],47:[function(require,module,exports){function isKeyable(value){var type=typeof value;return type=="string"||type=="number"||type=="symbol"||type=="boolean"?value!=="__proto__":value===null}module.exports=isKeyable},{}],48:[function(require,module,exports){var coreJsData=require("./_coreJsData");var maskSrcKey=function(){var uid=/[^.]+$/.exec(coreJsData&&coreJsData.keys&&coreJsData.keys.IE_PROTO||"");return uid?"Symbol(src)_1."+uid:""}();function isMasked(func){return!!maskSrcKey&&maskSrcKey in func}module.exports=isMasked},{"./_coreJsData":28}],49:[function(require,module,exports){var objectProto=Object.prototype;function isPrototype(value){var Ctor=value&&value.constructor,proto=typeof Ctor=="function"&&Ctor.prototype||objectProto;return value===proto}module.exports=isPrototype},{}],50:[function(require,module,exports){function listCacheClear(){this.__data__=[]}module.exports=listCacheClear},{}],51:[function(require,module,exports){var assocIndexOf=require("./_assocIndexOf");var arrayProto=Array.prototype;var splice=arrayProto.splice;function listCacheDelete(key){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){return false}var lastIndex=data.length-1;if(index==lastIndex){data.pop()}else{splice.call(data,index,1)}return true}module.exports=listCacheDelete},{"./_assocIndexOf":17}],52:[function(require,module,exports){var assocIndexOf=require("./_assocIndexOf");function listCacheGet(key){var data=this.__data__,index=assocIndexOf(data,key);return index<0?undefined:data[index][1]}module.exports=listCacheGet},{"./_assocIndexOf":17}],53:[function(require,module,exports){var assocIndexOf=require("./_assocIndexOf");function listCacheHas(key){return assocIndexOf(this.__data__,key)>-1}module.exports=listCacheHas},{"./_assocIndexOf":17}],54:[function(require,module,exports){var assocIndexOf=require("./_assocIndexOf");function listCacheSet(key,value){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){data.push([key,value])}else{data[index][1]=value}return this}module.exports=listCacheSet},{"./_assocIndexOf":17}],55:[function(require,module,exports){var Hash=require("./_Hash"),ListCache=require("./_ListCache"),Map=require("./_Map");function mapCacheClear(){this.__data__={hash:new Hash,map:new(Map||ListCache),string:new Hash}}module.exports=mapCacheClear},{"./_Hash":5,"./_ListCache":6,"./_Map":7}],56:[function(require,module,exports){var getMapData=require("./_getMapData");function mapCacheDelete(key){return getMapData(this,key)["delete"](key)}module.exports=mapCacheDelete},{"./_getMapData":34}],57:[function(require,module,exports){var getMapData=require("./_getMapData");function mapCacheGet(key){return getMapData(this,key).get(key)}module.exports=mapCacheGet},{"./_getMapData":34}],58:[function(require,module,exports){var getMapData=require("./_getMapData");function mapCacheHas(key){return getMapData(this,key).has(key)}module.exports=mapCacheHas},{"./_getMapData":34}],59:[function(require,module,exports){var getMapData=require("./_getMapData");function mapCacheSet(key,value){getMapData(this,key).set(key,value);return this}module.exports=mapCacheSet},{"./_getMapData":34}],60:[function(require,module,exports){function mapToArray(map){var index=-1,result=Array(map.size);map.forEach(function(value,key){result[++index]=[key,value]});return result}module.exports=mapToArray},{}],61:[function(require,module,exports){var getNative=require("./_getNative");var nativeCreate=getNative(Object,"create");module.exports=nativeCreate},{"./_getNative":35}],62:[function(require,module,exports){var freeGlobal=require("./_freeGlobal");var freeExports=freeGlobal&&typeof exports=="object"&&exports;var freeModule=freeExports&&typeof module=="object"&&module;var moduleExports=freeModule&&freeModule.exports===freeExports;var freeProcess=moduleExports&&freeGlobal.process;var nodeUtil=function(){try{return freeProcess&&freeProcess.binding("util")}catch(e){}}();module.exports=nodeUtil},{"./_freeGlobal":32}],63:[function(require,module,exports){function overArg(func,transform){return function(arg){return func(transform(arg))}}module.exports=overArg},{}],64:[function(require,module,exports){var freeGlobal=require("./_freeGlobal");var freeSelf=typeof self=="object"&&self&&self.Object===Object&&self;var root=freeGlobal||freeSelf||Function("return this")();module.exports=root},{"./_freeGlobal":32}],65:[function(require,module,exports){var HASH_UNDEFINED="__lodash_hash_undefined__";function setCacheAdd(value){this.__data__.set(value,HASH_UNDEFINED);return this}module.exports=setCacheAdd},{}],66:[function(require,module,exports){function setCacheHas(value){return this.__data__.has(value)}module.exports=setCacheHas},{}],67:[function(require,module,exports){function setToArray(set){var index=-1,result=Array(set.size);set.forEach(function(value){result[++index]=value});return result}module.exports=setToArray},{}],68:[function(require,module,exports){var ListCache=require("./_ListCache"); | |
function stackClear(){this.__data__=new ListCache}module.exports=stackClear},{"./_ListCache":6}],69:[function(require,module,exports){function stackDelete(key){return this.__data__["delete"](key)}module.exports=stackDelete},{}],70:[function(require,module,exports){function stackGet(key){return this.__data__.get(key)}module.exports=stackGet},{}],71:[function(require,module,exports){function stackHas(key){return this.__data__.has(key)}module.exports=stackHas},{}],72:[function(require,module,exports){var ListCache=require("./_ListCache"),Map=require("./_Map"),MapCache=require("./_MapCache");var LARGE_ARRAY_SIZE=200;function stackSet(key,value){var cache=this.__data__;if(cache instanceof ListCache){var pairs=cache.__data__;if(!Map||pairs.length<LARGE_ARRAY_SIZE-1){pairs.push([key,value]);return this}cache=this.__data__=new MapCache(pairs)}cache.set(key,value);return this}module.exports=stackSet},{"./_ListCache":6,"./_Map":7,"./_MapCache":8}],73:[function(require,module,exports){var funcToString=Function.prototype.toString;function toSource(func){if(func!=null){try{return funcToString.call(func)}catch(e){}try{return func+""}catch(e){}}return""}module.exports=toSource},{}],74:[function(require,module,exports){function eq(value,other){return value===other||value!==value&&other!==other}module.exports=eq},{}],75:[function(require,module,exports){var isArrayLikeObject=require("./isArrayLikeObject");var argsTag="[object Arguments]";var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;var objectToString=objectProto.toString;var propertyIsEnumerable=objectProto.propertyIsEnumerable;function isArguments(value){return isArrayLikeObject(value)&&hasOwnProperty.call(value,"callee")&&(!propertyIsEnumerable.call(value,"callee")||objectToString.call(value)==argsTag)}module.exports=isArguments},{"./isArrayLikeObject":78}],76:[function(require,module,exports){var isArray=Array.isArray;module.exports=isArray},{}],77:[function(require,module,exports){var getLength=require("./_getLength"),isFunction=require("./isFunction"),isLength=require("./isLength");function isArrayLike(value){return value!=null&&isLength(getLength(value))&&!isFunction(value)}module.exports=isArrayLike},{"./_getLength":33,"./isFunction":80,"./isLength":81}],78:[function(require,module,exports){var isArrayLike=require("./isArrayLike"),isObjectLike=require("./isObjectLike");function isArrayLikeObject(value){return isObjectLike(value)&&isArrayLike(value)}module.exports=isArrayLikeObject},{"./isArrayLike":77,"./isObjectLike":83}],79:[function(require,module,exports){var baseIsEqual=require("./_baseIsEqual");function isEqual(value,other){return baseIsEqual(value,other)}module.exports=isEqual},{"./_baseIsEqual":20}],80:[function(require,module,exports){var isObject=require("./isObject");var funcTag="[object Function]",genTag="[object GeneratorFunction]";var objectProto=Object.prototype;var objectToString=objectProto.toString;function isFunction(value){var tag=isObject(value)?objectToString.call(value):"";return tag==funcTag||tag==genTag}module.exports=isFunction},{"./isObject":82}],81:[function(require,module,exports){var MAX_SAFE_INTEGER=9007199254740991;function isLength(value){return typeof value=="number"&&value>-1&&value%1==0&&value<=MAX_SAFE_INTEGER}module.exports=isLength},{}],82:[function(require,module,exports){function isObject(value){var type=typeof value;return!!value&&(type=="object"||type=="function")}module.exports=isObject},{}],83:[function(require,module,exports){function isObjectLike(value){return!!value&&typeof value=="object"}module.exports=isObjectLike},{}],84:[function(require,module,exports){var isArray=require("./isArray"),isObjectLike=require("./isObjectLike");var stringTag="[object String]";var objectProto=Object.prototype;var objectToString=objectProto.toString;function isString(value){return typeof value=="string"||!isArray(value)&&isObjectLike(value)&&objectToString.call(value)==stringTag}module.exports=isString},{"./isArray":76,"./isObjectLike":83}],85:[function(require,module,exports){var baseIsTypedArray=require("./_baseIsTypedArray"),baseUnary=require("./_baseUnary"),nodeUtil=require("./_nodeUtil");var nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray;var isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;module.exports=isTypedArray},{"./_baseIsTypedArray":23,"./_baseUnary":27,"./_nodeUtil":62}],86:[function(require,module,exports){var baseHas=require("./_baseHas"),baseKeys=require("./_baseKeys"),indexKeys=require("./_indexKeys"),isArrayLike=require("./isArrayLike"),isIndex=require("./_isIndex"),isPrototype=require("./_isPrototype");function keys(object){var isProto=isPrototype(object);if(!(isProto||isArrayLike(object))){return baseKeys(object)}var indexes=indexKeys(object),skipIndexes=!!indexes,result=indexes||[],length=result.length;for(var key in object){if(baseHas(object,key)&&!(skipIndexes&&(key=="length"||isIndex(key,length)))&&!(isProto&&key=="constructor")){result.push(key)}}return result}module.exports=keys},{"./_baseHas":19,"./_baseKeys":24,"./_indexKeys":44,"./_isIndex":46,"./_isPrototype":49,"./isArrayLike":77}],normalizr:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Schema=undefined;var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};exports.arrayOf=arrayOf;exports.valuesOf=valuesOf;exports.unionOf=unionOf;exports.normalize=normalize;var _EntitySchema=require("./EntitySchema");var _EntitySchema2=_interopRequireDefault(_EntitySchema);var _IterableSchema=require("./IterableSchema");var _IterableSchema2=_interopRequireDefault(_IterableSchema);var _UnionSchema=require("./UnionSchema");var _UnionSchema2=_interopRequireDefault(_UnionSchema);var _isEqual=require("lodash/isEqual");var _isEqual2=_interopRequireDefault(_isEqual);var _isObject=require("lodash/isObject");var _isObject2=_interopRequireDefault(_isObject);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function defaultAssignEntity(normalized,key,entity){normalized[key]=entity}function visitObject(obj,schema,bag,options){var _options$assignEntity=options.assignEntity;var assignEntity=_options$assignEntity===undefined?defaultAssignEntity:_options$assignEntity;var defaults=schema&&schema.getDefaults&&schema.getDefaults();var schemaAssignEntity=schema&&schema.getAssignEntity&&schema.getAssignEntity();var normalized=(0,_isObject2.default)(defaults)?_extends({},defaults):{};for(var key in obj){if(obj.hasOwnProperty(key)){var entity=visit(obj[key],schema[key],bag,options);assignEntity.call(null,normalized,key,entity,obj,schema);if(schemaAssignEntity){schemaAssignEntity.call(null,normalized,key,entity,obj,schema)}}}return normalized}function defaultMapper(iterableSchema,itemSchema,bag,options){return function(obj){return visit(obj,itemSchema,bag,options)}}function polymorphicMapper(iterableSchema,itemSchema,bag,options){return function(obj){var schemaKey=iterableSchema.getSchemaKey(obj);var result=visit(obj,itemSchema[schemaKey],bag,options);return{id:result,schema:schemaKey}}}function visitIterable(obj,iterableSchema,bag,options){var itemSchema=iterableSchema.getItemSchema();var curriedItemMapper=defaultMapper(iterableSchema,itemSchema,bag,options);if(Array.isArray(obj)){return obj.map(curriedItemMapper)}else{return Object.keys(obj).reduce(function(objMap,key){objMap[key]=curriedItemMapper(obj[key]);return objMap},{})}}function visitUnion(obj,unionSchema,bag,options){var itemSchema=unionSchema.getItemSchema();return polymorphicMapper(unionSchema,itemSchema,bag,options)(obj)}function defaultMergeIntoEntity(entityA,entityB,entityKey){for(var key in entityB){if(!entityB.hasOwnProperty(key)){continue}if(!entityA.hasOwnProperty(key)||(0,_isEqual2.default)(entityA[key],entityB[key])){entityA[key]=entityB[key];continue}console.warn("When merging two "+entityKey+', found unequal data in their "'+key+'" values. Using the earlier value.',entityA[key],entityB[key])}}function visitEntity(entity,entitySchema,bag,options){var _options$mergeIntoEnt=options.mergeIntoEntity;var mergeIntoEntity=_options$mergeIntoEnt===undefined?defaultMergeIntoEntity:_options$mergeIntoEnt;var entityKey=entitySchema.getKey();var id=entitySchema.getId(entity);if(!bag.hasOwnProperty(entityKey)){bag[entityKey]={}}if(!bag[entityKey].hasOwnProperty(id)){bag[entityKey][id]={}}var stored=bag[entityKey][id];var normalized=visitObject(entity,entitySchema,bag,options);mergeIntoEntity(stored,normalized,entityKey);return id}function visit(obj,schema,bag,options){if(!(0,_isObject2.default)(obj)||!(0,_isObject2.default)(schema)){return obj}if(schema instanceof _EntitySchema2.default){return visitEntity(obj,schema,bag,options)}else if(schema instanceof _IterableSchema2.default){return visitIterable(obj,schema,bag,options)}else if(schema instanceof _UnionSchema2.default){return visitUnion(obj,schema,bag,options)}else{return visitObject(obj,schema,bag,options)}}function arrayOf(schema,options){return new _IterableSchema2.default(schema,options)}function valuesOf(schema,options){return new _IterableSchema2.default(schema,options)}function unionOf(schema,options){return new _UnionSchema2.default(schema,options)}exports.Schema=_EntitySchema2.default;function normalize(obj,schema){var options=arguments.length<=2||arguments[2]===undefined?{}:arguments[2];if(!(0,_isObject2.default)(obj)){throw new Error("Normalize accepts an object or an array as its input.")}if(!(0,_isObject2.default)(schema)||Array.isArray(schema)){throw new Error("Normalize accepts an object for schema.")}var bag={};var result=visit(obj,schema,bag,options);return{entities:bag,result:result}}},{"./EntitySchema":1,"./IterableSchema":2,"./UnionSchema":3,"lodash/isEqual":79,"lodash/isObject":82}]},{},[]);const normalizr=require("normalizr");const response={data:{id:1,title:"Lord of the Rings",pages:9250,publisher:{data:{id:1,name:"HarperCollins LLC",address:"Big building next to the river",city:"Amsterdam",country:{data:{id:1,name:"The Netherlands",population:1e3}}}},author:{data:{id:1,name:"J.R.R Tolkien",country:"UK",age:124}},characters:[{data:{id:1,name:"Bilbo Baggins",race:"Hobbit"}},{id:2,name:"Gandalf The Grey",race:"Wizard"},{id:3,name:"Legolas",race:"Elf"}]}};const country=new normalizr.Schema("country");const character=new normalizr.Schema("character");const book=new normalizr.Schema("book");const publisher=new normalizr.Schema("publisher");const author=new normalizr.Schema("author");book.define({data:{publisher:publisher,author:author,characters:normalizr.arrayOf(character)}});publisher.define({data:{country:country}});const result=normalizr.normalize(response,book,{assignEntity:function(output,key,value,input){if(key==="data"){Object.keys(value).forEach(function(d){output[d]=value[d]})}else{output[key]=value}}});console.log(result)},0); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "requirebin-sketch", | |
"version": "1.0.0", | |
"dependencies": { | |
"normalizr": "2.2.1" | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- contents of this file will be placed inside the <body> --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- contents of this file will be placed inside the <head> --> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment