From 686377f9bef376ad7e2fa1f76387f7d3d204f1fb Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 25 Jun 2014 17:40:50 +0200 Subject: [PATCH] Add plugin for Backbone.js. --- plugins/backbone.js | 46 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 plugins/backbone.js diff --git a/plugins/backbone.js b/plugins/backbone.js new file mode 100644 index 000000000000..3de64326f7dd --- /dev/null +++ b/plugins/backbone.js @@ -0,0 +1,46 @@ +/** + * Backbone.js plugin + * + * Patches Backbone.Events callbacks. + */ +;(function(window, Raven, Backbone) { +'use strict'; + +// quit if Backbone isn't on the page +if (!Backbone) { + return; +} + +// We're too late to catch all of these by simply patching Backbone.Events.on +var affectedObjects = [ + Backbone.Events, + Backbone, + Backbone.Model.prototype, + Backbone.Collection.prototype, + Backbone.View.prototype, + Backbone.Router.prototype, + Backbone.History.prototype +]; + +for (var i = 0; i < affectedObjects.length; i++) { + var affected = affectedObjects[i]; + + var _oldOn = affected.on; + affected.on = function BackboneEventsOn(name, callback, context) { + var _callback; + if (callback._callback) { + _callback = callback._callback; + } else { + _callback = callback; + } + + callback = Raven.wrap(callback); + callback._callback = _callback; + + return _oldOn.call(this, name, callback, context); + }; + + affected.bind = affected.on; +} + +}(this, Raven, window.Backbone)); \ No newline at end of file