From 5f2909a1dac8f15f8bec2733ca89ab457d9f735f Mon Sep 17 00:00:00 2001 From: MaxArt2501 Date: Thu, 15 Oct 2015 22:38:00 +0200 Subject: [PATCH] v0.2.5; fixes #16 --- bower.json | 7 +++---- dist/object-observe-lite.js | 6 +++--- dist/object-observe-lite.min.js | 2 +- dist/object-observe-lite.min.map | 2 +- dist/object-observe.js | 6 +++--- dist/object-observe.min.js | 2 +- dist/object-observe.min.map | 2 +- test/tests.js | 35 ++++++++++++++++++++++++++++++++ 8 files changed, 48 insertions(+), 14 deletions(-) diff --git a/bower.json b/bower.json index e6a62c2..6d73ad1 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "object.observe", - "version": "0.2.4", + "version": "0.2.5", "homepage": "https://github.com/MaxArt2501/object-observe", "authors": [ "Massimo Artizzu " @@ -20,8 +20,7 @@ "**/.*", "node_modules", "bower_components", - "test", - "tests", - "util" + "benchmark", + "test" ] } diff --git a/dist/object-observe-lite.js b/dist/object-observe-lite.js index 4375ce5..1cae1b6 100644 --- a/dist/object-observe-lite.js +++ b/dist/object-observe-lite.js @@ -224,12 +224,12 @@ Object.observe || (function(O, A, root, _undefined) { * @param {String[]} [acceptList] */ doObserve = function(object, handler, acceptList) { - var data = observed.get(object); - if (data) + if (data) { + performPropertyChecks(data, object); setHandler(object, data, handler, acceptList); - else { + } else { data = createObjectData(object); setHandler(object, data, handler, acceptList); diff --git a/dist/object-observe-lite.min.js b/dist/object-observe-lite.min.js index 5ad7153..2608802 100644 --- a/dist/object-observe-lite.min.js +++ b/dist/object-observe-lite.min.js @@ -1,2 +1,2 @@ -Object.observe||function(e,t,n,r){"use strict";var o,i,c=["add","update","delete","reconfigure","setPrototype","preventExtensions"],a=t.isArray||function(e){return function(t){return"[object Array]"===e.call(t)}}(e.prototype.toString),f=t.prototype.indexOf?t.indexOf||function(e,n,r){return t.prototype.indexOf.call(e,n,r)}:function(e,t,n){for(var r=n||0;r-1},get:function(n){return t[f(e,n)]},set:function(n,r){var o=f(e,n);-1===o?(e.push(n),t.push(r),this.size++):t[o]=r},"delete":function(n){var r=f(e,n);r>-1&&(e.splice(r,1),t.splice(r,1),this.size--)},forEach:function(n){for(var r=0;r-1&&n.splice(o,1);return n})}return t}():function(t){var n,r,o=[];if("hasOwnProperty"in t)for(n in t)t.hasOwnProperty(n)&&o.push(n);else{r=e.hasOwnProperty;for(n in t)r.call(t,n)&&o.push(n)}return a(t)&&o.push("length"),o},p=n.requestAnimationFrame||n.webkitRequestAnimationFrame||function(){var e=+new Date,t=e;return function(n){return setTimeout(function(){n((t=+new Date)-e)},17)}}(),l=function(e,t,n){var r=o.get(e);r?g(e,r,t,n):(r=h(e),g(e,r,t,n),1===o.size&&p(d))},h=function(e,t){for(var n=u(e),r=[],i=0,t={handlers:s(),properties:n,values:r,notifier:b(e,t)};i-1&&t.changeRecords.push(n)})};o=s(),i=s(),e.observe=function(t,n,o){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.observe cannot observe non-object");if("function"!=typeof n)throw new TypeError("Object.observe cannot deliver to non-function");if(e.isFrozen&&e.isFrozen(n))throw new TypeError("Object.observe cannot deliver to a frozen function object");if(o===r)o=c;else if(!o||"object"!=typeof o)throw new TypeError("Third argument to Object.observe must be an array of strings.");return l(t,n,o),t},e.unobserve=function(e,t){if(null===e||"object"!=typeof e&&"function"!=typeof e)throw new TypeError("Object.unobserve cannot unobserve non-object");if("function"!=typeof t)throw new TypeError("Object.unobserve cannot deliver to non-function");var n,r=i.get(t);return r&&(n=r.observed.get(e))&&(r.observed.forEach(function(e,t){v(e.data,t)}),p(function(){y(r,t)}),1===r.observed.size&&r.observed.has(e)?i["delete"](t):r.observed["delete"](e),1===n.data.handlers.size?o["delete"](e):n.data.handlers["delete"](t)),e},e.getNotifier=function(t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.getNotifier cannot getNotifier non-object");return e.isFrozen&&e.isFrozen(t)?null:b(t)},e.deliverChangeRecords=function(e){if("function"!=typeof e)throw new TypeError("Object.deliverChangeRecords cannot deliver to non-function");var t=i.get(e);t&&(t.observed.forEach(function(e,t){v(e.data,t)}),y(t,e))}}(Object,Array,this); +Object.observe||function(e,t,n,r){"use strict";var o,i,c=["add","update","delete","reconfigure","setPrototype","preventExtensions"],a=t.isArray||function(e){return function(t){return"[object Array]"===e.call(t)}}(e.prototype.toString),f=t.prototype.indexOf?t.indexOf||function(e,n,r){return t.prototype.indexOf.call(e,n,r)}:function(e,t,n){for(var r=n||0;r-1},get:function(n){return t[f(e,n)]},set:function(n,r){var o=f(e,n);-1===o?(e.push(n),t.push(r),this.size++):t[o]=r},"delete":function(n){var r=f(e,n);r>-1&&(e.splice(r,1),t.splice(r,1),this.size--)},forEach:function(n){for(var r=0;r-1&&n.splice(o,1);return n})}return t}():function(t){var n,r,o=[];if("hasOwnProperty"in t)for(n in t)t.hasOwnProperty(n)&&o.push(n);else{r=e.hasOwnProperty;for(n in t)r.call(t,n)&&o.push(n)}return a(t)&&o.push("length"),o},p=n.requestAnimationFrame||n.webkitRequestAnimationFrame||function(){var e=+new Date,t=e;return function(n){return setTimeout(function(){n((t=+new Date)-e)},17)}}(),l=function(e,t,n){var r=o.get(e);r?(v(r,e),g(e,r,t,n)):(r=h(e),g(e,r,t,n),1===o.size&&p(d))},h=function(e,t){for(var n=u(e),r=[],i=0,t={handlers:s(),properties:n,values:r,notifier:b(e,t)};i-1&&t.changeRecords.push(n)})};o=s(),i=s(),e.observe=function(t,n,o){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.observe cannot observe non-object");if("function"!=typeof n)throw new TypeError("Object.observe cannot deliver to non-function");if(e.isFrozen&&e.isFrozen(n))throw new TypeError("Object.observe cannot deliver to a frozen function object");if(o===r)o=c;else if(!o||"object"!=typeof o)throw new TypeError("Third argument to Object.observe must be an array of strings.");return l(t,n,o),t},e.unobserve=function(e,t){if(null===e||"object"!=typeof e&&"function"!=typeof e)throw new TypeError("Object.unobserve cannot unobserve non-object");if("function"!=typeof t)throw new TypeError("Object.unobserve cannot deliver to non-function");var n,r=i.get(t);return r&&(n=r.observed.get(e))&&(r.observed.forEach(function(e,t){v(e.data,t)}),p(function(){y(r,t)}),1===r.observed.size&&r.observed.has(e)?i["delete"](t):r.observed["delete"](e),1===n.data.handlers.size?o["delete"](e):n.data.handlers["delete"](t)),e},e.getNotifier=function(t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.getNotifier cannot getNotifier non-object");return e.isFrozen&&e.isFrozen(t)?null:b(t)},e.deliverChangeRecords=function(e){if("function"!=typeof e)throw new TypeError("Object.deliverChangeRecords cannot deliver to non-function");var t=i.get(e);t&&(t.observed.forEach(function(e,t){v(e.data,t)}),y(t,e))}}(Object,Array,this); //# sourceMappingURL=object-observe-lite.min.map \ No newline at end of file diff --git a/dist/object-observe-lite.min.map b/dist/object-observe-lite.min.map index d16ec70..98c4bec 100644 --- a/dist/object-observe-lite.min.map +++ b/dist/object-observe-lite.min.map @@ -1 +1 @@ -{"version":3,"file":"object-observe-lite.min.js","sources":["object-observe-lite.js"],"names":["Object","observe","O","A","root","_undefined","observed","handlers","defaultAcceptList","isArray","toString","object","call","prototype","inArray","indexOf","array","pivot","start","i","length","createMap","Map","forEach","keys","values","size","has","key","get","set","value","push","this","delete","splice","callback","arguments","getProps","getOwnPropertyNames","func","callee","e","avoid","join","replace","slice","split","props","j","prop","hop","hasOwnProperty","nextFrame","requestAnimationFrame","webkitRequestAnimationFrame","initial","Date","last","setTimeout","doObserve","handler","acceptList","data","setHandler","createObjectData","runGlobalLoop","properties","notifier","retrieveNotifier","performPropertyChecks","except","proplen","idx","ovalue","addChangeRecord","name","type","oldValue","deliverHandlerRecords","hdata","changeRecords","notify","changeRecord","recordCopy","performChange","changeType","TypeError","thisObj","result","isFrozen","unobserve","odata","getNotifier","deliverChangeRecords","Array"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"object-observe-lite.min.js","sources":["object-observe-lite.js"],"names":["Object","observe","O","A","root","_undefined","observed","handlers","defaultAcceptList","isArray","toString","object","call","prototype","inArray","indexOf","array","pivot","start","i","length","createMap","Map","forEach","keys","values","size","has","key","get","set","value","push","this","delete","splice","callback","arguments","getProps","getOwnPropertyNames","func","callee","e","avoid","join","replace","slice","split","props","j","prop","hop","hasOwnProperty","nextFrame","requestAnimationFrame","webkitRequestAnimationFrame","initial","Date","last","setTimeout","doObserve","handler","acceptList","data","performPropertyChecks","setHandler","createObjectData","runGlobalLoop","properties","notifier","retrieveNotifier","except","proplen","idx","ovalue","addChangeRecord","name","type","oldValue","deliverHandlerRecords","hdata","changeRecords","notify","changeRecord","recordCopy","performChange","changeType","TypeError","thisObj","result","isFrozen","unobserve","odata","getNotifier","deliverChangeRecords","Array"],"mappings":"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"} \ No newline at end of file diff --git a/dist/object-observe.js b/dist/object-observe.js index 4228888..568190f 100644 --- a/dist/object-observe.js +++ b/dist/object-observe.js @@ -247,12 +247,12 @@ Object.observe || (function(O, A, root, _undefined) { * @param {String[]} [acceptList] */ doObserve = function(object, handler, acceptList) { - var data = observed.get(object); - if (data) + if (data) { + performPropertyChecks(data, object); setHandler(object, data, handler, acceptList); - else { + } else { data = createObjectData(object); setHandler(object, data, handler, acceptList); diff --git a/dist/object-observe.min.js b/dist/object-observe.min.js index 3e6f7a4..0199056 100644 --- a/dist/object-observe.min.js +++ b/dist/object-observe.min.js @@ -1,2 +1,2 @@ -Object.observe||function(e,t,n,r){"use strict";var o,i,s=["add","update","delete","reconfigure","setPrototype","preventExtensions"],c=t.isArray||function(e){return function(t){return"[object Array]"===e.call(t)}}(e.prototype.toString),a=t.prototype.indexOf?t.indexOf||function(e,n,r){return t.prototype.indexOf.call(e,n,r)}:function(e,t,n){for(var r=n||0;r-1},get:function(n){return t[a(e,n)]},set:function(n,r){var o=a(e,n);-1===o?(e.push(n),t.push(r),this.size++):t[o]=r},"delete":function(n){var r=a(e,n);r>-1&&(e.splice(r,1),t.splice(r,1),this.size--)},forEach:function(n){for(var r=0;r-1&&n.splice(o,1);return n})}return t}():function(t){var n,r,o=[];if("hasOwnProperty"in t)for(n in t)t.hasOwnProperty(n)&&o.push(n);else{r=e.hasOwnProperty;for(n in t)r.call(t,n)&&o.push(n)}return c(t)&&o.push("length"),o},p=e.getPrototypeOf,l=e.defineProperties&&e.getOwnPropertyDescriptor,h=n.requestAnimationFrame||n.webkitRequestAnimationFrame||function(){var e=+new Date,t=e;return function(n){return setTimeout(function(){n((t=+new Date)-e)},17)}}(),b=function(e,t,n){var r=o.get(e);r?w(e,r,t,n):(r=d(e),w(e,r,t,n),1===o.size&&h(g))},d=function(t,n){var r,i=u(t),s=[],c=0,n={handlers:f(),frozen:e.isFrozen?e.isFrozen(t):!1,extensible:e.isExtensible?e.isExtensible(t):!0,proto:p&&p(t),properties:i,values:s,notifier:j(t,n)};if(l)for(r=n.descriptors=[];c-1&&t.changeRecords.push(n)})};o=f(),i=f(),e.observe=function(t,n,o){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.observe cannot observe non-object");if("function"!=typeof n)throw new TypeError("Object.observe cannot deliver to non-function");if(e.isFrozen&&e.isFrozen(n))throw new TypeError("Object.observe cannot deliver to a frozen function object");if(o===r)o=s;else if(!o||"object"!=typeof o)throw new TypeError("Third argument to Object.observe must be an array of strings.");return b(t,n,o),t},e.unobserve=function(e,t){if(null===e||"object"!=typeof e&&"function"!=typeof e)throw new TypeError("Object.unobserve cannot unobserve non-object");if("function"!=typeof t)throw new TypeError("Object.unobserve cannot deliver to non-function");var n,r=i.get(t);return r&&(n=r.observed.get(e))&&(r.observed.forEach(function(e,t){v(e.data,t)}),h(function(){y(r,t)}),1===r.observed.size&&r.observed.has(e)?i["delete"](t):r.observed["delete"](e),1===n.data.handlers.size?o["delete"](e):n.data.handlers["delete"](t)),e},e.getNotifier=function(t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.getNotifier cannot getNotifier non-object");return e.isFrozen&&e.isFrozen(t)?null:j(t)},e.deliverChangeRecords=function(e){if("function"!=typeof e)throw new TypeError("Object.deliverChangeRecords cannot deliver to non-function");var t=i.get(e);t&&(t.observed.forEach(function(e,t){v(e.data,t)}),y(t,e))}}(Object,Array,this); +Object.observe||function(e,t,n,r){"use strict";var o,i,s=["add","update","delete","reconfigure","setPrototype","preventExtensions"],c=t.isArray||function(e){return function(t){return"[object Array]"===e.call(t)}}(e.prototype.toString),a=t.prototype.indexOf?t.indexOf||function(e,n,r){return t.prototype.indexOf.call(e,n,r)}:function(e,t,n){for(var r=n||0;r-1},get:function(n){return t[a(e,n)]},set:function(n,r){var o=a(e,n);-1===o?(e.push(n),t.push(r),this.size++):t[o]=r},"delete":function(n){var r=a(e,n);r>-1&&(e.splice(r,1),t.splice(r,1),this.size--)},forEach:function(n){for(var r=0;r-1&&n.splice(o,1);return n})}return t}():function(t){var n,r,o=[];if("hasOwnProperty"in t)for(n in t)t.hasOwnProperty(n)&&o.push(n);else{r=e.hasOwnProperty;for(n in t)r.call(t,n)&&o.push(n)}return c(t)&&o.push("length"),o},p=e.getPrototypeOf,l=e.defineProperties&&e.getOwnPropertyDescriptor,h=n.requestAnimationFrame||n.webkitRequestAnimationFrame||function(){var e=+new Date,t=e;return function(n){return setTimeout(function(){n((t=+new Date)-e)},17)}}(),b=function(e,t,n){var r=o.get(e);r?(v(r,e),w(e,r,t,n)):(r=d(e),w(e,r,t,n),1===o.size&&h(g))},d=function(t,n){var r,i=u(t),s=[],c=0,n={handlers:f(),frozen:e.isFrozen?e.isFrozen(t):!1,extensible:e.isExtensible?e.isExtensible(t):!0,proto:p&&p(t),properties:i,values:s,notifier:j(t,n)};if(l)for(r=n.descriptors=[];c-1&&t.changeRecords.push(n)})};o=f(),i=f(),e.observe=function(t,n,o){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.observe cannot observe non-object");if("function"!=typeof n)throw new TypeError("Object.observe cannot deliver to non-function");if(e.isFrozen&&e.isFrozen(n))throw new TypeError("Object.observe cannot deliver to a frozen function object");if(o===r)o=s;else if(!o||"object"!=typeof o)throw new TypeError("Third argument to Object.observe must be an array of strings.");return b(t,n,o),t},e.unobserve=function(e,t){if(null===e||"object"!=typeof e&&"function"!=typeof e)throw new TypeError("Object.unobserve cannot unobserve non-object");if("function"!=typeof t)throw new TypeError("Object.unobserve cannot deliver to non-function");var n,r=i.get(t);return r&&(n=r.observed.get(e))&&(r.observed.forEach(function(e,t){v(e.data,t)}),h(function(){y(r,t)}),1===r.observed.size&&r.observed.has(e)?i["delete"](t):r.observed["delete"](e),1===n.data.handlers.size?o["delete"](e):n.data.handlers["delete"](t)),e},e.getNotifier=function(t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.getNotifier cannot getNotifier non-object");return e.isFrozen&&e.isFrozen(t)?null:j(t)},e.deliverChangeRecords=function(e){if("function"!=typeof e)throw new TypeError("Object.deliverChangeRecords cannot deliver to non-function");var t=i.get(e);t&&(t.observed.forEach(function(e,t){v(e.data,t)}),y(t,e))}}(Object,Array,this); //# sourceMappingURL=object-observe.min.map \ No newline at end of file diff --git a/dist/object-observe.min.map b/dist/object-observe.min.map index fe25e17..fd38a09 100644 --- a/dist/object-observe.min.map +++ b/dist/object-observe.min.map @@ -1 +1 @@ -{"version":3,"file":"object-observe.min.js","sources":["object-observe.js"],"names":["Object","observe","O","A","root","_undefined","observed","handlers","defaultAcceptList","isArray","toString","object","call","prototype","inArray","indexOf","array","pivot","start","i","length","createMap","Map","forEach","keys","values","size","has","key","get","set","value","push","this","delete","splice","callback","arguments","getProps","getOwnPropertyNames","func","callee","e","avoid","join","replace","slice","split","props","j","prop","hop","hasOwnProperty","getPrototype","getPrototypeOf","getDescriptor","defineProperties","getOwnPropertyDescriptor","nextFrame","requestAnimationFrame","webkitRequestAnimationFrame","initial","Date","last","setTimeout","doObserve","handler","acceptList","data","setHandler","createObjectData","runGlobalLoop","descs","frozen","isFrozen","extensible","isExtensible","proto","properties","notifier","retrieveNotifier","descriptors","performPropertyChecks","updateCheck","idx","except","descr","ovalue","odesc","addChangeRecord","name","type","oldValue","configurable","writable","enumerable","deletionCheck","proplen","deliverHandlerRecords","hdata","changeRecords","notify","changeRecord","recordCopy","performChange","changeType","TypeError","thisObj","result","unobserve","odata","getNotifier","deliverChangeRecords","Array"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"object-observe.min.js","sources":["object-observe.js"],"names":["Object","observe","O","A","root","_undefined","observed","handlers","defaultAcceptList","isArray","toString","object","call","prototype","inArray","indexOf","array","pivot","start","i","length","createMap","Map","forEach","keys","values","size","has","key","get","set","value","push","this","delete","splice","callback","arguments","getProps","getOwnPropertyNames","func","callee","e","avoid","join","replace","slice","split","props","j","prop","hop","hasOwnProperty","getPrototype","getPrototypeOf","getDescriptor","defineProperties","getOwnPropertyDescriptor","nextFrame","requestAnimationFrame","webkitRequestAnimationFrame","initial","Date","last","setTimeout","doObserve","handler","acceptList","data","performPropertyChecks","setHandler","createObjectData","runGlobalLoop","descs","frozen","isFrozen","extensible","isExtensible","proto","properties","notifier","retrieveNotifier","descriptors","updateCheck","idx","except","descr","ovalue","odesc","addChangeRecord","name","type","oldValue","configurable","writable","enumerable","deletionCheck","proplen","deliverHandlerRecords","hdata","changeRecords","notify","changeRecord","recordCopy","performChange","changeType","TypeError","thisObj","result","unobserve","odata","getNotifier","deliverChangeRecords","Array"],"mappings":"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"} \ No newline at end of file diff --git a/test/tests.js b/test/tests.js index 695d0f4..d83e555 100644 --- a/test/tests.js +++ b/test/tests.js @@ -399,6 +399,41 @@ describe("Object.observe", function() { } catch (e) { done(e); } }, timeout); }); + + it("should deliver changes only after the handler has been registered", function(done) { + function handler1(changes) { + try { + expect(changes).to.have.length(1); + expect(async).to.be(true); + tested = true; + } catch (e) { done(e); } + } + function handler2() { + done(new Error("expected no changes")); + } + + var obj = {}, + async = false, + tested = false; + + obj.foo = 42; + Object.observe(obj, handler1); + + obj.bar = "Hello!"; + Object.observe(obj, handler2); + + async = true; + + Object.unobserve(obj, handler1); + Object.unobserve(obj, handler2); + + setTimeout(function() { + try { + expect(tested).to.be(true); + done(); + } catch (e) { done(e); } + }, timeout); + }); }); describe("Object.unobserve", function() {