From 25881c7f501497ce4e068ee7776d5021bba14ccd Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Tue, 17 Sep 2019 09:17:03 +0200 Subject: [PATCH 01/10] 2.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a9b9f34..523b92d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "domdiff", - "version": "2.0.7", + "version": "2.1.0", "description": "A fast and simple way to diff childNodes", "unpkg": "min.js", "main": "cjs/index.js", From 96a8fae6d0b49f812b432417429b65d63d63e668 Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Fri, 15 Nov 2019 07:09:34 +0100 Subject: [PATCH 02/10] Discover node.remove capability at runtime --- cjs/index.js | 4 ---- cjs/utils.js | 29 ++++++++++------------------- esm/index.js | 4 ---- esm/utils.js | 29 ++++++++++------------------- index.js | 36 ++++++++++++++++-------------------- min.js | 4 ++-- 6 files changed, 38 insertions(+), 68 deletions(-) diff --git a/cjs/index.js b/cjs/index.js index 59104be..2345036 100644 --- a/cjs/index.js +++ b/cjs/index.js @@ -72,7 +72,6 @@ const domdiff = ( if (futureSame && currentStart < currentEnd) { remove( get, - parentNode, currentNodes, currentStart, currentEnd @@ -131,14 +130,12 @@ const domdiff = ( if (-1 < i) { remove( get, - parentNode, currentNodes, currentStart, i ); remove( get, - parentNode, currentNodes, i + futureChanges, currentEnd @@ -161,7 +158,6 @@ const domdiff = ( ); remove( get, - parentNode, currentNodes, currentStart, currentEnd diff --git a/cjs/utils.js b/cjs/utils.js index c2e8cb1..5785a55 100644 --- a/cjs/utils.js +++ b/cjs/utils.js @@ -86,9 +86,9 @@ const next = (get, list, i, length, before) => i < length ? before); exports.next = next; -const remove = (get, parent, children, start, end) => { +const remove = (get, children, start, end) => { while (start < end) - removeChild(get(children[start++], -1), parent); + drop(get(children[start++], -1)); }; exports.remove = remove; @@ -311,7 +311,6 @@ const applyDiff = ( else remove( get, - parentNode, currentNodes, currentStart++, currentStart @@ -381,19 +380,11 @@ const smartDiff = ( }; exports.smartDiff = smartDiff; -let removeChild = (child, parentNode) => { - /* istanbul ignore if */ - if ('remove' in child) { - removeChild = child => { - child.remove(); - }; - } - else { - removeChild = (child, parentNode) => { - /* istanbul ignore else */ - if (child.parentNode === parentNode) - parentNode.removeChild(child); - }; - } - removeChild(child, parentNode); -}; +const drop = node => (node.remove || dropChild).call(node); + +function dropChild() { + const {parentNode} = this; + /* istanbul ignore else */ + if (parentNode) + parentNode.removeChild(this); +} diff --git a/esm/index.js b/esm/index.js index 28e7719..703a20a 100644 --- a/esm/index.js +++ b/esm/index.js @@ -73,7 +73,6 @@ const domdiff = ( if (futureSame && currentStart < currentEnd) { remove( get, - parentNode, currentNodes, currentStart, currentEnd @@ -132,14 +131,12 @@ const domdiff = ( if (-1 < i) { remove( get, - parentNode, currentNodes, currentStart, i ); remove( get, - parentNode, currentNodes, i + futureChanges, currentEnd @@ -162,7 +159,6 @@ const domdiff = ( ); remove( get, - parentNode, currentNodes, currentStart, currentEnd diff --git a/esm/utils.js b/esm/utils.js index ff5664a..4f55904 100644 --- a/esm/utils.js +++ b/esm/utils.js @@ -79,9 +79,9 @@ export const next = (get, list, i, length, before) => i < length ? get(list[i - 1], -0).nextSibling : before); -export const remove = (get, parent, children, start, end) => { +export const remove = (get, children, start, end) => { while (start < end) - removeChild(get(children[start++], -1), parent); + drop(get(children[start++], -1)); }; // - - - - - - - - - - - - - - - - - - - @@ -303,7 +303,6 @@ const applyDiff = ( else remove( get, - parentNode, currentNodes, currentStart++, currentStart @@ -372,19 +371,11 @@ export const smartDiff = ( ); }; -let removeChild = (child, parentNode) => { - /* istanbul ignore if */ - if ('remove' in child) { - removeChild = child => { - child.remove(); - }; - } - else { - removeChild = (child, parentNode) => { - /* istanbul ignore else */ - if (child.parentNode === parentNode) - parentNode.removeChild(child); - }; - } - removeChild(child, parentNode); -}; +const drop = node => (node.remove || dropChild).call(node); + +function dropChild() { + const {parentNode} = this; + /* istanbul ignore else */ + if (parentNode) + parentNode.removeChild(this); +} diff --git a/index.js b/index.js index 1433141..59bef1c 100644 --- a/index.js +++ b/index.js @@ -98,9 +98,9 @@ var next = function next(get, list, i, length, before) { return i < length ? get(list[i], 0) : 0 < i ? get(list[i - 1], -0).nextSibling : before; }; -var remove = function remove(get, parent, children, start, end) { +var remove = function remove(get, children, start, end) { while (start < end) { - _removeChild(get(children[start++], -1), parent); + drop(get(children[start++], -1)); } }; @@ -273,7 +273,7 @@ var applyDiff = function applyDiff(diff, get, parentNode, futureNodes, futureSta break; case DELETION: // TODO: bulk removes for sequential nodes - if (live.has(currentNodes[currentStart])) currentStart++;else remove(get, parentNode, currentNodes, currentStart++, currentStart); + if (live.has(currentNodes[currentStart])) currentStart++;else remove(get, currentNodes, currentStart++, currentStart); break; } } @@ -293,21 +293,17 @@ var smartDiff = function smartDiff(get, parentNode, futureNodes, futureStart, fu applyDiff(OND(futureNodes, futureStart, futureChanges, currentNodes, currentStart, currentChanges, compare) || HS(futureNodes, futureStart, futureEnd, futureChanges, currentNodes, currentStart, currentEnd, currentChanges), get, parentNode, futureNodes, futureStart, currentNodes, currentStart, currentLength, before); }; -var _removeChild = function removeChild(child, parentNode) { - /* istanbul ignore if */ - if ('remove' in child) { - _removeChild = function removeChild(child) { - child.remove(); - }; - } else { - _removeChild = function removeChild(child, parentNode) { - /* istanbul ignore else */ - if (child.parentNode === parentNode) parentNode.removeChild(child); - }; - } - _removeChild(child, parentNode); +var drop = function drop(node) { + return (node.remove || dropChild).call(node); }; +function dropChild() { + var parentNode = this.parentNode; + /* istanbul ignore else */ + + if (parentNode) parentNode.removeChild(this); +} + /*! (c) 2018 Andrea Giammarchi (ISC) */ var domdiff = function domdiff(parentNode, // where changes happen @@ -357,7 +353,7 @@ options // optional object with one of the following properties // only stuff to remove if (futureSame && currentStart < currentEnd) { - remove(get, parentNode, currentNodes, currentStart, currentEnd); + remove(get, currentNodes, currentStart, currentEnd); return futureNodes; } @@ -380,8 +376,8 @@ options // optional object with one of the following properties i = indexOf(currentNodes, currentStart, currentEnd, futureNodes, futureStart, futureEnd, compare); // outer diff if (-1 < i) { - remove(get, parentNode, currentNodes, currentStart, i); - remove(get, parentNode, currentNodes, i + futureChanges, currentEnd); + remove(get, currentNodes, currentStart, i); + remove(get, currentNodes, i + futureChanges, currentEnd); return futureNodes; } } @@ -391,7 +387,7 @@ options // optional object with one of the following properties /* istanbul ignore else */ if (currentChanges < 2 || futureChanges < 2) { append(get, parentNode, futureNodes, futureStart, futureEnd, get(currentNodes[currentStart], 0)); - remove(get, parentNode, currentNodes, currentStart, currentEnd); + remove(get, currentNodes, currentStart, currentEnd); return futureNodes; } diff --git a/min.js b/min.js index 30f28cf..759d0d0 100644 --- a/min.js +++ b/min.js @@ -1,2 +1,2 @@ -var domdiff=function(){"use strict";/*! (c) Andrea Giammarchi - ISC */ -var r={};try{r.Map=Map}catch(Map){r.Map=function(){function r(r){return-1<(n=e.indexOf(r))}var n=0,e=[],t=[];return{"delete":function(o){var f=r(o);return f&&(e.splice(n,1),t.splice(n,1)),f},forEach:function(r,n){e.forEach(function(e,o){r.call(n,t[o],e,this)},this)},get:function(e){return r(e)?t[n]:void 0},has:function(n){return r(n)},set:function(o,f){return t[r(o)?n:e.push(o)-1]=f,this}}}}var n=r.Map,e=[].indexOf,t=function(r,n,t,o,f,i){for(var u=("selectedIndex"in n),a=u;o=u;){for(var a=n,c=o;au;)--c;v=a+o-c;var x=Array(v),y=l[c];for(--t;y;){for(var k=y,m=k.newi,A=k.oldi;t>m;)x[--v]=1,--t;for(;u>A;)x[--v]=-1,--u;x[--v]=0,--t,--u,y=y.prev}for(;t>=e;)x[--v]=1,--t;for(;u>=i;)x[--v]=-1,--u;return x},l=function(r,n,e,t,o,f,i){var u=e+f,a=[],c=void 0,v=void 0,l=void 0,s=void 0,d=void 0,h=void 0,p=void 0;r:for(c=0;c<=u;c++){if(c>50)return null;for(p=c-1,d=c?a[c-1]:[0,0],h=a[c]=[],v=-c;v<=c;v+=2){for(s=v===-c||v!==c&&d[p+v-1]=0;c--){for(;s>0&&l>0&&i(t[o+s-1],r[n+l-1]);)b[g--]=0,s--,l--;if(!c)break;p=c-1,d=c?a[c-1]:[0,0],v=s-l,v===-c||v!==c&&d[p+v-1]>>0;e=u;){for(var a=n,c=o;au;)--c;v=a+o-c;var x=Array(v),y=l[c];for(--t;y;){for(var k=y,A=k.newi,M=k.oldi;t>A;)x[--v]=1,--t;for(;u>M;)x[--v]=-1,--u;x[--v]=0,--t,--u,y=y.prev}for(;t>=n;)x[--v]=1,--t;for(;u>=i;)x[--v]=-1,--u;return x},s=function(r,n,e,t,o,f,i){var u=e+f,a=[],c=void 0,v=void 0,l=void 0,s=void 0,d=void 0,h=void 0,p=void 0;r:for(c=0;c<=u;c++){if(c>50)return null;for(p=c-1,d=c?a[c-1]:[0,0],h=a[c]=[],v=-c;v<=c;v+=2){for(s=v===-c||v!==c&&d[p+v-1]=0;c--){for(;s>0&&l>0&&i(t[o+s-1],r[n+l-1]);)b[g--]=0,s--,l--;if(!c)break;p=c-1,d=c?a[c-1]:[0,0],v=s-l,v===-c||v!==c&&d[p+v-1]>>0;e Date: Fri, 15 Nov 2019 07:18:30 +0100 Subject: [PATCH 03/10] updated coveralls --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 523b92d..2175ada 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", "babel-plugin-transform-es2015-spread": "^6.22.0", "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "coveralls": "^3.0.5", + "coveralls": "^3.0.7", "istanbul": "^0.4.5", "rollup": "^0.52.3", "rollup-plugin-babel": "^3.0.7", From 1ba4c7ae7d6e003554b2808d8c17d4c6f65fe992 Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Fri, 15 Nov 2019 07:18:52 +0100 Subject: [PATCH 04/10] 2.1.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2175ada..57eca17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "domdiff", - "version": "2.1.0", + "version": "2.1.1", "description": "A fast and simple way to diff childNodes", "unpkg": "min.js", "main": "cjs/index.js", From 72729f4401f0650a084b70072191f124ad8efe17 Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Wed, 27 Nov 2019 17:31:34 +0100 Subject: [PATCH 05/10] dropped dependency + updated bundling --- babel-plugins.json | 13 - cjs/package.json | 1 + cjs/utils.js | 17 +- esm/utils.js | 17 +- index.js | 711 ++++++++++++++++++++++----------------------- min.js | 4 +- package.json | 31 +- rollup.config.js | 7 +- 8 files changed, 370 insertions(+), 431 deletions(-) delete mode 100644 babel-plugins.json create mode 100644 cjs/package.json diff --git a/babel-plugins.json b/babel-plugins.json deleted file mode 100644 index d982204..0000000 --- a/babel-plugins.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - "check-es2015-constants", - "transform-es2015-arrow-functions", - "transform-es2015-block-scoped-functions", - "transform-es2015-block-scoping", - "transform-es2015-computed-properties", - "transform-es2015-destructuring", - "transform-es2015-duplicate-keys", - "transform-es2015-function-name", - "transform-es2015-literals", - "transform-es2015-shorthand-properties", - "transform-es2015-spread" -] \ No newline at end of file diff --git a/cjs/package.json b/cjs/package.json new file mode 100644 index 0000000..0292b99 --- /dev/null +++ b/cjs/package.json @@ -0,0 +1 @@ +{"type":"commonjs"} \ No newline at end of file diff --git a/cjs/utils.js b/cjs/utils.js index 5785a55..eab05b4 100644 --- a/cjs/utils.js +++ b/cjs/utils.js @@ -1,6 +1,4 @@ 'use strict'; -const Map = (require('@ungap/essential-map')); - const {indexOf: iOF} = []; const append = (get, parent, children, start, end, before) => { const isSelect = 'selectedIndex' in parent; @@ -122,13 +120,12 @@ const HS = ( for (let i = 1; i < minLen; i++) tresh[i] = currentEnd; - const keymap = new Map; - for (let i = currentStart; i < currentEnd; i++) - keymap.set(currentNodes[i], i); + const nodes = currentNodes.slice(currentStart, currentEnd); for (let i = futureStart; i < futureEnd; i++) { - const idxInOld = keymap.get(futureNodes[i]); - if (idxInOld != null) { + const index = nodes.indexOf(futureNodes[i]); + if (-1 < index) { + const idxInOld = index + currentStart; k = findK(tresh, minLen, idxInOld); /* istanbul ignore else */ if (-1 < k) { @@ -269,7 +266,7 @@ const applyDiff = ( currentLength, before ) => { - const live = new Map; + const live = []; const length = diff.length; let currentIndex = currentStart; let i = 0; @@ -281,7 +278,7 @@ const applyDiff = ( break; case INSERTION: // TODO: bulk appends for sequential nodes - live.set(futureNodes[futureStart], 1); + live.push(futureNodes[futureStart]); append( get, parentNode, @@ -306,7 +303,7 @@ const applyDiff = ( break; case DELETION: // TODO: bulk removes for sequential nodes - if (live.has(currentNodes[currentStart])) + if (-1 < live.indexOf(currentNodes[currentStart])) currentStart++; else remove( diff --git a/esm/utils.js b/esm/utils.js index 4f55904..fed9977 100644 --- a/esm/utils.js +++ b/esm/utils.js @@ -1,5 +1,3 @@ -import Map from '@ungap/essential-map'; - const {indexOf: iOF} = []; export const append = (get, parent, children, start, end, before) => { const isSelect = 'selectedIndex' in parent; @@ -114,13 +112,12 @@ const HS = ( for (let i = 1; i < minLen; i++) tresh[i] = currentEnd; - const keymap = new Map; - for (let i = currentStart; i < currentEnd; i++) - keymap.set(currentNodes[i], i); + const nodes = currentNodes.slice(currentStart, currentEnd); for (let i = futureStart; i < futureEnd; i++) { - const idxInOld = keymap.get(futureNodes[i]); - if (idxInOld != null) { + const index = nodes.indexOf(futureNodes[i]); + if (-1 < index) { + const idxInOld = index + currentStart; k = findK(tresh, minLen, idxInOld); /* istanbul ignore else */ if (-1 < k) { @@ -261,7 +258,7 @@ const applyDiff = ( currentLength, before ) => { - const live = new Map; + const live = []; const length = diff.length; let currentIndex = currentStart; let i = 0; @@ -273,7 +270,7 @@ const applyDiff = ( break; case INSERTION: // TODO: bulk appends for sequential nodes - live.set(futureNodes[futureStart], 1); + live.push(futureNodes[futureStart]); append( get, parentNode, @@ -298,7 +295,7 @@ const applyDiff = ( break; case DELETION: // TODO: bulk removes for sequential nodes - if (live.has(currentNodes[currentStart])) + if (-1 < live.indexOf(currentNodes[currentStart])) currentStart++; else remove( diff --git a/index.js b/index.js index 59bef1c..997c87e 100644 --- a/index.js +++ b/index.js @@ -1,417 +1,392 @@ var domdiff = (function () { -'use strict'; - -/*! (c) Andrea Giammarchi - ISC */ -var self = null || /* istanbul ignore next */{}; -try { - self.Map = Map; -} catch (Map) { - self.Map = function Map() { - var i = 0; - var k = []; - var v = []; - return { - delete: function _delete(key) { - var had = contains(key); - if (had) { - k.splice(i, 1); - v.splice(i, 1); - } - return had; - }, - forEach: function forEach(callback, context) { - k.forEach(function (key, i) { - callback.call(context, v[i], key, this); - }, this); - }, - get: function get(key) { - return contains(key) ? v[i] : void 0; - }, - has: function has(key) { - return contains(key); - }, - set: function set(key, value) { - v[contains(key) ? i : k.push(key) - 1] = value; - return this; + 'use strict'; + + var iOF = [].indexOf; + var append = function append(get, parent, children, start, end, before) { + var isSelect = 'selectedIndex' in parent; + var noSelection = isSelect; + + while (start < end) { + var child = get(children[start], 1); + parent.insertBefore(child, before); + + if (isSelect && noSelection && child.selected) { + noSelection = !noSelection; + var selectedIndex = parent.selectedIndex; + parent.selectedIndex = selectedIndex < 0 ? start : iOF.call(parent.querySelectorAll('option'), child); } - }; - function contains(v) { - i = k.indexOf(v); - return -1 < i; + + start++; } }; -} -var Map$1 = self.Map; - -var iOF = [].indexOf; - -var append = function append(get, parent, children, start, end, before) { - var isSelect = 'selectedIndex' in parent; - var noSelection = isSelect; - while (start < end) { - var child = get(children[start], 1); - parent.insertBefore(child, before); - if (isSelect && noSelection && child.selected) { - noSelection = !noSelection; - var selectedIndex = parent.selectedIndex; - - parent.selectedIndex = selectedIndex < 0 ? start : iOF.call(parent.querySelectorAll('option'), child); + var eqeq = function eqeq(a, b) { + return a == b; + }; + var identity = function identity(O) { + return O; + }; + var indexOf = function indexOf(moreNodes, moreStart, moreEnd, lessNodes, lessStart, lessEnd, compare) { + var length = lessEnd - lessStart; + /* istanbul ignore if */ + + if (length < 1) return -1; + + while (moreEnd - moreStart >= length) { + var m = moreStart; + var l = lessStart; + + while (m < moreEnd && l < lessEnd && compare(moreNodes[m], lessNodes[l])) { + m++; + l++; + } + + if (l === lessEnd) return moreStart; + moreStart = m + 1; } - start++; - } -}; - -var eqeq = function eqeq(a, b) { - return a == b; -}; - -var identity = function identity(O) { - return O; -}; - -var indexOf = function indexOf(moreNodes, moreStart, moreEnd, lessNodes, lessStart, lessEnd, compare) { - var length = lessEnd - lessStart; - /* istanbul ignore if */ - if (length < 1) return -1; - while (moreEnd - moreStart >= length) { - var m = moreStart; - var l = lessStart; - while (m < moreEnd && l < lessEnd && compare(moreNodes[m], lessNodes[l])) { - m++; - l++; + + return -1; + }; + var isReversed = function isReversed(futureNodes, futureEnd, currentNodes, currentStart, currentEnd, compare) { + while (currentStart < currentEnd && compare(currentNodes[currentStart], futureNodes[futureEnd - 1])) { + currentStart++; + futureEnd--; } - if (l === lessEnd) return moreStart; - moreStart = m + 1; - } - return -1; -}; + return futureEnd === 0; + }; + var next = function next(get, list, i, length, before) { + return i < length ? get(list[i], 0) : 0 < i ? get(list[i - 1], -0).nextSibling : before; + }; + var remove = function remove(get, children, start, end) { + while (start < end) { + drop(get(children[start++], -1)); + } + }; // - - - - - - - - - - - - - - - - - - - + // diff related constants and utilities + // - - - - - - - - - - - - - - - - - - - -var isReversed = function isReversed(futureNodes, futureEnd, currentNodes, currentStart, currentEnd, compare) { - while (currentStart < currentEnd && compare(currentNodes[currentStart], futureNodes[futureEnd - 1])) { - currentStart++; - futureEnd--; - } - return futureEnd === 0; -}; + var DELETION = -1; + var INSERTION = 1; + var SKIP = 0; + var SKIP_OND = 50; + + var HS = function HS(futureNodes, futureStart, futureEnd, futureChanges, currentNodes, currentStart, currentEnd, currentChanges) { + var k = 0; + /* istanbul ignore next */ -var next = function next(get, list, i, length, before) { - return i < length ? get(list[i], 0) : 0 < i ? get(list[i - 1], -0).nextSibling : before; -}; + var minLen = futureChanges < currentChanges ? futureChanges : currentChanges; + var link = Array(minLen++); + var tresh = Array(minLen); + tresh[0] = -1; -var remove = function remove(get, children, start, end) { - while (start < end) { - drop(get(children[start++], -1)); - } -}; - -// - - - - - - - - - - - - - - - - - - - -// diff related constants and utilities -// - - - - - - - - - - - - - - - - - - - - -var DELETION = -1; -var INSERTION = 1; -var SKIP = 0; -var SKIP_OND = 50; - -var HS = function HS(futureNodes, futureStart, futureEnd, futureChanges, currentNodes, currentStart, currentEnd, currentChanges) { - - var k = 0; - /* istanbul ignore next */ - var minLen = futureChanges < currentChanges ? futureChanges : currentChanges; - var link = Array(minLen++); - var tresh = Array(minLen); - tresh[0] = -1; - - for (var i = 1; i < minLen; i++) { - tresh[i] = currentEnd; - }var keymap = new Map$1(); - for (var _i = currentStart; _i < currentEnd; _i++) { - keymap.set(currentNodes[_i], _i); - }for (var _i2 = futureStart; _i2 < futureEnd; _i2++) { - var idxInOld = keymap.get(futureNodes[_i2]); - if (idxInOld != null) { - k = findK(tresh, minLen, idxInOld); - /* istanbul ignore else */ - if (-1 < k) { - tresh[k] = idxInOld; - link[k] = { - newi: _i2, - oldi: idxInOld, - prev: link[k - 1] - }; + for (var i = 1; i < minLen; i++) { + tresh[i] = currentEnd; + } + + var nodes = currentNodes.slice(currentStart, currentEnd); + + for (var _i = futureStart; _i < futureEnd; _i++) { + var index = nodes.indexOf(futureNodes[_i]); + + if (-1 < index) { + var idxInOld = index + currentStart; + k = findK(tresh, minLen, idxInOld); + /* istanbul ignore else */ + + if (-1 < k) { + tresh[k] = idxInOld; + link[k] = { + newi: _i, + oldi: idxInOld, + prev: link[k - 1] + }; + } } } - } - k = --minLen; - --currentEnd; - while (tresh[k] > currentEnd) { - --k; - }minLen = currentChanges + futureChanges - k; - var diff = Array(minLen); - var ptr = link[k]; - --futureEnd; - while (ptr) { - var _ptr = ptr, - newi = _ptr.newi, - oldi = _ptr.oldi; - - while (futureEnd > newi) { + k = --minLen; + --currentEnd; + + while (tresh[k] > currentEnd) { + --k; + } + + minLen = currentChanges + futureChanges - k; + var diff = Array(minLen); + var ptr = link[k]; + --futureEnd; + + while (ptr) { + var _ptr = ptr, + newi = _ptr.newi, + oldi = _ptr.oldi; + + while (futureEnd > newi) { + diff[--minLen] = INSERTION; + --futureEnd; + } + + while (currentEnd > oldi) { + diff[--minLen] = DELETION; + --currentEnd; + } + + diff[--minLen] = SKIP; + --futureEnd; + --currentEnd; + ptr = ptr.prev; + } + + while (futureEnd >= futureStart) { diff[--minLen] = INSERTION; --futureEnd; } - while (currentEnd > oldi) { + + while (currentEnd >= currentStart) { diff[--minLen] = DELETION; --currentEnd; } - diff[--minLen] = SKIP; - --futureEnd; - --currentEnd; - ptr = ptr.prev; - } - while (futureEnd >= futureStart) { - diff[--minLen] = INSERTION; - --futureEnd; - } - while (currentEnd >= currentStart) { - diff[--minLen] = DELETION; - --currentEnd; - } - return diff; -}; - -// this is pretty much the same petit-dom code without the delete map part -// https://github.com/yelouafi/petit-dom/blob/bd6f5c919b5ae5297be01612c524c40be45f14a7/src/vdom.js#L556-L561 -var OND = function OND(futureNodes, futureStart, rows, currentNodes, currentStart, cols, compare) { - var length = rows + cols; - var v = []; - var d = void 0, - k = void 0, - r = void 0, - c = void 0, - pv = void 0, - cv = void 0, - pd = void 0; - outer: for (d = 0; d <= length; d++) { - /* istanbul ignore if */ - if (d > SKIP_OND) return null; - pd = d - 1; - /* istanbul ignore next */ - pv = d ? v[d - 1] : [0, 0]; - cv = v[d] = []; - for (k = -d; k <= d; k += 2) { - if (k === -d || k !== d && pv[pd + k - 1] < pv[pd + k + 1]) { - c = pv[pd + k + 1]; - } else { - c = pv[pd + k - 1] + 1; + + return diff; + }; // this is pretty much the same petit-dom code without the delete map part + // https://github.com/yelouafi/petit-dom/blob/bd6f5c919b5ae5297be01612c524c40be45f14a7/src/vdom.js#L556-L561 + + + var OND = function OND(futureNodes, futureStart, rows, currentNodes, currentStart, cols, compare) { + var length = rows + cols; + var v = []; + var d, k, r, c, pv, cv, pd; + + outer: for (d = 0; d <= length; d++) { + /* istanbul ignore if */ + if (d > SKIP_OND) return null; + pd = d - 1; + /* istanbul ignore next */ + + pv = d ? v[d - 1] : [0, 0]; + cv = v[d] = []; + + for (k = -d; k <= d; k += 2) { + if (k === -d || k !== d && pv[pd + k - 1] < pv[pd + k + 1]) { + c = pv[pd + k + 1]; + } else { + c = pv[pd + k - 1] + 1; + } + + r = c - k; + + while (c < cols && r < rows && compare(currentNodes[currentStart + c], futureNodes[futureStart + r])) { + c++; + r++; + } + + if (c === cols && r === rows) { + break outer; + } + + cv[d + k] = c; } - r = c - k; - while (c < cols && r < rows && compare(currentNodes[currentStart + c], futureNodes[futureStart + r])) { - c++; - r++; + } + + var diff = Array(d / 2 + length / 2); + var diffIdx = diff.length - 1; + + for (d = v.length - 1; d >= 0; d--) { + while (c > 0 && r > 0 && compare(currentNodes[currentStart + c - 1], futureNodes[futureStart + r - 1])) { + // diagonal edge = equality + diff[diffIdx--] = SKIP; + c--; + r--; } - if (c === cols && r === rows) { - break outer; + + if (!d) break; + pd = d - 1; + /* istanbul ignore next */ + + pv = d ? v[d - 1] : [0, 0]; + k = c - r; + + if (k === -d || k !== d && pv[pd + k - 1] < pv[pd + k + 1]) { + // vertical edge = insertion + r--; + diff[diffIdx--] = INSERTION; + } else { + // horizontal edge = deletion + c--; + diff[diffIdx--] = DELETION; } - cv[d + k] = c; } - } - var diff = Array(d / 2 + length / 2); - var diffIdx = diff.length - 1; - for (d = v.length - 1; d >= 0; d--) { - while (c > 0 && r > 0 && compare(currentNodes[currentStart + c - 1], futureNodes[futureStart + r - 1])) { - // diagonal edge = equality - diff[diffIdx--] = SKIP; - c--; - r--; - } - if (!d) break; - pd = d - 1; - /* istanbul ignore next */ - pv = d ? v[d - 1] : [0, 0]; - k = c - r; - if (k === -d || k !== d && pv[pd + k - 1] < pv[pd + k + 1]) { - // vertical edge = insertion - r--; - diff[diffIdx--] = INSERTION; - } else { - // horizontal edge = deletion - c--; - diff[diffIdx--] = DELETION; + return diff; + }; + + var applyDiff = function applyDiff(diff, get, parentNode, futureNodes, futureStart, currentNodes, currentStart, currentLength, before) { + var live = []; + var length = diff.length; + var currentIndex = currentStart; + var i = 0; + + while (i < length) { + switch (diff[i++]) { + case SKIP: + futureStart++; + currentIndex++; + break; + + case INSERTION: + // TODO: bulk appends for sequential nodes + live.push(futureNodes[futureStart]); + append(get, parentNode, futureNodes, futureStart++, futureStart, currentIndex < currentLength ? get(currentNodes[currentIndex], 0) : before); + break; + + case DELETION: + currentIndex++; + break; + } } - } - return diff; -}; - -var applyDiff = function applyDiff(diff, get, parentNode, futureNodes, futureStart, currentNodes, currentStart, currentLength, before) { - var live = new Map$1(); - var length = diff.length; - var currentIndex = currentStart; - var i = 0; - while (i < length) { - switch (diff[i++]) { - case SKIP: - futureStart++; - currentIndex++; - break; - case INSERTION: - // TODO: bulk appends for sequential nodes - live.set(futureNodes[futureStart], 1); - append(get, parentNode, futureNodes, futureStart++, futureStart, currentIndex < currentLength ? get(currentNodes[currentIndex], 0) : before); - break; - case DELETION: - currentIndex++; - break; + + i = 0; + + while (i < length) { + switch (diff[i++]) { + case SKIP: + currentStart++; + break; + + case DELETION: + // TODO: bulk removes for sequential nodes + if (-1 < live.indexOf(currentNodes[currentStart])) currentStart++;else remove(get, currentNodes, currentStart++, currentStart); + break; + } } - } - i = 0; - while (i < length) { - switch (diff[i++]) { - case SKIP: - currentStart++; - break; - case DELETION: - // TODO: bulk removes for sequential nodes - if (live.has(currentNodes[currentStart])) currentStart++;else remove(get, currentNodes, currentStart++, currentStart); - break; + }; + + var findK = function findK(ktr, length, j) { + var lo = 1; + var hi = length; + + while (lo < hi) { + var mid = (lo + hi) / 2 >>> 0; + if (j < ktr[mid]) hi = mid;else lo = mid + 1; } - } -}; - -var findK = function findK(ktr, length, j) { - var lo = 1; - var hi = length; - while (lo < hi) { - var mid = (lo + hi) / 2 >>> 0; - if (j < ktr[mid]) hi = mid;else lo = mid + 1; - } - return lo; -}; - -var smartDiff = function smartDiff(get, parentNode, futureNodes, futureStart, futureEnd, futureChanges, currentNodes, currentStart, currentEnd, currentChanges, currentLength, compare, before) { - applyDiff(OND(futureNodes, futureStart, futureChanges, currentNodes, currentStart, currentChanges, compare) || HS(futureNodes, futureStart, futureEnd, futureChanges, currentNodes, currentStart, currentEnd, currentChanges), get, parentNode, futureNodes, futureStart, currentNodes, currentStart, currentLength, before); -}; - -var drop = function drop(node) { - return (node.remove || dropChild).call(node); -}; - -function dropChild() { - var parentNode = this.parentNode; - /* istanbul ignore else */ - - if (parentNode) parentNode.removeChild(this); -} - -/*! (c) 2018 Andrea Giammarchi (ISC) */ - -var domdiff = function domdiff(parentNode, // where changes happen -currentNodes, // Array of current items/nodes -futureNodes, // Array of future items/nodes -options // optional object with one of the following properties -// before: domNode -// compare(generic, generic) => true if same generic -// node(generic) => Node -) { - if (!options) options = {}; - - var compare = options.compare || eqeq; - var get = options.node || identity; - var before = options.before == null ? null : get(options.before, 0); - - var currentLength = currentNodes.length; - var currentEnd = currentLength; - var currentStart = 0; - - var futureEnd = futureNodes.length; - var futureStart = 0; - - // common prefix - while (currentStart < currentEnd && futureStart < futureEnd && compare(currentNodes[currentStart], futureNodes[futureStart])) { - currentStart++; - futureStart++; - } - // common suffix - while (currentStart < currentEnd && futureStart < futureEnd && compare(currentNodes[currentEnd - 1], futureNodes[futureEnd - 1])) { - currentEnd--; - futureEnd--; - } + return lo; + }; - var currentSame = currentStart === currentEnd; - var futureSame = futureStart === futureEnd; + var smartDiff = function smartDiff(get, parentNode, futureNodes, futureStart, futureEnd, futureChanges, currentNodes, currentStart, currentEnd, currentChanges, currentLength, compare, before) { + applyDiff(OND(futureNodes, futureStart, futureChanges, currentNodes, currentStart, currentChanges, compare) || HS(futureNodes, futureStart, futureEnd, futureChanges, currentNodes, currentStart, currentEnd, currentChanges), get, parentNode, futureNodes, futureStart, currentNodes, currentStart, currentLength, before); + }; - // same list - if (currentSame && futureSame) return futureNodes; + var drop = function drop(node) { + return (node.remove || dropChild).call(node); + }; - // only stuff to add - if (currentSame && futureStart < futureEnd) { - append(get, parentNode, futureNodes, futureStart, futureEnd, next(get, currentNodes, currentStart, currentLength, before)); - return futureNodes; - } + function dropChild() { + var parentNode = this.parentNode; + /* istanbul ignore else */ - // only stuff to remove - if (futureSame && currentStart < currentEnd) { - remove(get, currentNodes, currentStart, currentEnd); - return futureNodes; + if (parentNode) parentNode.removeChild(this); } - var currentChanges = currentEnd - currentStart; - var futureChanges = futureEnd - futureStart; - var i = -1; - - // 2 simple indels: the shortest sequence is a subsequence of the longest - if (currentChanges < futureChanges) { - i = indexOf(futureNodes, futureStart, futureEnd, currentNodes, currentStart, currentEnd, compare); - // inner diff - if (-1 < i) { - append(get, parentNode, futureNodes, futureStart, i, get(currentNodes[currentStart], 0)); - append(get, parentNode, futureNodes, i + currentChanges, futureEnd, next(get, currentNodes, currentEnd, currentLength, before)); + /*! (c) 2018 Andrea Giammarchi (ISC) */ + + var domdiff = function domdiff(parentNode, // where changes happen + currentNodes, // Array of current items/nodes + futureNodes, // Array of future items/nodes + options // optional object with one of the following properties + // before: domNode + // compare(generic, generic) => true if same generic + // node(generic) => Node + ) { + if (!options) options = {}; + var compare = options.compare || eqeq; + var get = options.node || identity; + var before = options.before == null ? null : get(options.before, 0); + var currentLength = currentNodes.length; + var currentEnd = currentLength; + var currentStart = 0; + var futureEnd = futureNodes.length; + var futureStart = 0; // common prefix + + while (currentStart < currentEnd && futureStart < futureEnd && compare(currentNodes[currentStart], futureNodes[futureStart])) { + currentStart++; + futureStart++; + } // common suffix + + + while (currentStart < currentEnd && futureStart < futureEnd && compare(currentNodes[currentEnd - 1], futureNodes[futureEnd - 1])) { + currentEnd--; + futureEnd--; + } + + var currentSame = currentStart === currentEnd; + var futureSame = futureStart === futureEnd; // same list + + if (currentSame && futureSame) return futureNodes; // only stuff to add + + if (currentSame && futureStart < futureEnd) { + append(get, parentNode, futureNodes, futureStart, futureEnd, next(get, currentNodes, currentStart, currentLength, before)); + return futureNodes; + } // only stuff to remove + + + if (futureSame && currentStart < currentEnd) { + remove(get, currentNodes, currentStart, currentEnd); return futureNodes; } - } - /* istanbul ignore else */ - else if (futureChanges < currentChanges) { - i = indexOf(currentNodes, currentStart, currentEnd, futureNodes, futureStart, futureEnd, compare); - // outer diff + + var currentChanges = currentEnd - currentStart; + var futureChanges = futureEnd - futureStart; + var i = -1; // 2 simple indels: the shortest sequence is a subsequence of the longest + + if (currentChanges < futureChanges) { + i = indexOf(futureNodes, futureStart, futureEnd, currentNodes, currentStart, currentEnd, compare); // inner diff + if (-1 < i) { - remove(get, currentNodes, currentStart, i); - remove(get, currentNodes, i + futureChanges, currentEnd); + append(get, parentNode, futureNodes, futureStart, i, get(currentNodes[currentStart], 0)); + append(get, parentNode, futureNodes, i + currentChanges, futureEnd, next(get, currentNodes, currentEnd, currentLength, before)); return futureNodes; } } + /* istanbul ignore else */ + else if (futureChanges < currentChanges) { + i = indexOf(currentNodes, currentStart, currentEnd, futureNodes, futureStart, futureEnd, compare); // outer diff + + if (-1 < i) { + remove(get, currentNodes, currentStart, i); + remove(get, currentNodes, i + futureChanges, currentEnd); + return futureNodes; + } + } // common case with one replacement for many nodes + // or many nodes replaced for a single one - // common case with one replacement for many nodes - // or many nodes replaced for a single one - /* istanbul ignore else */ - if (currentChanges < 2 || futureChanges < 2) { - append(get, parentNode, futureNodes, futureStart, futureEnd, get(currentNodes[currentStart], 0)); - remove(get, currentNodes, currentStart, currentEnd); - return futureNodes; - } + /* istanbul ignore else */ - // the half match diff part has been skipped in petit-dom - // https://github.com/yelouafi/petit-dom/blob/bd6f5c919b5ae5297be01612c524c40be45f14a7/src/vdom.js#L391-L397 - // accordingly, I think it's safe to skip in here too - // if one day it'll come out like the speediest thing ever to do - // then I might add it in here too - // Extra: before going too fancy, what about reversed lists ? - // This should bail out pretty quickly if that's not the case. - if (currentChanges === futureChanges && isReversed(futureNodes, futureEnd, currentNodes, currentStart, currentEnd, compare)) { - append(get, parentNode, futureNodes, futureStart, futureEnd, next(get, currentNodes, currentEnd, currentLength, before)); - return futureNodes; - } + if (currentChanges < 2 || futureChanges < 2) { + append(get, parentNode, futureNodes, futureStart, futureEnd, get(currentNodes[currentStart], 0)); + remove(get, currentNodes, currentStart, currentEnd); + return futureNodes; + } // the half match diff part has been skipped in petit-dom + // https://github.com/yelouafi/petit-dom/blob/bd6f5c919b5ae5297be01612c524c40be45f14a7/src/vdom.js#L391-L397 + // accordingly, I think it's safe to skip in here too + // if one day it'll come out like the speediest thing ever to do + // then I might add it in here too + // Extra: before going too fancy, what about reversed lists ? + // This should bail out pretty quickly if that's not the case. - // last resort through a smart diff - smartDiff(get, parentNode, futureNodes, futureStart, futureEnd, futureChanges, currentNodes, currentStart, currentEnd, currentChanges, currentLength, compare, before); - return futureNodes; -}; + if (currentChanges === futureChanges && isReversed(futureNodes, futureEnd, currentNodes, currentStart, currentEnd, compare)) { + append(get, parentNode, futureNodes, futureStart, futureEnd, next(get, currentNodes, currentEnd, currentLength, before)); + return futureNodes; + } // last resort through a smart diff + smartDiff(get, parentNode, futureNodes, futureStart, futureEnd, futureChanges, currentNodes, currentStart, currentEnd, currentChanges, currentLength, compare, before); + return futureNodes; + }; + + -return domdiff; + return domdiff; }()); diff --git a/min.js b/min.js index 759d0d0..21bf7cd 100644 --- a/min.js +++ b/min.js @@ -1,2 +1,2 @@ -var domdiff=function(){"use strict";function r(){var r=this.parentNode;r&&r.removeChild(this)}/*! (c) Andrea Giammarchi - ISC */ -var n={};try{n.Map=Map}catch(Map){n.Map=function(){function r(r){return-1<(n=e.indexOf(r))}var n=0,e=[],t=[];return{"delete":function(o){var f=r(o);return f&&(e.splice(n,1),t.splice(n,1)),f},forEach:function(r,n){e.forEach(function(e,o){r.call(n,t[o],e,this)},this)},get:function(e){return r(e)?t[n]:void 0},has:function(n){return r(n)},set:function(o,f){return t[r(o)?n:e.push(o)-1]=f,this}}}}var e=n.Map,t=[].indexOf,o=function(r,n,e,o,f,i){for(var u=("selectedIndex"in n),a=u;o=u;){for(var a=n,c=o;au;)--c;v=a+o-c;var x=Array(v),y=l[c];for(--t;y;){for(var k=y,A=k.newi,M=k.oldi;t>A;)x[--v]=1,--t;for(;u>M;)x[--v]=-1,--u;x[--v]=0,--t,--u,y=y.prev}for(;t>=n;)x[--v]=1,--t;for(;u>=i;)x[--v]=-1,--u;return x},s=function(r,n,e,t,o,f,i){var u=e+f,a=[],c=void 0,v=void 0,l=void 0,s=void 0,d=void 0,h=void 0,p=void 0;r:for(c=0;c<=u;c++){if(c>50)return null;for(p=c-1,d=c?a[c-1]:[0,0],h=a[c]=[],v=-c;v<=c;v+=2){for(s=v===-c||v!==c&&d[p+v-1]=0;c--){for(;s>0&&l>0&&i(t[o+s-1],r[n+l-1]);)b[g--]=0,s--,l--;if(!c)break;p=c-1,d=c?a[c-1]:[0,0],v=s-l,v===-c||v!==c&&d[p+v-1]>>0;ei;)--u;c=a+f-u;var g=Array(c),p=l[u];for(--n;p;){for(var k=p,y=k.newi,A=k.oldi;y>>0;n Date: Wed, 27 Nov 2019 17:31:41 +0100 Subject: [PATCH 06/10] 2.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7b69da3..f9add31 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "domdiff", - "version": "2.1.1", + "version": "2.2.0", "description": "A fast and simple way to diff childNodes", "unpkg": "min.js", "main": "cjs/index.js", From 3dd8f19f548e732939cafdcd81edd9e14718a8a2 Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Sun, 8 Dec 2019 15:30:01 +0100 Subject: [PATCH 07/10] updated dependencies --- min.js | 2 +- package.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/min.js b/min.js index 21bf7cd..cd28ee8 100644 --- a/min.js +++ b/min.js @@ -1,2 +1,2 @@ -var domdiff=function(){"use strict";function g(r,e,n,f,t,o){for(var i=("selectedIndex"in e),a=i;fi;)--u;c=a+f-u;var g=Array(c),p=l[u];for(--n;p;){for(var k=p,y=k.newi,A=k.oldi;y>>0;ni;)--u;c=a+f-u;var g=Array(c),p=l[u];for(--n;p;){for(var k=p.newi,y=p.oldi;k>>0;n Date: Sun, 8 Dec 2019 15:31:39 +0100 Subject: [PATCH 08/10] 2.2.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 029b975..80a5775 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "domdiff", - "version": "2.2.0", + "version": "2.2.1", "description": "A fast and simple way to diff childNodes", "unpkg": "min.js", "main": "cjs/index.js", From b4e32b4a8634a93cbfdca414799f24b501f15fe4 Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Sun, 15 Mar 2020 14:30:51 +0100 Subject: [PATCH 09/10] updated dependencies --- cjs/utils.js | 3 ++- esm/utils.js | 3 ++- index.js | 12 +++++++----- package.json | 15 +++++++++------ 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/cjs/utils.js b/cjs/utils.js index eab05b4..efc98cc 100644 --- a/cjs/utils.js +++ b/cjs/utils.js @@ -1,5 +1,6 @@ 'use strict'; -const {indexOf: iOF} = []; +const {indexOf: iOF} = require('uarray'); + const append = (get, parent, children, start, end, before) => { const isSelect = 'selectedIndex' in parent; let noSelection = isSelect; diff --git a/esm/utils.js b/esm/utils.js index fed9977..b797065 100644 --- a/esm/utils.js +++ b/esm/utils.js @@ -1,4 +1,5 @@ -const {indexOf: iOF} = []; +import {indexOf as iOF} from 'uarray'; + export const append = (get, parent, children, start, end, before) => { const isSelect = 'selectedIndex' in parent; let noSelection = isSelect; diff --git a/index.js b/index.js index 997c87e..b0b5331 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,9 @@ var domdiff = (function () { 'use strict'; - var iOF = [].indexOf; + var _ref = [], + indexOf = _ref.indexOf; + var append = function append(get, parent, children, start, end, before) { var isSelect = 'selectedIndex' in parent; var noSelection = isSelect; @@ -13,7 +15,7 @@ var domdiff = (function () { if (isSelect && noSelection && child.selected) { noSelection = !noSelection; var selectedIndex = parent.selectedIndex; - parent.selectedIndex = selectedIndex < 0 ? start : iOF.call(parent.querySelectorAll('option'), child); + parent.selectedIndex = selectedIndex < 0 ? start : indexOf.call(parent.querySelectorAll('option'), child); } start++; @@ -25,7 +27,7 @@ var domdiff = (function () { var identity = function identity(O) { return O; }; - var indexOf = function indexOf(moreNodes, moreStart, moreEnd, lessNodes, lessStart, lessEnd, compare) { + var indexOf$1 = function indexOf(moreNodes, moreStart, moreEnd, lessNodes, lessStart, lessEnd, compare) { var length = lessEnd - lessStart; /* istanbul ignore if */ @@ -339,7 +341,7 @@ var domdiff = (function () { var i = -1; // 2 simple indels: the shortest sequence is a subsequence of the longest if (currentChanges < futureChanges) { - i = indexOf(futureNodes, futureStart, futureEnd, currentNodes, currentStart, currentEnd, compare); // inner diff + i = indexOf$1(futureNodes, futureStart, futureEnd, currentNodes, currentStart, currentEnd, compare); // inner diff if (-1 < i) { append(get, parentNode, futureNodes, futureStart, i, get(currentNodes[currentStart], 0)); @@ -349,7 +351,7 @@ var domdiff = (function () { } /* istanbul ignore else */ else if (futureChanges < currentChanges) { - i = indexOf(currentNodes, currentStart, currentEnd, futureNodes, futureStart, futureEnd, compare); // outer diff + i = indexOf$1(currentNodes, currentStart, currentEnd, futureNodes, futureStart, futureEnd, compare); // outer diff if (-1 < i) { remove(get, currentNodes, currentStart, i); diff --git a/package.json b/package.json index 80a5775..7147d61 100644 --- a/package.json +++ b/package.json @@ -23,16 +23,16 @@ "author": "Andrea Giammarchi", "license": "ISC", "devDependencies": { - "@babel/core": "^7.7.5", - "@babel/preset-env": "^7.7.6", + "@babel/core": "^7.8.7", + "@babel/preset-env": "^7.8.7", "ascjs": "^3.1.2", "coveralls": "^3.0.9", "istanbul": "^0.4.5", - "rollup": "^1.27.9", - "rollup-plugin-babel": "^4.3.3", + "rollup": "^2.0.6", + "rollup-plugin-babel": "^4.4.0", "rollup-plugin-node-resolve": "^5.2.0", "tressa": "^0.3.1", - "uglify-js": "^3.7.1" + "uglify-js": "^3.8.0" }, "directories": { "test": "test" @@ -44,5 +44,8 @@ "bugs": { "url": "https://github.com/WebReflection/domdiff/issues" }, - "homepage": "https://github.com/WebReflection/domdiff#readme" + "homepage": "https://github.com/WebReflection/domdiff#readme", + "dependencies": { + "uarray": "^1.0.0" + } } From 5fdf028ca94db8cc3fd4e3c3df6c7855fc7dfb7c Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Sun, 15 Mar 2020 14:30:57 +0100 Subject: [PATCH 10/10] 2.2.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7147d61..1b7a4e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "domdiff", - "version": "2.2.1", + "version": "2.2.2", "description": "A fast and simple way to diff childNodes", "unpkg": "min.js", "main": "cjs/index.js",