@skele/core
Version:
Core package of the Skele framework. Element definitions, registrations and traversal.
1 lines • 2.62 kB
JavaScript
var _benchmark=require("benchmark");var _immutable=_interopRequireDefault(require("immutable"));var _ramda=_interopRequireDefault(require("ramda"));var zip=_interopRequireWildcard(require(".."));var data=_interopRequireWildcard(require("../../data"));var _zippa=require("zippa");var _navigation=_interopRequireDefault(require("./fixture/navigation.json"));function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};if(desc.get||desc.set){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}}newObj.default=obj;return newObj;}}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}describe('elementZipper walking benchmarks',function(){var state=_immutable.default.fromJS(_navigation.default);var update=function update(cmsIds){return function(el){if(data.isOfKind(['component','action-buttons'],el)&&cmsIds.includes(el.get('cmsId'))){return el.set('bookmarked',true);}return el;};};test.skip('alternative walking strategies',function(){var testWithPostWalkFromZippa=function testWithPostWalkFromZippa(cmsIds){return _ramda.default.pipe(zip.elementZipper({makeZipperOverride:_zippa.makeZipper}),(0,_zippa.postWalk)(update(cmsIds)),_zippa.value);};var testWithNaiveImmutableMapPostWalk=function testWithNaiveImmutableMapPostWalk(cmsIds){return naiveImmMapPostWalk(function(el){if(el&&el.get&&el.get('kind')){return update(cmsIds)(el);}return el;});};var testWithCustomPostWalk=function testWithCustomPostWalk(cmsIds){return _ramda.default.pipe(zip.elementZipper({}),zip.postWalk(update(cmsIds)),zip.node);};new _benchmark.Suite().add('with zippa implementation',function(){testWithPostWalkFromZippa(_immutable.default.List('ld.1439195'))(state);}).add('with naive map walking',function(){testWithNaiveImmutableMapPostWalk(_immutable.default.List('ld.1439195'))(state);}).add('with custom implementation',function(){testWithCustomPostWalk(_immutable.default.List('ld.1439195'))(state);}).on('cycle',function(event){console.log(event.target.toString());}).on('complete',function(){console.log('Fastest is '+this.filter('fastest').map('name'));}).run();});});var postwalk=function postwalk(f,struct){return walk(postwalk.bind(undefined,f),f,struct);};var naiveImmMapPostWalk=_ramda.default.curry(postwalk);function walk(inner,outer,struct){if(_immutable.default.Iterable.isIterable(struct)){return outer(struct.map(inner));}else{return outer(struct);}}