UNPKG

@tylerbu/sorted-btree-es6

Version:

A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.

2 lines (1 loc) 1.89 kB
function moveForwardOne(e,n){var o=e.leaf,a=e.leafIndex+1;return a<o.keys.length?(e.onMoveInLeaf(o,e.leafPayload,e.leafIndex,a,!0),e.leafIndex=a,!1):moveTo(e,n,getKey(e),!1,!0)[0]}function createCursor(e,n,o,a,r,l,t){var d=[];let f=e._root;for(;!f.isLeaf;){var i=f,x=n();d.push({node:i,childIndex:0,payload:x}),f=i.children[0]}var p=n();return{tree:e,leaf:f,leafIndex:0,spine:d,leafPayload:p,makePayload:n,onEnterLeaf:o,onMoveInLeaf:a,onExitLeaf:r,onStepUp:l,onStepDown:t}}function getKey(e){return e.leaf.keys[e.leafIndex]}function moveTo(t,d,f,i,x){var p=t.tree._compare,e=t.onMoveInLeaf,v=t.leaf,I=t.leafPayload,s=v.indexOf(f,-1,p);let n,y;y=s<0?(n=~s,!1):i?(n=s,!0):(n=s+1,!1);s=v.keys.length;if(n<s)e(v,I,t.leafIndex,n,x),t.leafIndex=n;else{var u=t.spine,c=u.length;let o=-1,a=-1;for(let n=c-1;0<=n;n--){var h=u[n].node,m=h.indexOf(f,-1,p);let e;if((e=m<0?~m:i?m:m+1)<h.keys.length){o=n,a=e;break}}t.onExitLeaf(v,I,t.leafIndex,x,t);var g=t.onStepUp;if(o<0){for(let n=c-1;0<=n;n--){let e=u[n];var L=0===n?Number.POSITIVE_INFINITY:Number.NaN;g(e.node,c-n,e.payload,e.childIndex,n,L,t,d)}return[!0,!1]}for(let n=c-1;n>o;n--){let e=u[n];g(e.node,c-n,e.payload,e.childIndex,n,Number.NaN,t,d)}let e=u[o];g(e.node,c-o,e.payload,e.childIndex,o,a,t,d),e.childIndex=a;var N=t.onStepDown,O=t.makePayload;let n=c-o-1,r=(u.length=o+1,u[o].node.children[a]);for(;!r.isLeaf;){var k=r,P=k.keys;let e=k.indexOf(f,0,p);!i&&e<P.length&&0===p(P[e],f)&&e++;var P=O(),T=u.length;u.push({node:k,childIndex:e,payload:P}),N(k,n,T,e,t,d),r=k.children[e],--n}s=r.indexOf(f,-1,p);let l;y=s<0?(l=~s,!1):i?(l=s,!0):(l=s+1,!1),t.leaf=r,t.leafPayload=O(),t.leafIndex=l,t.onEnterLeaf(r,l,t,d)}return[!1,y]}function noop(){}Object.defineProperty(exports,"__esModule",{value:!0}),exports.moveForwardOne=moveForwardOne,exports.createCursor=createCursor,exports.getKey=getKey,exports.moveTo=moveTo,exports.noop=noop;