New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

backbone-promises

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

backbone-promises - npm Package Compare versions

Comparing version 0.0.1 to 0.1.0

examples/collections.js

25

examples/model.js

@@ -1,5 +0,6 @@

var Model = require('../').Model;
var Collection = require('../').Model;
var Db = require('backbone-db');
var Promises = require('../');
var MyModel = Model.extend({
var MyModel = Promises.Model.extend({
db:Db("mymodel"),

@@ -15,13 +16,17 @@ sync:Db.sync,

});
module.exports = MyModel;
var a = new MyModel({id:1,abc:1});
a.save().then(function() {
var b = new MyModel({id:1});
b.fetch().then(function() {
console.log (a.get('abc') == b.get('abc'))
if(!module.parent) {
var a = new MyModel({id:1,abc:1});
a.save().then(function() {
var b = new MyModel({id:1});
b.fetch().then(function() {
console.log (a.get('abc') == b.get('abc'))
}, function(err) {
console.error(err);
});
}, function(err) {
console.error(err);
});
}, function(err) {
console.error(err);
});
}

86

index.js
var _ = require('underscore');
var Backbone = require('backbone');
var debug = require('debug')('backbone-promises');
var when = require('when');
var whenLib = require('when');
function bbPromise(opt, deferred) {
opt = opt || {};
var success = opt.success;
var error = opt.error;
opt.success = function() {
if(success) success.apply(this, arguments);
if(typeof opt === "function") {
var args = [].slice.call(arguments);
args.unshift(null);
opt.apply(this, args);
}
deferred.resolve.apply(this, arguments);
};
opt.error = function() {
if(success) error.apply(this, arguments);
if(typeof opt === "function") opt.apply(this, arguments);
deferred.reject.apply(this, arguments);
};
return opt;
}

@@ -32,16 +12,17 @@ var Model = exports.Model = Backbone.Model.extend({

save: function(key, val, options) {
var deferred = when.defer();
if(!options && (typeof val === "object" || typeof val === "undefined" || typeof val === "function")) {
val = bbPromise(val, deferred);
var opt;
if(!options && (typeof val === "object" || typeof val === "undefined")) {
debug('wrapping val');
opt = val = Promises.wrap(val);
} else {
options = bbPromise(options, deferred);
opt = options = Promises.wrap(options);
}
Backbone.Model.prototype.save.call(this, key, val, options);
return deferred.promise;
debug('saved');
return opt.promise;
},
fetch: function(options) {
var deferred = when.defer();
options = bbPromise(options, deferred);
options = Promises.wrap(options);
Backbone.Model.prototype.fetch.call(this, options);
return deferred.promise;
return options.promise;
}

@@ -51,17 +32,44 @@ });

var Collection = exports.Collection = Backbone.Collection.extend({
constructor: function() {
constructor:function () {
Backbone.Collection.apply(this, arguments);
},
create: function(model, options) {
var deferred = when.defer();
options = bbPromise(options, deferred);
create :function (model, options) {
debug('Collection.create');
options = Promises.wrap(options);
Backbone.Collection.prototype.create.call(this, model, options);
return deferred.promise;
return options.promise;
},
fetch: function(options) {
var deferred = when.defer();
options = bbPromise(options, deferred);
fetch:function (options) {
debug('Collection.fetch');
options = Promises.wrap(options);
Backbone.Collection.prototype.fetch.call(this, options);
return deferred.promise;
return options.promise;
}
});
});
var Promises = _.extend(Backbone.Events, {
when: whenLib,
defer: whenLib.defer,
wrap: function(opt) {
opt = opt || {};
var deferred = whenLib.defer();
var success = opt.success;
var error = opt.error;
opt.success = function() {
if(success) success.apply(success, arguments);
debug("resolving");
deferred.resolve.apply(deferred, arguments);
};
opt.error = function() {
if(error) error.apply(error, arguments);
debug("rejecting");
deferred.reject.apply(deferred, arguments);
};
opt.promise = deferred.promise;
return opt;
},
Model: Model,
Collection: Collection
});
Backbone.Promises = module.exports = Promises;
{
"name": "backbone-promises",
"version": "0.0.1",
"version": "0.1.0",
"description": "Adds Promises/A+ support to backbone model and collection",

@@ -20,3 +20,4 @@ "main": "index.js",

"mocha": "~1.13.0",
"backbone-db": "~0.0.1"
"backbone-db": "~0.0.1",
"chai": "~1.8.0"
},

@@ -23,0 +24,0 @@ "dependencies": {

@@ -32,3 +32,5 @@ var assert = require('assert');

var m = new MyModel({id:1});
debug('saving null options');
m.save(null, {success: function() {
debug('done');
var ma = new MyModel({id:1});

@@ -49,5 +51,4 @@ ma.fetch({

},error: assert});
});
it('Should allow classic style with deferred', function(t) {
it('Should allow classic style with Promises/A+', function(t) {
var m = new MyModel({id:1});

@@ -65,16 +66,2 @@ m.save().then(function() {

});
it('Should allow node.js style callbacks', function(t) {
var m = new MyModel({id:1});
m.save({kissa:"koira"}, function(err, res) {
assert(err == null);
assert(res != null);
var m2 = new MyModel(m.toJSON());
m2.fetch(function(err, res) {
assert(err == null);
assert(res != null);
assert(m2.get("kissa") == "koira")
t();
});
});
});
});
var assert = require('assert');
var Backbone = require('backbone');
var Model = require('../').Model;
var Collection = require('../').Collection;
var Backbone = require('backbone');
var Db = require('backbone-db');
var debug = require('debug')('deferred');
var debug = require('debug')('promises');
var when = require('../').when;
var db = Db("mycol");
var expect = require('chai').expect

@@ -36,8 +37,11 @@ var MyModel = Model.extend({

var a = new MyCollection();
a.create({id:1,data:"xyz"}).then(function(m) {
assert(m.get("data") == "xyz");
var m1 = a.create({id:1,data:"xyz"});
var m2 = a.create({id:2,data:"zyx"});
var m3 = a.create({id:3,data:""});
Backbone.Promises.when.join(m1,m2,m3).then(function(values) {
assert(values[0].get('data') == "xyz");
assert(values[1].get('data') == "zyx");
assert(values[2].get('data') == "");
t();
}, function() {
assert(false);
});
},assert).otherwise(assert);
});

@@ -51,3 +55,2 @@

});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc