Socket
Socket
Sign inDemoInstall

mongoose

Package Overview
Dependencies
Maintainers
0
Versions
883
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mongoose - npm Package Compare versions

Comparing version 1.0.7 to 1.0.8

woot.log

9

History.md
1.0.8 / 2011-02-09
==================
* Fixed for collection-level buffering of commands [gitfy]
* Fixed `Document#toJSON` [dalejefferson]
* Fixed `Connection` authentication [robrighter]
* Fixed clash of accessors in getters/setters [eirikurn]
* Improved `Model#save` promise handling
1.0.7 / 2011-02-05

@@ -3,0 +12,0 @@ ==================

134

lib-cov/mongoose/collection.js

@@ -12,36 +12,34 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/collection.js'][16] = 0;
_$jscoverage['mongoose/collection.js'][17] = 0;
_$jscoverage['mongoose/collection.js'][18] = 0;
_$jscoverage['mongoose/collection.js'][26] = 0;
_$jscoverage['mongoose/collection.js'][34] = 0;
_$jscoverage['mongoose/collection.js'][24] = 0;
_$jscoverage['mongoose/collection.js'][32] = 0;
_$jscoverage['mongoose/collection.js'][40] = 0;
_$jscoverage['mongoose/collection.js'][41] = 0;
_$jscoverage['mongoose/collection.js'][42] = 0;
_$jscoverage['mongoose/collection.js'][43] = 0;
_$jscoverage['mongoose/collection.js'][44] = 0;
_$jscoverage['mongoose/collection.js'][45] = 0;
_$jscoverage['mongoose/collection.js'][54] = 0;
_$jscoverage['mongoose/collection.js'][55] = 0;
_$jscoverage['mongoose/collection.js'][52] = 0;
_$jscoverage['mongoose/collection.js'][53] = 0;
_$jscoverage['mongoose/collection.js'][64] = 0;
_$jscoverage['mongoose/collection.js'][65] = 0;
_$jscoverage['mongoose/collection.js'][66] = 0;
_$jscoverage['mongoose/collection.js'][67] = 0;
_$jscoverage['mongoose/collection.js'][68] = 0;
_$jscoverage['mongoose/collection.js'][75] = 0;
_$jscoverage['mongoose/collection.js'][76] = 0;
_$jscoverage['mongoose/collection.js'][77] = 0;
_$jscoverage['mongoose/collection.js'][78] = 0;
_$jscoverage['mongoose/collection.js'][79] = 0;
_$jscoverage['mongoose/collection.js'][81] = 0;
_$jscoverage['mongoose/collection.js'][90] = 0;
_$jscoverage['mongoose/collection.js'][91] = 0;
_$jscoverage['mongoose/collection.js'][100] = 0;
_$jscoverage['mongoose/collection.js'][101] = 0;
_$jscoverage['mongoose/collection.js'][110] = 0;
_$jscoverage['mongoose/collection.js'][111] = 0;
_$jscoverage['mongoose/collection.js'][120] = 0;
_$jscoverage['mongoose/collection.js'][121] = 0;
_$jscoverage['mongoose/collection.js'][130] = 0;
_$jscoverage['mongoose/collection.js'][131] = 0;
_$jscoverage['mongoose/collection.js'][140] = 0;
_$jscoverage['mongoose/collection.js'][141] = 0;
_$jscoverage['mongoose/collection.js'][150] = 0;
_$jscoverage['mongoose/collection.js'][151] = 0;
_$jscoverage['mongoose/collection.js'][160] = 0;
_$jscoverage['mongoose/collection.js'][161] = 0;
_$jscoverage['mongoose/collection.js'][168] = 0;
_$jscoverage['mongoose/collection.js'][88] = 0;
_$jscoverage['mongoose/collection.js'][89] = 0;
_$jscoverage['mongoose/collection.js'][98] = 0;
_$jscoverage['mongoose/collection.js'][99] = 0;
_$jscoverage['mongoose/collection.js'][108] = 0;
_$jscoverage['mongoose/collection.js'][109] = 0;
_$jscoverage['mongoose/collection.js'][118] = 0;
_$jscoverage['mongoose/collection.js'][119] = 0;
_$jscoverage['mongoose/collection.js'][128] = 0;
_$jscoverage['mongoose/collection.js'][129] = 0;
_$jscoverage['mongoose/collection.js'][138] = 0;
_$jscoverage['mongoose/collection.js'][139] = 0;
_$jscoverage['mongoose/collection.js'][148] = 0;
_$jscoverage['mongoose/collection.js'][149] = 0;
_$jscoverage['mongoose/collection.js'][158] = 0;
_$jscoverage['mongoose/collection.js'][159] = 0;
_$jscoverage['mongoose/collection.js'][166] = 0;
}

@@ -55,94 +53,90 @@ _$jscoverage['mongoose/collection.js'][10]++;

_$jscoverage['mongoose/collection.js'][13]++;
this.conn.on("open", this.onOpen.bind(this));
_$jscoverage['mongoose/collection.js'][14]++;
this.conn.on("close", this.onClose.bind(this));
_$jscoverage['mongoose/collection.js'][15]++;
if (this.conn.readyState == 1) {
_$jscoverage['mongoose/collection.js'][15]++;
_$jscoverage['mongoose/collection.js'][13]++;
this.onOpen();
}
_$jscoverage['mongoose/collection.js'][16]++;
_$jscoverage['mongoose/collection.js'][14]++;
this.queue = [];
_$jscoverage['mongoose/collection.js'][17]++;
_$jscoverage['mongoose/collection.js'][15]++;
this.buffer = true;
}
_$jscoverage['mongoose/collection.js'][18]++;
_$jscoverage['mongoose/collection.js'][16]++;
;
_$jscoverage['mongoose/collection.js'][26]++;
_$jscoverage['mongoose/collection.js'][24]++;
Collection.prototype.name;
_$jscoverage['mongoose/collection.js'][34]++;
_$jscoverage['mongoose/collection.js'][32]++;
Collection.prototype.conn;
_$jscoverage['mongoose/collection.js'][42]++;
_$jscoverage['mongoose/collection.js'][40]++;
Collection.prototype.onOpen = (function () {
_$jscoverage['mongoose/collection.js'][43]++;
_$jscoverage['mongoose/collection.js'][41]++;
var self = this;
_$jscoverage['mongoose/collection.js'][44]++;
_$jscoverage['mongoose/collection.js'][42]++;
this.buffer = false;
_$jscoverage['mongoose/collection.js'][45]++;
_$jscoverage['mongoose/collection.js'][43]++;
self.doQueue();
});
_$jscoverage['mongoose/collection.js'][54]++;
_$jscoverage['mongoose/collection.js'][52]++;
Collection.prototype.onClose = (function () {
_$jscoverage['mongoose/collection.js'][55]++;
_$jscoverage['mongoose/collection.js'][53]++;
this.buffer = true;
});
_$jscoverage['mongoose/collection.js'][66]++;
_$jscoverage['mongoose/collection.js'][64]++;
Collection.prototype.addQueue = (function (name, args) {
_$jscoverage['mongoose/collection.js'][67]++;
_$jscoverage['mongoose/collection.js'][65]++;
this.queue.push([name, args]);
_$jscoverage['mongoose/collection.js'][68]++;
_$jscoverage['mongoose/collection.js'][66]++;
return this;
});
_$jscoverage['mongoose/collection.js'][77]++;
_$jscoverage['mongoose/collection.js'][75]++;
Collection.prototype.doQueue = (function () {
_$jscoverage['mongoose/collection.js'][78]++;
_$jscoverage['mongoose/collection.js'][76]++;
for (var i = 0, l = this.queue.length; i < l; i++) {
_$jscoverage['mongoose/collection.js'][79]++;
_$jscoverage['mongoose/collection.js'][77]++;
this[this.queue[i][0]].apply(this, this.queue[i][1]);
}
_$jscoverage['mongoose/collection.js'][81]++;
_$jscoverage['mongoose/collection.js'][79]++;
return this;
});
_$jscoverage['mongoose/collection.js'][90]++;
_$jscoverage['mongoose/collection.js'][88]++;
Collection.prototype.ensureIndex = (function () {
_$jscoverage['mongoose/collection.js'][91]++;
_$jscoverage['mongoose/collection.js'][89]++;
throw new Error("Collection#ensureIndex unimplemented by driver");
});
_$jscoverage['mongoose/collection.js'][100]++;
_$jscoverage['mongoose/collection.js'][98]++;
Collection.prototype.findAndModify = (function () {
_$jscoverage['mongoose/collection.js'][101]++;
_$jscoverage['mongoose/collection.js'][99]++;
throw new Error("Collection#findAndModify unimplemented by driver");
});
_$jscoverage['mongoose/collection.js'][110]++;
_$jscoverage['mongoose/collection.js'][108]++;
Collection.prototype.findOne = (function () {
_$jscoverage['mongoose/collection.js'][111]++;
_$jscoverage['mongoose/collection.js'][109]++;
throw new Error("Collection#findOne unimplemented by driver");
});
_$jscoverage['mongoose/collection.js'][120]++;
_$jscoverage['mongoose/collection.js'][118]++;
Collection.prototype.find = (function () {
_$jscoverage['mongoose/collection.js'][121]++;
_$jscoverage['mongoose/collection.js'][119]++;
throw new Error("Collection#find unimplemented by driver");
});
_$jscoverage['mongoose/collection.js'][130]++;
_$jscoverage['mongoose/collection.js'][128]++;
Collection.prototype.insert = (function () {
_$jscoverage['mongoose/collection.js'][131]++;
_$jscoverage['mongoose/collection.js'][129]++;
throw new Error("Collection#insert unimplemented by driver");
});
_$jscoverage['mongoose/collection.js'][140]++;
_$jscoverage['mongoose/collection.js'][138]++;
Collection.prototype.save = (function () {
_$jscoverage['mongoose/collection.js'][141]++;
_$jscoverage['mongoose/collection.js'][139]++;
throw new Error("Collection#save unimplemented by driver");
});
_$jscoverage['mongoose/collection.js'][150]++;
_$jscoverage['mongoose/collection.js'][148]++;
Collection.prototype.update = (function () {
_$jscoverage['mongoose/collection.js'][151]++;
_$jscoverage['mongoose/collection.js'][149]++;
throw new Error("Collection#update unimplemented by driver");
});
_$jscoverage['mongoose/collection.js'][160]++;
_$jscoverage['mongoose/collection.js'][158]++;
Collection.prototype.getIndexes = (function () {
_$jscoverage['mongoose/collection.js'][161]++;
_$jscoverage['mongoose/collection.js'][159]++;
throw new Error("Collection#getIndexes unimplemented by driver");
});
_$jscoverage['mongoose/collection.js'][168]++;
_$jscoverage['mongoose/collection.js'][166]++;
module.exports = Collection;
_$jscoverage['mongoose/collection.js'].source = ["","/**"," * Collection constructor"," *"," * @param {String} collection name"," * @param {Collection} connection object"," * @api public"," */","","function Collection (name, conn) {"," this.name = name;"," this.conn = conn;"," this.conn.on('open', this.onOpen.bind(this));"," this.conn.on('close', this.onClose.bind(this));"," if (this.conn.readyState == 1) this.onOpen();"," this.queue = [];"," this.buffer = true;","};","","/**"," * The collection name"," *"," * @api public"," */","","Collection.prototype.name;","","/**"," * The Connection instance"," *"," * @api public"," */","","Collection.prototype.conn;","","/**"," * Called when the database connects"," *"," * @api private"," */","","Collection.prototype.onOpen = function () {"," var self = this;"," this.buffer = false;"," self.doQueue();","};","","/**"," * Called when the database disconnects"," *"," * @api private"," */","","Collection.prototype.onClose = function () {"," this.buffer = true;","};","","/**"," * Adds a callback to the queue"," *"," * @param {String} method name"," * @param {Array} arguments"," * @api private"," */","","Collection.prototype.addQueue = function (name, args) {"," this.queue.push([name, args]);"," return this;","};","","/**"," * Executes the current queue"," *"," * @api private"," */","","Collection.prototype.doQueue = function () {"," for (var i = 0, l = this.queue.length; i &lt; l; i++){"," this[this.queue[i][0]].apply(this, this.queue[i][1]);"," }"," return this;","};","","/**"," * Ensure index function"," *"," * @api private"," */","","Collection.prototype.ensureIndex = function(){"," throw new Error('Collection#ensureIndex unimplemented by driver');","};","","/**"," * FindAndModify command"," *"," * @api private"," */","","Collection.prototype.findAndModify = function(){"," throw new Error('Collection#findAndModify unimplemented by driver');","};","","/**"," * FindOne command"," *"," * @api private"," */","","Collection.prototype.findOne = function(){"," throw new Error('Collection#findOne unimplemented by driver');","};","","/**"," * Find command"," *"," * @api private"," */","","Collection.prototype.find = function(){"," throw new Error('Collection#find unimplemented by driver');","};","","/**"," * Insert command"," *"," * @api private"," */","","Collection.prototype.insert = function(){"," throw new Error('Collection#insert unimplemented by driver');","};","","/**"," * Update command"," *"," * @api private"," */","","Collection.prototype.save = function(){"," throw new Error('Collection#save unimplemented by driver');","};","","/**"," * Insert command"," *"," * @api private"," */","","Collection.prototype.update = function(){"," throw new Error('Collection#update unimplemented by driver');","};","","/**"," * getIndexes command"," *"," * @api private"," */","","Collection.prototype.getIndexes = function(){"," throw new Error('Collection#getIndexes unimplemented by driver');","};","","/**"," * Module exports."," */","","module.exports = Collection;"];
_$jscoverage['mongoose/collection.js'].source = ["","/**"," * Collection constructor"," *"," * @param {String} collection name"," * @param {Collection} connection object"," * @api public"," */","","function Collection (name, conn) {"," this.name = name;"," this.conn = conn;"," if (this.conn.readyState == 1) this.onOpen();"," this.queue = [];"," this.buffer = true;","};","","/**"," * The collection name"," *"," * @api public"," */","","Collection.prototype.name;","","/**"," * The Connection instance"," *"," * @api public"," */","","Collection.prototype.conn;","","/**"," * Called when the database connects"," *"," * @api private"," */","","Collection.prototype.onOpen = function () {"," var self = this;"," this.buffer = false;"," self.doQueue();","};","","/**"," * Called when the database disconnects"," *"," * @api private"," */","","Collection.prototype.onClose = function () {"," this.buffer = true;","};","","/**"," * Adds a callback to the queue"," *"," * @param {String} method name"," * @param {Array} arguments"," * @api private"," */","","Collection.prototype.addQueue = function (name, args) {"," this.queue.push([name, args]);"," return this;","};","","/**"," * Executes the current queue"," *"," * @api private"," */","","Collection.prototype.doQueue = function () {"," for (var i = 0, l = this.queue.length; i &lt; l; i++){"," this[this.queue[i][0]].apply(this, this.queue[i][1]);"," }"," return this;","};","","/**"," * Ensure index function"," *"," * @api private"," */","","Collection.prototype.ensureIndex = function(){"," throw new Error('Collection#ensureIndex unimplemented by driver');","};","","/**"," * FindAndModify command"," *"," * @api private"," */","","Collection.prototype.findAndModify = function(){"," throw new Error('Collection#findAndModify unimplemented by driver');","};","","/**"," * FindOne command"," *"," * @api private"," */","","Collection.prototype.findOne = function(){"," throw new Error('Collection#findOne unimplemented by driver');","};","","/**"," * Find command"," *"," * @api private"," */","","Collection.prototype.find = function(){"," throw new Error('Collection#find unimplemented by driver');","};","","/**"," * Insert command"," *"," * @api private"," */","","Collection.prototype.insert = function(){"," throw new Error('Collection#insert unimplemented by driver');","};","","/**"," * Update command"," *"," * @api private"," */","","Collection.prototype.save = function(){"," throw new Error('Collection#save unimplemented by driver');","};","","/**"," * Insert command"," *"," * @api private"," */","","Collection.prototype.update = function(){"," throw new Error('Collection#update unimplemented by driver');","};","","/**"," * getIndexes command"," *"," * @api private"," */","","Collection.prototype.getIndexes = function(){"," throw new Error('Collection#getIndexes unimplemented by driver');","};","","/**"," * Module exports."," */","","module.exports = Collection;"];

@@ -55,17 +55,16 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/connection.js'][140] = 0;
_$jscoverage['mongoose/connection.js'][141] = 0;
_$jscoverage['mongoose/connection.js'][152] = 0;
_$jscoverage['mongoose/connection.js'][153] = 0;
_$jscoverage['mongoose/connection.js'][155] = 0;
_$jscoverage['mongoose/connection.js'][157] = 0;
_$jscoverage['mongoose/connection.js'][144] = 0;
_$jscoverage['mongoose/connection.js'][145] = 0;
_$jscoverage['mongoose/connection.js'][147] = 0;
_$jscoverage['mongoose/connection.js'][158] = 0;
_$jscoverage['mongoose/connection.js'][159] = 0;
_$jscoverage['mongoose/connection.js'][161] = 0;
_$jscoverage['mongoose/connection.js'][162] = 0;
_$jscoverage['mongoose/connection.js'][163] = 0;
_$jscoverage['mongoose/connection.js'][164] = 0;
_$jscoverage['mongoose/connection.js'][166] = 0;
_$jscoverage['mongoose/connection.js'][167] = 0;
_$jscoverage['mongoose/connection.js'][168] = 0;
_$jscoverage['mongoose/connection.js'][169] = 0;
_$jscoverage['mongoose/connection.js'][170] = 0;
_$jscoverage['mongoose/connection.js'][172] = 0;
_$jscoverage['mongoose/connection.js'][173] = 0;
_$jscoverage['mongoose/connection.js'][174] = 0;
_$jscoverage['mongoose/connection.js'][176] = 0;

@@ -76,17 +75,14 @@ _$jscoverage['mongoose/connection.js'][179] = 0;

_$jscoverage['mongoose/connection.js'][185] = 0;
_$jscoverage['mongoose/connection.js'][194] = 0;
_$jscoverage['mongoose/connection.js'][195] = 0;
_$jscoverage['mongoose/connection.js'][196] = 0;
_$jscoverage['mongoose/connection.js'][207] = 0;
_$jscoverage['mongoose/connection.js'][186] = 0;
_$jscoverage['mongoose/connection.js'][188] = 0;
_$jscoverage['mongoose/connection.js'][191] = 0;
_$jscoverage['mongoose/connection.js'][200] = 0;
_$jscoverage['mongoose/connection.js'][201] = 0;
_$jscoverage['mongoose/connection.js'][205] = 0;
_$jscoverage['mongoose/connection.js'][206] = 0;
_$jscoverage['mongoose/connection.js'][208] = 0;
_$jscoverage['mongoose/connection.js'][209] = 0;
_$jscoverage['mongoose/connection.js'][210] = 0;
_$jscoverage['mongoose/connection.js'][219] = 0;
_$jscoverage['mongoose/connection.js'][220] = 0;
_$jscoverage['mongoose/connection.js'][221] = 0;
_$jscoverage['mongoose/connection.js'][222] = 0;
_$jscoverage['mongoose/connection.js'][223] = 0;
_$jscoverage['mongoose/connection.js'][225] = 0;
_$jscoverage['mongoose/connection.js'][226] = 0;
_$jscoverage['mongoose/connection.js'][228] = 0;
_$jscoverage['mongoose/connection.js'][229] = 0;
_$jscoverage['mongoose/connection.js'][232] = 0;
_$jscoverage['mongoose/connection.js'][233] = 0;
_$jscoverage['mongoose/connection.js'][234] = 0;

@@ -96,8 +92,16 @@ _$jscoverage['mongoose/connection.js'][235] = 0;

_$jscoverage['mongoose/connection.js'][238] = 0;
_$jscoverage['mongoose/connection.js'][239] = 0;
_$jscoverage['mongoose/connection.js'][240] = 0;
_$jscoverage['mongoose/connection.js'][241] = 0;
_$jscoverage['mongoose/connection.js'][244] = 0;
_$jscoverage['mongoose/connection.js'][245] = 0;
_$jscoverage['mongoose/connection.js'][246] = 0;
_$jscoverage['mongoose/connection.js'][247] = 0;
_$jscoverage['mongoose/connection.js'][254] = 0;
_$jscoverage['mongoose/connection.js'][249] = 0;
_$jscoverage['mongoose/connection.js'][250] = 0;
_$jscoverage['mongoose/connection.js'][251] = 0;
_$jscoverage['mongoose/connection.js'][252] = 0;
_$jscoverage['mongoose/connection.js'][253] = 0;
_$jscoverage['mongoose/connection.js'][256] = 0;
_$jscoverage['mongoose/connection.js'][259] = 0;
_$jscoverage['mongoose/connection.js'][266] = 0;
}

@@ -228,26 +232,31 @@ _$jscoverage['mongoose/connection.js'][6]++;

this.readyState = 1;
_$jscoverage['mongoose/connection.js'][141]++;
_$jscoverage['mongoose/connection.js'][144]++;
for (var i in this.collections) {
_$jscoverage['mongoose/connection.js'][145]++;
this.collections[i].onOpen();
}
_$jscoverage['mongoose/connection.js'][147]++;
this.emit("open");
});
_$jscoverage['mongoose/connection.js'][152]++;
_$jscoverage['mongoose/connection.js'][158]++;
Connection.prototype.close = (function (callback) {
_$jscoverage['mongoose/connection.js'][153]++;
_$jscoverage['mongoose/connection.js'][159]++;
var self = this;
_$jscoverage['mongoose/connection.js'][155]++;
_$jscoverage['mongoose/connection.js'][161]++;
switch (this.readyState) {
case 0:
_$jscoverage['mongoose/connection.js'][157]++;
_$jscoverage['mongoose/connection.js'][163]++;
callback(null);
_$jscoverage['mongoose/connection.js'][158]++;
_$jscoverage['mongoose/connection.js'][164]++;
break;
case 1:
_$jscoverage['mongoose/connection.js'][161]++;
_$jscoverage['mongoose/connection.js'][167]++;
this.readyState = 3;
_$jscoverage['mongoose/connection.js'][162]++;
_$jscoverage['mongoose/connection.js'][168]++;
this.doClose((function (err) {
_$jscoverage['mongoose/connection.js'][163]++;
_$jscoverage['mongoose/connection.js'][169]++;
if (err) {
_$jscoverage['mongoose/connection.js'][164]++;
_$jscoverage['mongoose/connection.js'][170]++;
if (callback) {
_$jscoverage['mongoose/connection.js'][164]++;
_$jscoverage['mongoose/connection.js'][170]++;
callback(err);

@@ -257,7 +266,7 @@ }

else {
_$jscoverage['mongoose/connection.js'][166]++;
_$jscoverage['mongoose/connection.js'][172]++;
self.onClose();
_$jscoverage['mongoose/connection.js'][167]++;
_$jscoverage['mongoose/connection.js'][173]++;
if (callback) {
_$jscoverage['mongoose/connection.js'][167]++;
_$jscoverage['mongoose/connection.js'][173]++;
callback(null);

@@ -267,82 +276,87 @@ }

}));
_$jscoverage['mongoose/connection.js'][170]++;
_$jscoverage['mongoose/connection.js'][176]++;
break;
case 2:
_$jscoverage['mongoose/connection.js'][173]++;
_$jscoverage['mongoose/connection.js'][179]++;
this.once("open", (function () {
_$jscoverage['mongoose/connection.js'][174]++;
_$jscoverage['mongoose/connection.js'][180]++;
self.close(callback);
}));
_$jscoverage['mongoose/connection.js'][176]++;
_$jscoverage['mongoose/connection.js'][182]++;
break;
case 3:
_$jscoverage['mongoose/connection.js'][179]++;
_$jscoverage['mongoose/connection.js'][185]++;
this.once("close", (function () {
_$jscoverage['mongoose/connection.js'][180]++;
_$jscoverage['mongoose/connection.js'][186]++;
callback(null);
}));
_$jscoverage['mongoose/connection.js'][182]++;
_$jscoverage['mongoose/connection.js'][188]++;
break;
}
_$jscoverage['mongoose/connection.js'][185]++;
_$jscoverage['mongoose/connection.js'][191]++;
return this;
});
_$jscoverage['mongoose/connection.js'][194]++;
_$jscoverage['mongoose/connection.js'][200]++;
Connection.prototype.onClose = (function () {
_$jscoverage['mongoose/connection.js'][195]++;
_$jscoverage['mongoose/connection.js'][201]++;
this.readyState = 0;
_$jscoverage['mongoose/connection.js'][196]++;
_$jscoverage['mongoose/connection.js'][205]++;
for (var i in this.collections) {
_$jscoverage['mongoose/connection.js'][206]++;
this.collections[i].onClose();
}
_$jscoverage['mongoose/connection.js'][208]++;
this.emit("close");
});
_$jscoverage['mongoose/connection.js'][207]++;
_$jscoverage['mongoose/connection.js'][219]++;
Connection.prototype.collection = (function (name) {
_$jscoverage['mongoose/connection.js'][208]++;
_$jscoverage['mongoose/connection.js'][220]++;
if (! (name in this.collections)) {
_$jscoverage['mongoose/connection.js'][209]++;
_$jscoverage['mongoose/connection.js'][221]++;
this.collections[name] = new Collection(name, this);
}
_$jscoverage['mongoose/connection.js'][210]++;
_$jscoverage['mongoose/connection.js'][222]++;
return this.collections[name];
});
_$jscoverage['mongoose/connection.js'][222]++;
_$jscoverage['mongoose/connection.js'][234]++;
Connection.prototype.model = (function (name, collection) {
_$jscoverage['mongoose/connection.js'][223]++;
_$jscoverage['mongoose/connection.js'][235]++;
collection || (collection = utils.toCollectionName(name));
_$jscoverage['mongoose/connection.js'][225]++;
_$jscoverage['mongoose/connection.js'][237]++;
if (! this.models[collection]) {
_$jscoverage['mongoose/connection.js'][226]++;
_$jscoverage['mongoose/connection.js'][238]++;
this.models[collection] = {};
}
_$jscoverage['mongoose/connection.js'][228]++;
_$jscoverage['mongoose/connection.js'][240]++;
if (! this.models[collection][name]) {
_$jscoverage['mongoose/connection.js'][229]++;
_$jscoverage['mongoose/connection.js'][241]++;
var model = this.base.model(name, null, collection, true), Model;
_$jscoverage['mongoose/connection.js'][232]++;
_$jscoverage['mongoose/connection.js'][244]++;
if (model.prototype.connection != this) {
_$jscoverage['mongoose/connection.js'][233]++;
_$jscoverage['mongoose/connection.js'][245]++;
function Model() {
_$jscoverage['mongoose/connection.js'][234]++;
_$jscoverage['mongoose/connection.js'][246]++;
model.apply(this, arguments);
}
_$jscoverage['mongoose/connection.js'][235]++;
_$jscoverage['mongoose/connection.js'][247]++;
;
_$jscoverage['mongoose/connection.js'][237]++;
_$jscoverage['mongoose/connection.js'][249]++;
Model.__proto__ = model;
_$jscoverage['mongoose/connection.js'][238]++;
_$jscoverage['mongoose/connection.js'][250]++;
Model.prototype.__proto__ = model.prototype;
_$jscoverage['mongoose/connection.js'][239]++;
_$jscoverage['mongoose/connection.js'][251]++;
Model.prototype.db = this;
_$jscoverage['mongoose/connection.js'][240]++;
_$jscoverage['mongoose/connection.js'][252]++;
Model.prototype.collection = this.collection(collection);
_$jscoverage['mongoose/connection.js'][241]++;
_$jscoverage['mongoose/connection.js'][253]++;
Model.init();
}
_$jscoverage['mongoose/connection.js'][244]++;
_$jscoverage['mongoose/connection.js'][256]++;
this.models[collection][name] = Model || model;
}
_$jscoverage['mongoose/connection.js'][247]++;
_$jscoverage['mongoose/connection.js'][259]++;
return this.models[collection][name];
});
_$jscoverage['mongoose/connection.js'][254]++;
_$jscoverage['mongoose/connection.js'][266]++;
module.exports = Connection;
_$jscoverage['mongoose/connection.js'].source = ["","/**"," * Module dependencies."," */","","var url = require('url')"," , utils = require('./utils')"," , EventEmitter = utils.EventEmitter"," , driver = global.MONGOOSE_DRIVER_PATH || './drivers/node-mongodb-native'"," , Model = require('./model')"," , Collection = require(driver + '/collection');","","/**"," * Connection constructor. For practical reasons, a Connection equals a Db"," *"," * @param {Mongoose} mongoose base"," * @api public"," */","","function Connection (base) {"," this.base = base;"," this.collections = {};"," this.models = {};","};","","/**"," * Inherit from EventEmitter."," *"," */","","Connection.prototype.__proto__ = EventEmitter.prototype;","","/**"," * Connection ready state:"," * 0 = Disconnected"," * 1 = Connected"," * 2 = Connecting"," * 3 = Disconnecting"," *"," * @api public"," */","","Connection.prototype.readyState = 0;","","/**"," * A hash of the collections associated with this connection"," *"," * @param text"," */","","Connection.prototype.collections;","","/**"," * The mongodb.Db instance, set when the connection is opened"," *"," * @api public"," */","","Connection.prototype.db;","","/**"," * Establishes the connection"," *"," * @param {String} mongodb://uri"," * @return {Connection} self"," * @api public"," */","","Connection.prototype.open = function (host, database, port, callback) {"," var self = this"," , uri;",""," // if we've been supplied an uri"," if (typeof database != 'string'){"," uri = url.parse(host);"," host = uri.hostname;"," port = uri.port || 27017;"," callback = database;"," database = uri.pathname.replace(/\\//g, '');"," } else {"," callback = callback || port;"," port = typeof port == 'number' ? port : 27017;"," }"," "," // make sure we can open"," if (this.readyState != 0){"," if ('function' == typeof callback)"," callback(new Error('Trying to open unclosed connection'));"," return this;"," }",""," // handle authentication"," if (uri &amp;&amp; uri.auth){"," var auth = uri.auth.split(':');"," this.user = auth[0];"," this.pass = auth[1];"," } else "," this.user = this.pass = undefined;"," "," if (!host) {"," if ('function' == typeof callback)"," callback(new Error('Please provide a valid hostname.'));"," return this;"," }",""," if (!database) {"," if ('function' == typeof callback)"," callback(new Error('Please provide a database to connect to.'));"," return this;"," }",""," this.name = database;"," this.host = host;"," this.port = port;",""," // signal connecting"," this.readyState = 2;"," this.emit('opening');",""," // open connection"," this.doOpen(function(err){"," if (err) {"," if (typeof callback == 'function') callback(err);"," } else {"," self.onOpen();"," if (typeof callback == 'function') callback(null);"," }"," });",""," return this;","};","","/**"," * Called when the connection is opened"," *"," * @api private"," */","","Connection.prototype.onOpen = function () {"," this.readyState = 1;"," this.emit('open');","};","","/**"," * Closes the connection"," *"," * @param {Function} optional callback"," * @return {Connection} self"," * @api public"," */","","Connection.prototype.close = function (callback) {"," var self = this;",""," switch (this.readyState){"," case 0: // disconnected"," callback(null);"," break;",""," case 1: // connected "," this.readyState = 3;"," this.doClose(function(err){"," if (err){"," if (callback) callback(err);"," } else {"," self.onClose();"," if (callback) callback(null);"," }"," });"," break;",""," case 2: // connecting"," this.once('open', function(){"," self.close(callback);"," });"," break;",""," case 3: // disconnecting"," this.once('close', function () {"," callback(null);"," });"," break;"," }",""," return this;","};","","/**"," * Called when the connection closes"," *"," * @api private"," */","","Connection.prototype.onClose = function () {"," this.readyState = 0;"," this.emit('close');","};","","/**"," * Retrieves a collection, creating it if not cached."," *"," * @param {String} collection name"," * @return {Collection} collection instance"," * @api public"," */","","Connection.prototype.collection = function (name) {"," if (!(name in this.collections))"," this.collections[name] = new Collection(name, this);"," return this.collections[name];","};","","/**"," * Defines a model or retrieves it"," *"," * @param {String} model name"," * @param {Schema} schema object"," * @param {String} collection name (optional, induced from model name)"," * @api public"," */","","Connection.prototype.model = function (name, collection) {"," collection || (collection = utils.toCollectionName(name));"," // look up models for the collection"," if (!this.models[collection])"," this.models[collection] = {};",""," if (!this.models[collection][name]){"," var model = this.base.model(name, null, collection, true)"," , Model;"," "," if (model.prototype.connection != this){"," function Model (){"," model.apply(this, arguments);"," };",""," Model.__proto__ = model;"," Model.prototype.__proto__ = model.prototype;"," Model.prototype.db = this;"," Model.prototype.collection = this.collection(collection);"," Model.init();"," }",""," this.models[collection][name] = Model || model;"," }"," "," return this.models[collection][name];","};","","/**"," * Module exports."," */","","module.exports = Connection;"];
_$jscoverage['mongoose/connection.js'].source = ["","/**"," * Module dependencies."," */","","var url = require('url')"," , utils = require('./utils')"," , EventEmitter = utils.EventEmitter"," , driver = global.MONGOOSE_DRIVER_PATH || './drivers/node-mongodb-native'"," , Model = require('./model')"," , Collection = require(driver + '/collection');","","/**"," * Connection constructor. For practical reasons, a Connection equals a Db"," *"," * @param {Mongoose} mongoose base"," * @api public"," */","","function Connection (base) {"," this.base = base;"," this.collections = {};"," this.models = {};","};","","/**"," * Inherit from EventEmitter."," *"," */","","Connection.prototype.__proto__ = EventEmitter.prototype;","","/**"," * Connection ready state:"," * 0 = Disconnected"," * 1 = Connected"," * 2 = Connecting"," * 3 = Disconnecting"," *"," * @api public"," */","","Connection.prototype.readyState = 0;","","/**"," * A hash of the collections associated with this connection"," *"," * @param text"," */","","Connection.prototype.collections;","","/**"," * The mongodb.Db instance, set when the connection is opened"," *"," * @api public"," */","","Connection.prototype.db;","","/**"," * Establishes the connection"," *"," * @param {String} mongodb://uri"," * @return {Connection} self"," * @api public"," */","","Connection.prototype.open = function (host, database, port, callback) {"," var self = this"," , uri;",""," // if we've been supplied an uri"," if (typeof database != 'string'){"," uri = url.parse(host);"," host = uri.hostname;"," port = uri.port || 27017;"," callback = database;"," database = uri.pathname.replace(/\\//g, '');"," } else {"," callback = callback || port;"," port = typeof port == 'number' ? port : 27017;"," }"," "," // make sure we can open"," if (this.readyState != 0){"," if ('function' == typeof callback)"," callback(new Error('Trying to open unclosed connection'));"," return this;"," }",""," // handle authentication"," if (uri &amp;&amp; uri.auth){"," var auth = uri.auth.split(':');"," this.user = auth[0];"," this.pass = auth[1];"," } else "," this.user = this.pass = undefined;"," "," if (!host) {"," if ('function' == typeof callback)"," callback(new Error('Please provide a valid hostname.'));"," return this;"," }",""," if (!database) {"," if ('function' == typeof callback)"," callback(new Error('Please provide a database to connect to.'));"," return this;"," }",""," this.name = database;"," this.host = host;"," this.port = port;",""," // signal connecting"," this.readyState = 2;"," this.emit('opening');",""," // open connection"," this.doOpen(function(err){"," if (err) {"," if (typeof callback == 'function') callback(err);"," } else {"," self.onOpen();"," if (typeof callback == 'function') callback(null);"," }"," });",""," return this;","};","","/**"," * Called when the connection is opened"," *"," * @api private"," */","","Connection.prototype.onOpen = function () {"," this.readyState = 1;",""," // avoid having the collection subscribe to our event emitter"," // to prevent 0.3 warning"," for (var i in this.collections)"," this.collections[i].onOpen();",""," this.emit('open');","};","","/**"," * Closes the connection"," *"," * @param {Function} optional callback"," * @return {Connection} self"," * @api public"," */","","Connection.prototype.close = function (callback) {"," var self = this;",""," switch (this.readyState){"," case 0: // disconnected"," callback(null);"," break;",""," case 1: // connected "," this.readyState = 3;"," this.doClose(function(err){"," if (err){"," if (callback) callback(err);"," } else {"," self.onClose();"," if (callback) callback(null);"," }"," });"," break;",""," case 2: // connecting"," this.once('open', function(){"," self.close(callback);"," });"," break;",""," case 3: // disconnecting"," this.once('close', function () {"," callback(null);"," });"," break;"," }",""," return this;","};","","/**"," * Called when the connection closes"," *"," * @api private"," */","","Connection.prototype.onClose = function () {"," this.readyState = 0;"," "," // avoid having the collection subscribe to our event emitter"," // to prevent 0.3 warning"," for (var i in this.collections)"," this.collections[i].onClose();",""," this.emit('close');","};","","/**"," * Retrieves a collection, creating it if not cached."," *"," * @param {String} collection name"," * @return {Collection} collection instance"," * @api public"," */","","Connection.prototype.collection = function (name) {"," if (!(name in this.collections))"," this.collections[name] = new Collection(name, this);"," return this.collections[name];","};","","/**"," * Defines a model or retrieves it"," *"," * @param {String} model name"," * @param {Schema} schema object"," * @param {String} collection name (optional, induced from model name)"," * @api public"," */","","Connection.prototype.model = function (name, collection) {"," collection || (collection = utils.toCollectionName(name));"," // look up models for the collection"," if (!this.models[collection])"," this.models[collection] = {};",""," if (!this.models[collection][name]){"," var model = this.base.model(name, null, collection, true)"," , Model;"," "," if (model.prototype.connection != this){"," function Model (){"," model.apply(this, arguments);"," };",""," Model.__proto__ = model;"," Model.prototype.__proto__ = model.prototype;"," Model.prototype.db = this;"," Model.prototype.collection = this.collection(collection);"," Model.init();"," }",""," this.models[collection][name] = Model || model;"," }"," "," return this.models[collection][name];","};","","/**"," * Module exports."," */","","module.exports = Connection;"];

@@ -51,73 +51,72 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/document.js'][136] = 0;
_$jscoverage['mongoose/document.js'][147] = 0;
_$jscoverage['mongoose/document.js'][148] = 0;
_$jscoverage['mongoose/document.js'][138] = 0;
_$jscoverage['mongoose/document.js'][149] = 0;
_$jscoverage['mongoose/document.js'][153] = 0;
_$jscoverage['mongoose/document.js'][154] = 0;
_$jscoverage['mongoose/document.js'][180] = 0;
_$jscoverage['mongoose/document.js'][181] = 0;
_$jscoverage['mongoose/document.js'][150] = 0;
_$jscoverage['mongoose/document.js'][151] = 0;
_$jscoverage['mongoose/document.js'][155] = 0;
_$jscoverage['mongoose/document.js'][156] = 0;
_$jscoverage['mongoose/document.js'][182] = 0;
_$jscoverage['mongoose/document.js'][183] = 0;
_$jscoverage['mongoose/document.js'][184] = 0;
_$jscoverage['mongoose/document.js'][187] = 0;
_$jscoverage['mongoose/document.js'][189] = 0;
_$jscoverage['mongoose/document.js'][194] = 0;
_$jscoverage['mongoose/document.js'][199] = 0;
_$jscoverage['mongoose/document.js'][200] = 0;
_$jscoverage['mongoose/document.js'][201] = 0;
_$jscoverage['mongoose/document.js'][185] = 0;
_$jscoverage['mongoose/document.js'][186] = 0;
_$jscoverage['mongoose/document.js'][190] = 0;
_$jscoverage['mongoose/document.js'][191] = 0;
_$jscoverage['mongoose/document.js'][192] = 0;
_$jscoverage['mongoose/document.js'][197] = 0;
_$jscoverage['mongoose/document.js'][202] = 0;
_$jscoverage['mongoose/document.js'][203] = 0;
_$jscoverage['mongoose/document.js'][204] = 0;
_$jscoverage['mongoose/document.js'][205] = 0;
_$jscoverage['mongoose/document.js'][207] = 0;
_$jscoverage['mongoose/document.js'][209] = 0;
_$jscoverage['mongoose/document.js'][208] = 0;
_$jscoverage['mongoose/document.js'][210] = 0;
_$jscoverage['mongoose/document.js'][212] = 0;
_$jscoverage['mongoose/document.js'][213] = 0;
_$jscoverage['mongoose/document.js'][214] = 0;
_$jscoverage['mongoose/document.js'][215] = 0;
_$jscoverage['mongoose/document.js'][216] = 0;
_$jscoverage['mongoose/document.js'][222] = 0;
_$jscoverage['mongoose/document.js'][217] = 0;
_$jscoverage['mongoose/document.js'][219] = 0;
_$jscoverage['mongoose/document.js'][225] = 0;
_$jscoverage['mongoose/document.js'][226] = 0;
_$jscoverage['mongoose/document.js'][236] = 0;
_$jscoverage['mongoose/document.js'][237] = 0;
_$jscoverage['mongoose/document.js'][228] = 0;
_$jscoverage['mongoose/document.js'][229] = 0;
_$jscoverage['mongoose/document.js'][239] = 0;
_$jscoverage['mongoose/document.js'][240] = 0;
_$jscoverage['mongoose/document.js'][241] = 0;
_$jscoverage['mongoose/document.js'][242] = 0;
_$jscoverage['mongoose/document.js'][243] = 0;
_$jscoverage['mongoose/document.js'][244] = 0;
_$jscoverage['mongoose/document.js'][255] = 0;
_$jscoverage['mongoose/document.js'][256] = 0;
_$jscoverage['mongoose/document.js'][245] = 0;
_$jscoverage['mongoose/document.js'][247] = 0;
_$jscoverage['mongoose/document.js'][258] = 0;
_$jscoverage['mongoose/document.js'][259] = 0;
_$jscoverage['mongoose/document.js'][260] = 0;
_$jscoverage['mongoose/document.js'][262] = 0;
_$jscoverage['mongoose/document.js'][272] = 0;
_$jscoverage['mongoose/document.js'][273] = 0;
_$jscoverage['mongoose/document.js'][274] = 0;
_$jscoverage['mongoose/document.js'][263] = 0;
_$jscoverage['mongoose/document.js'][265] = 0;
_$jscoverage['mongoose/document.js'][275] = 0;
_$jscoverage['mongoose/document.js'][285] = 0;
_$jscoverage['mongoose/document.js'][286] = 0;
_$jscoverage['mongoose/document.js'][290] = 0;
_$jscoverage['mongoose/document.js'][291] = 0;
_$jscoverage['mongoose/document.js'][292] = 0;
_$jscoverage['mongoose/document.js'][276] = 0;
_$jscoverage['mongoose/document.js'][277] = 0;
_$jscoverage['mongoose/document.js'][278] = 0;
_$jscoverage['mongoose/document.js'][288] = 0;
_$jscoverage['mongoose/document.js'][289] = 0;
_$jscoverage['mongoose/document.js'][293] = 0;
_$jscoverage['mongoose/document.js'][294] = 0;
_$jscoverage['mongoose/document.js'][295] = 0;
_$jscoverage['mongoose/document.js'][297] = 0;
_$jscoverage['mongoose/document.js'][298] = 0;
_$jscoverage['mongoose/document.js'][307] = 0;
_$jscoverage['mongoose/document.js'][309] = 0;
_$jscoverage['mongoose/document.js'][319] = 0;
_$jscoverage['mongoose/document.js'][320] = 0;
_$jscoverage['mongoose/document.js'][321] = 0;
_$jscoverage['mongoose/document.js'][301] = 0;
_$jscoverage['mongoose/document.js'][310] = 0;
_$jscoverage['mongoose/document.js'][312] = 0;
_$jscoverage['mongoose/document.js'][322] = 0;
_$jscoverage['mongoose/document.js'][323] = 0;
_$jscoverage['mongoose/document.js'][324] = 0;
_$jscoverage['mongoose/document.js'][325] = 0;
_$jscoverage['mongoose/document.js'][326] = 0;
_$jscoverage['mongoose/document.js'][327] = 0;
_$jscoverage['mongoose/document.js'][328] = 0;
_$jscoverage['mongoose/document.js'][337] = 0;
_$jscoverage['mongoose/document.js'][338] = 0;
_$jscoverage['mongoose/document.js'][347] = 0;
_$jscoverage['mongoose/document.js'][348] = 0;
_$jscoverage['mongoose/document.js'][358] = 0;
_$jscoverage['mongoose/document.js'][359] = 0;
_$jscoverage['mongoose/document.js'][364] = 0;
_$jscoverage['mongoose/document.js'][366] = 0;
_$jscoverage['mongoose/document.js'][329] = 0;
_$jscoverage['mongoose/document.js'][330] = 0;
_$jscoverage['mongoose/document.js'][331] = 0;
_$jscoverage['mongoose/document.js'][340] = 0;
_$jscoverage['mongoose/document.js'][341] = 0;
_$jscoverage['mongoose/document.js'][350] = 0;
_$jscoverage['mongoose/document.js'][351] = 0;
_$jscoverage['mongoose/document.js'][361] = 0;
_$jscoverage['mongoose/document.js'][362] = 0;
_$jscoverage['mongoose/document.js'][367] = 0;
_$jscoverage['mongoose/document.js'][368] = 0;
_$jscoverage['mongoose/document.js'][369] = 0;

@@ -128,103 +127,108 @@ _$jscoverage['mongoose/document.js'][370] = 0;

_$jscoverage['mongoose/document.js'][373] = 0;
_$jscoverage['mongoose/document.js'][374] = 0;
_$jscoverage['mongoose/document.js'][375] = 0;
_$jscoverage['mongoose/document.js'][376] = 0;
_$jscoverage['mongoose/document.js'][378] = 0;
_$jscoverage['mongoose/document.js'][381] = 0;
_$jscoverage['mongoose/document.js'][382] = 0;
_$jscoverage['mongoose/document.js'][384] = 0;
_$jscoverage['mongoose/document.js'][385] = 0;
_$jscoverage['mongoose/document.js'][395] = 0;
_$jscoverage['mongoose/document.js'][396] = 0;
_$jscoverage['mongoose/document.js'][405] = 0;
_$jscoverage['mongoose/document.js'][406] = 0;
_$jscoverage['mongoose/document.js'][407] = 0;
_$jscoverage['mongoose/document.js'][414] = 0;
_$jscoverage['mongoose/document.js'][416] = 0;
_$jscoverage['mongoose/document.js'][388] = 0;
_$jscoverage['mongoose/document.js'][398] = 0;
_$jscoverage['mongoose/document.js'][399] = 0;
_$jscoverage['mongoose/document.js'][408] = 0;
_$jscoverage['mongoose/document.js'][409] = 0;
_$jscoverage['mongoose/document.js'][410] = 0;
_$jscoverage['mongoose/document.js'][417] = 0;
_$jscoverage['mongoose/document.js'][419] = 0;
_$jscoverage['mongoose/document.js'][420] = 0;
_$jscoverage['mongoose/document.js'][422] = 0;
_$jscoverage['mongoose/document.js'][423] = 0;
_$jscoverage['mongoose/document.js'][424] = 0;
_$jscoverage['mongoose/document.js'][425] = 0;
_$jscoverage['mongoose/document.js'][426] = 0;
_$jscoverage['mongoose/document.js'][427] = 0;
_$jscoverage['mongoose/document.js'][428] = 0;
_$jscoverage['mongoose/document.js'][429] = 0;
_$jscoverage['mongoose/document.js'][430] = 0;
_$jscoverage['mongoose/document.js'][431] = 0;
_$jscoverage['mongoose/document.js'][432] = 0;
_$jscoverage['mongoose/document.js'][433] = 0;
_$jscoverage['mongoose/document.js'][436] = 0;
_$jscoverage['mongoose/document.js'][437] = 0;
_$jscoverage['mongoose/document.js'][439] = 0;
_$jscoverage['mongoose/document.js'][440] = 0;
_$jscoverage['mongoose/document.js'][441] = 0;
_$jscoverage['mongoose/document.js'][443] = 0;
_$jscoverage['mongoose/document.js'][444] = 0;
_$jscoverage['mongoose/document.js'][446] = 0;
_$jscoverage['mongoose/document.js'][447] = 0;
_$jscoverage['mongoose/document.js'][448] = 0;
_$jscoverage['mongoose/document.js'][457] = 0;
_$jscoverage['mongoose/document.js'][458] = 0;
_$jscoverage['mongoose/document.js'][467] = 0;
_$jscoverage['mongoose/document.js'][468] = 0;
_$jscoverage['mongoose/document.js'][449] = 0;
_$jscoverage['mongoose/document.js'][450] = 0;
_$jscoverage['mongoose/document.js'][451] = 0;
_$jscoverage['mongoose/document.js'][460] = 0;
_$jscoverage['mongoose/document.js'][461] = 0;
_$jscoverage['mongoose/document.js'][470] = 0;
_$jscoverage['mongoose/document.js'][471] = 0;
_$jscoverage['mongoose/document.js'][472] = 0;
_$jscoverage['mongoose/document.js'][473] = 0;
_$jscoverage['mongoose/document.js'][474] = 0;
_$jscoverage['mongoose/document.js'][475] = 0;
_$jscoverage['mongoose/document.js'][479] = 0;
_$jscoverage['mongoose/document.js'][480] = 0;
_$jscoverage['mongoose/document.js'][492] = 0;
_$jscoverage['mongoose/document.js'][493] = 0;
_$jscoverage['mongoose/document.js'][494] = 0;
_$jscoverage['mongoose/document.js'][503] = 0;
_$jscoverage['mongoose/document.js'][504] = 0;
_$jscoverage['mongoose/document.js'][505] = 0;
_$jscoverage['mongoose/document.js'][476] = 0;
_$jscoverage['mongoose/document.js'][478] = 0;
_$jscoverage['mongoose/document.js'][482] = 0;
_$jscoverage['mongoose/document.js'][483] = 0;
_$jscoverage['mongoose/document.js'][495] = 0;
_$jscoverage['mongoose/document.js'][496] = 0;
_$jscoverage['mongoose/document.js'][497] = 0;
_$jscoverage['mongoose/document.js'][506] = 0;
_$jscoverage['mongoose/document.js'][507] = 0;
_$jscoverage['mongoose/document.js'][518] = 0;
_$jscoverage['mongoose/document.js'][519] = 0;
_$jscoverage['mongoose/document.js'][529] = 0;
_$jscoverage['mongoose/document.js'][530] = 0;
_$jscoverage['mongoose/document.js'][540] = 0;
_$jscoverage['mongoose/document.js'][508] = 0;
_$jscoverage['mongoose/document.js'][509] = 0;
_$jscoverage['mongoose/document.js'][510] = 0;
_$jscoverage['mongoose/document.js'][521] = 0;
_$jscoverage['mongoose/document.js'][522] = 0;
_$jscoverage['mongoose/document.js'][532] = 0;
_$jscoverage['mongoose/document.js'][533] = 0;
_$jscoverage['mongoose/document.js'][542] = 0;
_$jscoverage['mongoose/document.js'][543] = 0;
_$jscoverage['mongoose/document.js'][544] = 0;
_$jscoverage['mongoose/document.js'][545] = 0;
_$jscoverage['mongoose/document.js'][546] = 0;
_$jscoverage['mongoose/document.js'][549] = 0;
_$jscoverage['mongoose/document.js'][550] = 0;
_$jscoverage['mongoose/document.js'][551] = 0;
_$jscoverage['mongoose/document.js'][552] = 0;
_$jscoverage['mongoose/document.js'][554] = 0;
_$jscoverage['mongoose/document.js'][553] = 0;
_$jscoverage['mongoose/document.js'][555] = 0;
_$jscoverage['mongoose/document.js'][556] = 0;
_$jscoverage['mongoose/document.js'][557] = 0;
_$jscoverage['mongoose/document.js'][558] = 0;
_$jscoverage['mongoose/document.js'][559] = 0;
_$jscoverage['mongoose/document.js'][560] = 0;
_$jscoverage['mongoose/document.js'][562] = 0;
_$jscoverage['mongoose/document.js'][563] = 0;
_$jscoverage['mongoose/document.js'][564] = 0;
_$jscoverage['mongoose/document.js'][565] = 0;
_$jscoverage['mongoose/document.js'][567] = 0;
_$jscoverage['mongoose/document.js'][571] = 0;
_$jscoverage['mongoose/document.js'][568] = 0;
_$jscoverage['mongoose/document.js'][570] = 0;
_$jscoverage['mongoose/document.js'][572] = 0;
_$jscoverage['mongoose/document.js'][573] = 0;
_$jscoverage['mongoose/document.js'][574] = 0;
_$jscoverage['mongoose/document.js'][575] = 0;
_$jscoverage['mongoose/document.js'][576] = 0;
_$jscoverage['mongoose/document.js'][578] = 0;
_$jscoverage['mongoose/document.js'][579] = 0;
_$jscoverage['mongoose/document.js'][581] = 0;
_$jscoverage['mongoose/document.js'][582] = 0;
_$jscoverage['mongoose/document.js'][583] = 0;
_$jscoverage['mongoose/document.js'][580] = 0;
_$jscoverage['mongoose/document.js'][584] = 0;
_$jscoverage['mongoose/document.js'][586] = 0;
_$jscoverage['mongoose/document.js'][587] = 0;
_$jscoverage['mongoose/document.js'][588] = 0;
_$jscoverage['mongoose/document.js'][589] = 0;
_$jscoverage['mongoose/document.js'][590] = 0;
_$jscoverage['mongoose/document.js'][591] = 0;
_$jscoverage['mongoose/document.js'][592] = 0;
_$jscoverage['mongoose/document.js'][593] = 0;
_$jscoverage['mongoose/document.js'][594] = 0;
_$jscoverage['mongoose/document.js'][595] = 0;
_$jscoverage['mongoose/document.js'][596] = 0;
_$jscoverage['mongoose/document.js'][597] = 0;
_$jscoverage['mongoose/document.js'][600] = 0;
_$jscoverage['mongoose/document.js'][611] = 0;
_$jscoverage['mongoose/document.js'][619] = 0;
_$jscoverage['mongoose/document.js'][620] = 0;
_$jscoverage['mongoose/document.js'][621] = 0;
_$jscoverage['mongoose/document.js'][622] = 0;
_$jscoverage['mongoose/document.js'][623] = 0;
_$jscoverage['mongoose/document.js'][629] = 0;
_$jscoverage['mongoose/document.js'][631] = 0;
_$jscoverage['mongoose/document.js'][601] = 0;
_$jscoverage['mongoose/document.js'][602] = 0;
_$jscoverage['mongoose/document.js'][603] = 0;
_$jscoverage['mongoose/document.js'][604] = 0;
_$jscoverage['mongoose/document.js'][605] = 0;
_$jscoverage['mongoose/document.js'][606] = 0;
_$jscoverage['mongoose/document.js'][607] = 0;
_$jscoverage['mongoose/document.js'][609] = 0;
_$jscoverage['mongoose/document.js'][613] = 0;
_$jscoverage['mongoose/document.js'][624] = 0;
_$jscoverage['mongoose/document.js'][632] = 0;
_$jscoverage['mongoose/document.js'][633] = 0;
_$jscoverage['mongoose/document.js'][634] = 0;
_$jscoverage['mongoose/document.js'][635] = 0;
_$jscoverage['mongoose/document.js'][636] = 0;
_$jscoverage['mongoose/document.js'][642] = 0;
_$jscoverage['mongoose/document.js'][644] = 0;
}

@@ -343,32 +347,37 @@ _$jscoverage['mongoose/document.js'][6]++;

_$jscoverage['mongoose/document.js'][136]++;
this.emit("init");
_$jscoverage['mongoose/document.js'][138]++;
return this;
});
_$jscoverage['mongoose/document.js'][147]++;
_$jscoverage['mongoose/document.js'][149]++;
Document.prototype.pre = (function (method, fn) {
_$jscoverage['mongoose/document.js'][148]++;
_$jscoverage['mongoose/document.js'][150]++;
if (! (method in this.pres)) {
_$jscoverage['mongoose/document.js'][149]++;
_$jscoverage['mongoose/document.js'][151]++;
this.pres[method] = {serial: [], parallel: []};
}
_$jscoverage['mongoose/document.js'][153]++;
_$jscoverage['mongoose/document.js'][155]++;
this.pres[method][fn.length == 1? "serial": "parallel"].push(fn);
_$jscoverage['mongoose/document.js'][154]++;
_$jscoverage['mongoose/document.js'][156]++;
return this;
});
_$jscoverage['mongoose/document.js'][180]++;
_$jscoverage['mongoose/document.js'][182]++;
Document.prototype.set = (function (path, val) {
_$jscoverage['mongoose/document.js'][181]++;
_$jscoverage['mongoose/document.js'][183]++;
if (typeof path != "string") {
_$jscoverage['mongoose/document.js'][182]++;
_$jscoverage['mongoose/document.js'][184]++;
var prefix = val? val + ".": "";
_$jscoverage['mongoose/document.js'][183]++;
_$jscoverage['mongoose/document.js'][185]++;
for (var i in path) {
_$jscoverage['mongoose/document.js'][184]++;
if (! (this.schema.path(prefix + i) instanceof MixedSchema) && path[i] !== null && path[i].constructor == Object) {
_$jscoverage['mongoose/document.js'][187]++;
_$jscoverage['mongoose/document.js'][186]++;
if (! (this.schema.path(prefix + i) instanceof MixedSchema) && "undefined" !== typeof path[i] && path[i] !== null && path[i].constructor == Object) {
_$jscoverage['mongoose/document.js'][190]++;
this.set(path[i], prefix + i);
}
else {
_$jscoverage['mongoose/document.js'][189]++;
this.set(prefix + i, path[i]);
_$jscoverage['mongoose/document.js'][191]++;
if ("undefined" !== typeof path[i]) {
_$jscoverage['mongoose/document.js'][192]++;
this.set(prefix + i, path[i]);
}
}

@@ -378,29 +387,29 @@ }

else {
_$jscoverage['mongoose/document.js'][194]++;
_$jscoverage['mongoose/document.js'][197]++;
var schema = this.schema.path(path), parts = path.split("."), obj = this.doc, self = this;
_$jscoverage['mongoose/document.js'][199]++;
_$jscoverage['mongoose/document.js'][202]++;
if (this.schema.pathType(path) === "virtual") {
_$jscoverage['mongoose/document.js'][200]++;
_$jscoverage['mongoose/document.js'][203]++;
schema = this.schema.virtualpath(path);
_$jscoverage['mongoose/document.js'][201]++;
_$jscoverage['mongoose/document.js'][204]++;
schema.applySetters(val, this);
_$jscoverage['mongoose/document.js'][202]++;
_$jscoverage['mongoose/document.js'][205]++;
return this;
}
_$jscoverage['mongoose/document.js'][205]++;
_$jscoverage['mongoose/document.js'][208]++;
this.activePaths.modify(path);
_$jscoverage['mongoose/document.js'][207]++;
_$jscoverage['mongoose/document.js'][210]++;
if ((! schema || val === null || val === undefined) || this["try"]((function () {
_$jscoverage['mongoose/document.js'][209]++;
_$jscoverage['mongoose/document.js'][212]++;
val = schema.applySetters(schema.cast(val, self), self);
}))) {
_$jscoverage['mongoose/document.js'][212]++;
_$jscoverage['mongoose/document.js'][215]++;
for (var i = 0, l = parts.length; i < l; i++) {
_$jscoverage['mongoose/document.js'][213]++;
_$jscoverage['mongoose/document.js'][216]++;
if (i + 1 == l) {
_$jscoverage['mongoose/document.js'][214]++;
_$jscoverage['mongoose/document.js'][217]++;
obj[parts[i]] = val;
}
else {
_$jscoverage['mongoose/document.js'][216]++;
_$jscoverage['mongoose/document.js'][219]++;
obj = obj[parts[i]];

@@ -411,195 +420,195 @@ }

}
_$jscoverage['mongoose/document.js'][222]++;
_$jscoverage['mongoose/document.js'][225]++;
return this;
});
_$jscoverage['mongoose/document.js'][225]++;
_$jscoverage['mongoose/document.js'][228]++;
Document.prototype._markModified = (function (path) {
_$jscoverage['mongoose/document.js'][226]++;
_$jscoverage['mongoose/document.js'][229]++;
this.activePaths.modify(path);
});
_$jscoverage['mongoose/document.js'][236]++;
_$jscoverage['mongoose/document.js'][239]++;
Document.prototype.getValue = (function (path) {
_$jscoverage['mongoose/document.js'][237]++;
_$jscoverage['mongoose/document.js'][240]++;
var parts = path.split("."), obj = this.doc;
_$jscoverage['mongoose/document.js'][240]++;
_$jscoverage['mongoose/document.js'][243]++;
for (var i = 0, l = parts.length; i < l - 1; i++) {
_$jscoverage['mongoose/document.js'][241]++;
_$jscoverage['mongoose/document.js'][244]++;
obj = obj[parts[i]];
_$jscoverage['mongoose/document.js'][242]++;
_$jscoverage['mongoose/document.js'][245]++;
if (! obj) {
_$jscoverage['mongoose/document.js'][242]++;
_$jscoverage['mongoose/document.js'][245]++;
return obj;
}
}
_$jscoverage['mongoose/document.js'][244]++;
_$jscoverage['mongoose/document.js'][247]++;
return obj[parts[l - 1]];
});
_$jscoverage['mongoose/document.js'][255]++;
_$jscoverage['mongoose/document.js'][258]++;
Document.prototype.setValue = (function (path, val) {
_$jscoverage['mongoose/document.js'][256]++;
_$jscoverage['mongoose/document.js'][259]++;
var parts = path.split("."), obj = this.doc;
_$jscoverage['mongoose/document.js'][259]++;
_$jscoverage['mongoose/document.js'][262]++;
for (var i = 0, l = parts.length; i < l - 1; i++) {
_$jscoverage['mongoose/document.js'][259]++;
_$jscoverage['mongoose/document.js'][262]++;
obj = obj[parts[i]];
}
_$jscoverage['mongoose/document.js'][260]++;
_$jscoverage['mongoose/document.js'][263]++;
obj[parts[l - 1]] = val;
_$jscoverage['mongoose/document.js'][262]++;
_$jscoverage['mongoose/document.js'][265]++;
return this;
});
_$jscoverage['mongoose/document.js'][272]++;
_$jscoverage['mongoose/document.js'][275]++;
Document.prototype.doCast = (function (path) {
_$jscoverage['mongoose/document.js'][273]++;
_$jscoverage['mongoose/document.js'][276]++;
var schema = this.schema.path(path);
_$jscoverage['mongoose/document.js'][274]++;
_$jscoverage['mongoose/document.js'][277]++;
if (schema) {
_$jscoverage['mongoose/document.js'][275]++;
_$jscoverage['mongoose/document.js'][278]++;
this.setValue(path, this.getValue(path));
}
});
_$jscoverage['mongoose/document.js'][285]++;
_$jscoverage['mongoose/document.js'][288]++;
Document.prototype.get = (function (path) {
_$jscoverage['mongoose/document.js'][286]++;
_$jscoverage['mongoose/document.js'][289]++;
var obj, schema = this.schema.path(path) || this.schema.virtualpath(path), pieces = path.split(".");
_$jscoverage['mongoose/document.js'][290]++;
_$jscoverage['mongoose/document.js'][293]++;
obj = this.doc;
_$jscoverage['mongoose/document.js'][291]++;
_$jscoverage['mongoose/document.js'][294]++;
for (var i = 0, l = pieces.length; i < l; i++) {
_$jscoverage['mongoose/document.js'][292]++;
_$jscoverage['mongoose/document.js'][295]++;
obj = obj[pieces[i]];
}
_$jscoverage['mongoose/document.js'][294]++;
_$jscoverage['mongoose/document.js'][297]++;
if (schema) {
_$jscoverage['mongoose/document.js'][295]++;
_$jscoverage['mongoose/document.js'][298]++;
obj = schema.applyGetters(obj, this);
}
_$jscoverage['mongoose/document.js'][298]++;
_$jscoverage['mongoose/document.js'][301]++;
return obj;
});
_$jscoverage['mongoose/document.js'][307]++;
_$jscoverage['mongoose/document.js'][310]++;
Document.prototype.commit = (function (path) {
_$jscoverage['mongoose/document.js'][309]++;
_$jscoverage['mongoose/document.js'][312]++;
this.activePaths.modify(path);
});
_$jscoverage['mongoose/document.js'][319]++;
_$jscoverage['mongoose/document.js'][322]++;
Document.prototype["try"] = (function (fn, scope) {
_$jscoverage['mongoose/document.js'][320]++;
_$jscoverage['mongoose/document.js'][323]++;
var res;
_$jscoverage['mongoose/document.js'][321]++;
_$jscoverage['mongoose/document.js'][324]++;
try {
_$jscoverage['mongoose/document.js'][322]++;
_$jscoverage['mongoose/document.js'][325]++;
fn.call(scope);
_$jscoverage['mongoose/document.js'][323]++;
_$jscoverage['mongoose/document.js'][326]++;
res = true;
}
catch (e) {
_$jscoverage['mongoose/document.js'][325]++;
_$jscoverage['mongoose/document.js'][328]++;
this.error(e);
_$jscoverage['mongoose/document.js'][326]++;
_$jscoverage['mongoose/document.js'][329]++;
res = false;
}
_$jscoverage['mongoose/document.js'][327]++;
_$jscoverage['mongoose/document.js'][330]++;
;
_$jscoverage['mongoose/document.js'][328]++;
_$jscoverage['mongoose/document.js'][331]++;
return res;
});
_$jscoverage['mongoose/document.js'][337]++;
_$jscoverage['mongoose/document.js'][340]++;
Document.prototype.isModified = (function (path) {
_$jscoverage['mongoose/document.js'][338]++;
_$jscoverage['mongoose/document.js'][341]++;
return (path in this.activePaths.states.modify);
});
_$jscoverage['mongoose/document.js'][347]++;
_$jscoverage['mongoose/document.js'][350]++;
Document.prototype.isInit = (function (path) {
_$jscoverage['mongoose/document.js'][348]++;
_$jscoverage['mongoose/document.js'][351]++;
return (path in this.activePaths.states.init);
});
_$jscoverage['mongoose/document.js'][358]++;
_$jscoverage['mongoose/document.js'][361]++;
Document.prototype.validate = (function (next) {
_$jscoverage['mongoose/document.js'][359]++;
_$jscoverage['mongoose/document.js'][362]++;
var total = 0, self = this, validating = {}, didErr = false;
_$jscoverage['mongoose/document.js'][364]++;
_$jscoverage['mongoose/document.js'][367]++;
if (! this.activePaths.some("init", "modify")) {
_$jscoverage['mongoose/document.js'][364]++;
_$jscoverage['mongoose/document.js'][367]++;
return next();
}
_$jscoverage['mongoose/document.js'][366]++;
_$jscoverage['mongoose/document.js'][369]++;
function validatePath(path) {
_$jscoverage['mongoose/document.js'][367]++;
_$jscoverage['mongoose/document.js'][370]++;
if (validating[path]) {
_$jscoverage['mongoose/document.js'][367]++;
_$jscoverage['mongoose/document.js'][370]++;
return;
}
_$jscoverage['mongoose/document.js'][368]++;
_$jscoverage['mongoose/document.js'][371]++;
total++;
_$jscoverage['mongoose/document.js'][369]++;
_$jscoverage['mongoose/document.js'][372]++;
process.nextTick((function () {
_$jscoverage['mongoose/document.js'][370]++;
_$jscoverage['mongoose/document.js'][373]++;
self.schema.path(path).doValidate(self.getValue(path), (function (err) {
_$jscoverage['mongoose/document.js'][371]++;
_$jscoverage['mongoose/document.js'][374]++;
if (err) {
_$jscoverage['mongoose/document.js'][372]++;
_$jscoverage['mongoose/document.js'][375]++;
didErr = true;
_$jscoverage['mongoose/document.js'][373]++;
_$jscoverage['mongoose/document.js'][376]++;
return next(err);
}
_$jscoverage['mongoose/document.js'][375]++;
_$jscoverage['mongoose/document.js'][378]++;
--total || next();
}), self);
}));
_$jscoverage['mongoose/document.js'][378]++;
_$jscoverage['mongoose/document.js'][381]++;
validating[path] = true;
}
_$jscoverage['mongoose/document.js'][381]++;
_$jscoverage['mongoose/document.js'][384]++;
this.activePaths.forEach("init", "modify", (function (path) {
_$jscoverage['mongoose/document.js'][382]++;
_$jscoverage['mongoose/document.js'][385]++;
if (! didErr) {
_$jscoverage['mongoose/document.js'][382]++;
_$jscoverage['mongoose/document.js'][385]++;
validatePath(path);
}
}));
_$jscoverage['mongoose/document.js'][385]++;
_$jscoverage['mongoose/document.js'][388]++;
return this;
});
_$jscoverage['mongoose/document.js'][395]++;
_$jscoverage['mongoose/document.js'][398]++;
Document.prototype.__defineGetter__("modified", (function () {
_$jscoverage['mongoose/document.js'][396]++;
_$jscoverage['mongoose/document.js'][399]++;
return this.activePaths.some("modified");
}));
_$jscoverage['mongoose/document.js'][405]++;
_$jscoverage['mongoose/document.js'][408]++;
function compile(tree, proto, prefix) {
_$jscoverage['mongoose/document.js'][406]++;
_$jscoverage['mongoose/document.js'][409]++;
for (var i in tree) {
_$jscoverage['mongoose/document.js'][407]++;
_$jscoverage['mongoose/document.js'][410]++;
define(i, ((tree[i].constructor == Object && Object.keys(tree[i]).length) && (! tree[i].type || tree[i].__nested)? tree[i]: null), proto, prefix);
}
}
_$jscoverage['mongoose/document.js'][414]++;
_$jscoverage['mongoose/document.js'][417]++;
;
_$jscoverage['mongoose/document.js'][416]++;
_$jscoverage['mongoose/document.js'][419]++;
function define(prop, subprops, prototype, prefix) {
_$jscoverage['mongoose/document.js'][417]++;
_$jscoverage['mongoose/document.js'][420]++;
var prefix = prefix || "", path = (prefix? prefix + ".": "") + prop;
_$jscoverage['mongoose/document.js'][420]++;
_$jscoverage['mongoose/document.js'][423]++;
if (subprops) {
_$jscoverage['mongoose/document.js'][422]++;
_$jscoverage['mongoose/document.js'][425]++;
prototype.__defineGetter__(prop, (function () {
_$jscoverage['mongoose/document.js'][423]++;
_$jscoverage['mongoose/document.js'][426]++;
if (! this.__getters) {
_$jscoverage['mongoose/document.js'][424]++;
_$jscoverage['mongoose/document.js'][427]++;
this.__getters = {};
}
_$jscoverage['mongoose/document.js'][426]++;
_$jscoverage['mongoose/document.js'][429]++;
if (! this.__getters[path]) {
_$jscoverage['mongoose/document.js'][427]++;
_$jscoverage['mongoose/document.js'][430]++;
var nested = (function () {
});
_$jscoverage['mongoose/document.js'][428]++;
_$jscoverage['mongoose/document.js'][431]++;
nested.prototype = this;
_$jscoverage['mongoose/document.js'][429]++;
_$jscoverage['mongoose/document.js'][432]++;
compile(subprops, nested.prototype, path);
_$jscoverage['mongoose/document.js'][430]++;
_$jscoverage['mongoose/document.js'][433]++;
this.__getters[path] = new nested();
}
_$jscoverage['mongoose/document.js'][433]++;
_$jscoverage['mongoose/document.js'][436]++;
return this.__getters[path];

@@ -609,10 +618,10 @@ }));

else {
_$jscoverage['mongoose/document.js'][436]++;
_$jscoverage['mongoose/document.js'][439]++;
prototype.__defineGetter__(prop, (function () {
_$jscoverage['mongoose/document.js'][437]++;
_$jscoverage['mongoose/document.js'][440]++;
return this.get(path);
}));
_$jscoverage['mongoose/document.js'][440]++;
_$jscoverage['mongoose/document.js'][443]++;
prototype.__defineSetter__(prop, (function (v) {
_$jscoverage['mongoose/document.js'][441]++;
_$jscoverage['mongoose/document.js'][444]++;
return this.set(path, v);

@@ -622,181 +631,186 @@ }));

}
_$jscoverage['mongoose/document.js'][444]++;
_$jscoverage['mongoose/document.js'][447]++;
;
_$jscoverage['mongoose/document.js'][446]++;
_$jscoverage['mongoose/document.js'][449]++;
Document.prototype.__defineSetter__("schema", (function (schema) {
_$jscoverage['mongoose/document.js'][447]++;
_$jscoverage['mongoose/document.js'][450]++;
compile(schema.tree, this);
_$jscoverage['mongoose/document.js'][448]++;
_$jscoverage['mongoose/document.js'][451]++;
this._schema = schema;
}));
_$jscoverage['mongoose/document.js'][457]++;
_$jscoverage['mongoose/document.js'][460]++;
Document.prototype.__defineGetter__("schema", (function () {
_$jscoverage['mongoose/document.js'][458]++;
_$jscoverage['mongoose/document.js'][461]++;
return this._schema;
}));
_$jscoverage['mongoose/document.js'][467]++;
_$jscoverage['mongoose/document.js'][470]++;
Document.prototype.registerHooks = (function () {
_$jscoverage['mongoose/document.js'][468]++;
_$jscoverage['mongoose/document.js'][471]++;
var self = this;
_$jscoverage['mongoose/document.js'][470]++;
_$jscoverage['mongoose/document.js'][473]++;
this.pre("save", (function checkForExistingErrors(next) {
_$jscoverage['mongoose/document.js'][471]++;
_$jscoverage['mongoose/document.js'][474]++;
if (self.saveError) {
_$jscoverage['mongoose/document.js'][472]++;
_$jscoverage['mongoose/document.js'][475]++;
next(self.saveError);
_$jscoverage['mongoose/document.js'][473]++;
_$jscoverage['mongoose/document.js'][476]++;
self.saveError = null;
}
else {
_$jscoverage['mongoose/document.js'][475]++;
_$jscoverage['mongoose/document.js'][478]++;
next();
}
}));
_$jscoverage['mongoose/document.js'][479]++;
_$jscoverage['mongoose/document.js'][482]++;
this.pre("save", (function validation(next) {
_$jscoverage['mongoose/document.js'][480]++;
_$jscoverage['mongoose/document.js'][483]++;
return self.validate.call(self, next);
}));
});
_$jscoverage['mongoose/document.js'][492]++;
_$jscoverage['mongoose/document.js'][495]++;
Document.prototype.error = (function (err) {
_$jscoverage['mongoose/document.js'][493]++;
_$jscoverage['mongoose/document.js'][496]++;
this.saveError = err;
_$jscoverage['mongoose/document.js'][494]++;
_$jscoverage['mongoose/document.js'][497]++;
return this;
});
_$jscoverage['mongoose/document.js'][503]++;
_$jscoverage['mongoose/document.js'][506]++;
Document.prototype.doQueue = (function () {
_$jscoverage['mongoose/document.js'][504]++;
_$jscoverage['mongoose/document.js'][507]++;
if (this.schema && this.schema.callQueue) {
_$jscoverage['mongoose/document.js'][505]++;
_$jscoverage['mongoose/document.js'][508]++;
for (var i = 0, l = this.schema.callQueue.length; i < l; i++) {
_$jscoverage['mongoose/document.js'][506]++;
_$jscoverage['mongoose/document.js'][509]++;
this[this.schema.callQueue[i][0]].apply(this, this.schema.callQueue[i][1]);
}
}
_$jscoverage['mongoose/document.js'][507]++;
_$jscoverage['mongoose/document.js'][510]++;
return this;
});
_$jscoverage['mongoose/document.js'][518]++;
_$jscoverage['mongoose/document.js'][521]++;
Document.prototype.toObject = (function () {
_$jscoverage['mongoose/document.js'][519]++;
_$jscoverage['mongoose/document.js'][522]++;
return clone(this.doc);
});
_$jscoverage['mongoose/document.js'][529]++;
_$jscoverage['mongoose/document.js'][532]++;
Document.prototype.toJSON = (function () {
_$jscoverage['mongoose/document.js'][530]++;
_$jscoverage['mongoose/document.js'][533]++;
return JSON.stringify(this.toObject());
});
_$jscoverage['mongoose/document.js'][540]++;
_$jscoverage['mongoose/document.js'][542]++;
Document.prototype.equals = (function (doc) {
_$jscoverage['mongoose/document.js'][543]++;
return this.get("_id") === doc.get("_id");
});
_$jscoverage['mongoose/document.js'][553]++;
function noop() {
}
_$jscoverage['mongoose/document.js'][540]++;
_$jscoverage['mongoose/document.js'][553]++;
;
_$jscoverage['mongoose/document.js'][542]++;
_$jscoverage['mongoose/document.js'][555]++;
Document.registerHooks = (function () {
_$jscoverage['mongoose/document.js'][543]++;
_$jscoverage['mongoose/document.js'][556]++;
for (var i = 0, l = arguments.length; i < l; i++) {
_$jscoverage['mongoose/document.js'][544]++;
_$jscoverage['mongoose/document.js'][557]++;
this.prototype[arguments[i]] = (function (methodName, oldFn) {
_$jscoverage['mongoose/document.js'][545]++;
_$jscoverage['mongoose/document.js'][558]++;
return (function () {
_$jscoverage['mongoose/document.js'][546]++;
_$jscoverage['mongoose/document.js'][559]++;
var self = this, args = arguments;
_$jscoverage['mongoose/document.js'][549]++;
_$jscoverage['mongoose/document.js'][562]++;
function error(err) {
_$jscoverage['mongoose/document.js'][550]++;
_$jscoverage['mongoose/document.js'][563]++;
var lastArg = args[args.length - 1];
_$jscoverage['mongoose/document.js'][551]++;
_$jscoverage['mongoose/document.js'][564]++;
if (typeof lastArg == "function") {
_$jscoverage['mongoose/document.js'][552]++;
_$jscoverage['mongoose/document.js'][565]++;
lastArg.call(self, err);
}
}
_$jscoverage['mongoose/document.js'][554]++;
_$jscoverage['mongoose/document.js'][567]++;
var pres = this.pres[methodName];
_$jscoverage['mongoose/document.js'][555]++;
_$jscoverage['mongoose/document.js'][568]++;
if (! pres) {
_$jscoverage['mongoose/document.js'][555]++;
_$jscoverage['mongoose/document.js'][568]++;
return oldFn.apply(this, args);
}
_$jscoverage['mongoose/document.js'][557]++;
_$jscoverage['mongoose/document.js'][570]++;
var pres = this.pres[methodName], chain = pres.serial.map((function (fn, i) {
_$jscoverage['mongoose/document.js'][559]++;
_$jscoverage['mongoose/document.js'][572]++;
return (function (err) {
_$jscoverage['mongoose/document.js'][560]++;
_$jscoverage['mongoose/document.js'][573]++;
if (arguments.callee._hookCalled) {
_$jscoverage['mongoose/document.js'][560]++;
_$jscoverage['mongoose/document.js'][573]++;
return;
}
_$jscoverage['mongoose/document.js'][562]++;
_$jscoverage['mongoose/document.js'][575]++;
if (err instanceof Error) {
_$jscoverage['mongoose/document.js'][563]++;
_$jscoverage['mongoose/document.js'][576]++;
error(err);
}
else {
_$jscoverage['mongoose/document.js'][565]++;
_$jscoverage['mongoose/document.js'][578]++;
fn.call(self, chain[i + 1] || parallel);
}
_$jscoverage['mongoose/document.js'][567]++;
_$jscoverage['mongoose/document.js'][580]++;
arguments.callee._hookCalled = true;
});
}));
_$jscoverage['mongoose/document.js'][571]++;
_$jscoverage['mongoose/document.js'][584]++;
chain.length? chain[0](): parallel();
_$jscoverage['mongoose/document.js'][573]++;
_$jscoverage['mongoose/document.js'][586]++;
function parallel(err) {
_$jscoverage['mongoose/document.js'][574]++;
_$jscoverage['mongoose/document.js'][587]++;
if (err instanceof Error) {
_$jscoverage['mongoose/document.js'][575]++;
_$jscoverage['mongoose/document.js'][588]++;
return error(err);
}
_$jscoverage['mongoose/document.js'][578]++;
_$jscoverage['mongoose/document.js'][591]++;
var complete = pres.parallel.length;
_$jscoverage['mongoose/document.js'][579]++;
_$jscoverage['mongoose/document.js'][592]++;
if (! complete) {
_$jscoverage['mongoose/document.js'][579]++;
_$jscoverage['mongoose/document.js'][592]++;
return oldFn.apply(self, args);
}
_$jscoverage['mongoose/document.js'][581]++;
_$jscoverage['mongoose/document.js'][594]++;
function done(err) {
_$jscoverage['mongoose/document.js'][582]++;
_$jscoverage['mongoose/document.js'][595]++;
if (err instanceof Error) {
_$jscoverage['mongoose/document.js'][583]++;
_$jscoverage['mongoose/document.js'][596]++;
return error(err);
}
_$jscoverage['mongoose/document.js'][584]++;
_$jscoverage['mongoose/document.js'][597]++;
--complete || oldFn.apply(self, args);
}
_$jscoverage['mongoose/document.js'][587]++;
_$jscoverage['mongoose/document.js'][600]++;
var chain = pres.parallel.map((function (fn, i) {
_$jscoverage['mongoose/document.js'][588]++;
_$jscoverage['mongoose/document.js'][601]++;
return (function (err) {
_$jscoverage['mongoose/document.js'][589]++;
_$jscoverage['mongoose/document.js'][602]++;
if (arguments.callee._hookCalled) {
_$jscoverage['mongoose/document.js'][589]++;
_$jscoverage['mongoose/document.js'][602]++;
return;
}
_$jscoverage['mongoose/document.js'][590]++;
_$jscoverage['mongoose/document.js'][603]++;
if (err) {
_$jscoverage['mongoose/document.js'][590]++;
_$jscoverage['mongoose/document.js'][603]++;
return error(err);
}
_$jscoverage['mongoose/document.js'][591]++;
_$jscoverage['mongoose/document.js'][604]++;
fn.call(self, chain[i + 1] || noop, (function (err) {
_$jscoverage['mongoose/document.js'][592]++;
_$jscoverage['mongoose/document.js'][605]++;
if (arguments.callee._hookCalled) {
_$jscoverage['mongoose/document.js'][592]++;
_$jscoverage['mongoose/document.js'][605]++;
return;
}
_$jscoverage['mongoose/document.js'][593]++;
_$jscoverage['mongoose/document.js'][606]++;
done(err);
_$jscoverage['mongoose/document.js'][594]++;
_$jscoverage['mongoose/document.js'][607]++;
arguments.callee._hookCalled = true;
}));
_$jscoverage['mongoose/document.js'][596]++;
_$jscoverage['mongoose/document.js'][609]++;
arguments.callee._hookCalled = true;
});
}));
_$jscoverage['mongoose/document.js'][600]++;
_$jscoverage['mongoose/document.js'][613]++;
chain[0]();

@@ -808,19 +822,19 @@ }

});
_$jscoverage['mongoose/document.js'][611]++;
_$jscoverage['mongoose/document.js'][624]++;
module.exports = Document;
_$jscoverage['mongoose/document.js'][619]++;
_$jscoverage['mongoose/document.js'][632]++;
function DocumentError() {
_$jscoverage['mongoose/document.js'][620]++;
_$jscoverage['mongoose/document.js'][633]++;
MongooseError.call(this, msg);
_$jscoverage['mongoose/document.js'][621]++;
_$jscoverage['mongoose/document.js'][634]++;
MongooseError.captureStackTrace(this, arguments.callee);
_$jscoverage['mongoose/document.js'][622]++;
_$jscoverage['mongoose/document.js'][635]++;
this.name = "DocumentError";
}
_$jscoverage['mongoose/document.js'][623]++;
_$jscoverage['mongoose/document.js'][636]++;
;
_$jscoverage['mongoose/document.js'][629]++;
_$jscoverage['mongoose/document.js'][642]++;
DocumentError.prototype.__proto__ = MongooseError.prototype;
_$jscoverage['mongoose/document.js'][631]++;
_$jscoverage['mongoose/document.js'][644]++;
exports.Error = DocumentError;
_$jscoverage['mongoose/document.js'].source = ["","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , MongooseError = require('./error')"," , Schema = require('./schema')"," , SchemaType = require('./schematype')"," , VirtualType = require('./virtualtype')"," , ArrayType = require('./types/array')"," , MixedSchema = require('./schema/mixed')"," , DocumentArraySchema = require('./schema/documentarray')"," , utils = require('./utils')"," , clone = utils.clone"," , ActiveRoster = utils.StateMachine.ctor('require', 'modify', 'init');","","/**"," * Document constructor."," *"," * @param {Object} values to set"," * @api private"," */","","function Document (obj) {"," this.doc = this.buildDoc();"," this.activePaths = new ActiveRoster();"," this.saveError = null;"," if (obj) this.set(obj);"," this.pres = {};"," this.registerHooks();"," this.doQueue();"," this.isNew = true;","};","","/**"," * Inherit from EventEmitter."," */","","Document.prototype.__proto__ = EventEmitter.prototype;","","/**"," * Base Mongoose instance for the model. Set by the Mongoose instance upon"," * pre-compilation."," *"," * @api public"," */","","Document.prototype.base;","","/**"," * Document schema as a nested structure."," *"," * @api public"," */","","Document.prototype.schema;","","/**"," * Whether the document is new."," *"," * @api public"," */","","Document.prototype.isNew;","","/**"," * Builds the default doc structure"," *"," * @api private"," */","","Document.prototype.buildDoc = function () {"," var doc = {}"," , self = this;",""," this.schema.eachPath( function (i, type) {"," var path = i.split('.')"," , len = path.length;",""," path.reduce( function (ref, piece, i) {"," if (i === len-1)"," ref[piece] = type.getDefault(self);"," else"," return ref[piece] || (ref[piece] = {});"," }, doc);"," });",""," return doc;","};","","/**"," * Inits (hydrates) the document."," *"," * @param {Object} document returned by mongo"," * @api private"," */","","Document.prototype.init = function (doc, fn) {"," var self = this;"," this.isNew = false;",""," function init (obj, doc, prefix) {"," prefix = prefix || '';",""," for (var i in obj){"," var path = prefix + i"," , schema = self.schema.path(path);",""," if (!schema &amp;&amp; obj[i].constructor == Object){ // assume nested object"," doc[i] = {};"," init(obj[i], doc[i], path + '.');"," } else {"," if (obj[i] !== null &amp;&amp; obj[i] !== undefined) {"," var schema = self.schema.path(path);",""," if (schema)"," self.try(function(){"," doc[i] = schema.cast(obj[i], self);"," });"," else"," doc[i] = obj[i];"," }",""," // mark as hydrated"," self.activePaths.init(path);"," }"," }"," };",""," init(doc, self.doc);",""," if (fn)"," fn(null);",""," return this;","};","","/**"," * Registers a middleware that is executed before a method."," *"," * @param {String} method name"," * @param {Function} callback"," * @api public"," */","","Document.prototype.pre = function (method, fn) {"," if (!(method in this.pres))"," this.pres[method] = {"," serial: []"," , parallel: []"," };"," this.pres[method][fn.length == 1 ? 'serial' : 'parallel'].push(fn);"," return this;","};","","/**"," * Sets a path, or many paths"," *"," * Examples:"," * // path, value"," * doc.set(path, value)"," *"," * // object"," * doc.set({"," * path : value"," * , path2 : {"," * path : value"," * }"," * }"," *"," * @param {String/Object} key path, or object"," * @param {Object} value, or undefined if first parameter is an object"," * @param {Boolean} whether to apply transformations: cast, setters (true) "," * @param {Boolean} whether to mark dirty (true)"," * @param {Boolean} whether this is an initialization"," * @api public"," */","","Document.prototype.set = function (path, val) {"," if (typeof path != 'string'){"," var prefix = val ? val + '.' : '';"," for (var i in path){"," if (!(this.schema.path(prefix + i) instanceof MixedSchema)"," &amp;&amp; path[i] !== null"," &amp;&amp; path[i].constructor == Object) {"," this.set(path[i], prefix + i);"," } else {"," this.set(prefix + i, path[i]);"," }"," }"," } else {"," // TODO: do actual checking to see if the value changed"," var schema = this.schema.path(path)"," , parts = path.split('.')"," , obj = this.doc"," , self = this;",""," if (this.schema.pathType(path) === 'virtual') {"," schema = this.schema.virtualpath(path);"," schema.applySetters(val, this);"," return this;"," }",""," this.activePaths.modify(path);",""," if ( (!schema || val === null || val === undefined) || "," this.try(function(){"," val = schema.applySetters(schema.cast(val, self), self);"," })"," ){"," for (var i = 0, l = parts.length; i &lt; l; i++){"," if (i + 1 == l)"," obj[parts[i]] = val;"," else {"," obj = obj[parts[i]];"," }"," }"," }"," }",""," return this;","};","","Document.prototype._markModified = function (path) {"," this.activePaths.modify(path);","};","","/**"," * Gets a raw value from a path (no getters)"," *"," * @param {String} path"," * @api private"," */","","Document.prototype.getValue = function (path) {"," var parts = path.split('.')"," , obj = this.doc;",""," for (var i = 0, l = parts.length; i &lt; l-1; i++) {"," obj = obj[parts[i]];"," if (!obj) return obj;"," }"," return obj[parts[l-1]];","};","","/**"," * Sets a raw value for a path (no casting, setters, transformations)"," *"," * @param {String} path"," * @param {Object} value"," * @api private"," */","","Document.prototype.setValue = function (path, val) {"," var parts = path.split('.')"," , obj = this.doc;",""," for (var i = 0, l = parts.length; i &lt; l-1; i++) obj = obj[parts[i]];"," obj[parts[l-1]] = val;",""," return this;","};","","/**"," * Triggers casting on a specific path"," *"," * @param {String} path"," * @api public"," */","","Document.prototype.doCast = function (path) {"," var schema = this.schema.path(path);"," if (schema)"," this.setValue(path, this.getValue(path));","};","","/**"," * Gets a path"," *"," * @param {String} key path"," * @api public"," */","","Document.prototype.get = function (path) {"," var obj"," , schema = this.schema.path(path) || this.schema.virtualpath(path)"," , pieces = path.split('.');",""," obj = this.doc;"," for (var i = 0, l = pieces.length; i &lt; l; i++)"," obj = obj[pieces[i]];"," "," if (schema)"," obj = schema.applyGetters(obj, this);"," // TODO Cache obj",""," return obj;","};","","/**"," * Commits a path, marking as modified if needed. Useful for mixed keys"," *"," * @api public"," */","","Document.prototype.commit = function (path) {"," // TODO: do actual checking to see if the value changed"," this.activePaths.modify(path);","};","","/**"," * Captures an exception that will be bubbled to `save`"," *"," * @param {Function} function to execute"," * @param {Object} scope"," */","","Document.prototype.try = function (fn, scope) {"," var res;"," try {"," fn.call(scope);"," res = true;"," } catch(e){"," this.error(e);"," res = false;"," };"," return res;","};","","/**"," * Checks if a path is modified"," *"," * @param {String} path"," */","","Document.prototype.isModified = function (path) {"," return (path in this.activePaths.states.modify);","};","","/**"," * Checks if a certain path was initialized"," *"," * @param {String} path"," */","","Document.prototype.isInit = function (path) {"," return (path in this.activePaths.states.init);","};","","/**"," * Validation middleware"," *"," * @param {Function} next"," * @api private"," */","","Document.prototype.validate = function (next) {"," var total = 0"," , self = this"," , validating = {}"," , didErr = false;",""," if (!this.activePaths.some('init', 'modify')) return next();",""," function validatePath (path) {"," if (validating[path]) return;"," total++;"," process.nextTick(function(){"," self.schema.path(path).doValidate(self.getValue(path), function(err){"," if (err) {"," didErr = true;"," return next(err);"," }"," --total || next();"," }, self);"," });"," validating[path] = true;"," }",""," this.activePaths.forEach('init', 'modify', function (path) {"," if (!didErr) validatePath(path);"," });",""," return this;","};","","/**"," * Returns if the document has been modified"," *"," * @return {Boolean}"," * @api public"," */","","Document.prototype.__defineGetter__('modified', function () {"," return this.activePaths.some('modified');","});","","/**"," * We override the schema setter to compile accessors"," *"," * @api private"," */","","function compile (tree, proto, prefix) {"," for (var i in tree)"," define(i, ((tree[i].constructor == Object"," &amp;&amp; Object.keys(tree[i]).length)"," &amp;&amp; (!tree[i].type || tree[i].__nested)"," ? tree[i]"," : null)"," , proto"," , prefix);","};","","function define (prop, subprops, prototype, prefix) {"," var prefix = prefix || ''"," , path = (prefix ? prefix + '.' : '') + prop;",""," if (subprops) {"," // if prop hasn't been defined"," prototype.__defineGetter__(prop, function () {"," if (!this.__getters)"," this.__getters = {};",""," if (!this.__getters[path]){"," var nested = function(){};"," nested.prototype = this;"," compile(subprops, nested.prototype, path);"," this.__getters[path] = new nested();"," }",""," return this.__getters[path];"," });"," } else {"," prototype.__defineGetter__(prop, function () {"," return this.get(path);"," });",""," prototype.__defineSetter__(prop, function (v) {"," return this.set(path, v);"," });"," }","};","","Document.prototype.__defineSetter__('schema', function (schema) {"," compile(schema.tree, this);"," this._schema = schema;","});","","/**"," * We override the schema getter to return the internal reference"," *"," * @api private"," */","","Document.prototype.__defineGetter__('schema', function () {"," return this._schema;","});","","/**"," * Register default hooks"," *"," * @api private"," */","","Document.prototype.registerHooks = function () {"," var self = this;",""," this.pre('save', function checkForExistingErrors (next) {"," if (self.saveError){"," next(self.saveError);"," self.saveError = null;"," } else {"," next();"," }"," });",""," this.pre('save', function validation (next) {"," return self.validate.call(self, next);"," });","};","","/**"," * Registers an error"," * TODO: handle multiple"," *"," * @param {Error} error"," * @api private"," */","","Document.prototype.error = function (err) {"," this.saveError = err;"," return this;","};","","/**"," * Executes methods queued from the Schema definition"," *"," * @api private"," */","","Document.prototype.doQueue = function () {"," if (this.schema &amp;&amp; this.schema.callQueue)"," for (var i = 0, l = this.schema.callQueue.length; i &lt; l; i++)"," this[this.schema.callQueue[i][0]].apply(this, this.schema.callQueue[i][1]);"," return this;","};","","/**"," * Gets the document"," *"," * @todo Should we apply getters?"," * @return {Object} plain object"," * @api public"," */","","Document.prototype.toObject = function () {"," return clone(this.doc);","};","","/**"," * Returns a JSON string for the document"," *"," * @return {String} JSON representation"," * @api public"," */","","Document.prototype.toJSON = function () {"," return JSON.stringify(this.toObject());","};","","/**"," * Wrap methods for hooks. Should be called on implemented classes (eg: Model)"," * Takes multiple method names as arguments."," *"," * @api private"," */","","function noop () {};","","Document.registerHooks = function () {"," for (var i = 0, l = arguments.length; i &lt; l; i++){"," this.prototype[arguments[i]] = (function(methodName, oldFn){"," return function () {"," var self = this"," , args = arguments;",""," function error (err){"," var lastArg = args[args.length-1];"," if (typeof lastArg == 'function')"," lastArg.call(self, err);"," }"," var pres = this.pres[methodName];"," if (!pres) return oldFn.apply(this, args);",""," var pres = this.pres[methodName]"," , chain = pres.serial.map(function (fn, i) {"," return function (err) {"," if (arguments.callee._hookCalled) return;",""," if (err instanceof Error)"," error(err);"," else"," fn.call(self, chain[i+1] || parallel);",""," arguments.callee._hookCalled = true;"," };"," });",""," chain.length ? chain[0]() : parallel();",""," function parallel (err) {"," if (err instanceof Error)"," return error(err);",""," // chain determines execution, callbacks completeness"," var complete = pres.parallel.length;"," if (!complete) return oldFn.apply(self, args);"," "," function done (err) {"," if (err instanceof Error)"," return error(err);"," --complete || oldFn.apply(self, args);"," }",""," var chain = pres.parallel.map(function (fn, i) {"," return function (err) {"," if (arguments.callee._hookCalled) return;"," if (err) return error(err);"," fn.call(self, chain[i+1] || noop, function (err) {"," if (arguments.callee._hookCalled) return;"," done(err);"," arguments.callee._hookCalled = true;"," });"," arguments.callee._hookCalled = true;"," };"," });"," "," chain[0]();"," }"," };"," })(arguments[i], this.prototype[arguments[i]]);"," }","};","","/**"," * Module exports."," */","","module.exports = Document;","","/**"," * Document Error"," *"," * @param text"," */","","function DocumentError () {"," MongooseError.call(this, msg);"," MongooseError.captureStackTrace(this, arguments.callee);"," this.name = 'DocumentError';","};","","/**"," * Inherits from MongooseError."," */","","DocumentError.prototype.__proto__ = MongooseError.prototype;","","exports.Error = DocumentError;"];
_$jscoverage['mongoose/document.js'].source = ["","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , MongooseError = require('./error')"," , Schema = require('./schema')"," , SchemaType = require('./schematype')"," , VirtualType = require('./virtualtype')"," , ArrayType = require('./types/array')"," , MixedSchema = require('./schema/mixed')"," , DocumentArraySchema = require('./schema/documentarray')"," , utils = require('./utils')"," , clone = utils.clone"," , ActiveRoster = utils.StateMachine.ctor('require', 'modify', 'init');","","/**"," * Document constructor."," *"," * @param {Object} values to set"," * @api private"," */","","function Document (obj) {"," this.doc = this.buildDoc();"," this.activePaths = new ActiveRoster();"," this.saveError = null;"," if (obj) this.set(obj);"," this.pres = {};"," this.registerHooks();"," this.doQueue();"," this.isNew = true;","};","","/**"," * Inherit from EventEmitter."," */","","Document.prototype.__proto__ = EventEmitter.prototype;","","/**"," * Base Mongoose instance for the model. Set by the Mongoose instance upon"," * pre-compilation."," *"," * @api public"," */","","Document.prototype.base;","","/**"," * Document schema as a nested structure."," *"," * @api public"," */","","Document.prototype.schema;","","/**"," * Whether the document is new."," *"," * @api public"," */","","Document.prototype.isNew;","","/**"," * Builds the default doc structure"," *"," * @api private"," */","","Document.prototype.buildDoc = function () {"," var doc = {}"," , self = this;",""," this.schema.eachPath( function (i, type) {"," var path = i.split('.')"," , len = path.length;",""," path.reduce( function (ref, piece, i) {"," if (i === len-1)"," ref[piece] = type.getDefault(self);"," else"," return ref[piece] || (ref[piece] = {});"," }, doc);"," });",""," return doc;","};","","/**"," * Inits (hydrates) the document."," *"," * @param {Object} document returned by mongo"," * @api private"," */","","Document.prototype.init = function (doc, fn) {"," var self = this;"," this.isNew = false;",""," function init (obj, doc, prefix) {"," prefix = prefix || '';",""," for (var i in obj){"," var path = prefix + i"," , schema = self.schema.path(path);",""," if (!schema &amp;&amp; obj[i].constructor == Object){ // assume nested object"," doc[i] = {};"," init(obj[i], doc[i], path + '.');"," } else {"," if (obj[i] !== null &amp;&amp; obj[i] !== undefined) {"," var schema = self.schema.path(path);",""," if (schema)"," self.try(function(){"," doc[i] = schema.cast(obj[i], self);"," });"," else"," doc[i] = obj[i];"," }",""," // mark as hydrated"," self.activePaths.init(path);"," }"," }"," };",""," init(doc, self.doc);",""," if (fn)"," fn(null);",""," this.emit('init');",""," return this;","};","","/**"," * Registers a middleware that is executed before a method."," *"," * @param {String} method name"," * @param {Function} callback"," * @api public"," */","","Document.prototype.pre = function (method, fn) {"," if (!(method in this.pres))"," this.pres[method] = {"," serial: []"," , parallel: []"," };"," this.pres[method][fn.length == 1 ? 'serial' : 'parallel'].push(fn);"," return this;","};","","/**"," * Sets a path, or many paths"," *"," * Examples:"," * // path, value"," * doc.set(path, value)"," *"," * // object"," * doc.set({"," * path : value"," * , path2 : {"," * path : value"," * }"," * }"," *"," * @param {String/Object} key path, or object"," * @param {Object} value, or undefined if first parameter is an object"," * @param {Boolean} whether to apply transformations: cast, setters (true) "," * @param {Boolean} whether to mark dirty (true)"," * @param {Boolean} whether this is an initialization"," * @api public"," */","","Document.prototype.set = function (path, val) {"," if (typeof path != 'string'){"," var prefix = val ? val + '.' : '';"," for (var i in path){"," if (!(this.schema.path(prefix + i) instanceof MixedSchema)"," &amp;&amp; 'undefined' !== typeof path[i]"," &amp;&amp; path[i] !== null"," &amp;&amp; path[i].constructor == Object) {"," this.set(path[i], prefix + i);"," } else if ('undefined' !== typeof path[i]) {"," this.set(prefix + i, path[i]);"," }"," }"," } else {"," // TODO: do actual checking to see if the value changed"," var schema = this.schema.path(path)"," , parts = path.split('.')"," , obj = this.doc"," , self = this;",""," if (this.schema.pathType(path) === 'virtual') {"," schema = this.schema.virtualpath(path);"," schema.applySetters(val, this);"," return this;"," }",""," this.activePaths.modify(path);",""," if ( (!schema || val === null || val === undefined) || "," this.try(function(){"," val = schema.applySetters(schema.cast(val, self), self);"," })"," ){"," for (var i = 0, l = parts.length; i &lt; l; i++){"," if (i + 1 == l)"," obj[parts[i]] = val;"," else {"," obj = obj[parts[i]];"," }"," }"," }"," }",""," return this;","};","","Document.prototype._markModified = function (path) {"," this.activePaths.modify(path);","};","","/**"," * Gets a raw value from a path (no getters)"," *"," * @param {String} path"," * @api private"," */","","Document.prototype.getValue = function (path) {"," var parts = path.split('.')"," , obj = this.doc;",""," for (var i = 0, l = parts.length; i &lt; l-1; i++) {"," obj = obj[parts[i]];"," if (!obj) return obj;"," }"," return obj[parts[l-1]];","};","","/**"," * Sets a raw value for a path (no casting, setters, transformations)"," *"," * @param {String} path"," * @param {Object} value"," * @api private"," */","","Document.prototype.setValue = function (path, val) {"," var parts = path.split('.')"," , obj = this.doc;",""," for (var i = 0, l = parts.length; i &lt; l-1; i++) obj = obj[parts[i]];"," obj[parts[l-1]] = val;",""," return this;","};","","/**"," * Triggers casting on a specific path"," *"," * @param {String} path"," * @api public"," */","","Document.prototype.doCast = function (path) {"," var schema = this.schema.path(path);"," if (schema)"," this.setValue(path, this.getValue(path));","};","","/**"," * Gets a path"," *"," * @param {String} key path"," * @api public"," */","","Document.prototype.get = function (path) {"," var obj"," , schema = this.schema.path(path) || this.schema.virtualpath(path)"," , pieces = path.split('.');",""," obj = this.doc;"," for (var i = 0, l = pieces.length; i &lt; l; i++)"," obj = obj[pieces[i]];"," "," if (schema)"," obj = schema.applyGetters(obj, this);"," // TODO Cache obj",""," return obj;","};","","/**"," * Commits a path, marking as modified if needed. Useful for mixed keys"," *"," * @api public"," */","","Document.prototype.commit = function (path) {"," // TODO: do actual checking to see if the value changed"," this.activePaths.modify(path);","};","","/**"," * Captures an exception that will be bubbled to `save`"," *"," * @param {Function} function to execute"," * @param {Object} scope"," */","","Document.prototype.try = function (fn, scope) {"," var res;"," try {"," fn.call(scope);"," res = true;"," } catch(e){"," this.error(e);"," res = false;"," };"," return res;","};","","/**"," * Checks if a path is modified"," *"," * @param {String} path"," */","","Document.prototype.isModified = function (path) {"," return (path in this.activePaths.states.modify);","};","","/**"," * Checks if a certain path was initialized"," *"," * @param {String} path"," */","","Document.prototype.isInit = function (path) {"," return (path in this.activePaths.states.init);","};","","/**"," * Validation middleware"," *"," * @param {Function} next"," * @api private"," */","","Document.prototype.validate = function (next) {"," var total = 0"," , self = this"," , validating = {}"," , didErr = false;",""," if (!this.activePaths.some('init', 'modify')) return next();",""," function validatePath (path) {"," if (validating[path]) return;"," total++;"," process.nextTick(function(){"," self.schema.path(path).doValidate(self.getValue(path), function(err){"," if (err) {"," didErr = true;"," return next(err);"," }"," --total || next();"," }, self);"," });"," validating[path] = true;"," }",""," this.activePaths.forEach('init', 'modify', function (path) {"," if (!didErr) validatePath(path);"," });",""," return this;","};","","/**"," * Returns if the document has been modified"," *"," * @return {Boolean}"," * @api public"," */","","Document.prototype.__defineGetter__('modified', function () {"," return this.activePaths.some('modified');","});","","/**"," * We override the schema setter to compile accessors"," *"," * @api private"," */","","function compile (tree, proto, prefix) {"," for (var i in tree)"," define(i, ((tree[i].constructor == Object"," &amp;&amp; Object.keys(tree[i]).length)"," &amp;&amp; (!tree[i].type || tree[i].__nested)"," ? tree[i]"," : null)"," , proto"," , prefix);","};","","function define (prop, subprops, prototype, prefix) {"," var prefix = prefix || ''"," , path = (prefix ? prefix + '.' : '') + prop;",""," if (subprops) {"," // if prop hasn't been defined"," prototype.__defineGetter__(prop, function () {"," if (!this.__getters)"," this.__getters = {};",""," if (!this.__getters[path]){"," var nested = function(){};"," nested.prototype = this;"," compile(subprops, nested.prototype, path);"," this.__getters[path] = new nested();"," }",""," return this.__getters[path];"," });"," } else {"," prototype.__defineGetter__(prop, function () {"," return this.get(path);"," });",""," prototype.__defineSetter__(prop, function (v) {"," return this.set(path, v);"," });"," }","};","","Document.prototype.__defineSetter__('schema', function (schema) {"," compile(schema.tree, this);"," this._schema = schema;","});","","/**"," * We override the schema getter to return the internal reference"," *"," * @api private"," */","","Document.prototype.__defineGetter__('schema', function () {"," return this._schema;","});","","/**"," * Register default hooks"," *"," * @api private"," */","","Document.prototype.registerHooks = function () {"," var self = this;",""," this.pre('save', function checkForExistingErrors (next) {"," if (self.saveError){"," next(self.saveError);"," self.saveError = null;"," } else {"," next();"," }"," });",""," this.pre('save', function validation (next) {"," return self.validate.call(self, next);"," });","};","","/**"," * Registers an error"," * TODO: handle multiple"," *"," * @param {Error} error"," * @api private"," */","","Document.prototype.error = function (err) {"," this.saveError = err;"," return this;","};","","/**"," * Executes methods queued from the Schema definition"," *"," * @api private"," */","","Document.prototype.doQueue = function () {"," if (this.schema &amp;&amp; this.schema.callQueue)"," for (var i = 0, l = this.schema.callQueue.length; i &lt; l; i++)"," this[this.schema.callQueue[i][0]].apply(this, this.schema.callQueue[i][1]);"," return this;","};","","/**"," * Gets the document"," *"," * @todo Should we apply getters?"," * @return {Object} plain object"," * @api public"," */","","Document.prototype.toObject = function () {"," return clone(this.doc);","};","","/**"," * Returns a JSON string for the document"," *"," * @return {String} JSON representation"," * @api public"," */","","Document.prototype.toJSON = function () {"," return JSON.stringify(this.toObject());","};","","/**"," * Returns true if the Document stores the same data as doc."," * @param {Document} doc to compare to"," * @return {Boolean}"," * @api public"," */","Document.prototype.equals = function (doc) {"," return this.get('_id') === doc.get('_id');","};","","/**"," * Wrap methods for hooks. Should be called on implemented classes (eg: Model)"," * Takes multiple method names as arguments."," *"," * @api private"," */","","function noop () {};","","Document.registerHooks = function () {"," for (var i = 0, l = arguments.length; i &lt; l; i++){"," this.prototype[arguments[i]] = (function(methodName, oldFn){"," return function () {"," var self = this"," , args = arguments;",""," function error (err){"," var lastArg = args[args.length-1];"," if (typeof lastArg == 'function')"," lastArg.call(self, err);"," }"," var pres = this.pres[methodName];"," if (!pres) return oldFn.apply(this, args);",""," var pres = this.pres[methodName]"," , chain = pres.serial.map(function (fn, i) {"," return function (err) {"," if (arguments.callee._hookCalled) return;",""," if (err instanceof Error)"," error(err);"," else"," fn.call(self, chain[i+1] || parallel);",""," arguments.callee._hookCalled = true;"," };"," });",""," chain.length ? chain[0]() : parallel();",""," function parallel (err) {"," if (err instanceof Error)"," return error(err);",""," // chain determines execution, callbacks completeness"," var complete = pres.parallel.length;"," if (!complete) return oldFn.apply(self, args);"," "," function done (err) {"," if (err instanceof Error)"," return error(err);"," --complete || oldFn.apply(self, args);"," }",""," var chain = pres.parallel.map(function (fn, i) {"," return function (err) {"," if (arguments.callee._hookCalled) return;"," if (err) return error(err);"," fn.call(self, chain[i+1] || noop, function (err) {"," if (arguments.callee._hookCalled) return;"," done(err);"," arguments.callee._hookCalled = true;"," });"," arguments.callee._hookCalled = true;"," };"," });"," "," chain[0]();"," }"," };"," })(arguments[i], this.prototype[arguments[i]]);"," }","};","","/**"," * Module exports."," */","","module.exports = Document;","","/**"," * Document Error"," *"," * @param text"," */","","function DocumentError () {"," MongooseError.call(this, msg);"," MongooseError.captureStackTrace(this, arguments.callee);"," this.name = 'DocumentError';","};","","/**"," * Inherits from MongooseError."," */","","DocumentError.prototype.__proto__ = MongooseError.prototype;","","exports.Error = DocumentError;"];

@@ -13,3 +13,3 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/drivers/node-mongodb-native/objectid.js'][6]++;
var ObjectId = require("../../../../support/node-mongodb-native/lib/mongodb/").ObjectID;
var ObjectId = require("../../../../support/node-mongodb-native/lib/mongodb/").BSONPure.ObjectID;
_$jscoverage['mongoose/drivers/node-mongodb-native/objectid.js'][14]++;

@@ -27,2 +27,2 @@ module.exports = exports = ObjectId;

});
_$jscoverage['mongoose/drivers/node-mongodb-native/objectid.js'].source = ["","/**"," * Module dependencies."," */","","var ObjectId = require('../../../../support/node-mongodb-native/lib/mongodb/').ObjectID;","","/**"," * Constructor export"," *"," * @api private"," */","","module.exports = exports = ObjectId;","/**"," * Creates an ObjectID for this driver"," *"," * @param {Object} hex string or ObjectId"," * @api private"," */","","exports.fromString = function(str){"," return ObjectId.createFromHexString(str);","};","","/**"," * Gets an ObjectId and converts it to string."," *"," * @param {ObjectId} -native objectid"," * @api private"," */","","exports.toString = function(oid){"," return oid.toHexString();","};"];
_$jscoverage['mongoose/drivers/node-mongodb-native/objectid.js'].source = ["","/**"," * Module dependencies."," */","","var ObjectId = require('../../../../support/node-mongodb-native/lib/mongodb/').BSONPure.ObjectID;","","/**"," * Constructor export"," *"," * @api private"," */","","module.exports = exports = ObjectId;","/**"," * Creates an ObjectID for this driver"," *"," * @param {Object} hex string or ObjectId"," * @api private"," */","","exports.fromString = function(str){"," return ObjectId.createFromHexString(str);","};","","/**"," * Gets an ObjectId and converts it to string."," *"," * @param {ObjectId} -native objectid"," * @api private"," */","","exports.toString = function(oid){"," return oid.toHexString();","};"];

@@ -259,3 +259,3 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/index.js'][256]++;
exports.version = "1.0.2";
exports.version = "1.0.7";
_$jscoverage['mongoose/index.js'][264]++;

@@ -281,2 +281,2 @@ exports.Mongoose = Mongoose;

exports.mongo = require("../../support/node-mongodb-native/lib/mongodb");
_$jscoverage['mongoose/index.js'].source = ["","/**"," * Module dependencies."," */","","var Schema = require('./schema')"," , SchemaType = require('./schematype')"," , VirtualType = require('./virtualtype')"," , SchemaTypes = Schema.Types"," , Types = require('./types')"," , Query = require('./query')"," , Promise = require('./promise')"," , Model = require('./model')"," , utils = require('./utils');","","/**"," * Mongoose constructor. Most apps will only use one instance."," *"," * @api public"," */","","function Mongoose () {"," this.connections = [];"," this.plugins = [];"," this.models = {};"," this.modelSchemas = {};"," this.options = {};"," this.createConnection(); // default connection","};","","/**"," * Sets/gets mongoose options"," *"," * Examples:"," * mongoose.set('test') // returns the 'test' value"," * mongoose.set('test', value) // sets the 'test' value"," *"," * @param {String} key"," * @param {String} value"," * @api public"," */","","Mongoose.prototype.set =","Mongoose.prototype.get = function (key, value) {"," if (arguments.length == 1)"," return this.options[key];"," this.options[key] = value;"," return this;","};","","/**"," * Creates a Connection instance."," *"," * Examples:"," *"," * // with mongodb:// URI"," * db = mongoose.createConnection('mongodb://localhost:port/database');"," *"," * // with [host, database_name[, port] signature "," * db = mongoose.createConnection('localhost', 'database', port)"," *"," * // initialize now, connect later"," * db = mongoose.createConnection();"," * db.open('localhost', 'database', port);"," *"," * @param {String} mongodb:// URI"," * @return {Connection} the created Connection object"," * @api public"," */","","Mongoose.prototype.createConnection = function () {"," var conn = new Connection(this);"," this.connections.push(conn);"," if (arguments.length)"," conn.open.apply(conn, arguments);"," return conn;","};","","/**"," * Connects the default mongoose connection"," *"," * @see {Mongoose#createConnection}"," * @api public"," */","","Mongoose.prototype.connect = function (){"," this.connection.open.apply(this.connection, arguments);"," return this;","};","","/**"," * Disconnects from all connections."," *"," * @param {Function} optional callback"," * @api public"," */","","Mongoose.prototype.disconnect = function (fn) {"," var count = this.connections.length;"," this.connections.forEach(function(conn){"," conn.close(function(err){"," if (err) return fn(err);"," if (fn)"," --count || fn();"," });"," });"," return this;","};","","/**"," * Defines a model or retrieves it"," *"," * @param {String} model name"," * @param {Schema} schema object"," * @param {String} collection name (optional, induced from model name)"," * @param {Boolean} whether to skip initialization (defaults to false)"," * @api public"," */","","Mongoose.prototype.model = function (name, schema, collection, skipInit) {"," // normalize collection"," if (!(schema instanceof Schema)){"," collection = schema;"," schema = false;"," }",""," collection = collection || utils.toCollectionName(name);"," "," // look up models for the collection"," if (schema){"," if (!this.modelSchemas[name]) {"," this.modelSchemas[name] = schema;"," for (var i = 0, l = this.plugins.length; i &lt; l; i++)"," schema.plugin(this.plugins[i][0], this.plugins[i][1]);"," }"," } else {"," if (!this.modelSchemas[name])"," throw new Error('Schema hasn\\'t been registered for model \"' + name + '\".\\n'"," + 'Use Mongoose.define(name, schema)');",""," var conn = this.connection"," , model;",""," if (!this.models[collection])"," this.models[collection] = {};",""," if (!this.models[collection][name]){"," model = Model.compile(name"," , this.modelSchemas[name]"," , collection"," , conn"," , this);",""," if (!skipInit)"," model.init();",""," this.models[collection][name] = model;"," };",""," return this.models[collection][name];"," }","};","","/**"," * Declares a plugin executed on Schemas. Equivalent to calling `.plugin(fn)`"," * on each Schema you create."," *"," * @param {Function} plugin callback"," * @api public"," */","","Mongoose.prototype.plugin = function (fn, opts) {"," this.plugins.push([fn, opts]);"," return this;","};","","/**"," * Default connection"," *"," * @api public"," */","","Mongoose.prototype.__defineGetter__('connection', function(){"," return this.connections[0];","});","","/**"," * Compat flag."," *"," * @api public"," */","","var compat = false;","","exports.__defineGetter__('compat', function(){"," return compat;","});","","exports.__defineSetter__('compat', function(v){"," compat = v;"," if (v) require('./compat');","});","","/**"," * Driver depentend APIs"," */","","var driver = global.MONGOOSE_DRIVER_PATH || './drivers/node-mongodb-native';","","/**"," * Connection"," *"," * @api public"," */","","var Connection = require(driver + '/connection');","","/**"," * Collection"," *"," * @api public"," */","","var Collection = require(driver + '/collection');","","/**"," * Export default singleton."," * "," * @api public"," */","","module.exports = exports = new Mongoose();","","/**"," * Collection"," *"," * @api public"," */","","exports.Collection = Collection;","","/**"," * Connection"," *"," * @api public"," */","","exports.Connection = Connection;","","/**"," * Exports Mongoose version"," *"," * @param version"," */","","exports.version = '1.0.2';","","/**"," * Export Mongoose constructor"," *"," * @api public"," */","","exports.Mongoose = Mongoose;","","/**"," * Export Schema constructor"," *"," * @api public"," */","","exports.Schema = Schema;","","/**"," * Export SchemaType constructor."," *"," * @api public"," */","","exports.SchemaType = SchemaType;","","/**"," * Export VirtualType constructor."," *"," * @api public"," */","","exports.VirtualType = VirtualType;","","/**"," * Export Schema types"," *"," * @api public"," */","","exports.SchemaTypes = SchemaTypes;","","/**"," * Export types"," *"," * @api public"," */","","exports.Types = Types;","","/**"," * Export Query"," *"," * @api public"," */","","exports.Query = Query;","","/**"," * Export Promise"," *"," * @api public"," */","","exports.Promise = Promise;","","/**"," * Export MongooseError"," *"," * @api public"," */","","exports.Error = require('./error');","","exports.mongo = require('../../support/node-mongodb-native/lib/mongodb');"];
_$jscoverage['mongoose/index.js'].source = ["","/**"," * Module dependencies."," */","","var Schema = require('./schema')"," , SchemaType = require('./schematype')"," , VirtualType = require('./virtualtype')"," , SchemaTypes = Schema.Types"," , Types = require('./types')"," , Query = require('./query')"," , Promise = require('./promise')"," , Model = require('./model')"," , utils = require('./utils');","","/**"," * Mongoose constructor. Most apps will only use one instance."," *"," * @api public"," */","","function Mongoose () {"," this.connections = [];"," this.plugins = [];"," this.models = {};"," this.modelSchemas = {};"," this.options = {};"," this.createConnection(); // default connection","};","","/**"," * Sets/gets mongoose options"," *"," * Examples:"," * mongoose.set('test') // returns the 'test' value"," * mongoose.set('test', value) // sets the 'test' value"," *"," * @param {String} key"," * @param {String} value"," * @api public"," */","","Mongoose.prototype.set =","Mongoose.prototype.get = function (key, value) {"," if (arguments.length == 1)"," return this.options[key];"," this.options[key] = value;"," return this;","};","","/**"," * Creates a Connection instance."," *"," * Examples:"," *"," * // with mongodb:// URI"," * db = mongoose.createConnection('mongodb://localhost:port/database');"," *"," * // with [host, database_name[, port] signature "," * db = mongoose.createConnection('localhost', 'database', port)"," *"," * // initialize now, connect later"," * db = mongoose.createConnection();"," * db.open('localhost', 'database', port);"," *"," * @param {String} mongodb:// URI"," * @return {Connection} the created Connection object"," * @api public"," */","","Mongoose.prototype.createConnection = function () {"," var conn = new Connection(this);"," this.connections.push(conn);"," if (arguments.length)"," conn.open.apply(conn, arguments);"," return conn;","};","","/**"," * Connects the default mongoose connection"," *"," * @see {Mongoose#createConnection}"," * @api public"," */","","Mongoose.prototype.connect = function (){"," this.connection.open.apply(this.connection, arguments);"," return this;","};","","/**"," * Disconnects from all connections."," *"," * @param {Function} optional callback"," * @api public"," */","","Mongoose.prototype.disconnect = function (fn) {"," var count = this.connections.length;"," this.connections.forEach(function(conn){"," conn.close(function(err){"," if (err) return fn(err);"," if (fn)"," --count || fn();"," });"," });"," return this;","};","","/**"," * Defines a model or retrieves it"," *"," * @param {String} model name"," * @param {Schema} schema object"," * @param {String} collection name (optional, induced from model name)"," * @param {Boolean} whether to skip initialization (defaults to false)"," * @api public"," */","","Mongoose.prototype.model = function (name, schema, collection, skipInit) {"," // normalize collection"," if (!(schema instanceof Schema)){"," collection = schema;"," schema = false;"," }",""," collection = collection || utils.toCollectionName(name);"," "," // look up models for the collection"," if (schema){"," if (!this.modelSchemas[name]) {"," this.modelSchemas[name] = schema;"," for (var i = 0, l = this.plugins.length; i &lt; l; i++)"," schema.plugin(this.plugins[i][0], this.plugins[i][1]);"," }"," } else {"," if (!this.modelSchemas[name])"," throw new Error('Schema hasn\\'t been registered for model \"' + name + '\".\\n'"," + 'Use Mongoose.define(name, schema)');",""," var conn = this.connection"," , model;",""," if (!this.models[collection])"," this.models[collection] = {};",""," if (!this.models[collection][name]){"," model = Model.compile(name"," , this.modelSchemas[name]"," , collection"," , conn"," , this);",""," if (!skipInit)"," model.init();",""," this.models[collection][name] = model;"," };",""," return this.models[collection][name];"," }","};","","/**"," * Declares a plugin executed on Schemas. Equivalent to calling `.plugin(fn)`"," * on each Schema you create."," *"," * @param {Function} plugin callback"," * @api public"," */","","Mongoose.prototype.plugin = function (fn, opts) {"," this.plugins.push([fn, opts]);"," return this;","};","","/**"," * Default connection"," *"," * @api public"," */","","Mongoose.prototype.__defineGetter__('connection', function(){"," return this.connections[0];","});","","/**"," * Compat flag."," *"," * @api public"," */","","var compat = false;","","exports.__defineGetter__('compat', function(){"," return compat;","});","","exports.__defineSetter__('compat', function(v){"," compat = v;"," if (v) require('./compat');","});","","/**"," * Driver depentend APIs"," */","","var driver = global.MONGOOSE_DRIVER_PATH || './drivers/node-mongodb-native';","","/**"," * Connection"," *"," * @api public"," */","","var Connection = require(driver + '/connection');","","/**"," * Collection"," *"," * @api public"," */","","var Collection = require(driver + '/collection');","","/**"," * Export default singleton."," * "," * @api public"," */","","module.exports = exports = new Mongoose();","","/**"," * Collection"," *"," * @api public"," */","","exports.Collection = Collection;","","/**"," * Connection"," *"," * @api public"," */","","exports.Connection = Connection;","","/**"," * Exports Mongoose version"," *"," * @param version"," */","","exports.version = '1.0.7';","","/**"," * Export Mongoose constructor"," *"," * @api public"," */","","exports.Mongoose = Mongoose;","","/**"," * Export Schema constructor"," *"," * @api public"," */","","exports.Schema = Schema;","","/**"," * Export SchemaType constructor."," *"," * @api public"," */","","exports.SchemaType = SchemaType;","","/**"," * Export VirtualType constructor."," *"," * @api public"," */","","exports.VirtualType = VirtualType;","","/**"," * Export Schema types"," *"," * @api public"," */","","exports.SchemaTypes = SchemaTypes;","","/**"," * Export types"," *"," * @api public"," */","","exports.Types = Types;","","/**"," * Export Query"," *"," * @api public"," */","","exports.Query = Query;","","/**"," * Export Promise"," *"," * @api public"," */","","exports.Promise = Promise;","","/**"," * Export MongooseError"," *"," * @api public"," */","","exports.Error = require('./error');","","exports.mongo = require('../../support/node-mongodb-native/lib/mongodb');"];

@@ -6,180 +6,195 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/model.js'][6] = 0;
_$jscoverage['mongoose/model.js'][21] = 0;
_$jscoverage['mongoose/model.js'][22] = 0;
_$jscoverage['mongoose/model.js'][23] = 0;
_$jscoverage['mongoose/model.js'][29] = 0;
_$jscoverage['mongoose/model.js'][38] = 0;
_$jscoverage['mongoose/model.js'][46] = 0;
_$jscoverage['mongoose/model.js'][54] = 0;
_$jscoverage['mongoose/model.js'][64] = 0;
_$jscoverage['mongoose/model.js'][24] = 0;
_$jscoverage['mongoose/model.js'][30] = 0;
_$jscoverage['mongoose/model.js'][39] = 0;
_$jscoverage['mongoose/model.js'][47] = 0;
_$jscoverage['mongoose/model.js'][55] = 0;
_$jscoverage['mongoose/model.js'][65] = 0;
_$jscoverage['mongoose/model.js'][67] = 0;
_$jscoverage['mongoose/model.js'][68] = 0;
_$jscoverage['mongoose/model.js'][66] = 0;
_$jscoverage['mongoose/model.js'][70] = 0;
_$jscoverage['mongoose/model.js'][71] = 0;
_$jscoverage['mongoose/model.js'][75] = 0;
_$jscoverage['mongoose/model.js'][76] = 0;
_$jscoverage['mongoose/model.js'][72] = 0;
_$jscoverage['mongoose/model.js'][73] = 0;
_$jscoverage['mongoose/model.js'][74] = 0;
_$jscoverage['mongoose/model.js'][77] = 0;
_$jscoverage['mongoose/model.js'][78] = 0;
_$jscoverage['mongoose/model.js'][80] = 0;
_$jscoverage['mongoose/model.js'][82] = 0;
_$jscoverage['mongoose/model.js'][83] = 0;
_$jscoverage['mongoose/model.js'][84] = 0;
_$jscoverage['mongoose/model.js'][85] = 0;
_$jscoverage['mongoose/model.js'][86] = 0;
_$jscoverage['mongoose/model.js'][87] = 0;
_$jscoverage['mongoose/model.js'][90] = 0;
_$jscoverage['mongoose/model.js'][94] = 0;
_$jscoverage['mongoose/model.js'][106] = 0;
_$jscoverage['mongoose/model.js'][107] = 0;
_$jscoverage['mongoose/model.js'][109] = 0;
_$jscoverage['mongoose/model.js'][110] = 0;
_$jscoverage['mongoose/model.js'][111] = 0;
_$jscoverage['mongoose/model.js'][91] = 0;
_$jscoverage['mongoose/model.js'][93] = 0;
_$jscoverage['mongoose/model.js'][97] = 0;
_$jscoverage['mongoose/model.js'][98] = 0;
_$jscoverage['mongoose/model.js'][99] = 0;
_$jscoverage['mongoose/model.js'][100] = 0;
_$jscoverage['mongoose/model.js'][103] = 0;
_$jscoverage['mongoose/model.js'][105] = 0;
_$jscoverage['mongoose/model.js'][112] = 0;
_$jscoverage['mongoose/model.js'][113] = 0;
_$jscoverage['mongoose/model.js'][115] = 0;
_$jscoverage['mongoose/model.js'][118] = 0;
_$jscoverage['mongoose/model.js'][116] = 0;
_$jscoverage['mongoose/model.js'][117] = 0;
_$jscoverage['mongoose/model.js'][120] = 0;
_$jscoverage['mongoose/model.js'][121] = 0;
_$jscoverage['mongoose/model.js'][122] = 0;
_$jscoverage['mongoose/model.js'][124] = 0;
_$jscoverage['mongoose/model.js'][135] = 0;
_$jscoverage['mongoose/model.js'][136] = 0;
_$jscoverage['mongoose/model.js'][138] = 0;
_$jscoverage['mongoose/model.js'][139] = 0;
_$jscoverage['mongoose/model.js'][142] = 0;
_$jscoverage['mongoose/model.js'][143] = 0;
_$jscoverage['mongoose/model.js'][144] = 0;
_$jscoverage['mongoose/model.js'][145] = 0;
_$jscoverage['mongoose/model.js'][149] = 0;
_$jscoverage['mongoose/model.js'][125] = 0;
_$jscoverage['mongoose/model.js'][127] = 0;
_$jscoverage['mongoose/model.js'][130] = 0;
_$jscoverage['mongoose/model.js'][131] = 0;
_$jscoverage['mongoose/model.js'][132] = 0;
_$jscoverage['mongoose/model.js'][133] = 0;
_$jscoverage['mongoose/model.js'][134] = 0;
_$jscoverage['mongoose/model.js'][137] = 0;
_$jscoverage['mongoose/model.js'][141] = 0;
_$jscoverage['mongoose/model.js'][153] = 0;
_$jscoverage['mongoose/model.js'][154] = 0;
_$jscoverage['mongoose/model.js'][156] = 0;
_$jscoverage['mongoose/model.js'][157] = 0;
_$jscoverage['mongoose/model.js'][158] = 0;
_$jscoverage['mongoose/model.js'][160] = 0;
_$jscoverage['mongoose/model.js'][163] = 0;
_$jscoverage['mongoose/model.js'][167] = 0;
_$jscoverage['mongoose/model.js'][162] = 0;
_$jscoverage['mongoose/model.js'][165] = 0;
_$jscoverage['mongoose/model.js'][168] = 0;
_$jscoverage['mongoose/model.js'][169] = 0;
_$jscoverage['mongoose/model.js'][172] = 0;
_$jscoverage['mongoose/model.js'][175] = 0;
_$jscoverage['mongoose/model.js'][177] = 0;
_$jscoverage['mongoose/model.js'][178] = 0;
_$jscoverage['mongoose/model.js'][179] = 0;
_$jscoverage['mongoose/model.js'][180] = 0;
_$jscoverage['mongoose/model.js'][181] = 0;
_$jscoverage['mongoose/model.js'][171] = 0;
_$jscoverage['mongoose/model.js'][182] = 0;
_$jscoverage['mongoose/model.js'][183] = 0;
_$jscoverage['mongoose/model.js'][184] = 0;
_$jscoverage['mongoose/model.js'][185] = 0;
_$jscoverage['mongoose/model.js'][187] = 0;
_$jscoverage['mongoose/model.js'][194] = 0;
_$jscoverage['mongoose/model.js'][203] = 0;
_$jscoverage['mongoose/model.js'][204] = 0;
_$jscoverage['mongoose/model.js'][211] = 0;
_$jscoverage['mongoose/model.js'][212] = 0;
_$jscoverage['mongoose/model.js'][220] = 0;
_$jscoverage['mongoose/model.js'][186] = 0;
_$jscoverage['mongoose/model.js'][189] = 0;
_$jscoverage['mongoose/model.js'][190] = 0;
_$jscoverage['mongoose/model.js'][191] = 0;
_$jscoverage['mongoose/model.js'][192] = 0;
_$jscoverage['mongoose/model.js'][196] = 0;
_$jscoverage['mongoose/model.js'][205] = 0;
_$jscoverage['mongoose/model.js'][207] = 0;
_$jscoverage['mongoose/model.js'][210] = 0;
_$jscoverage['mongoose/model.js'][214] = 0;
_$jscoverage['mongoose/model.js'][216] = 0;
_$jscoverage['mongoose/model.js'][219] = 0;
_$jscoverage['mongoose/model.js'][222] = 0;
_$jscoverage['mongoose/model.js'][224] = 0;
_$jscoverage['mongoose/model.js'][225] = 0;
_$jscoverage['mongoose/model.js'][226] = 0;
_$jscoverage['mongoose/model.js'][227] = 0;
_$jscoverage['mongoose/model.js'][228] = 0;
_$jscoverage['mongoose/model.js'][239] = 0;
_$jscoverage['mongoose/model.js'][247] = 0;
_$jscoverage['mongoose/model.js'][255] = 0;
_$jscoverage['mongoose/model.js'][261] = 0;
_$jscoverage['mongoose/model.js'][262] = 0;
_$jscoverage['mongoose/model.js'][263] = 0;
_$jscoverage['mongoose/model.js'][271] = 0;
_$jscoverage['mongoose/model.js'][277] = 0;
_$jscoverage['mongoose/model.js'][279] = 0;
_$jscoverage['mongoose/model.js'][280] = 0;
_$jscoverage['mongoose/model.js'][281] = 0;
_$jscoverage['mongoose/model.js'][282] = 0;
_$jscoverage['mongoose/model.js'][284] = 0;
_$jscoverage['mongoose/model.js'][298] = 0;
_$jscoverage['mongoose/model.js'][300] = 0;
_$jscoverage['mongoose/model.js'][301] = 0;
_$jscoverage['mongoose/model.js'][229] = 0;
_$jscoverage['mongoose/model.js'][230] = 0;
_$jscoverage['mongoose/model.js'][231] = 0;
_$jscoverage['mongoose/model.js'][232] = 0;
_$jscoverage['mongoose/model.js'][234] = 0;
_$jscoverage['mongoose/model.js'][241] = 0;
_$jscoverage['mongoose/model.js'][250] = 0;
_$jscoverage['mongoose/model.js'][251] = 0;
_$jscoverage['mongoose/model.js'][258] = 0;
_$jscoverage['mongoose/model.js'][259] = 0;
_$jscoverage['mongoose/model.js'][267] = 0;
_$jscoverage['mongoose/model.js'][269] = 0;
_$jscoverage['mongoose/model.js'][273] = 0;
_$jscoverage['mongoose/model.js'][274] = 0;
_$jscoverage['mongoose/model.js'][275] = 0;
_$jscoverage['mongoose/model.js'][286] = 0;
_$jscoverage['mongoose/model.js'][294] = 0;
_$jscoverage['mongoose/model.js'][302] = 0;
_$jscoverage['mongoose/model.js'][305] = 0;
_$jscoverage['mongoose/model.js'][306] = 0;
_$jscoverage['mongoose/model.js'][308] = 0;
_$jscoverage['mongoose/model.js'][309] = 0;
_$jscoverage['mongoose/model.js'][310] = 0;
_$jscoverage['mongoose/model.js'][312] = 0;
_$jscoverage['mongoose/model.js'][314] = 0;
_$jscoverage['mongoose/model.js'][315] = 0;
_$jscoverage['mongoose/model.js'][316] = 0;
_$jscoverage['mongoose/model.js'][319] = 0;
_$jscoverage['mongoose/model.js'][333] = 0;
_$jscoverage['mongoose/model.js'][334] = 0;
_$jscoverage['mongoose/model.js'][335] = 0;
_$jscoverage['mongoose/model.js'][336] = 0;
_$jscoverage['mongoose/model.js'][337] = 0;
_$jscoverage['mongoose/model.js'][338] = 0;
_$jscoverage['mongoose/model.js'][339] = 0;
_$jscoverage['mongoose/model.js'][340] = 0;
_$jscoverage['mongoose/model.js'][343] = 0;
_$jscoverage['mongoose/model.js'][318] = 0;
_$jscoverage['mongoose/model.js'][324] = 0;
_$jscoverage['mongoose/model.js'][326] = 0;
_$jscoverage['mongoose/model.js'][327] = 0;
_$jscoverage['mongoose/model.js'][328] = 0;
_$jscoverage['mongoose/model.js'][329] = 0;
_$jscoverage['mongoose/model.js'][331] = 0;
_$jscoverage['mongoose/model.js'][345] = 0;
_$jscoverage['mongoose/model.js'][346] = 0;
_$jscoverage['mongoose/model.js'][347] = 0;
_$jscoverage['mongoose/model.js'][348] = 0;
_$jscoverage['mongoose/model.js'][349] = 0;
_$jscoverage['mongoose/model.js'][364] = 0;
_$jscoverage['mongoose/model.js'][365] = 0;
_$jscoverage['mongoose/model.js'][368] = 0;
_$jscoverage['mongoose/model.js'][369] = 0;
_$jscoverage['mongoose/model.js'][370] = 0;
_$jscoverage['mongoose/model.js'][371] = 0;
_$jscoverage['mongoose/model.js'][372] = 0;
_$jscoverage['mongoose/model.js'][373] = 0;
_$jscoverage['mongoose/model.js'][374] = 0;
_$jscoverage['mongoose/model.js'][376] = 0;
_$jscoverage['mongoose/model.js'][378] = 0;
_$jscoverage['mongoose/model.js'][352] = 0;
_$jscoverage['mongoose/model.js'][353] = 0;
_$jscoverage['mongoose/model.js'][356] = 0;
_$jscoverage['mongoose/model.js'][357] = 0;
_$jscoverage['mongoose/model.js'][359] = 0;
_$jscoverage['mongoose/model.js'][361] = 0;
_$jscoverage['mongoose/model.js'][362] = 0;
_$jscoverage['mongoose/model.js'][363] = 0;
_$jscoverage['mongoose/model.js'][366] = 0;
_$jscoverage['mongoose/model.js'][380] = 0;
_$jscoverage['mongoose/model.js'][381] = 0;
_$jscoverage['mongoose/model.js'][382] = 0;
_$jscoverage['mongoose/model.js'][383] = 0;
_$jscoverage['mongoose/model.js'][384] = 0;
_$jscoverage['mongoose/model.js'][385] = 0;
_$jscoverage['mongoose/model.js'][386] = 0;
_$jscoverage['mongoose/model.js'][387] = 0;
_$jscoverage['mongoose/model.js'][389] = 0;
_$jscoverage['mongoose/model.js'][390] = 0;
_$jscoverage['mongoose/model.js'][392] = 0;
_$jscoverage['mongoose/model.js'][395] = 0;
_$jscoverage['mongoose/model.js'][414] = 0;
_$jscoverage['mongoose/model.js'][393] = 0;
_$jscoverage['mongoose/model.js'][396] = 0;
_$jscoverage['mongoose/model.js'][411] = 0;
_$jscoverage['mongoose/model.js'][412] = 0;
_$jscoverage['mongoose/model.js'][415] = 0;
_$jscoverage['mongoose/model.js'][416] = 0;
_$jscoverage['mongoose/model.js'][417] = 0;
_$jscoverage['mongoose/model.js'][418] = 0;
_$jscoverage['mongoose/model.js'][419] = 0;
_$jscoverage['mongoose/model.js'][420] = 0;
_$jscoverage['mongoose/model.js'][421] = 0;
_$jscoverage['mongoose/model.js'][422] = 0;
_$jscoverage['mongoose/model.js'][424] = 0;
_$jscoverage['mongoose/model.js'][423] = 0;
_$jscoverage['mongoose/model.js'][425] = 0;
_$jscoverage['mongoose/model.js'][427] = 0;
_$jscoverage['mongoose/model.js'][428] = 0;
_$jscoverage['mongoose/model.js'][430] = 0;
_$jscoverage['mongoose/model.js'][429] = 0;
_$jscoverage['mongoose/model.js'][433] = 0;
_$jscoverage['mongoose/model.js'][435] = 0;
_$jscoverage['mongoose/model.js'][436] = 0;
_$jscoverage['mongoose/model.js'][434] = 0;
_$jscoverage['mongoose/model.js'][437] = 0;
_$jscoverage['mongoose/model.js'][438] = 0;
_$jscoverage['mongoose/model.js'][439] = 0;
_$jscoverage['mongoose/model.js'][454] = 0;
_$jscoverage['mongoose/model.js'][455] = 0;
_$jscoverage['mongoose/model.js'][467] = 0;
_$jscoverage['mongoose/model.js'][468] = 0;
_$jscoverage['mongoose/model.js'][470] = 0;
_$jscoverage['mongoose/model.js'][440] = 0;
_$jscoverage['mongoose/model.js'][442] = 0;
_$jscoverage['mongoose/model.js'][443] = 0;
_$jscoverage['mongoose/model.js'][444] = 0;
_$jscoverage['mongoose/model.js'][445] = 0;
_$jscoverage['mongoose/model.js'][452] = 0;
_$jscoverage['mongoose/model.js'][471] = 0;
_$jscoverage['mongoose/model.js'][472] = 0;
_$jscoverage['mongoose/model.js'][474] = 0;
_$jscoverage['mongoose/model.js'][475] = 0;
_$jscoverage['mongoose/model.js'][477] = 0;
_$jscoverage['mongoose/model.js'][478] = 0;
_$jscoverage['mongoose/model.js'][480] = 0;
_$jscoverage['mongoose/model.js'][479] = 0;
_$jscoverage['mongoose/model.js'][481] = 0;
_$jscoverage['mongoose/model.js'][482] = 0;
_$jscoverage['mongoose/model.js'][484] = 0;
_$jscoverage['mongoose/model.js'][485] = 0;
_$jscoverage['mongoose/model.js'][486] = 0;
_$jscoverage['mongoose/model.js'][500] = 0;
_$jscoverage['mongoose/model.js'][501] = 0;
_$jscoverage['mongoose/model.js'][503] = 0;
_$jscoverage['mongoose/model.js'][504] = 0;
_$jscoverage['mongoose/model.js'][505] = 0;
_$jscoverage['mongoose/model.js'][518] = 0;
_$jscoverage['mongoose/model.js'][519] = 0;
_$jscoverage['mongoose/model.js'][520] = 0;
_$jscoverage['mongoose/model.js'][521] = 0;
_$jscoverage['mongoose/model.js'][522] = 0;
_$jscoverage['mongoose/model.js'][547] = 0;
_$jscoverage['mongoose/model.js'][548] = 0;
_$jscoverage['mongoose/model.js'][550] = 0;
_$jscoverage['mongoose/model.js'][551] = 0;
_$jscoverage['mongoose/model.js'][555] = 0;
_$jscoverage['mongoose/model.js'][570] = 0;
_$jscoverage['mongoose/model.js'][572] = 0;
_$jscoverage['mongoose/model.js'][573] = 0;
_$jscoverage['mongoose/model.js'][574] = 0;
_$jscoverage['mongoose/model.js'][487] = 0;
_$jscoverage['mongoose/model.js'][490] = 0;
_$jscoverage['mongoose/model.js'][492] = 0;
_$jscoverage['mongoose/model.js'][493] = 0;
_$jscoverage['mongoose/model.js'][494] = 0;
_$jscoverage['mongoose/model.js'][495] = 0;
_$jscoverage['mongoose/model.js'][496] = 0;
_$jscoverage['mongoose/model.js'][511] = 0;
_$jscoverage['mongoose/model.js'][512] = 0;
_$jscoverage['mongoose/model.js'][524] = 0;
_$jscoverage['mongoose/model.js'][525] = 0;
_$jscoverage['mongoose/model.js'][527] = 0;
_$jscoverage['mongoose/model.js'][528] = 0;
_$jscoverage['mongoose/model.js'][531] = 0;
_$jscoverage['mongoose/model.js'][532] = 0;
_$jscoverage['mongoose/model.js'][534] = 0;
_$jscoverage['mongoose/model.js'][535] = 0;
_$jscoverage['mongoose/model.js'][537] = 0;
_$jscoverage['mongoose/model.js'][539] = 0;
_$jscoverage['mongoose/model.js'][541] = 0;
_$jscoverage['mongoose/model.js'][542] = 0;
_$jscoverage['mongoose/model.js'][543] = 0;
_$jscoverage['mongoose/model.js'][557] = 0;
_$jscoverage['mongoose/model.js'][558] = 0;
_$jscoverage['mongoose/model.js'][560] = 0;
_$jscoverage['mongoose/model.js'][561] = 0;
_$jscoverage['mongoose/model.js'][562] = 0;
_$jscoverage['mongoose/model.js'][575] = 0;
_$jscoverage['mongoose/model.js'][576] = 0;

@@ -189,64 +204,139 @@ _$jscoverage['mongoose/model.js'][577] = 0;

_$jscoverage['mongoose/model.js'][579] = 0;
_$jscoverage['mongoose/model.js'][580] = 0;
_$jscoverage['mongoose/model.js'][581] = 0;
_$jscoverage['mongoose/model.js'][582] = 0;
_$jscoverage['mongoose/model.js'][585] = 0;
_$jscoverage['mongoose/model.js'][586] = 0;
_$jscoverage['mongoose/model.js'][589] = 0;
_$jscoverage['mongoose/model.js'][590] = 0;
_$jscoverage['mongoose/model.js'][592] = 0;
_$jscoverage['mongoose/model.js'][604] = 0;
_$jscoverage['mongoose/model.js'][605] = 0;
_$jscoverage['mongoose/model.js'][607] = 0;
_$jscoverage['mongoose/model.js'][608] = 0;
_$jscoverage['mongoose/model.js'][612] = 0;
_$jscoverage['mongoose/model.js'][627] = 0;
_$jscoverage['mongoose/model.js'][629] = 0;
_$jscoverage['mongoose/model.js'][630] = 0;
_$jscoverage['mongoose/model.js'][631] = 0;
_$jscoverage['mongoose/model.js'][633] = 0;
_$jscoverage['mongoose/model.js'][634] = 0;
_$jscoverage['mongoose/model.js'][635] = 0;
_$jscoverage['mongoose/model.js'][636] = 0;
_$jscoverage['mongoose/model.js'][637] = 0;
_$jscoverage['mongoose/model.js'][638] = 0;
_$jscoverage['mongoose/model.js'][639] = 0;
_$jscoverage['mongoose/model.js'][642] = 0;
_$jscoverage['mongoose/model.js'][643] = 0;
_$jscoverage['mongoose/model.js'][646] = 0;
_$jscoverage['mongoose/model.js'][647] = 0;
_$jscoverage['mongoose/model.js'][649] = 0;
}
_$jscoverage['mongoose/model.js'][6]++;
var Document = require("./document"), DocumentArray = require("./types/documentarray"), MongooseError = require("./error"), Query = require("./query").Query, FindQuery = require("./query").FindQuery, EventEmitter = require("./utils").EventEmitter, Promise = require("./promise");
_$jscoverage['mongoose/model.js'][21]++;
var Document = require("./document"), MongooseArray = require("./types/array"), DocumentArray = require("./types/documentarray"), MongooseError = require("./error"), Query = require("./query").Query, FindQuery = require("./query").FindQuery, EventEmitter = require("./utils").EventEmitter, Promise = require("./promise");
_$jscoverage['mongoose/model.js'][22]++;
function Model(doc) {
_$jscoverage['mongoose/model.js'][22]++;
_$jscoverage['mongoose/model.js'][23]++;
Document.call(this, doc);
}
_$jscoverage['mongoose/model.js'][23]++;
_$jscoverage['mongoose/model.js'][24]++;
;
_$jscoverage['mongoose/model.js'][29]++;
_$jscoverage['mongoose/model.js'][30]++;
Model.prototype.__proto__ = Document.prototype;
_$jscoverage['mongoose/model.js'][38]++;
_$jscoverage['mongoose/model.js'][39]++;
Model.prototype.db;
_$jscoverage['mongoose/model.js'][46]++;
_$jscoverage['mongoose/model.js'][47]++;
Model.prototype.collection;
_$jscoverage['mongoose/model.js'][54]++;
_$jscoverage['mongoose/model.js'][55]++;
Model.prototype.name;
_$jscoverage['mongoose/model.js'][64]++;
_$jscoverage['mongoose/model.js'][65]++;
Model.prototype.save = (function (fn) {
_$jscoverage['mongoose/model.js'][65]++;
_$jscoverage['mongoose/model.js'][66]++;
var promise = new Promise(fn), options = {}, self = this;
_$jscoverage['mongoose/model.js'][70]++;
function complete(err) {
_$jscoverage['mongoose/model.js'][71]++;
if (err) {
_$jscoverage['mongoose/model.js'][71]++;
return promise.error(err);
}
_$jscoverage['mongoose/model.js'][72]++;
promise.complete();
_$jscoverage['mongoose/model.js'][73]++;
self.emit("save");
}
_$jscoverage['mongoose/model.js'][74]++;
;
_$jscoverage['mongoose/model.js'][77]++;
if (this.options.safe) {
_$jscoverage['mongoose/model.js'][78]++;
options.safe = true;
}
_$jscoverage['mongoose/model.js'][80]++;
if (this.isNew) {
_$jscoverage['mongoose/model.js'][67]++;
this.collection.insert(this.toObject(), fn);
_$jscoverage['mongoose/model.js'][68]++;
_$jscoverage['mongoose/model.js'][82]++;
this.collection.insert(this.toObject(), options, complete);
_$jscoverage['mongoose/model.js'][83]++;
this.isNew = false;
}
else {
_$jscoverage['mongoose/model.js'][71]++;
_$jscoverage['mongoose/model.js'][86]++;
var self = this, delta, useSet = this.options.use$SetOnSave;
_$jscoverage['mongoose/model.js'][75]++;
_$jscoverage['mongoose/model.js'][90]++;
delta = this.activePaths.map("modify", (function (path) {
_$jscoverage['mongoose/model.js'][76]++;
_$jscoverage['mongoose/model.js'][91]++;
return ({path: path, value: self.getValue(path), schema: self.schema.path(path)});
})).reduce((function (delta, data) {
_$jscoverage['mongoose/model.js'][78]++;
_$jscoverage['mongoose/model.js'][93]++;
var type = data.value, schema = data.schema;
_$jscoverage['mongoose/model.js'][82]++;
_$jscoverage['mongoose/model.js'][97]++;
if (type._path && type.doAtomics) {
_$jscoverage['mongoose/model.js'][83]++;
_$jscoverage['mongoose/model.js'][98]++;
["$push", "$pull"].forEach((function (opType) {
_$jscoverage['mongoose/model.js'][99]++;
var ops = type._atomics.filter((function (op) {
_$jscoverage['mongoose/model.js'][100]++;
return op[0] === opType;
})), opsAll = type._atomics.filter((function (op) {
_$jscoverage['mongoose/model.js'][103]++;
return op[0] === (opType + "All");
}));
_$jscoverage['mongoose/model.js'][105]++;
if (ops.length > 1 || (ops.length === 1 && opsAll.length > 0)) {
_$jscoverage['mongoose/model.js'][112]++;
type._atomics = type._atomics.filter((function (op) {
_$jscoverage['mongoose/model.js'][113]++;
return op[0] !== opType;
}));
_$jscoverage['mongoose/model.js'][115]++;
if (opsAll.length > 0) {
_$jscoverage['mongoose/model.js'][116]++;
type._atomics = type._atomics.filter((function (op) {
_$jscoverage['mongoose/model.js'][117]++;
return op[0] !== (opType + "All");
}));
}
_$jscoverage['mongoose/model.js'][120]++;
var whatToAll = [];
_$jscoverage['mongoose/model.js'][121]++;
opsAll.forEach((function (op) {
_$jscoverage['mongoose/model.js'][122]++;
whatToAll = whatToAll.concat(op[1]);
}));
_$jscoverage['mongoose/model.js'][124]++;
whatToAll = whatToAll.concat(ops.map((function (op) {
_$jscoverage['mongoose/model.js'][125]++;
return op[1];
})));
_$jscoverage['mongoose/model.js'][127]++;
type._atomics.push([opType + "All", whatToAll]);
}
}));
_$jscoverage['mongoose/model.js'][130]++;
type._atomics.forEach((function (op) {
_$jscoverage['mongoose/model.js'][84]++;
_$jscoverage['mongoose/model.js'][131]++;
var obj = delta[op[0]] = delta[op[0]] || {};
_$jscoverage['mongoose/model.js'][85]++;
_$jscoverage['mongoose/model.js'][132]++;
if (op[0] === "$pull" || op[0] === "$push") {
_$jscoverage['mongoose/model.js'][86]++;
_$jscoverage['mongoose/model.js'][133]++;
if (op[1].constructor !== Object) {
_$jscoverage['mongoose/model.js'][87]++;
_$jscoverage['mongoose/model.js'][134]++;
op[1] = schema.cast(op[1])[0];
}
}
_$jscoverage['mongoose/model.js'][90]++;
_$jscoverage['mongoose/model.js'][137]++;
obj[type._path] = op[1].toObject? op[1].toObject(): Array.isArray(op[1])? op[1].map((function (mem) {
_$jscoverage['mongoose/model.js'][94]++;
_$jscoverage['mongoose/model.js'][141]++;
return mem.toObject? mem.toObject(): mem.valueOf? mem.valueOf(): mem;

@@ -257,103 +347,103 @@ })): op[1].valueOf? op[1].valueOf(): op[1];

else {
_$jscoverage['mongoose/model.js'][106]++;
_$jscoverage['mongoose/model.js'][153]++;
if (type._path) {
_$jscoverage['mongoose/model.js'][107]++;
_$jscoverage['mongoose/model.js'][154]++;
type = type.valueOf();
}
_$jscoverage['mongoose/model.js'][109]++;
_$jscoverage['mongoose/model.js'][156]++;
if (useSet) {
_$jscoverage['mongoose/model.js'][110]++;
_$jscoverage['mongoose/model.js'][157]++;
if (! ("$set" in delta)) {
_$jscoverage['mongoose/model.js'][111]++;
_$jscoverage['mongoose/model.js'][158]++;
delta.$set = {};
}
_$jscoverage['mongoose/model.js'][113]++;
_$jscoverage['mongoose/model.js'][160]++;
delta.$set[data.path] = type;
}
else {
_$jscoverage['mongoose/model.js'][115]++;
_$jscoverage['mongoose/model.js'][162]++;
delta[data.path] = type;
}
}
_$jscoverage['mongoose/model.js'][118]++;
_$jscoverage['mongoose/model.js'][165]++;
return delta;
}), {});
_$jscoverage['mongoose/model.js'][121]++;
_$jscoverage['mongoose/model.js'][168]++;
if (Object.keys(delta).length) {
_$jscoverage['mongoose/model.js'][122]++;
this.collection.update({_id: this.doc._id}, delta, {}, fn);
_$jscoverage['mongoose/model.js'][169]++;
this.collection.update({_id: this.doc._id}, delta, options, complete);
}
else {
_$jscoverage['mongoose/model.js'][124]++;
fn(null);
_$jscoverage['mongoose/model.js'][171]++;
complete(null);
}
}
});
_$jscoverage['mongoose/model.js'][135]++;
_$jscoverage['mongoose/model.js'][182]++;
Model.prototype.remove = (function (fn) {
_$jscoverage['mongoose/model.js'][136]++;
_$jscoverage['mongoose/model.js'][183]++;
if (this.removing || this.removed) {
_$jscoverage['mongoose/model.js'][136]++;
_$jscoverage['mongoose/model.js'][183]++;
return this;
}
_$jscoverage['mongoose/model.js'][138]++;
_$jscoverage['mongoose/model.js'][185]++;
if (! this.removing) {
_$jscoverage['mongoose/model.js'][139]++;
_$jscoverage['mongoose/model.js'][186]++;
var promise = this.removing = new Promise(fn), self = this;
_$jscoverage['mongoose/model.js'][142]++;
_$jscoverage['mongoose/model.js'][189]++;
this.collection.remove({_id: this.doc._id}, (function (err) {
_$jscoverage['mongoose/model.js'][143]++;
_$jscoverage['mongoose/model.js'][190]++;
if (err) {
_$jscoverage['mongoose/model.js'][143]++;
_$jscoverage['mongoose/model.js'][190]++;
return promise.error(err);
}
_$jscoverage['mongoose/model.js'][144]++;
_$jscoverage['mongoose/model.js'][191]++;
promise.complete();
_$jscoverage['mongoose/model.js'][145]++;
_$jscoverage['mongoose/model.js'][192]++;
self.emit("remove");
}));
}
_$jscoverage['mongoose/model.js'][149]++;
_$jscoverage['mongoose/model.js'][196]++;
return this;
});
_$jscoverage['mongoose/model.js'][158]++;
_$jscoverage['mongoose/model.js'][205]++;
Model.prototype.registerHooks = (function () {
_$jscoverage['mongoose/model.js'][160]++;
_$jscoverage['mongoose/model.js'][207]++;
this.pre("save", (function (next) {
_$jscoverage['mongoose/model.js'][163]++;
_$jscoverage['mongoose/model.js'][210]++;
var subdocs = 0, error = false, self = this;
_$jscoverage['mongoose/model.js'][167]++;
_$jscoverage['mongoose/model.js'][214]++;
var arrays = this.activePaths.map("init", "modify", (function (i) {
_$jscoverage['mongoose/model.js'][169]++;
_$jscoverage['mongoose/model.js'][216]++;
return self.getValue(i);
})).filter((function (val) {
_$jscoverage['mongoose/model.js'][172]++;
_$jscoverage['mongoose/model.js'][219]++;
return (val && val instanceof DocumentArray && val.length);
}));
_$jscoverage['mongoose/model.js'][175]++;
_$jscoverage['mongoose/model.js'][222]++;
if (! arrays.length) {
_$jscoverage['mongoose/model.js'][175]++;
_$jscoverage['mongoose/model.js'][222]++;
return next();
}
_$jscoverage['mongoose/model.js'][177]++;
_$jscoverage['mongoose/model.js'][224]++;
arrays.forEach((function (array) {
_$jscoverage['mongoose/model.js'][178]++;
_$jscoverage['mongoose/model.js'][225]++;
subdocs += array.length;
_$jscoverage['mongoose/model.js'][179]++;
_$jscoverage['mongoose/model.js'][226]++;
array.forEach((function (value) {
_$jscoverage['mongoose/model.js'][180]++;
_$jscoverage['mongoose/model.js'][227]++;
if (! error) {
_$jscoverage['mongoose/model.js'][181]++;
_$jscoverage['mongoose/model.js'][228]++;
value.save((function (err) {
_$jscoverage['mongoose/model.js'][182]++;
_$jscoverage['mongoose/model.js'][229]++;
if (! error) {
_$jscoverage['mongoose/model.js'][183]++;
_$jscoverage['mongoose/model.js'][230]++;
if (err) {
_$jscoverage['mongoose/model.js'][184]++;
_$jscoverage['mongoose/model.js'][231]++;
error = true;
_$jscoverage['mongoose/model.js'][185]++;
_$jscoverage['mongoose/model.js'][232]++;
next(err);
}
else {
_$jscoverage['mongoose/model.js'][187]++;
_$jscoverage['mongoose/model.js'][234]++;
--subdocs || next();

@@ -367,24 +457,24 @@ }

}));
_$jscoverage['mongoose/model.js'][194]++;
_$jscoverage['mongoose/model.js'][241]++;
Document.prototype.registerHooks.call(this);
});
_$jscoverage['mongoose/model.js'][203]++;
_$jscoverage['mongoose/model.js'][250]++;
Model.prototype.__defineGetter__("options", (function () {
_$jscoverage['mongoose/model.js'][204]++;
_$jscoverage['mongoose/model.js'][251]++;
return this.schema? this.schema.options: {};
}));
_$jscoverage['mongoose/model.js'][211]++;
_$jscoverage['mongoose/model.js'][258]++;
for (var i in EventEmitter.prototype) {
_$jscoverage['mongoose/model.js'][212]++;
_$jscoverage['mongoose/model.js'][259]++;
Model[i] = EventEmitter.prototype[i];
}
_$jscoverage['mongoose/model.js'][220]++;
_$jscoverage['mongoose/model.js'][267]++;
Model.init = (function () {
_$jscoverage['mongoose/model.js'][222]++;
_$jscoverage['mongoose/model.js'][269]++;
var self = this, indexes = this.schema.indexes, count = indexes.length;
_$jscoverage['mongoose/model.js'][226]++;
_$jscoverage['mongoose/model.js'][273]++;
indexes.forEach((function (index) {
_$jscoverage['mongoose/model.js'][227]++;
_$jscoverage['mongoose/model.js'][274]++;
self.collection.ensureIndex(index[0], index[1], (function () {
_$jscoverage['mongoose/model.js'][228]++;
_$jscoverage['mongoose/model.js'][275]++;
--count || self.emit("index");

@@ -394,128 +484,128 @@ }));

});
_$jscoverage['mongoose/model.js'][239]++;
_$jscoverage['mongoose/model.js'][286]++;
Model.schema;
_$jscoverage['mongoose/model.js'][247]++;
_$jscoverage['mongoose/model.js'][294]++;
Model.db;
_$jscoverage['mongoose/model.js'][255]++;
_$jscoverage['mongoose/model.js'][302]++;
Model.collection;
_$jscoverage['mongoose/model.js'][261]++;
_$jscoverage['mongoose/model.js'][308]++;
["db", "collection", "schema", "options"].forEach((function (prop) {
_$jscoverage['mongoose/model.js'][262]++;
_$jscoverage['mongoose/model.js'][309]++;
Model.__defineGetter__(prop, (function () {
_$jscoverage['mongoose/model.js'][263]++;
_$jscoverage['mongoose/model.js'][310]++;
return this.prototype[prop];
}));
}));
_$jscoverage['mongoose/model.js'][271]++;
_$jscoverage['mongoose/model.js'][318]++;
Document.registerHooks.call(Model, "save", "remove", "init");
_$jscoverage['mongoose/model.js'][277]++;
_$jscoverage['mongoose/model.js'][324]++;
module.exports = exports = Model;
_$jscoverage['mongoose/model.js'][279]++;
_$jscoverage['mongoose/model.js'][326]++;
Model.remove = (function (query, callback) {
_$jscoverage['mongoose/model.js'][280]++;
_$jscoverage['mongoose/model.js'][327]++;
var self = this;
_$jscoverage['mongoose/model.js'][281]++;
_$jscoverage['mongoose/model.js'][328]++;
this.query(query, {}, callback, (function () {
_$jscoverage['mongoose/model.js'][282]++;
_$jscoverage['mongoose/model.js'][329]++;
var casted = self.castQuery(this.query), queryComplete = this.queryComplete.bind(this);
_$jscoverage['mongoose/model.js'][284]++;
_$jscoverage['mongoose/model.js'][331]++;
self.collection.remove(casted, queryComplete);
}));
});
_$jscoverage['mongoose/model.js'][298]++;
_$jscoverage['mongoose/model.js'][345]++;
Model.query = (function (query, options, callback, onExecute) {
_$jscoverage['mongoose/model.js'][300]++;
_$jscoverage['mongoose/model.js'][347]++;
if ("function" == typeof options) {
_$jscoverage['mongoose/model.js'][301]++;
_$jscoverage['mongoose/model.js'][348]++;
callback = options;
_$jscoverage['mongoose/model.js'][302]++;
_$jscoverage['mongoose/model.js'][349]++;
options = {};
}
_$jscoverage['mongoose/model.js'][305]++;
_$jscoverage['mongoose/model.js'][352]++;
if (! options) {
_$jscoverage['mongoose/model.js'][306]++;
_$jscoverage['mongoose/model.js'][353]++;
options = {};
}
_$jscoverage['mongoose/model.js'][309]++;
_$jscoverage['mongoose/model.js'][356]++;
if (! ("safe" in options)) {
_$jscoverage['mongoose/model.js'][310]++;
_$jscoverage['mongoose/model.js'][357]++;
options.safe = this.options.safe;
}
_$jscoverage['mongoose/model.js'][312]++;
_$jscoverage['mongoose/model.js'][359]++;
var query = new Query(query, options, onExecute);
_$jscoverage['mongoose/model.js'][314]++;
_$jscoverage['mongoose/model.js'][361]++;
if (callback) {
_$jscoverage['mongoose/model.js'][315]++;
_$jscoverage['mongoose/model.js'][362]++;
query.addBack(callback);
_$jscoverage['mongoose/model.js'][316]++;
_$jscoverage['mongoose/model.js'][363]++;
query.run();
}
_$jscoverage['mongoose/model.js'][319]++;
_$jscoverage['mongoose/model.js'][366]++;
return query;
});
_$jscoverage['mongoose/model.js'][333]++;
_$jscoverage['mongoose/model.js'][380]++;
Model.findQuery = (function (query, fields, options, callback, onExecute) {
_$jscoverage['mongoose/model.js'][334]++;
_$jscoverage['mongoose/model.js'][381]++;
if ("function" == typeof fields) {
_$jscoverage['mongoose/model.js'][335]++;
_$jscoverage['mongoose/model.js'][382]++;
callback = fields;
_$jscoverage['mongoose/model.js'][336]++;
_$jscoverage['mongoose/model.js'][383]++;
fields = {};
_$jscoverage['mongoose/model.js'][337]++;
_$jscoverage['mongoose/model.js'][384]++;
options = {};
}
else {
_$jscoverage['mongoose/model.js'][338]++;
_$jscoverage['mongoose/model.js'][385]++;
if ("function" == typeof options) {
_$jscoverage['mongoose/model.js'][339]++;
_$jscoverage['mongoose/model.js'][386]++;
callback = options;
_$jscoverage['mongoose/model.js'][340]++;
_$jscoverage['mongoose/model.js'][387]++;
options = {};
}
}
_$jscoverage['mongoose/model.js'][343]++;
_$jscoverage['mongoose/model.js'][390]++;
var query = new FindQuery(query, fields, options, onExecute);
_$jscoverage['mongoose/model.js'][345]++;
_$jscoverage['mongoose/model.js'][392]++;
if (callback) {
_$jscoverage['mongoose/model.js'][346]++;
_$jscoverage['mongoose/model.js'][393]++;
query.run(callback);
}
_$jscoverage['mongoose/model.js'][349]++;
_$jscoverage['mongoose/model.js'][396]++;
return query;
});
_$jscoverage['mongoose/model.js'][364]++;
_$jscoverage['mongoose/model.js'][411]++;
Model.castQuery = (function (query) {
_$jscoverage['mongoose/model.js'][365]++;
_$jscoverage['mongoose/model.js'][412]++;
var ret = {}, self = this;
_$jscoverage['mongoose/model.js'][368]++;
_$jscoverage['mongoose/model.js'][415]++;
for (var i in query) {
_$jscoverage['mongoose/model.js'][369]++;
_$jscoverage['mongoose/model.js'][416]++;
if (query[i] === null || query[i] === undefined) {
_$jscoverage['mongoose/model.js'][370]++;
_$jscoverage['mongoose/model.js'][417]++;
ret[i] = query[i];
}
else {
_$jscoverage['mongoose/model.js'][371]++;
_$jscoverage['mongoose/model.js'][418]++;
if (query[i].constructor == Object) {
_$jscoverage['mongoose/model.js'][372]++;
_$jscoverage['mongoose/model.js'][419]++;
ret[i] = query[i];
_$jscoverage['mongoose/model.js'][373]++;
_$jscoverage['mongoose/model.js'][420]++;
Object.keys(query[i]).filter((function (key) {
_$jscoverage['mongoose/model.js'][374]++;
_$jscoverage['mongoose/model.js'][421]++;
return key.charAt(0) === "$";
})).forEach((function (key) {
_$jscoverage['mongoose/model.js'][376]++;
_$jscoverage['mongoose/model.js'][423]++;
var schema = self.schema.path(i);
_$jscoverage['mongoose/model.js'][378]++;
_$jscoverage['mongoose/model.js'][425]++;
if (key == "$in") {
_$jscoverage['mongoose/model.js'][380]++;
_$jscoverage['mongoose/model.js'][427]++;
ret[i][key] = ret[i][key].map(schema.cast);
}
else {
_$jscoverage['mongoose/model.js'][382]++;
_$jscoverage['mongoose/model.js'][429]++;
ret[i][key] = schema.cast(query[i][key]);
}
_$jscoverage['mongoose/model.js'][386]++;
_$jscoverage['mongoose/model.js'][433]++;
if (ret[i][key]._path) {
_$jscoverage['mongoose/model.js'][387]++;
_$jscoverage['mongoose/model.js'][434]++;
ret[i][key] = ret[i][key].valueOf();

@@ -526,10 +616,19 @@ }

else {
_$jscoverage['mongoose/model.js'][389]++;
_$jscoverage['mongoose/model.js'][437]++;
if (query[i].constructor == RegExp || Array.isArray(query[i])) {
_$jscoverage['mongoose/model.js'][390]++;
_$jscoverage['mongoose/model.js'][438]++;
ret[i] = query[i];
}
else {
_$jscoverage['mongoose/model.js'][392]++;
_$jscoverage['mongoose/model.js'][440]++;
ret[i] = this.schema.path(i).cast(query[i]);
_$jscoverage['mongoose/model.js'][442]++;
if (ret[i] instanceof MongooseArray) {
_$jscoverage['mongoose/model.js'][443]++;
var arr = ret[i];
_$jscoverage['mongoose/model.js'][444]++;
delete ret[i];
_$jscoverage['mongoose/model.js'][445]++;
ret[i] = {$all: arr};
}
}

@@ -539,51 +638,51 @@ }

}
_$jscoverage['mongoose/model.js'][395]++;
_$jscoverage['mongoose/model.js'][452]++;
return ret;
});
_$jscoverage['mongoose/model.js'][414]++;
_$jscoverage['mongoose/model.js'][471]++;
Model.find = (function (query, fields, options, callback) {
_$jscoverage['mongoose/model.js'][415]++;
_$jscoverage['mongoose/model.js'][472]++;
var self = this;
_$jscoverage['mongoose/model.js'][417]++;
_$jscoverage['mongoose/model.js'][474]++;
return this.findQuery(query, fields, options, callback, (function (query) {
_$jscoverage['mongoose/model.js'][418]++;
_$jscoverage['mongoose/model.js'][475]++;
var q = this, casted = self.castQuery(this.query);
_$jscoverage['mongoose/model.js'][421]++;
_$jscoverage['mongoose/model.js'][478]++;
if (this.fields) {
_$jscoverage['mongoose/model.js'][422]++;
_$jscoverage['mongoose/model.js'][479]++;
this.options.fields = this.fields;
}
_$jscoverage['mongoose/model.js'][424]++;
_$jscoverage['mongoose/model.js'][481]++;
self.collection.find(casted, this.options, (function (err, cursor) {
_$jscoverage['mongoose/model.js'][425]++;
_$jscoverage['mongoose/model.js'][482]++;
if (err) {
_$jscoverage['mongoose/model.js'][425]++;
_$jscoverage['mongoose/model.js'][482]++;
return q.queryComplete(err);
}
_$jscoverage['mongoose/model.js'][427]++;
_$jscoverage['mongoose/model.js'][484]++;
cursor.toArray((function (err, docs) {
_$jscoverage['mongoose/model.js'][428]++;
_$jscoverage['mongoose/model.js'][485]++;
if (err) {
_$jscoverage['mongoose/model.js'][428]++;
_$jscoverage['mongoose/model.js'][485]++;
return q.queryComplete(err);
}
_$jscoverage['mongoose/model.js'][430]++;
_$jscoverage['mongoose/model.js'][487]++;
var arr = [], count = docs.length;
_$jscoverage['mongoose/model.js'][433]++;
_$jscoverage['mongoose/model.js'][490]++;
if (! count) {
_$jscoverage['mongoose/model.js'][433]++;
_$jscoverage['mongoose/model.js'][490]++;
return q.queryComplete(null, []);
}
_$jscoverage['mongoose/model.js'][435]++;
_$jscoverage['mongoose/model.js'][492]++;
for (var i = 0, l = docs.length; i < l; i++) {
_$jscoverage['mongoose/model.js'][436]++;
_$jscoverage['mongoose/model.js'][493]++;
arr[i] = new self();
_$jscoverage['mongoose/model.js'][437]++;
_$jscoverage['mongoose/model.js'][494]++;
arr[i].init(docs[i], (function (err) {
_$jscoverage['mongoose/model.js'][438]++;
_$jscoverage['mongoose/model.js'][495]++;
if (err) {
_$jscoverage['mongoose/model.js'][438]++;
_$jscoverage['mongoose/model.js'][495]++;
return q.queryComplete(err);
}
_$jscoverage['mongoose/model.js'][439]++;
_$jscoverage['mongoose/model.js'][496]++;
--count || q.queryComplete(null, arr);

@@ -596,42 +695,42 @@ }));

});
_$jscoverage['mongoose/model.js'][454]++;
_$jscoverage['mongoose/model.js'][511]++;
Model.findById = (function (id, fields, options, callback) {
_$jscoverage['mongoose/model.js'][455]++;
_$jscoverage['mongoose/model.js'][512]++;
return this.findOne({_id: id}, fields, options, callback);
});
_$jscoverage['mongoose/model.js'][467]++;
_$jscoverage['mongoose/model.js'][524]++;
Model.findOne = (function (query, fields, options, callback) {
_$jscoverage['mongoose/model.js'][468]++;
_$jscoverage['mongoose/model.js'][525]++;
var self = this;
_$jscoverage['mongoose/model.js'][470]++;
_$jscoverage['mongoose/model.js'][527]++;
return this.findQuery(query, fields, options, callback, (function () {
_$jscoverage['mongoose/model.js'][471]++;
_$jscoverage['mongoose/model.js'][528]++;
var q = this, casted = self.castQuery(this.query);
_$jscoverage['mongoose/model.js'][474]++;
_$jscoverage['mongoose/model.js'][531]++;
if (this.fields) {
_$jscoverage['mongoose/model.js'][475]++;
_$jscoverage['mongoose/model.js'][532]++;
this.options.fields = this.fields;
}
_$jscoverage['mongoose/model.js'][477]++;
_$jscoverage['mongoose/model.js'][534]++;
self.collection.findOne(casted, this.options, (function (err, doc) {
_$jscoverage['mongoose/model.js'][478]++;
_$jscoverage['mongoose/model.js'][535]++;
if (err) {
_$jscoverage['mongoose/model.js'][478]++;
_$jscoverage['mongoose/model.js'][535]++;
return q.queryComplete(err);
}
_$jscoverage['mongoose/model.js'][480]++;
_$jscoverage['mongoose/model.js'][537]++;
if (! doc) {
_$jscoverage['mongoose/model.js'][480]++;
_$jscoverage['mongoose/model.js'][537]++;
return q.queryComplete(null, null);
}
_$jscoverage['mongoose/model.js'][482]++;
_$jscoverage['mongoose/model.js'][539]++;
var casted = new self();
_$jscoverage['mongoose/model.js'][484]++;
_$jscoverage['mongoose/model.js'][541]++;
casted.init(doc, (function (err) {
_$jscoverage['mongoose/model.js'][485]++;
_$jscoverage['mongoose/model.js'][542]++;
if (err) {
_$jscoverage['mongoose/model.js'][485]++;
_$jscoverage['mongoose/model.js'][542]++;
return q.queryComplete(err);
}
_$jscoverage['mongoose/model.js'][486]++;
_$jscoverage['mongoose/model.js'][543]++;
q.queryComplete(null, casted);

@@ -642,27 +741,27 @@ }));

});
_$jscoverage['mongoose/model.js'][500]++;
_$jscoverage['mongoose/model.js'][557]++;
Model.count = (function (query, callback) {
_$jscoverage['mongoose/model.js'][501]++;
_$jscoverage['mongoose/model.js'][558]++;
var self = this;
_$jscoverage['mongoose/model.js'][503]++;
_$jscoverage['mongoose/model.js'][560]++;
return this.query(query, {}, callback, (function () {
_$jscoverage['mongoose/model.js'][504]++;
_$jscoverage['mongoose/model.js'][561]++;
var casted = self.castQuery(this.query);
_$jscoverage['mongoose/model.js'][505]++;
_$jscoverage['mongoose/model.js'][562]++;
self.collection.count(casted, this.queryComplete.bind(this));
}));
});
_$jscoverage['mongoose/model.js'][518]++;
_$jscoverage['mongoose/model.js'][575]++;
Model.create = (function (doc, fn) {
_$jscoverage['mongoose/model.js'][519]++;
_$jscoverage['mongoose/model.js'][576]++;
var document = new this(doc);
_$jscoverage['mongoose/model.js'][520]++;
_$jscoverage['mongoose/model.js'][577]++;
document.save((function (err) {
_$jscoverage['mongoose/model.js'][521]++;
_$jscoverage['mongoose/model.js'][578]++;
if (err) {
_$jscoverage['mongoose/model.js'][521]++;
_$jscoverage['mongoose/model.js'][578]++;
fn(err);
}
else {
_$jscoverage['mongoose/model.js'][522]++;
_$jscoverage['mongoose/model.js'][579]++;
fn(null, document);

@@ -672,50 +771,50 @@ }

});
_$jscoverage['mongoose/model.js'][547]++;
_$jscoverage['mongoose/model.js'][604]++;
Model.update = (function (query, doc, options, callback) {
_$jscoverage['mongoose/model.js'][548]++;
_$jscoverage['mongoose/model.js'][605]++;
var self = this;
_$jscoverage['mongoose/model.js'][550]++;
_$jscoverage['mongoose/model.js'][607]++;
return this.query(query, options, callback, (function () {
_$jscoverage['mongoose/model.js'][551]++;
_$jscoverage['mongoose/model.js'][608]++;
var castQuery = self.castQuery(this.query), castDoc = self.castQuery(doc), queryComplete = this.queryComplete.bind(this);
_$jscoverage['mongoose/model.js'][555]++;
_$jscoverage['mongoose/model.js'][612]++;
self.collection.update(castQuery, castDoc, this.options, queryComplete);
}));
});
_$jscoverage['mongoose/model.js'][570]++;
_$jscoverage['mongoose/model.js'][627]++;
Model.compile = (function (name, schema, collectionName, connection, base) {
_$jscoverage['mongoose/model.js'][572]++;
_$jscoverage['mongoose/model.js'][629]++;
function model() {
_$jscoverage['mongoose/model.js'][573]++;
_$jscoverage['mongoose/model.js'][630]++;
Model.apply(this, arguments);
}
_$jscoverage['mongoose/model.js'][574]++;
_$jscoverage['mongoose/model.js'][631]++;
;
_$jscoverage['mongoose/model.js'][576]++;
_$jscoverage['mongoose/model.js'][633]++;
model.name = name;
_$jscoverage['mongoose/model.js'][577]++;
_$jscoverage['mongoose/model.js'][634]++;
model.__proto__ = Model;
_$jscoverage['mongoose/model.js'][578]++;
_$jscoverage['mongoose/model.js'][635]++;
model.prototype.__proto__ = Model.prototype;
_$jscoverage['mongoose/model.js'][579]++;
_$jscoverage['mongoose/model.js'][636]++;
model.prototype.base = base;
_$jscoverage['mongoose/model.js'][580]++;
_$jscoverage['mongoose/model.js'][637]++;
model.prototype.schema = schema;
_$jscoverage['mongoose/model.js'][581]++;
_$jscoverage['mongoose/model.js'][638]++;
model.prototype.db = connection;
_$jscoverage['mongoose/model.js'][582]++;
_$jscoverage['mongoose/model.js'][639]++;
model.prototype.collection = connection.collection(collectionName);
_$jscoverage['mongoose/model.js'][585]++;
_$jscoverage['mongoose/model.js'][642]++;
for (var i in schema.methods) {
_$jscoverage['mongoose/model.js'][586]++;
_$jscoverage['mongoose/model.js'][643]++;
model.prototype[i] = schema.methods[i];
}
_$jscoverage['mongoose/model.js'][589]++;
_$jscoverage['mongoose/model.js'][646]++;
for (var i in schema.statics) {
_$jscoverage['mongoose/model.js'][590]++;
_$jscoverage['mongoose/model.js'][647]++;
model[i] = schema.statics[i];
}
_$jscoverage['mongoose/model.js'][592]++;
_$jscoverage['mongoose/model.js'][649]++;
return model;
});
_$jscoverage['mongoose/model.js'].source = ["","/**"," * Module dependencies."," */","","var Document = require('./document')"," , DocumentArray = require('./types/documentarray')"," , MongooseError = require('./error')"," , Query = require('./query').Query"," , FindQuery = require('./query').FindQuery"," , EventEmitter = require('./utils').EventEmitter"," , Promise = require('./promise');","","/**"," * Model constructor"," *"," * @param {Object} values to set"," * @api public"," */","","function Model (doc) {"," Document.call(this, doc);","};","","/**"," * Inherits from Document."," */","","Model.prototype.__proto__ = Document.prototype;","","/**"," * Connection the model uses. Set by the Connection or if absent set to the"," * default mongoose connection;"," *"," * @api public"," */","","Model.prototype.db;","","/**"," * Collection the model uses. Set by Mongoose instance"," *"," * @api public"," */","","Model.prototype.collection;","","/**"," * Model name."," *"," * @api public"," */","","Model.prototype.name;","","/**"," * Saves the document."," *"," * @see Model#registerHooks"," * @param {Function} callback"," * @api public"," */","","Model.prototype.save = function (fn) {"," if (this.isNew) {"," // send entire doc"," this.collection.insert(this.toObject(), fn);"," this.isNew = false;"," } else {"," // send delta"," var self = this"," , delta"," , useSet = this.options['use$SetOnSave'];",""," delta = this.activePaths.map('modify', function (path) {"," return { path: path, value: self.getValue(path), schema: self.schema.path(path) };"," }).reduce( function (delta, data) {"," var type = data.value"," , schema = data.schema;",""," // a MongooseArray or MongooseNumber"," if (type._path &amp;&amp; type.doAtomics) {"," type._atomics.forEach( function (op) {"," var obj = delta[op[0]] = delta[op[0]] || {};"," if (op[0] === '$pull' || op[0] === '$push') {"," if (op[1].constructor !== Object) {"," op[1] = schema.cast(op[1])[0];"," }"," }"," obj[type._path] = op[1].toObject"," ? op[1].toObject() // If the value is an array"," : Array.isArray(op[1])"," ? op[1].map( function (mem) { "," return mem.toObject"," ? mem.toObject()"," : mem.valueOf"," ? mem.valueOf()"," : mem;"," })"," : op[1].valueOf"," ? op[1].valueOf() // Numbers"," : op[1];"," });"," } else {"," // normalize MongooseArray or MongooseNumber"," if (type._path)"," type = type.valueOf();",""," if (useSet) {"," if (!('$set' in delta))"," delta['$set'] = {};",""," delta['$set'][data.path] = type;"," } else"," delta[data.path] = type;"," }",""," return delta;"," }, {});",""," if (Object.keys(delta).length)"," this.collection.update({ _id: this.doc._id }, delta, {}, fn);"," else"," fn(null);"," // TODO Clear 'modify'('dirty') cache"," }","};","","/**"," * Remove the document"," *"," * @param {Function} callback"," */","","Model.prototype.remove = function (fn) {"," if (this.removing || this.removed) return this;",""," if (!this.removing) {"," var promise = this.removing = new Promise(fn)"," , self = this;",""," this.collection.remove({ _id: this.doc._id }, function (err) {"," if (err) return promise.error(err);"," promise.complete();"," self.emit('remove');"," });"," }",""," return this;","};","","/**"," * Register hooks override"," *"," * @api private"," */","","Model.prototype.registerHooks = function () {"," // make sure to pass along all the errors from subdocuments"," this.pre('save', function (next) {"," // we keep the error semaphore to make sure we don't"," // call `save` unnecessarily (we only need 1 error)"," var subdocs = 0"," , error = false"," , self = this;",""," var arrays = this.activePaths"," .map('init', 'modify', function (i) {"," return self.getValue(i);"," })"," .filter(function (val) {"," return (val &amp;&amp; val instanceof DocumentArray &amp;&amp; val.length);"," });",""," if (!arrays.length) return next();",""," arrays.forEach(function (array) {"," subdocs += array.length;"," array.forEach(function (value) {"," if (!error)"," value.save(function (err) {"," if (!error) {"," if (err) {"," error = true;"," next(err);"," } else"," --subdocs || next();"," }"," });"," });"," });"," });",""," Document.prototype.registerHooks.call(this);","};","","/**"," * Access the options defined in the schema"," *"," * @api private"," */","","Model.prototype.__defineGetter__('options', function () {"," return this.schema ? this.schema.options : {};","});","","/**"," * Give the constructor the ability to emit events."," */","","for (var i in EventEmitter.prototype)"," Model[i] = EventEmitter.prototype[i];","","/**"," * Called when the model compiles"," *"," * @api private"," */","","Model.init = function () {"," // build indexes"," var self = this"," , indexes = this.schema.indexes"," , count = indexes.length;",""," indexes.forEach(function (index) {"," self.collection.ensureIndex(index[0], index[1], function(){"," --count || self.emit('index');"," });"," });","};","","/**"," * Document schema "," *"," * @api public"," */","","Model.schema;","","/**"," * Database instance the model uses."," *"," * @api public"," */","","Model.db;","","/**"," * Collection the model uses."," *"," * @api public"," */","","Model.collection;","","/**"," * Define properties that access the prototype."," */","","['db', 'collection', 'schema', 'options'].forEach(function(prop){"," Model.__defineGetter__(prop, function(){"," return this.prototype[prop];"," });","});","","/**"," * Register hooks for some methods."," */","","Document.registerHooks.call(Model, 'save', 'remove', 'init');","","/**"," * Module exports."," */","","module.exports = exports = Model;","","Model.remove = function (query, callback) {"," var self = this;"," this.query(query, {}, callback, function () {"," var casted = self.castQuery(this.query)"," , queryComplete = this.queryComplete.bind(this);"," self.collection.remove(casted, queryComplete);"," });","};","","/**"," * Creates a query for the signature `query, options, callback`"," *"," * @param {Object} query"," * @param {Object} options for the query"," * @param {Function} callback"," * @param {Function} function to be called when query executes"," * @api private"," */","","Model.query = function (query, options, callback, onExecute) {"," // determine callback for `query, fields, callback, options` signature"," if ('function' == typeof options) {"," callback = options;"," options = {};"," }",""," if (!options)"," options = {};",""," // merge query defaults from schema options"," if (!('safe' in options))"," options.safe = this.options.safe;",""," var query = new Query(query, options, onExecute);",""," if (callback) {"," query.addBack(callback);"," query.run();"," }",""," return query;","};","","/**"," * Creates a query for the signature `query, fields, callback, options`"," *"," * @param {Object} query"," * @param {Object} fields to get, or array of fields"," * @param {Object} options for the query"," * @param {Function} callback"," * @param {Function} function to be called when query executes"," * @api private"," */","","Model.findQuery = function (query, fields, options, callback, onExecute) {"," if ('function' == typeof fields) {"," callback = fields;"," fields = {};"," options = {};"," } else if ('function' == typeof options) {"," callback = options;"," options = {};"," }",""," var query = new FindQuery(query, fields, options, onExecute);"," "," if (callback) {"," query.run(callback);"," }",""," return query;","};","","/**"," * Casts a query"," *"," * Examples:"," * "," * // will return { _id: ObjectId }"," * castQuery({ _id: '4c40f33a37483d8e14000001' })"," * "," * @param {Object} query"," * @api private"," */","","Model.castQuery = function (query) {"," var ret = {}"," , self = this;",""," for (var i in query){"," if (query[i] === null || query[i] === undefined)"," ret[i] = query[i]"," else if (query[i].constructor == Object) {"," ret[i] = query[i];"," Object.keys(query[i]).filter( function (key) {"," return key.charAt(0) === '$';"," }).forEach( function (key) {"," var schema = self.schema.path(i);",""," if (key == '$in') {"," // cast array"," ret[i][key] = ret[i][key].map(schema.cast);"," } else"," ret[i][key] = schema.cast(query[i][key]);",""," // Take care of special case of MongooseNumber,"," // with resolves scalar via `valueOf`"," if (ret[i][key]._path)"," ret[i][key] = ret[i][key].valueOf();"," });"," } else if (query[i].constructor == RegExp || Array.isArray(query[i]))"," ret[i] = query[i];"," else"," ret[i] = this.schema.path(i).cast(query[i]);"," }",""," return ret;","};","","/**"," * Finds documents"," *"," * Examples:"," * // retrieve only certain keys"," * MyModel.find({ name: /john/i }, ['name', 'friends'], function () { })"," *"," * // pass options"," * MyModel.find({ name: /john/i }, [], { skip: 10 } )"," *"," * @param {Object} query"," * @param {Object/Function} (optional) fields to hydrate or callback"," * @param {Function} callback"," * @api public"," */","","Model.find = function (query, fields, options, callback) {"," var self = this;",""," return this.findQuery(query, fields, options, callback, function (query) {"," var q = this"," , casted = self.castQuery(this.query);",""," if (this.fields)"," this.options.fields = this.fields;",""," self.collection.find(casted, this.options, function (err, cursor) {"," if (err) return q.queryComplete(err);",""," cursor.toArray(function(err, docs){"," if (err) return q.queryComplete(err);",""," var arr = []"," , count = docs.length;",""," if (!count) return q.queryComplete(null, []);",""," for (var i = 0, l = docs.length; i &lt; l; i++){"," arr[i] = new self();"," arr[i].init(docs[i], function (err) {"," if (err) return q.queryComplete(err);"," --count || q.queryComplete(null, arr);"," });"," }"," });"," });"," });","};","","/**"," * Finds by id"," *"," * @param {ObjectId/Object} objectid, or a value that can be casted to it"," * @api public"," */","","Model.findById = function (id, fields, options, callback) {"," return this.findOne({ _id: id }, fields, options, callback);","};","","/**"," * Finds one document"," *"," * @param {Object} query"," * @param {Object/Function} (optional) fields to hydrate or callback"," * @param {Function} callback"," * @api public"," */","","Model.findOne = function (query, fields, options, callback) {"," var self = this;",""," return this.findQuery(query, fields, options, callback, function () {"," var q = this"," , casted = self.castQuery(this.query);",""," if (this.fields)"," this.options.fields = this.fields;",""," self.collection.findOne(casted, this.options, function (err, doc) {"," if (err) return q.queryComplete(err);",""," if (!doc) return q.queryComplete(null, null);"," "," var casted = new self();",""," casted.init(doc, function (err) {"," if (err) return q.queryComplete(err);"," q.queryComplete(null, casted);"," });"," });"," });","};","","/**"," * Counts documents"," *"," * @param {Object} query"," * @param {Function} optional callback"," * @api public"," */","","Model.count = function (query, callback) {"," var self = this;",""," return this.query(query, {}, callback, function () {"," var casted = self.castQuery(this.query);"," self.collection.count(casted, this.queryComplete.bind(this));"," });","};","","","/**"," * Shortcut for creating a new Document that is automatically saved"," * to the db if valid."," *"," * @param {Object} doc"," * @param {Function} callback"," * @api public"," */","Model.create = function (doc, fn) {"," var document = new this(doc);"," document.save(function (err) {"," if (err) fn(err)"," else fn(null, document);"," });","};","","/**"," * Updates documents."," *"," * Examples:"," *"," * MyModel.update({ age: { $gt: 18 } }, { oldEnough: true }, fn);"," * MyModel.update({ name: 'Tobi' }, { ferret: true }, { multi: true }, fn);"," *"," * Valid options:"," * - safe (boolean) safe mode (defaults to value set in schema (false))"," * - upsert (boolean) whether to create the doc if it doesn't match (false)"," * - multi (boolean) whether multiple documents should be update (false)"," *"," * @param {Object} query"," * @param {Object] doc"," * @param {Object/Function} optional options or callback"," * @param {Function} callback"," * @return {Query}"," * @api public"," */","","Model.update = function (query, doc, options, callback) {"," var self = this;",""," return this.query(query, options, callback, function () {"," var castQuery = self.castQuery(this.query)"," , castDoc = self.castQuery(doc)"," , queryComplete = this.queryComplete.bind(this);",""," self.collection.update(castQuery, castDoc, this.options, queryComplete);"," });","};","","/**"," * Compiler utility."," *"," * @param {String} model name"," * @param {Schema} schema object"," * @param {String} collection name"," * @param {Connection} connection to use"," * @param {Mongoose} mongoose instance"," * @api private"," */","","Model.compile = function (name, schema, collectionName, connection, base) {"," // generate new class"," function model () {"," Model.apply(this, arguments);"," };",""," model.name = name;"," model.__proto__ = Model;"," model.prototype.__proto__ = Model.prototype;"," model.prototype.base = base;"," model.prototype.schema = schema;"," model.prototype.db = connection;"," model.prototype.collection = connection.collection(collectionName);",""," // apply methods"," for (var i in schema.methods)"," model.prototype[i] = schema.methods[i];",""," // apply statics"," for (var i in schema.statics)"," model[i] = schema.statics[i];",""," return model;","};"];
_$jscoverage['mongoose/model.js'].source = ["","/**"," * Module dependencies."," */","","var Document = require('./document')"," , MongooseArray = require('./types/array')"," , DocumentArray = require('./types/documentarray')"," , MongooseError = require('./error')"," , Query = require('./query').Query"," , FindQuery = require('./query').FindQuery"," , EventEmitter = require('./utils').EventEmitter"," , Promise = require('./promise');","","/**"," * Model constructor"," *"," * @param {Object} values to set"," * @api public"," */","","function Model (doc) {"," Document.call(this, doc);","};","","/**"," * Inherits from Document."," */","","Model.prototype.__proto__ = Document.prototype;","","/**"," * Connection the model uses. Set by the Connection or if absent set to the"," * default mongoose connection;"," *"," * @api public"," */","","Model.prototype.db;","","/**"," * Collection the model uses. Set by Mongoose instance"," *"," * @api public"," */","","Model.prototype.collection;","","/**"," * Model name."," *"," * @api public"," */","","Model.prototype.name;","","/**"," * Saves the document."," *"," * @see Model#registerHooks"," * @param {Function} callback"," * @api public"," */","","Model.prototype.save = function (fn) {"," var promise = new Promise(fn)"," , options = {}"," , self = this;",""," function complete (err) {"," if (err) return promise.error(err);"," promise.complete();"," self.emit('save');"," };",""," // support for safe mode"," if (this.options.safe)"," options.safe = true;",""," if (this.isNew) {"," // send entire doc"," this.collection.insert(this.toObject(), options, complete);"," this.isNew = false;"," } else {"," // send delta"," var self = this"," , delta"," , useSet = this.options['use$SetOnSave'];",""," delta = this.activePaths.map('modify', function (path) {"," return { path: path, value: self.getValue(path), schema: self.schema.path(path) };"," }).reduce( function (delta, data) {"," var type = data.value"," , schema = data.schema;",""," // a MongooseArray or MongooseNumber"," if (type._path &amp;&amp; type.doAtomics) {"," ['$push', '$pull'].forEach( function (opType) {"," var ops = type._atomics.filter( function (op) {"," return op[0] === opType;"," })"," , opsAll = type._atomics.filter( function (op) {"," return op[0] === (opType + 'All');"," });"," if (ops.length &gt; 1 || (ops.length === 1 &amp;&amp; opsAll.length &gt; 0)) {"," // If we have more than one $push (or $pull)"," // Or if we have at least one $push and at least one $pushAll"," // (or $pull and $pullAll)",""," // Then collapse everything into one $pushAll (or $pullAll)",""," type._atomics = type._atomics.filter( function (op) {"," return op[0] !== opType;"," });"," if (opsAll.length &gt; 0) {"," type._atomics = type._atomics.filter( function (op) {"," return op[0] !== (opType + 'All');"," });"," }"," var whatToAll = [];"," opsAll.forEach( function (op) {"," whatToAll = whatToAll.concat(op[1]);"," });"," whatToAll = whatToAll.concat( ops.map( function (op) {"," return op[1];"," }) );"," type._atomics.push([opType + 'All', whatToAll]);"," }"," });"," type._atomics.forEach( function (op) {"," var obj = delta[op[0]] = delta[op[0]] || {};"," if (op[0] === '$pull' || op[0] === '$push') {"," if (op[1].constructor !== Object) {"," op[1] = schema.cast(op[1])[0];"," }"," }"," obj[type._path] = op[1].toObject"," ? op[1].toObject() // If the value is an array"," : Array.isArray(op[1])"," ? op[1].map( function (mem) { "," return mem.toObject"," ? mem.toObject()"," : mem.valueOf"," ? mem.valueOf()"," : mem;"," })"," : op[1].valueOf"," ? op[1].valueOf() // Numbers"," : op[1];"," });"," } else {"," // normalize MongooseArray or MongooseNumber"," if (type._path)"," type = type.valueOf();",""," if (useSet) {"," if (!('$set' in delta))"," delta['$set'] = {};",""," delta['$set'][data.path] = type;"," } else"," delta[data.path] = type;"," }",""," return delta;"," }, {});",""," if (Object.keys(delta).length)"," this.collection.update({ _id: this.doc._id }, delta, options, complete);"," else"," complete(null);"," // TODO Clear 'modify'('dirty') cache"," }","};","","/**"," * Remove the document"," *"," * @param {Function} callback"," */","","Model.prototype.remove = function (fn) {"," if (this.removing || this.removed) return this;",""," if (!this.removing) {"," var promise = this.removing = new Promise(fn)"," , self = this;",""," this.collection.remove({ _id: this.doc._id }, function (err) {"," if (err) return promise.error(err);"," promise.complete();"," self.emit('remove');"," });"," }",""," return this;","};","","/**"," * Register hooks override"," *"," * @api private"," */","","Model.prototype.registerHooks = function () {"," // make sure to pass along all the errors from subdocuments"," this.pre('save', function (next) {"," // we keep the error semaphore to make sure we don't"," // call `save` unnecessarily (we only need 1 error)"," var subdocs = 0"," , error = false"," , self = this;",""," var arrays = this.activePaths"," .map('init', 'modify', function (i) {"," return self.getValue(i);"," })"," .filter(function (val) {"," return (val &amp;&amp; val instanceof DocumentArray &amp;&amp; val.length);"," });",""," if (!arrays.length) return next();",""," arrays.forEach(function (array) {"," subdocs += array.length;"," array.forEach(function (value) {"," if (!error)"," value.save(function (err) {"," if (!error) {"," if (err) {"," error = true;"," next(err);"," } else"," --subdocs || next();"," }"," });"," });"," });"," });",""," Document.prototype.registerHooks.call(this);","};","","/**"," * Access the options defined in the schema"," *"," * @api private"," */","","Model.prototype.__defineGetter__('options', function () {"," return this.schema ? this.schema.options : {};","});","","/**"," * Give the constructor the ability to emit events."," */","","for (var i in EventEmitter.prototype)"," Model[i] = EventEmitter.prototype[i];","","/**"," * Called when the model compiles"," *"," * @api private"," */","","Model.init = function () {"," // build indexes"," var self = this"," , indexes = this.schema.indexes"," , count = indexes.length;",""," indexes.forEach(function (index) {"," self.collection.ensureIndex(index[0], index[1], function(){"," --count || self.emit('index');"," });"," });","};","","/**"," * Document schema "," *"," * @api public"," */","","Model.schema;","","/**"," * Database instance the model uses."," *"," * @api public"," */","","Model.db;","","/**"," * Collection the model uses."," *"," * @api public"," */","","Model.collection;","","/**"," * Define properties that access the prototype."," */","","['db', 'collection', 'schema', 'options'].forEach(function(prop){"," Model.__defineGetter__(prop, function(){"," return this.prototype[prop];"," });","});","","/**"," * Register hooks for some methods."," */","","Document.registerHooks.call(Model, 'save', 'remove', 'init');","","/**"," * Module exports."," */","","module.exports = exports = Model;","","Model.remove = function (query, callback) {"," var self = this;"," this.query(query, {}, callback, function () {"," var casted = self.castQuery(this.query)"," , queryComplete = this.queryComplete.bind(this);"," self.collection.remove(casted, queryComplete);"," });","};","","/**"," * Creates a query for the signature `query, options, callback`"," *"," * @param {Object} query"," * @param {Object} options for the query"," * @param {Function} callback"," * @param {Function} function to be called when query executes"," * @api private"," */","","Model.query = function (query, options, callback, onExecute) {"," // determine callback for `query, fields, callback, options` signature"," if ('function' == typeof options) {"," callback = options;"," options = {};"," }",""," if (!options)"," options = {};",""," // merge query defaults from schema options"," if (!('safe' in options))"," options.safe = this.options.safe;",""," var query = new Query(query, options, onExecute);",""," if (callback) {"," query.addBack(callback);"," query.run();"," }",""," return query;","};","","/**"," * Creates a query for the signature `query, fields, callback, options`"," *"," * @param {Object} query"," * @param {Object} fields to get, or array of fields"," * @param {Object} options for the query"," * @param {Function} callback"," * @param {Function} function to be called when query executes"," * @api private"," */","","Model.findQuery = function (query, fields, options, callback, onExecute) {"," if ('function' == typeof fields) {"," callback = fields;"," fields = {};"," options = {};"," } else if ('function' == typeof options) {"," callback = options;"," options = {};"," }",""," var query = new FindQuery(query, fields, options, onExecute);"," "," if (callback) {"," query.run(callback);"," }",""," return query;","};","","/**"," * Casts a query"," *"," * Examples:"," * "," * // will return { _id: ObjectId }"," * castQuery({ _id: '4c40f33a37483d8e14000001' })"," * "," * @param {Object} query"," * @api private"," */","","Model.castQuery = function (query) {"," var ret = {}"," , self = this;",""," for (var i in query){"," if (query[i] === null || query[i] === undefined)"," ret[i] = query[i];"," else if (query[i].constructor == Object) {"," ret[i] = query[i];"," Object.keys(query[i]).filter( function (key) {"," return key.charAt(0) === '$';"," }).forEach( function (key) {"," var schema = self.schema.path(i);",""," if (key == '$in') {"," // cast array"," ret[i][key] = ret[i][key].map(schema.cast);"," } else"," ret[i][key] = schema.cast(query[i][key]);",""," // Take care of special case of MongooseNumber,"," // with resolves scalar via `valueOf`"," if (ret[i][key]._path)"," ret[i][key] = ret[i][key].valueOf();",""," });"," } else if (query[i].constructor == RegExp || Array.isArray(query[i]))"," ret[i] = query[i];"," else {"," ret[i] = this.schema.path(i).cast(query[i]);"," // Take care of special case of MongooseArray for checking 1 element membership"," if (ret[i] instanceof MongooseArray) {"," var arr = ret[i];"," delete ret[i];"," ret[i] = {"," $all: arr"," };"," }"," }"," }",""," return ret;","};","","/**"," * Finds documents"," *"," * Examples:"," * // retrieve only certain keys"," * MyModel.find({ name: /john/i }, ['name', 'friends'], function () { })"," *"," * // pass options"," * MyModel.find({ name: /john/i }, [], { skip: 10 } )"," *"," * @param {Object} query"," * @param {Object/Function} (optional) fields to hydrate or callback"," * @param {Function} callback"," * @api public"," */","","Model.find = function (query, fields, options, callback) {"," var self = this;",""," return this.findQuery(query, fields, options, callback, function (query) {"," var q = this"," , casted = self.castQuery(this.query);",""," if (this.fields)"," this.options.fields = this.fields;",""," self.collection.find(casted, this.options, function (err, cursor) {"," if (err) return q.queryComplete(err);",""," cursor.toArray(function(err, docs){"," if (err) return q.queryComplete(err);",""," var arr = []"," , count = docs.length;",""," if (!count) return q.queryComplete(null, []);",""," for (var i = 0, l = docs.length; i &lt; l; i++){"," arr[i] = new self();"," arr[i].init(docs[i], function (err) {"," if (err) return q.queryComplete(err);"," --count || q.queryComplete(null, arr);"," });"," }"," });"," });"," });","};","","/**"," * Finds by id"," *"," * @param {ObjectId/Object} objectid, or a value that can be casted to it"," * @api public"," */","","Model.findById = function (id, fields, options, callback) {"," return this.findOne({ _id: id }, fields, options, callback);","};","","/**"," * Finds one document"," *"," * @param {Object} query"," * @param {Object/Function} (optional) fields to hydrate or callback"," * @param {Function} callback"," * @api public"," */","","Model.findOne = function (query, fields, options, callback) {"," var self = this;",""," return this.findQuery(query, fields, options, callback, function () {"," var q = this"," , casted = self.castQuery(this.query);",""," if (this.fields)"," this.options.fields = this.fields;",""," self.collection.findOne(casted, this.options, function (err, doc) {"," if (err) return q.queryComplete(err);",""," if (!doc) return q.queryComplete(null, null);"," "," var casted = new self();",""," casted.init(doc, function (err) {"," if (err) return q.queryComplete(err);"," q.queryComplete(null, casted);"," });"," });"," });","};","","/**"," * Counts documents"," *"," * @param {Object} query"," * @param {Function} optional callback"," * @api public"," */","","Model.count = function (query, callback) {"," var self = this;",""," return this.query(query, {}, callback, function () {"," var casted = self.castQuery(this.query);"," self.collection.count(casted, this.queryComplete.bind(this));"," });","};","","","/**"," * Shortcut for creating a new Document that is automatically saved"," * to the db if valid."," *"," * @param {Object} doc"," * @param {Function} callback"," * @api public"," */","Model.create = function (doc, fn) {"," var document = new this(doc);"," document.save(function (err) {"," if (err) fn(err)"," else fn(null, document);"," });","};","","/**"," * Updates documents."," *"," * Examples:"," *"," * MyModel.update({ age: { $gt: 18 } }, { oldEnough: true }, fn);"," * MyModel.update({ name: 'Tobi' }, { ferret: true }, { multi: true }, fn);"," *"," * Valid options:"," * - safe (boolean) safe mode (defaults to value set in schema (false))"," * - upsert (boolean) whether to create the doc if it doesn't match (false)"," * - multi (boolean) whether multiple documents should be update (false)"," *"," * @param {Object} query"," * @param {Object] doc"," * @param {Object/Function} optional options or callback"," * @param {Function} callback"," * @return {Query}"," * @api public"," */","","Model.update = function (query, doc, options, callback) {"," var self = this;",""," return this.query(query, options, callback, function () {"," var castQuery = self.castQuery(this.query)"," , castDoc = self.castQuery(doc)"," , queryComplete = this.queryComplete.bind(this);",""," self.collection.update(castQuery, castDoc, this.options, queryComplete);"," });","};","","/**"," * Compiler utility."," *"," * @param {String} model name"," * @param {Schema} schema object"," * @param {String} collection name"," * @param {Connection} connection to use"," * @param {Mongoose} mongoose instance"," * @api private"," */","","Model.compile = function (name, schema, collectionName, connection, base) {"," // generate new class"," function model () {"," Model.apply(this, arguments);"," };",""," model.name = name;"," model.__proto__ = Model;"," model.prototype.__proto__ = Model.prototype;"," model.prototype.base = base;"," model.prototype.schema = schema;"," model.prototype.db = connection;"," model.prototype.collection = connection.collection(collectionName);",""," // apply methods"," for (var i in schema.methods)"," model.prototype[i] = schema.methods[i];",""," // apply statics"," for (var i in schema.statics)"," model[i] = schema.statics[i];",""," return model;","};"];

@@ -137,3 +137,3 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/schema.js'][29]++;
this.options = utils.options({safe: false, "use$SetOnSave": true}, options);
this.options = utils.options({safe: true, "use$SetOnSave": true}, options);
_$jscoverage['mongoose/schema.js'][35]++;

@@ -400,2 +400,2 @@ if (obj) {

exports.ObjectId = ObjectId;
_$jscoverage['mongoose/schema.js'].source = ["","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , Types = require('./schema/index')"," , VirtualType = require('./virtualtype')"," , utils = require('./utils');","","/**"," * Schema constructor."," *"," * @param {Object} definition"," * @api public"," */","","function Schema (obj, options) {"," this.paths = {};"," this.virtuals = {};"," this.inherits = {};"," this.callQueue = [];"," this._indexes = [];"," this.methods = {};"," this.statics = {};"," this.tree = {};",""," // set options"," this.options = utils.options({"," safe: false"," , 'use$SetOnSave': true"," }, options);",""," // build paths"," if (obj)"," this.add(obj);",""," if (!this.paths['_id'])"," this.add({ _id: ObjectId });","};","","/**"," * Inherit from EventEmitter."," */","","Schema.prototype.__proto__ = EventEmitter.prototype;","","/**"," * Schema by paths"," *"," * Example (embedded doc):"," * {"," * 'test' : SchemaType,"," * , 'test.test' : SchemaType,"," * , 'first_name' : SchemaType"," * }"," *"," * @api private"," */","","Schema.prototype.paths;","","/**"," * Schema as a tree"," *"," * Example:"," * {"," * '_id' : ObjectId"," * , 'nested' : {"," * 'key': String"," * }"," * }"," *"," * @api private"," */","","Schema.prototype.tree;","","/**"," * Sets the keys"," *"," * @param {Object} keys"," * @param {String} prefix"," * @api public"," */","","Schema.prototype.add = function (obj, prefix) {"," prefix = prefix || '';"," for (var i in obj){"," // make sure set of keys are in `tree`"," if (!prefix &amp;&amp; !this.tree[i])"," this.tree[i] = obj[i];",""," if (obj[i].constructor == Object &amp;&amp; (!obj[i].type || obj[i].__nested)) {"," if (Object.keys(obj[i]).length)"," this.add(obj[i], prefix + i + '.');"," else"," this.path(prefix + i, obj[i]); // mixed type"," } else"," this.path(prefix + i, obj[i]);"," }","};","","/**"," * Sets a path (if arity 2)"," * Gets a path (if arity 1)"," *"," * @param {String} path"," * @param {Object} constructor"," * @api public"," */","","Schema.prototype.path = function (path, obj) {"," if (obj == undefined)"," return this.paths[path];",""," if (obj.constructor != Object)"," obj = { type: obj };",""," var type = obj.type || {}; // defaults to mixed",""," if (type.constructor == Object)"," this.paths[path] = new Types.Mixed(path, obj);"," else if (Array.isArray(type) || type == Array){"," // if it was specified through { type } look for `cast`"," var cast = type == Array ? obj.cast : type[0];",""," if (cast instanceof Schema)"," this.paths[path] = new Types.DocumentArray(path, cast, obj);"," else "," this.paths[path] = new Types.Array(path, cast, obj);"," } else"," this.paths[path] = new Types[type.name](path, obj);",""," return this;","};","","/**"," * Iterates through the schema's paths, passing the path string and type object"," * to the callback."," *"," * @param {Function} callback function - fn(pathstring, type)"," * @return {Schema} this for chaining"," * @api public"," */","","Schema.prototype.eachPath = function (fn) {"," for (var k in this.paths)"," if (this.paths.hasOwnProperty(k))"," fn(k, this.paths[k]);"," return this;","};","","/**"," * Given a path, returns whether it is a real, virtual, or"," * ad-hoc/undefined path"," *"," * @param {String} path"," * @return {String}"," * @api public"," */","Schema.prototype.pathType = function (path) {"," if (path in this.paths) return 'real';"," if (path in this.virtuals) return 'virtual';"," return 'adhocOrUndefined';","};","","/**"," * Adds a method call to the queue"," *"," * @param {String} method name"," * @param {Array} arguments"," * @api private"," */","","Schema.prototype.queue = function(name, args){"," this.callQueue.push([name, args]);"," return this;","};","","/**"," * Defines a pre for the document"," *"," * @param {String} method"," * @param {Function} callback"," * @api public"," */","","Schema.prototype.pre = function(){"," return this.queue('pre', arguments);","};","","/**"," * Defines a post for the document"," *"," * @param {String} method"," * @param {Function} callback"," * @api public"," */","","Schema.prototype.post = function(method, fn){"," return this.queue('on', arguments);","};","","/**"," * Registers a plugin for this schema"," *"," * @param {Function} plugin callback"," * @api public"," */","","Schema.prototype.plugin = function (fn, opts) {"," fn(this, opts);"," return this;","};","","/**"," * Adds a method"," *"," * @param {String} method name"," * @param {Function} handler"," * @api public"," */","","Schema.prototype.method = function (name, fn) {"," if ('string' != typeof name)"," for (var i in name)"," this.methods[i] = name[i];"," else"," this.methods[name] = fn;"," return this;","};","","/**"," * Defines a static method"," *"," * @param {String} name"," * @param {Function} handler"," * @api public"," */","","Schema.prototype.static = function(name, fn) {"," if ('string' != typeof name)"," for (var i in name)"," this.statics[i] = name[i];"," else"," this.statics[name] = fn;"," return this;","};","","/**"," * Defines an index (most likely compound)"," * Example:"," * schema.index({ first: 1, last: -1 })"," *"," * @param {Object} field"," * @param {Object} optional options object"," * @api public"," */","","Schema.prototype.index = function (fields, options) {"," this._indexes.push([fields, options || {}]);"," return this;","};","","/**"," * Sets/gets an option"," *"," * @param {String} key"," * @param {Object} optional value"," * @api public"," */","","Schema.prototype.set = function (key, value) {"," if (arguments.length == 1)"," return this.options[key];"," this.options[key] = value;"," return this;","};","","/**"," * Compiles indexes from fields and schema-level indexes"," *"," * @api public"," */","","Schema.prototype.__defineGetter__('indexes', function () {"," var index"," , indexes = []"," , seenSchemas = [];",""," function collectIndexes (paths, prefix) {"," prefix = prefix || '';",""," for (var i in paths){"," if (paths[i]) {"," if (paths[i] instanceof Types.DocumentArray) {"," // avoid recursion"," if (!(~seenSchemas.indexOf(paths[i].schema))) {"," seenSchemas.push(paths[i].schema);"," collectIndexes(paths[i].schema.paths, i + '.');"," }"," } else {"," index = paths[i]._index;",""," if (index !== false &amp;&amp; index !== null){"," var field = {};"," field[prefix + i] = 1;"," indexes.push([field, index.constructor == Object ? index : {} ]);"," }"," }"," }"," }"," }",""," collectIndexes(this.paths);",""," return indexes.concat(this._indexes);","});","","/**"," * Retrieves or creates the virtual type with the given name."," *"," * @param {String} name"," * @return {VirtualType}"," */","","Schema.prototype.virtual = function (name) {"," var virtuals = this.virtuals || (this.virtuals = {})"," return virtuals[name] || (virtuals[name] = this.tree[name] = new VirtualType()); ","};","","/**"," * Fetches the virtual type with the given name."," * Should be distinct from virtual because virtual auto-defines a new VirtualType"," * if the path doesn't exist."," *"," * @param {String} name"," * @return {VirtualType}"," */","","Schema.prototype.virtualpath = function (name) {"," return this.virtuals[name];","};","","/**"," * ObjectId schema identifier. Not an actual ObjectId, only used for Schemas."," *"," * @api public"," */","","function ObjectId () {"," throw new Error('This is an abstract interface. Its only purpose is to mark '"," + 'fields as ObjectId in the schema creation.');","}","","/**"," * Module exports."," */","","module.exports = exports = Schema;","","exports.Types = Types;","","exports.ObjectId = ObjectId;"];
_$jscoverage['mongoose/schema.js'].source = ["","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , Types = require('./schema/index')"," , VirtualType = require('./virtualtype')"," , utils = require('./utils');","","/**"," * Schema constructor."," *"," * @param {Object} definition"," * @api public"," */","","function Schema (obj, options) {"," this.paths = {};"," this.virtuals = {};"," this.inherits = {};"," this.callQueue = [];"," this._indexes = [];"," this.methods = {};"," this.statics = {};"," this.tree = {};",""," // set options"," this.options = utils.options({"," safe: true"," , 'use$SetOnSave': true"," }, options);",""," // build paths"," if (obj)"," this.add(obj);",""," if (!this.paths['_id'])"," this.add({ _id: ObjectId });","};","","/**"," * Inherit from EventEmitter."," */","","Schema.prototype.__proto__ = EventEmitter.prototype;","","/**"," * Schema by paths"," *"," * Example (embedded doc):"," * {"," * 'test' : SchemaType,"," * , 'test.test' : SchemaType,"," * , 'first_name' : SchemaType"," * }"," *"," * @api private"," */","","Schema.prototype.paths;","","/**"," * Schema as a tree"," *"," * Example:"," * {"," * '_id' : ObjectId"," * , 'nested' : {"," * 'key': String"," * }"," * }"," *"," * @api private"," */","","Schema.prototype.tree;","","/**"," * Sets the keys"," *"," * @param {Object} keys"," * @param {String} prefix"," * @api public"," */","","Schema.prototype.add = function (obj, prefix) {"," prefix = prefix || '';"," for (var i in obj){"," // make sure set of keys are in `tree`"," if (!prefix &amp;&amp; !this.tree[i])"," this.tree[i] = obj[i];",""," if (obj[i].constructor == Object &amp;&amp; (!obj[i].type || obj[i].__nested)) {"," if (Object.keys(obj[i]).length)"," this.add(obj[i], prefix + i + '.');"," else"," this.path(prefix + i, obj[i]); // mixed type"," } else"," this.path(prefix + i, obj[i]);"," }","};","","/**"," * Sets a path (if arity 2)"," * Gets a path (if arity 1)"," *"," * @param {String} path"," * @param {Object} constructor"," * @api public"," */","","Schema.prototype.path = function (path, obj) {"," if (obj == undefined)"," return this.paths[path];",""," if (obj.constructor != Object)"," obj = { type: obj };",""," var type = obj.type || {}; // defaults to mixed",""," if (type.constructor == Object)"," this.paths[path] = new Types.Mixed(path, obj);"," else if (Array.isArray(type) || type == Array){"," // if it was specified through { type } look for `cast`"," var cast = type == Array ? obj.cast : type[0];",""," if (cast instanceof Schema)"," this.paths[path] = new Types.DocumentArray(path, cast, obj);"," else "," this.paths[path] = new Types.Array(path, cast, obj);"," } else"," this.paths[path] = new Types[type.name](path, obj);",""," return this;","};","","/**"," * Iterates through the schema's paths, passing the path string and type object"," * to the callback."," *"," * @param {Function} callback function - fn(pathstring, type)"," * @return {Schema} this for chaining"," * @api public"," */","","Schema.prototype.eachPath = function (fn) {"," for (var k in this.paths)"," if (this.paths.hasOwnProperty(k))"," fn(k, this.paths[k]);"," return this;","};","","/**"," * Given a path, returns whether it is a real, virtual, or"," * ad-hoc/undefined path"," *"," * @param {String} path"," * @return {String}"," * @api public"," */","Schema.prototype.pathType = function (path) {"," if (path in this.paths) return 'real';"," if (path in this.virtuals) return 'virtual';"," return 'adhocOrUndefined';","};","","/**"," * Adds a method call to the queue"," *"," * @param {String} method name"," * @param {Array} arguments"," * @api private"," */","","Schema.prototype.queue = function(name, args){"," this.callQueue.push([name, args]);"," return this;","};","","/**"," * Defines a pre for the document"," *"," * @param {String} method"," * @param {Function} callback"," * @api public"," */","","Schema.prototype.pre = function(){"," return this.queue('pre', arguments);","};","","/**"," * Defines a post for the document"," *"," * @param {String} method"," * @param {Function} callback"," * @api public"," */","","Schema.prototype.post = function(method, fn){"," return this.queue('on', arguments);","};","","/**"," * Registers a plugin for this schema"," *"," * @param {Function} plugin callback"," * @api public"," */","","Schema.prototype.plugin = function (fn, opts) {"," fn(this, opts);"," return this;","};","","/**"," * Adds a method"," *"," * @param {String} method name"," * @param {Function} handler"," * @api public"," */","","Schema.prototype.method = function (name, fn) {"," if ('string' != typeof name)"," for (var i in name)"," this.methods[i] = name[i];"," else"," this.methods[name] = fn;"," return this;","};","","/**"," * Defines a static method"," *"," * @param {String} name"," * @param {Function} handler"," * @api public"," */","","Schema.prototype.static = function(name, fn) {"," if ('string' != typeof name)"," for (var i in name)"," this.statics[i] = name[i];"," else"," this.statics[name] = fn;"," return this;","};","","/**"," * Defines an index (most likely compound)"," * Example:"," * schema.index({ first: 1, last: -1 })"," *"," * @param {Object} field"," * @param {Object} optional options object"," * @api public"," */","","Schema.prototype.index = function (fields, options) {"," this._indexes.push([fields, options || {}]);"," return this;","};","","/**"," * Sets/gets an option"," *"," * @param {String} key"," * @param {Object} optional value"," * @api public"," */","","Schema.prototype.set = function (key, value) {"," if (arguments.length == 1)"," return this.options[key];"," this.options[key] = value;"," return this;","};","","/**"," * Compiles indexes from fields and schema-level indexes"," *"," * @api public"," */","","Schema.prototype.__defineGetter__('indexes', function () {"," var index"," , indexes = []"," , seenSchemas = [];",""," function collectIndexes (paths, prefix) {"," prefix = prefix || '';",""," for (var i in paths){"," if (paths[i]) {"," if (paths[i] instanceof Types.DocumentArray) {"," // avoid recursion"," if (!(~seenSchemas.indexOf(paths[i].schema))) {"," seenSchemas.push(paths[i].schema);"," collectIndexes(paths[i].schema.paths, i + '.');"," }"," } else {"," index = paths[i]._index;",""," if (index !== false &amp;&amp; index !== null){"," var field = {};"," field[prefix + i] = 1;"," indexes.push([field, index.constructor == Object ? index : {} ]);"," }"," }"," }"," }"," }",""," collectIndexes(this.paths);",""," return indexes.concat(this._indexes);","});","","/**"," * Retrieves or creates the virtual type with the given name."," *"," * @param {String} name"," * @return {VirtualType}"," */","","Schema.prototype.virtual = function (name) {"," var virtuals = this.virtuals || (this.virtuals = {})"," return virtuals[name] || (virtuals[name] = this.tree[name] = new VirtualType()); ","};","","/**"," * Fetches the virtual type with the given name."," * Should be distinct from virtual because virtual auto-defines a new VirtualType"," * if the path doesn't exist."," *"," * @param {String} name"," * @return {VirtualType}"," */","","Schema.prototype.virtualpath = function (name) {"," return this.virtuals[name];","};","","/**"," * ObjectId schema identifier. Not an actual ObjectId, only used for Schemas."," *"," * @api public"," */","","function ObjectId () {"," throw new Error('This is an abstract interface. Its only purpose is to mark '"," + 'fields as ObjectId in the schema creation.');","}","","/**"," * Module exports."," */","","module.exports = exports = Schema;","","exports.Types = Types;","","exports.ObjectId = ObjectId;"];

@@ -11,27 +11,28 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/schema/array.js'][32] = 0;
_$jscoverage['mongoose/schema/array.js'][34] = 0;
_$jscoverage['mongoose/schema/array.js'][35] = 0;
_$jscoverage['mongoose/schema/array.js'][36] = 0;
_$jscoverage['mongoose/schema/array.js'][37] = 0;
_$jscoverage['mongoose/schema/array.js'][43] = 0;
_$jscoverage['mongoose/schema/array.js'][51] = 0;
_$jscoverage['mongoose/schema/array.js'][52] = 0;
_$jscoverage['mongoose/schema/array.js'][63] = 0;
_$jscoverage['mongoose/schema/array.js'][64] = 0;
_$jscoverage['mongoose/schema/array.js'][39] = 0;
_$jscoverage['mongoose/schema/array.js'][45] = 0;
_$jscoverage['mongoose/schema/array.js'][53] = 0;
_$jscoverage['mongoose/schema/array.js'][54] = 0;
_$jscoverage['mongoose/schema/array.js'][65] = 0;
_$jscoverage['mongoose/schema/array.js'][66] = 0;
_$jscoverage['mongoose/schema/array.js'][67] = 0;
_$jscoverage['mongoose/schema/array.js'][68] = 0;
_$jscoverage['mongoose/schema/array.js'][70] = 0;
_$jscoverage['mongoose/schema/array.js'][71] = 0;
_$jscoverage['mongoose/schema/array.js'][72] = 0;
_$jscoverage['mongoose/schema/array.js'][73] = 0;
_$jscoverage['mongoose/schema/array.js'][76] = 0;
_$jscoverage['mongoose/schema/array.js'][80] = 0;
_$jscoverage['mongoose/schema/array.js'][74] = 0;
_$jscoverage['mongoose/schema/array.js'][75] = 0;
_$jscoverage['mongoose/schema/array.js'][78] = 0;
_$jscoverage['mongoose/schema/array.js'][82] = 0;
_$jscoverage['mongoose/schema/array.js'][85] = 0;
_$jscoverage['mongoose/schema/array.js'][96] = 0;
_$jscoverage['mongoose/schema/array.js'][97] = 0;
_$jscoverage['mongoose/schema/array.js'][84] = 0;
_$jscoverage['mongoose/schema/array.js'][87] = 0;
_$jscoverage['mongoose/schema/array.js'][98] = 0;
_$jscoverage['mongoose/schema/array.js'][99] = 0;
_$jscoverage['mongoose/schema/array.js'][100] = 0;
_$jscoverage['mongoose/schema/array.js'][102] = 0;
_$jscoverage['mongoose/schema/array.js'][109] = 0;
_$jscoverage['mongoose/schema/array.js'][104] = 0;
_$jscoverage['mongoose/schema/array.js'][111] = 0;
}

@@ -51,40 +52,45 @@ _$jscoverage['mongoose/schema/array.js'][5]++;

_$jscoverage['mongoose/schema/array.js'][32]++;
var self = this;
_$jscoverage['mongoose/schema/array.js'][34]++;
var self = this, defaultArr;
_$jscoverage['mongoose/schema/array.js'][35]++;
if (this.defaultValue) {
_$jscoverage['mongoose/schema/array.js'][35]++;
defaultArr = this.defaultValue;
}
_$jscoverage['mongoose/schema/array.js'][36]++;
this["default"]((function () {
_$jscoverage['mongoose/schema/array.js'][35]++;
return new MongooseArray([], self.path, this);
_$jscoverage['mongoose/schema/array.js'][37]++;
return new MongooseArray(defaultArr || [], self.path, this);
}));
}
_$jscoverage['mongoose/schema/array.js'][37]++;
_$jscoverage['mongoose/schema/array.js'][39]++;
;
_$jscoverage['mongoose/schema/array.js'][43]++;
_$jscoverage['mongoose/schema/array.js'][45]++;
SchemaArray.prototype.__proto__ = SchemaType.prototype;
_$jscoverage['mongoose/schema/array.js'][51]++;
_$jscoverage['mongoose/schema/array.js'][53]++;
SchemaArray.prototype.checkRequired = (function (value) {
_$jscoverage['mongoose/schema/array.js'][52]++;
_$jscoverage['mongoose/schema/array.js'][54]++;
return ! ! (value && value.length);
});
_$jscoverage['mongoose/schema/array.js'][63]++;
_$jscoverage['mongoose/schema/array.js'][65]++;
SchemaArray.prototype.cast = (function (value, doc) {
_$jscoverage['mongoose/schema/array.js'][64]++;
_$jscoverage['mongoose/schema/array.js'][66]++;
if (Array.isArray(value)) {
_$jscoverage['mongoose/schema/array.js'][65]++;
_$jscoverage['mongoose/schema/array.js'][67]++;
if (! (value instanceof MongooseArray)) {
_$jscoverage['mongoose/schema/array.js'][66]++;
_$jscoverage['mongoose/schema/array.js'][68]++;
value = new MongooseArray(value, this.path, doc);
}
_$jscoverage['mongoose/schema/array.js'][68]++;
_$jscoverage['mongoose/schema/array.js'][70]++;
var caster = this.caster;
_$jscoverage['mongoose/schema/array.js'][70]++;
_$jscoverage['mongoose/schema/array.js'][72]++;
if (caster) {
_$jscoverage['mongoose/schema/array.js'][71]++;
_$jscoverage['mongoose/schema/array.js'][73]++;
for (var i = 0, l = value.length; i < l; i++) {
_$jscoverage['mongoose/schema/array.js'][72]++;
_$jscoverage['mongoose/schema/array.js'][74]++;
try {
_$jscoverage['mongoose/schema/array.js'][73]++;
_$jscoverage['mongoose/schema/array.js'][75]++;
value[i] = caster.prototype.cast.call(null, value[i]);
}
catch (e) {
_$jscoverage['mongoose/schema/array.js'][76]++;
_$jscoverage['mongoose/schema/array.js'][78]++;
throw new CastError(e.type, value);

@@ -94,27 +100,27 @@ }

}
_$jscoverage['mongoose/schema/array.js'][80]++;
_$jscoverage['mongoose/schema/array.js'][82]++;
return value;
}
else {
_$jscoverage['mongoose/schema/array.js'][82]++;
_$jscoverage['mongoose/schema/array.js'][84]++;
return this.cast([value], doc);
}
_$jscoverage['mongoose/schema/array.js'][85]++;
_$jscoverage['mongoose/schema/array.js'][87]++;
throw new CastError("array", value, caster);
});
_$jscoverage['mongoose/schema/array.js'][96]++;
_$jscoverage['mongoose/schema/array.js'][98]++;
ArrayNumberSchema.prototype.cast = (function (value) {
_$jscoverage['mongoose/schema/array.js'][97]++;
_$jscoverage['mongoose/schema/array.js'][99]++;
if (! isNaN(value)) {
_$jscoverage['mongoose/schema/array.js'][98]++;
_$jscoverage['mongoose/schema/array.js'][100]++;
if (value instanceof Number || typeof value == "number" || (value.toString && value.toString() == Number(value))) {
_$jscoverage['mongoose/schema/array.js'][100]++;
_$jscoverage['mongoose/schema/array.js'][102]++;
return Number(value);
}
}
_$jscoverage['mongoose/schema/array.js'][102]++;
_$jscoverage['mongoose/schema/array.js'][104]++;
throw new CastError("number", value);
});
_$jscoverage['mongoose/schema/array.js'][109]++;
_$jscoverage['mongoose/schema/array.js'][111]++;
module.exports = SchemaArray;
_$jscoverage['mongoose/schema/array.js'].source = ["/**"," * Module dependencies."," */","","var SchemaType = require('../schematype')"," , CastError = SchemaType.CastError"," , ArrayNumberSchema = function () {}"," , Types = {"," Boolean: require('./boolean')"," , Date: require('./date')"," , Number: ArrayNumberSchema"," , String: require('./string')"," , ObjectId: require('./objectid')"," }"," , MongooseArray = require('../types').Array;","","/**"," * Array SchemaType constructor"," *"," * @param {String} key"," * @param {SchemaType} cast"," * @api private"," */","","function SchemaArray (key, cast, options) {"," SchemaType.call(this, key, options);",""," if (cast) {"," this.caster = cast.name in Types ? Types[cast.name] : cast;"," }",""," var self = this;",""," this.default(function(){"," return new MongooseArray([], self.path, this);"," });","};","","/**"," * Inherits from SchemaType."," */","","SchemaArray.prototype.__proto__ = SchemaType.prototype;","","/**"," * Check required"," *"," * @api private"," */","","SchemaArray.prototype.checkRequired = function (value) {"," return !!(value &amp;&amp; value.length);","};","","/**"," * Casts contents"," *"," * @param {Object} value"," * @param {Document} document that triggers the casting"," * @api private"," */","","SchemaArray.prototype.cast = function (value, doc) {"," if (Array.isArray(value)){"," if (!(value instanceof MongooseArray))"," value = new MongooseArray(value, this.path, doc);",""," var caster = this.caster;",""," if (caster)"," for (var i = 0, l = value.length; i &lt; l; i++) {"," try {"," value[i] = caster.prototype.cast.call(null, value[i]);"," } catch(e){"," // rethrow"," throw new CastError(e.type, value);"," }"," }",""," return value;"," } else {"," return this.cast([value], doc);"," }",""," throw new CastError('array', value, caster);","};","","/**"," * Number casting for arrays (equivalent, but without MongoseNumber)"," *"," * @see GH-176"," * @param {Object} value"," * @api private"," */","","ArrayNumberSchema.prototype.cast = function (value) {"," if (!isNaN(value)) {"," if (value instanceof Number || typeof value == 'number' ||"," (value.toString &amp;&amp; value.toString() == Number(value)))"," return Number(value);"," }"," throw new CastError('number', value);","};","","/**"," * Module exports."," */","","module.exports = SchemaArray;"];
_$jscoverage['mongoose/schema/array.js'].source = ["/**"," * Module dependencies."," */","","var SchemaType = require('../schematype')"," , CastError = SchemaType.CastError"," , ArrayNumberSchema = function () {}"," , Types = {"," Boolean: require('./boolean')"," , Date: require('./date')"," , Number: ArrayNumberSchema"," , String: require('./string')"," , ObjectId: require('./objectid')"," }"," , MongooseArray = require('../types').Array;","","/**"," * Array SchemaType constructor"," *"," * @param {String} key"," * @param {SchemaType} cast"," * @api private"," */","","function SchemaArray (key, cast, options) {"," SchemaType.call(this, key, options);",""," if (cast) {"," this.caster = cast.name in Types ? Types[cast.name] : cast;"," }",""," var self = this"," , defaultArr;",""," if (this.defaultValue) defaultArr = this.defaultValue;"," this.default(function(){"," return new MongooseArray(defaultArr || [], self.path, this);"," });","};","","/**"," * Inherits from SchemaType."," */","","SchemaArray.prototype.__proto__ = SchemaType.prototype;","","/**"," * Check required"," *"," * @api private"," */","","SchemaArray.prototype.checkRequired = function (value) {"," return !!(value &amp;&amp; value.length);","};","","/**"," * Casts contents"," *"," * @param {Object} value"," * @param {Document} document that triggers the casting"," * @api private"," */","","SchemaArray.prototype.cast = function (value, doc) {"," if (Array.isArray(value)){"," if (!(value instanceof MongooseArray))"," value = new MongooseArray(value, this.path, doc);",""," var caster = this.caster;",""," if (caster)"," for (var i = 0, l = value.length; i &lt; l; i++) {"," try {"," value[i] = caster.prototype.cast.call(null, value[i]);"," } catch(e){"," // rethrow"," throw new CastError(e.type, value);"," }"," }",""," return value;"," } else {"," return this.cast([value], doc);"," }",""," throw new CastError('array', value, caster);","};","","/**"," * Number casting for arrays (equivalent, but without MongoseNumber)"," *"," * @see GH-176"," * @param {Object} value"," * @api private"," */","","ArrayNumberSchema.prototype.cast = function (value) {"," if (!isNaN(value)) {"," if (value instanceof Number || typeof value == 'number' ||"," (value.toString &amp;&amp; value.toString() == Number(value)))"," return Number(value);"," }"," throw new CastError('number', value);","};","","/**"," * Module exports."," */","","module.exports = SchemaArray;"];

@@ -24,37 +24,37 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/schematype.js'][48] = 0;
_$jscoverage['mongoose/schematype.js'][49] = 0;
_$jscoverage['mongoose/schematype.js'][50] = 0;
_$jscoverage['mongoose/schematype.js'][66] = 0;
_$jscoverage['mongoose/schematype.js'][67] = 0;
_$jscoverage['mongoose/schematype.js'][52] = 0;
_$jscoverage['mongoose/schematype.js'][68] = 0;
_$jscoverage['mongoose/schematype.js'][78] = 0;
_$jscoverage['mongoose/schematype.js'][79] = 0;
_$jscoverage['mongoose/schematype.js'][69] = 0;
_$jscoverage['mongoose/schematype.js'][70] = 0;
_$jscoverage['mongoose/schematype.js'][80] = 0;
_$jscoverage['mongoose/schematype.js'][90] = 0;
_$jscoverage['mongoose/schematype.js'][91] = 0;
_$jscoverage['mongoose/schematype.js'][81] = 0;
_$jscoverage['mongoose/schematype.js'][82] = 0;
_$jscoverage['mongoose/schematype.js'][92] = 0;
_$jscoverage['mongoose/schematype.js'][102] = 0;
_$jscoverage['mongoose/schematype.js'][103] = 0;
_$jscoverage['mongoose/schematype.js'][93] = 0;
_$jscoverage['mongoose/schematype.js'][94] = 0;
_$jscoverage['mongoose/schematype.js'][104] = 0;
_$jscoverage['mongoose/schematype.js'][115] = 0;
_$jscoverage['mongoose/schematype.js'][116] = 0;
_$jscoverage['mongoose/schematype.js'][105] = 0;
_$jscoverage['mongoose/schematype.js'][106] = 0;
_$jscoverage['mongoose/schematype.js'][117] = 0;
_$jscoverage['mongoose/schematype.js'][127] = 0;
_$jscoverage['mongoose/schematype.js'][128] = 0;
_$jscoverage['mongoose/schematype.js'][118] = 0;
_$jscoverage['mongoose/schematype.js'][119] = 0;
_$jscoverage['mongoose/schematype.js'][129] = 0;
_$jscoverage['mongoose/schematype.js'][130] = 0;
_$jscoverage['mongoose/schematype.js'][131] = 0;
_$jscoverage['mongoose/schematype.js'][132] = 0;
_$jscoverage['mongoose/schematype.js'][135] = 0;
_$jscoverage['mongoose/schematype.js'][133] = 0;
_$jscoverage['mongoose/schematype.js'][134] = 0;
_$jscoverage['mongoose/schematype.js'][137] = 0;
_$jscoverage['mongoose/schematype.js'][147] = 0;
_$jscoverage['mongoose/schematype.js'][148] = 0;
_$jscoverage['mongoose/schematype.js'][139] = 0;
_$jscoverage['mongoose/schematype.js'][149] = 0;
_$jscoverage['mongoose/schematype.js'][150] = 0;
_$jscoverage['mongoose/schematype.js'][151] = 0;
_$jscoverage['mongoose/schematype.js'][153] = 0;
_$jscoverage['mongoose/schematype.js'][154] = 0;
_$jscoverage['mongoose/schematype.js'][155] = 0;
_$jscoverage['mongoose/schematype.js'][156] = 0;
_$jscoverage['mongoose/schematype.js'][158] = 0;
_$jscoverage['mongoose/schematype.js'][159] = 0;
_$jscoverage['mongoose/schematype.js'][160] = 0;
_$jscoverage['mongoose/schematype.js'][161] = 0;
_$jscoverage['mongoose/schematype.js'][172] = 0;
_$jscoverage['mongoose/schematype.js'][173] = 0;
_$jscoverage['mongoose/schematype.js'][163] = 0;
_$jscoverage['mongoose/schematype.js'][174] = 0;

@@ -64,5 +64,5 @@ _$jscoverage['mongoose/schematype.js'][175] = 0;

_$jscoverage['mongoose/schematype.js'][177] = 0;
_$jscoverage['mongoose/schematype.js'][178] = 0;
_$jscoverage['mongoose/schematype.js'][179] = 0;
_$jscoverage['mongoose/schematype.js'][190] = 0;
_$jscoverage['mongoose/schematype.js'][191] = 0;
_$jscoverage['mongoose/schematype.js'][181] = 0;
_$jscoverage['mongoose/schematype.js'][192] = 0;

@@ -72,16 +72,16 @@ _$jscoverage['mongoose/schematype.js'][193] = 0;

_$jscoverage['mongoose/schematype.js'][195] = 0;
_$jscoverage['mongoose/schematype.js'][196] = 0;
_$jscoverage['mongoose/schematype.js'][197] = 0;
_$jscoverage['mongoose/schematype.js'][208] = 0;
_$jscoverage['mongoose/schematype.js'][209] = 0;
_$jscoverage['mongoose/schematype.js'][213] = 0;
_$jscoverage['mongoose/schematype.js'][199] = 0;
_$jscoverage['mongoose/schematype.js'][210] = 0;
_$jscoverage['mongoose/schematype.js'][211] = 0;
_$jscoverage['mongoose/schematype.js'][215] = 0;
_$jscoverage['mongoose/schematype.js'][216] = 0;
_$jscoverage['mongoose/schematype.js'][217] = 0;
_$jscoverage['mongoose/schematype.js'][218] = 0;
_$jscoverage['mongoose/schematype.js'][219] = 0;
_$jscoverage['mongoose/schematype.js'][220] = 0;
_$jscoverage['mongoose/schematype.js'][221] = 0;
_$jscoverage['mongoose/schematype.js'][225] = 0;
_$jscoverage['mongoose/schematype.js'][226] = 0;
_$jscoverage['mongoose/schematype.js'][222] = 0;
_$jscoverage['mongoose/schematype.js'][223] = 0;
_$jscoverage['mongoose/schematype.js'][227] = 0;
_$jscoverage['mongoose/schematype.js'][228] = 0;
_$jscoverage['mongoose/schematype.js'][229] = 0;
_$jscoverage['mongoose/schematype.js'][230] = 0;

@@ -91,5 +91,5 @@ _$jscoverage['mongoose/schematype.js'][231] = 0;

_$jscoverage['mongoose/schematype.js'][233] = 0;
_$jscoverage['mongoose/schematype.js'][236] = 0;
_$jscoverage['mongoose/schematype.js'][248] = 0;
_$jscoverage['mongoose/schematype.js'][249] = 0;
_$jscoverage['mongoose/schematype.js'][234] = 0;
_$jscoverage['mongoose/schematype.js'][235] = 0;
_$jscoverage['mongoose/schematype.js'][238] = 0;
_$jscoverage['mongoose/schematype.js'][250] = 0;

@@ -99,5 +99,5 @@ _$jscoverage['mongoose/schematype.js'][251] = 0;

_$jscoverage['mongoose/schematype.js'][253] = 0;
_$jscoverage['mongoose/schematype.js'][259] = 0;
_$jscoverage['mongoose/schematype.js'][267] = 0;
_$jscoverage['mongoose/schematype.js'][268] = 0;
_$jscoverage['mongoose/schematype.js'][254] = 0;
_$jscoverage['mongoose/schematype.js'][255] = 0;
_$jscoverage['mongoose/schematype.js'][261] = 0;
_$jscoverage['mongoose/schematype.js'][269] = 0;

@@ -109,6 +109,8 @@ _$jscoverage['mongoose/schematype.js'][270] = 0;

_$jscoverage['mongoose/schematype.js'][274] = 0;
_$jscoverage['mongoose/schematype.js'][280] = 0;
_$jscoverage['mongoose/schematype.js'][286] = 0;
_$jscoverage['mongoose/schematype.js'][275] = 0;
_$jscoverage['mongoose/schematype.js'][276] = 0;
_$jscoverage['mongoose/schematype.js'][282] = 0;
_$jscoverage['mongoose/schematype.js'][288] = 0;
_$jscoverage['mongoose/schematype.js'][290] = 0;
_$jscoverage['mongoose/schematype.js'][292] = 0;
}

@@ -151,3 +153,3 @@ _$jscoverage['mongoose/schematype.js'][6]++;

_$jscoverage['mongoose/schematype.js'][46]++;
if (arguments.length) {
if (arguments.length === 1) {
_$jscoverage['mongoose/schematype.js'][47]++;

@@ -158,49 +160,56 @@ this.defaultValue = val;

}
_$jscoverage['mongoose/schematype.js'][50]++;
else {
_$jscoverage['mongoose/schematype.js'][49]++;
if (arguments.length > 1) {
_$jscoverage['mongoose/schematype.js'][50]++;
this.defaultValue = [].slice.call(arguments);
}
}
_$jscoverage['mongoose/schematype.js'][52]++;
return this.defaultValue;
});
_$jscoverage['mongoose/schematype.js'][66]++;
_$jscoverage['mongoose/schematype.js'][68]++;
SchemaType.prototype.index = (function (index) {
_$jscoverage['mongoose/schematype.js'][67]++;
_$jscoverage['mongoose/schematype.js'][69]++;
this._index = index;
_$jscoverage['mongoose/schematype.js'][68]++;
_$jscoverage['mongoose/schematype.js'][70]++;
return this;
});
_$jscoverage['mongoose/schematype.js'][78]++;
_$jscoverage['mongoose/schematype.js'][80]++;
SchemaType.prototype.unique = (function (bool) {
_$jscoverage['mongoose/schematype.js'][79]++;
_$jscoverage['mongoose/schematype.js'][81]++;
this._index = bool? {unique: true}: null;
_$jscoverage['mongoose/schematype.js'][80]++;
_$jscoverage['mongoose/schematype.js'][82]++;
return this;
});
_$jscoverage['mongoose/schematype.js'][90]++;
_$jscoverage['mongoose/schematype.js'][92]++;
SchemaType.prototype.set = (function (fn) {
_$jscoverage['mongoose/schematype.js'][91]++;
_$jscoverage['mongoose/schematype.js'][93]++;
this.setters.push(fn);
_$jscoverage['mongoose/schematype.js'][92]++;
_$jscoverage['mongoose/schematype.js'][94]++;
return this;
});
_$jscoverage['mongoose/schematype.js'][102]++;
_$jscoverage['mongoose/schematype.js'][104]++;
SchemaType.prototype.get = (function (fn) {
_$jscoverage['mongoose/schematype.js'][103]++;
_$jscoverage['mongoose/schematype.js'][105]++;
this.getters.push(fn);
_$jscoverage['mongoose/schematype.js'][104]++;
_$jscoverage['mongoose/schematype.js'][106]++;
return this;
});
_$jscoverage['mongoose/schematype.js'][115]++;
_$jscoverage['mongoose/schematype.js'][117]++;
SchemaType.prototype.validate = (function (obj, error) {
_$jscoverage['mongoose/schematype.js'][116]++;
_$jscoverage['mongoose/schematype.js'][118]++;
this.validators.push([obj, error]);
_$jscoverage['mongoose/schematype.js'][117]++;
_$jscoverage['mongoose/schematype.js'][119]++;
return this;
});
_$jscoverage['mongoose/schematype.js'][127]++;
_$jscoverage['mongoose/schematype.js'][129]++;
SchemaType.prototype.required = (function (required) {
_$jscoverage['mongoose/schematype.js'][128]++;
_$jscoverage['mongoose/schematype.js'][130]++;
var checkRequired = this.checkRequired.bind(this);
_$jscoverage['mongoose/schematype.js'][130]++;
_$jscoverage['mongoose/schematype.js'][132]++;
if (false === required) {
_$jscoverage['mongoose/schematype.js'][131]++;
_$jscoverage['mongoose/schematype.js'][133]++;
this.validators = this.validators.filter((function (v) {
_$jscoverage['mongoose/schematype.js'][132]++;
_$jscoverage['mongoose/schematype.js'][134]++;
return v[0] !== checkRequired;

@@ -210,117 +219,117 @@ }));

else {
_$jscoverage['mongoose/schematype.js'][135]++;
_$jscoverage['mongoose/schematype.js'][137]++;
this.validators.push([checkRequired, "required"]);
}
_$jscoverage['mongoose/schematype.js'][137]++;
_$jscoverage['mongoose/schematype.js'][139]++;
return this;
});
_$jscoverage['mongoose/schematype.js'][147]++;
_$jscoverage['mongoose/schematype.js'][149]++;
SchemaType.prototype.getDefault = (function (scope) {
_$jscoverage['mongoose/schematype.js'][148]++;
_$jscoverage['mongoose/schematype.js'][150]++;
if (this.defaultValue === undefined) {
_$jscoverage['mongoose/schematype.js'][149]++;
_$jscoverage['mongoose/schematype.js'][151]++;
return null;
}
_$jscoverage['mongoose/schematype.js'][151]++;
_$jscoverage['mongoose/schematype.js'][153]++;
var ret;
_$jscoverage['mongoose/schematype.js'][153]++;
_$jscoverage['mongoose/schematype.js'][155]++;
if ("function" == typeof this.defaultValue) {
_$jscoverage['mongoose/schematype.js'][154]++;
_$jscoverage['mongoose/schematype.js'][156]++;
ret = this.defaultValue.call(scope);
}
else {
_$jscoverage['mongoose/schematype.js'][156]++;
_$jscoverage['mongoose/schematype.js'][158]++;
ret = this.defaultValue;
}
_$jscoverage['mongoose/schematype.js'][158]++;
_$jscoverage['mongoose/schematype.js'][160]++;
if (ret !== null && ret !== undefined) {
_$jscoverage['mongoose/schematype.js'][159]++;
_$jscoverage['mongoose/schematype.js'][161]++;
ret = this.cast(ret, scope);
}
_$jscoverage['mongoose/schematype.js'][161]++;
_$jscoverage['mongoose/schematype.js'][163]++;
return ret;
});
_$jscoverage['mongoose/schematype.js'][172]++;
_$jscoverage['mongoose/schematype.js'][174]++;
SchemaType.prototype.applySetters = (function (value, scope) {
_$jscoverage['mongoose/schematype.js'][173]++;
_$jscoverage['mongoose/schematype.js'][175]++;
var v = value;
_$jscoverage['mongoose/schematype.js'][174]++;
_$jscoverage['mongoose/schematype.js'][176]++;
for (var l = this.setters.length - 1; l >= 0; l--) {
_$jscoverage['mongoose/schematype.js'][175]++;
_$jscoverage['mongoose/schematype.js'][177]++;
v = this.setters[l].call(scope, v);
_$jscoverage['mongoose/schematype.js'][176]++;
_$jscoverage['mongoose/schematype.js'][178]++;
if (v === null || v === undefined) {
_$jscoverage['mongoose/schematype.js'][176]++;
_$jscoverage['mongoose/schematype.js'][178]++;
return v;
}
_$jscoverage['mongoose/schematype.js'][177]++;
_$jscoverage['mongoose/schematype.js'][179]++;
v = this.cast(v, scope);
}
_$jscoverage['mongoose/schematype.js'][179]++;
_$jscoverage['mongoose/schematype.js'][181]++;
return v;
});
_$jscoverage['mongoose/schematype.js'][190]++;
_$jscoverage['mongoose/schematype.js'][192]++;
SchemaType.prototype.applyGetters = (function (value, scope) {
_$jscoverage['mongoose/schematype.js'][191]++;
_$jscoverage['mongoose/schematype.js'][193]++;
var v = value;
_$jscoverage['mongoose/schematype.js'][192]++;
_$jscoverage['mongoose/schematype.js'][194]++;
for (var l = this.getters.length - 1; l >= 0; l--) {
_$jscoverage['mongoose/schematype.js'][193]++;
_$jscoverage['mongoose/schematype.js'][195]++;
v = this.getters[l].call(scope, v);
_$jscoverage['mongoose/schematype.js'][194]++;
_$jscoverage['mongoose/schematype.js'][196]++;
if (v === null || v === undefined) {
_$jscoverage['mongoose/schematype.js'][194]++;
_$jscoverage['mongoose/schematype.js'][196]++;
return v;
}
_$jscoverage['mongoose/schematype.js'][195]++;
_$jscoverage['mongoose/schematype.js'][197]++;
v = this.cast(v, scope);
}
_$jscoverage['mongoose/schematype.js'][197]++;
_$jscoverage['mongoose/schematype.js'][199]++;
return v;
});
_$jscoverage['mongoose/schematype.js'][208]++;
_$jscoverage['mongoose/schematype.js'][210]++;
SchemaType.prototype.doValidate = (function (value, fn, scope) {
_$jscoverage['mongoose/schematype.js'][209]++;
_$jscoverage['mongoose/schematype.js'][211]++;
var err = false, path = this.path, count = this.validators.length;
_$jscoverage['mongoose/schematype.js'][213]++;
_$jscoverage['mongoose/schematype.js'][215]++;
if (! count) {
_$jscoverage['mongoose/schematype.js'][213]++;
_$jscoverage['mongoose/schematype.js'][215]++;
return fn(null);
}
_$jscoverage['mongoose/schematype.js'][215]++;
_$jscoverage['mongoose/schematype.js'][217]++;
function validate(val, msg) {
_$jscoverage['mongoose/schematype.js'][216]++;
_$jscoverage['mongoose/schematype.js'][218]++;
if (err) {
_$jscoverage['mongoose/schematype.js'][216]++;
_$jscoverage['mongoose/schematype.js'][218]++;
return;
}
_$jscoverage['mongoose/schematype.js'][217]++;
_$jscoverage['mongoose/schematype.js'][219]++;
if (val === undefined || val) {
_$jscoverage['mongoose/schematype.js'][218]++;
_$jscoverage['mongoose/schematype.js'][220]++;
--count || fn(null);
}
else {
_$jscoverage['mongoose/schematype.js'][220]++;
_$jscoverage['mongoose/schematype.js'][222]++;
fn(new ValidatorError(path, msg));
_$jscoverage['mongoose/schematype.js'][221]++;
_$jscoverage['mongoose/schematype.js'][223]++;
err = true;
}
}
_$jscoverage['mongoose/schematype.js'][225]++;
_$jscoverage['mongoose/schematype.js'][227]++;
this.validators.forEach((function (v) {
_$jscoverage['mongoose/schematype.js'][226]++;
_$jscoverage['mongoose/schematype.js'][228]++;
var validator = v[0], message = v[1];
_$jscoverage['mongoose/schematype.js'][228]++;
_$jscoverage['mongoose/schematype.js'][230]++;
if (validator instanceof RegExp) {
_$jscoverage['mongoose/schematype.js'][229]++;
_$jscoverage['mongoose/schematype.js'][231]++;
validate(validator.test(value), message);
}
else {
_$jscoverage['mongoose/schematype.js'][230]++;
_$jscoverage['mongoose/schematype.js'][232]++;
if ("function" == typeof validator) {
_$jscoverage['mongoose/schematype.js'][231]++;
_$jscoverage['mongoose/schematype.js'][233]++;
if (2 == validator.length) {
_$jscoverage['mongoose/schematype.js'][232]++;
_$jscoverage['mongoose/schematype.js'][234]++;
validator.call(scope, value, (function (val) {
_$jscoverage['mongoose/schematype.js'][233]++;
_$jscoverage['mongoose/schematype.js'][235]++;
validate(val, message);

@@ -330,3 +339,3 @@ }));

else {
_$jscoverage['mongoose/schematype.js'][236]++;
_$jscoverage['mongoose/schematype.js'][238]++;
validate(validator.call(scope, value), message);

@@ -338,42 +347,42 @@ }

});
_$jscoverage['mongoose/schematype.js'][248]++;
_$jscoverage['mongoose/schematype.js'][250]++;
function ValidatorError(path, msg) {
_$jscoverage['mongoose/schematype.js'][249]++;
_$jscoverage['mongoose/schematype.js'][251]++;
MongooseError.call(this, "Validator \"" + msg + "\" failed for path " + path);
_$jscoverage['mongoose/schematype.js'][250]++;
_$jscoverage['mongoose/schematype.js'][252]++;
Error.captureStackTrace(this, arguments.callee);
_$jscoverage['mongoose/schematype.js'][251]++;
_$jscoverage['mongoose/schematype.js'][253]++;
this.name = "ValidatorError";
_$jscoverage['mongoose/schematype.js'][252]++;
_$jscoverage['mongoose/schematype.js'][254]++;
this.path = path;
}
_$jscoverage['mongoose/schematype.js'][253]++;
_$jscoverage['mongoose/schematype.js'][255]++;
;
_$jscoverage['mongoose/schematype.js'][259]++;
_$jscoverage['mongoose/schematype.js'][261]++;
ValidatorError.prototype.__proto__ = MongooseError.prototype;
_$jscoverage['mongoose/schematype.js'][267]++;
_$jscoverage['mongoose/schematype.js'][269]++;
function CastError(type, path, type, value) {
_$jscoverage['mongoose/schematype.js'][268]++;
_$jscoverage['mongoose/schematype.js'][270]++;
MongooseError.call(this, "Cast to " + type + " failed for value \"" + value + "\"");
_$jscoverage['mongoose/schematype.js'][269]++;
_$jscoverage['mongoose/schematype.js'][271]++;
Error.captureStackTrace(this, arguments.callee);
_$jscoverage['mongoose/schematype.js'][270]++;
_$jscoverage['mongoose/schematype.js'][272]++;
this.name = "CastError";
_$jscoverage['mongoose/schematype.js'][271]++;
_$jscoverage['mongoose/schematype.js'][273]++;
this.path = path;
_$jscoverage['mongoose/schematype.js'][272]++;
_$jscoverage['mongoose/schematype.js'][274]++;
this.type = type;
_$jscoverage['mongoose/schematype.js'][273]++;
_$jscoverage['mongoose/schematype.js'][275]++;
this.value = value;
}
_$jscoverage['mongoose/schematype.js'][274]++;
_$jscoverage['mongoose/schematype.js'][276]++;
;
_$jscoverage['mongoose/schematype.js'][280]++;
_$jscoverage['mongoose/schematype.js'][282]++;
CastError.prototype.__proto__ = MongooseError.prototype;
_$jscoverage['mongoose/schematype.js'][286]++;
_$jscoverage['mongoose/schematype.js'][288]++;
module.exports = exports = SchemaType;
_$jscoverage['mongoose/schematype.js'][288]++;
_$jscoverage['mongoose/schematype.js'][290]++;
exports.CastError = CastError;
_$jscoverage['mongoose/schematype.js'][290]++;
_$jscoverage['mongoose/schematype.js'][292]++;
exports.ValidatorError = ValidatorError;
_$jscoverage['mongoose/schematype.js'].source = ["","/**"," * Module dependencies."," */","","var MongooseError = require('./error');","","/**"," * SchemaType constructor"," *"," * @param {String} path"," * @api public"," */","","function SchemaType (path, options) {"," this.path = path;"," this.defaultValue = null;"," this.validators = [];"," this.setters = [];"," this.getters = [];"," this.options = options;"," this._index = null;"," for (var i in options)"," if (this[i] &amp;&amp; 'function' == typeof this[i]){"," var opts = Array.isArray(options[i]) ? options[i] : [options[i]];"," this[i].apply(this, opts);"," }","};","","/**"," * Base schema. Set by Schema when instantiated."," *"," * @api private"," */","","SchemaType.prototype.base;","","/**"," * Sets a default"," *"," * @param {Object} default value"," * @api public"," */","","SchemaType.prototype.default = function (val) {"," if (arguments.length){"," this.defaultValue = val;"," return this;"," }"," return this.defaultValue;","};","","/**"," * Sets index. It can be a boolean or a hash of options"," * Example:"," * Schema.path('my.path').index(true);"," * Schema.path('my.path').index({ unique: true });"," *"," * \"Direction doesn't matter for single key indexes\""," * http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeysIndexes"," *"," * @param {Object} true/"," * @api public"," */","","SchemaType.prototype.index = function (index) {"," this._index = index;"," return this;","};","","/**"," * Adds an unique index"," *"," * @param {Boolean}"," * @api private"," */","","SchemaType.prototype.unique = function (bool) {"," this._index = bool ? { unique: true } : null;"," return this;","};","","/**"," * Adds a setter"," *"," * @param {Function} setter"," * @api public"," */","","SchemaType.prototype.set = function (fn) {"," this.setters.push(fn);"," return this;","};","","/**"," * Adds a getter"," *"," * @param {Function} getter"," * @api public"," */","","SchemaType.prototype.get = function (fn) {"," this.getters.push(fn);"," return this;","};","","/**"," * Adds a validator"," *"," * @param {Object} validator"," * @param {String} optional error message"," * @api public"," */","","SchemaType.prototype.validate = function(obj, error){"," this.validators.push([obj, error]);"," return this;","};","","/**"," * Adds a required validator"," *"," * @param {Boolean} enable/disable the validator"," * @api public"," */","","SchemaType.prototype.required = function(required){"," var checkRequired = this.checkRequired.bind(this);",""," if (false === required){"," this.validators = this.validators.filter(function(v){"," return v[0] !== checkRequired;"," });"," } else "," this.validators.push([checkRequired, 'required']);",""," return this;","};","","/**"," * Gets the default value"," *"," * @param {Object} scope for callback defaults"," * @api private"," */","","SchemaType.prototype.getDefault = function (scope) {"," if (this.defaultValue === undefined)"," return null;",""," var ret;",""," if ('function' == typeof this.defaultValue)"," ret = this.defaultValue.call(scope);"," else"," ret = this.defaultValue;",""," if (ret !== null &amp;&amp; ret !== undefined)"," ret = this.cast(ret, scope);",""," return ret;","};","","/**"," * Applies setters"," *"," * @param {Object} value"," * @param {Object} scope"," * @api private"," */","","SchemaType.prototype.applySetters = function (value, scope) {"," var v = value;"," for (var l = this.setters.length - 1; l &gt;= 0; l--){"," v = this.setters[l].call(scope, v);"," if (v === null || v === undefined) return v;"," v = this.cast(v, scope);"," }"," return v;","};","","/**"," * Applies getters to a value"," *"," * @param {Object} value"," * @param {Object} scope"," * @api private"," */","","SchemaType.prototype.applyGetters = function (value, scope) {"," var v = value;"," for (var l = this.getters.length - 1; l &gt;= 0; l--){"," v = this.getters[l].call(scope, v);"," if (v === null || v === undefined) return v;"," v = this.cast(v, scope);"," }"," return v;","};","","/**"," * Performs a validation"," *"," * @param {Function} callback"," * @param {Object} scope"," * @api private"," */","","SchemaType.prototype.doValidate = function (value, fn, scope) {"," var err = false"," , path = this.path"," , count = this.validators.length;",""," if (!count) return fn(null);",""," function validate (val, msg) {"," if (err) return;"," if (val === undefined || val) {"," --count || fn(null);"," } else {"," fn(new ValidatorError(path, msg));"," err = true;"," }"," }",""," this.validators.forEach(function (v){"," var validator = v[0]"," , message = v[1];"," if (validator instanceof RegExp)"," validate(validator.test(value), message);"," else if ('function' == typeof validator)"," if (2 == validator.length)"," validator.call(scope, value, function(val){"," validate(val, message);"," })"," else"," validate(validator.call(scope, value), message);"," });","};","","/**"," * Validator error"," *"," * @param {String} path"," * @param {String} msg"," * @api private"," */","","function ValidatorError (path, msg) {"," MongooseError.call(this, 'Validator \"' + msg + '\" failed for path ' + path);"," Error.captureStackTrace(this, arguments.callee);"," this.name = 'ValidatorError';"," this.path = path;","};","","/**"," * Inherits from MongooseError"," */","","ValidatorError.prototype.__proto__ = MongooseError.prototype;","","/**"," * Cast error"," *"," * @api private"," */","","function CastError (type, path, type, value) {"," MongooseError.call(this, 'Cast to ' + type + ' failed for value \"' + value + '\"');"," Error.captureStackTrace(this, arguments.callee);"," this.name = 'CastError';"," this.path = path;"," this.type = type;"," this.value = value;","};","","/**"," * Inherits from MongooseError."," */","","CastError.prototype.__proto__ = MongooseError.prototype;","","/**"," * Module exports."," */","","module.exports = exports = SchemaType;","","exports.CastError = CastError;","","exports.ValidatorError = ValidatorError;"];
_$jscoverage['mongoose/schematype.js'].source = ["","/**"," * Module dependencies."," */","","var MongooseError = require('./error');","","/**"," * SchemaType constructor"," *"," * @param {String} path"," * @api public"," */","","function SchemaType (path, options) {"," this.path = path;"," this.defaultValue = null;"," this.validators = [];"," this.setters = [];"," this.getters = [];"," this.options = options;"," this._index = null;"," for (var i in options)"," if (this[i] &amp;&amp; 'function' == typeof this[i]){"," var opts = Array.isArray(options[i]) ? options[i] : [options[i]];"," this[i].apply(this, opts);"," }","};","","/**"," * Base schema. Set by Schema when instantiated."," *"," * @api private"," */","","SchemaType.prototype.base;","","/**"," * Sets a default"," *"," * @param {Object} default value"," * @api public"," */","","SchemaType.prototype.default = function (val) {"," if (arguments.length === 1){"," this.defaultValue = val;"," return this;"," } else if (arguments.length &gt; 1) {"," this.defaultValue = [].slice.call(arguments);"," }"," return this.defaultValue;","};","","/**"," * Sets index. It can be a boolean or a hash of options"," * Example:"," * Schema.path('my.path').index(true);"," * Schema.path('my.path').index({ unique: true });"," *"," * \"Direction doesn't matter for single key indexes\""," * http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeysIndexes"," *"," * @param {Object} true/"," * @api public"," */","","SchemaType.prototype.index = function (index) {"," this._index = index;"," return this;","};","","/**"," * Adds an unique index"," *"," * @param {Boolean}"," * @api private"," */","","SchemaType.prototype.unique = function (bool) {"," this._index = bool ? { unique: true } : null;"," return this;","};","","/**"," * Adds a setter"," *"," * @param {Function} setter"," * @api public"," */","","SchemaType.prototype.set = function (fn) {"," this.setters.push(fn);"," return this;","};","","/**"," * Adds a getter"," *"," * @param {Function} getter"," * @api public"," */","","SchemaType.prototype.get = function (fn) {"," this.getters.push(fn);"," return this;","};","","/**"," * Adds a validator"," *"," * @param {Object} validator"," * @param {String} optional error message"," * @api public"," */","","SchemaType.prototype.validate = function(obj, error){"," this.validators.push([obj, error]);"," return this;","};","","/**"," * Adds a required validator"," *"," * @param {Boolean} enable/disable the validator"," * @api public"," */","","SchemaType.prototype.required = function(required){"," var checkRequired = this.checkRequired.bind(this);",""," if (false === required){"," this.validators = this.validators.filter(function(v){"," return v[0] !== checkRequired;"," });"," } else "," this.validators.push([checkRequired, 'required']);",""," return this;","};","","/**"," * Gets the default value"," *"," * @param {Object} scope for callback defaults"," * @api private"," */","","SchemaType.prototype.getDefault = function (scope) {"," if (this.defaultValue === undefined)"," return null;",""," var ret;",""," if ('function' == typeof this.defaultValue)"," ret = this.defaultValue.call(scope);"," else"," ret = this.defaultValue;",""," if (ret !== null &amp;&amp; ret !== undefined)"," ret = this.cast(ret, scope);",""," return ret;","};","","/**"," * Applies setters"," *"," * @param {Object} value"," * @param {Object} scope"," * @api private"," */","","SchemaType.prototype.applySetters = function (value, scope) {"," var v = value;"," for (var l = this.setters.length - 1; l &gt;= 0; l--){"," v = this.setters[l].call(scope, v);"," if (v === null || v === undefined) return v;"," v = this.cast(v, scope);"," }"," return v;","};","","/**"," * Applies getters to a value"," *"," * @param {Object} value"," * @param {Object} scope"," * @api private"," */","","SchemaType.prototype.applyGetters = function (value, scope) {"," var v = value;"," for (var l = this.getters.length - 1; l &gt;= 0; l--){"," v = this.getters[l].call(scope, v);"," if (v === null || v === undefined) return v;"," v = this.cast(v, scope);"," }"," return v;","};","","/**"," * Performs a validation"," *"," * @param {Function} callback"," * @param {Object} scope"," * @api private"," */","","SchemaType.prototype.doValidate = function (value, fn, scope) {"," var err = false"," , path = this.path"," , count = this.validators.length;",""," if (!count) return fn(null);",""," function validate (val, msg) {"," if (err) return;"," if (val === undefined || val) {"," --count || fn(null);"," } else {"," fn(new ValidatorError(path, msg));"," err = true;"," }"," }",""," this.validators.forEach(function (v){"," var validator = v[0]"," , message = v[1];"," if (validator instanceof RegExp)"," validate(validator.test(value), message);"," else if ('function' == typeof validator)"," if (2 == validator.length)"," validator.call(scope, value, function(val){"," validate(val, message);"," })"," else"," validate(validator.call(scope, value), message);"," });","};","","/**"," * Validator error"," *"," * @param {String} path"," * @param {String} msg"," * @api private"," */","","function ValidatorError (path, msg) {"," MongooseError.call(this, 'Validator \"' + msg + '\" failed for path ' + path);"," Error.captureStackTrace(this, arguments.callee);"," this.name = 'ValidatorError';"," this.path = path;","};","","/**"," * Inherits from MongooseError"," */","","ValidatorError.prototype.__proto__ = MongooseError.prototype;","","/**"," * Cast error"," *"," * @api private"," */","","function CastError (type, path, type, value) {"," MongooseError.call(this, 'Cast to ' + type + ' failed for value \"' + value + '\"');"," Error.captureStackTrace(this, arguments.callee);"," this.name = 'CastError';"," this.path = path;"," this.type = type;"," this.value = value;","};","","/**"," * Inherits from MongooseError."," */","","CastError.prototype.__proto__ = MongooseError.prototype;","","/**"," * Module exports."," */","","module.exports = exports = SchemaType;","","exports.CastError = CastError;","","exports.ValidatorError = ValidatorError;"];

@@ -37,40 +37,58 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/types/array.js'][115] = 0;
_$jscoverage['mongoose/types/array.js'][117] = 0;
_$jscoverage['mongoose/types/array.js'][118] = 0;
_$jscoverage['mongoose/types/array.js'][119] = 0;
_$jscoverage['mongoose/types/array.js'][121] = 0;
_$jscoverage['mongoose/types/array.js'][122] = 0;
_$jscoverage['mongoose/types/array.js'][124] = 0;
_$jscoverage['mongoose/types/array.js'][126] = 0;
_$jscoverage['mongoose/types/array.js'][136] = 0;
_$jscoverage['mongoose/types/array.js'][137] = 0;
_$jscoverage['mongoose/types/array.js'][139] = 0;
_$jscoverage['mongoose/types/array.js'][143] = 0;
_$jscoverage['mongoose/types/array.js'][145] = 0;
_$jscoverage['mongoose/types/array.js'][123] = 0;
_$jscoverage['mongoose/types/array.js'][133] = 0;
_$jscoverage['mongoose/types/array.js'][134] = 0;
_$jscoverage['mongoose/types/array.js'][138] = 0;
_$jscoverage['mongoose/types/array.js'][140] = 0;
_$jscoverage['mongoose/types/array.js'][150] = 0;
_$jscoverage['mongoose/types/array.js'][151] = 0;
_$jscoverage['mongoose/types/array.js'][152] = 0;
_$jscoverage['mongoose/types/array.js'][154] = 0;
_$jscoverage['mongoose/types/array.js'][155] = 0;
_$jscoverage['mongoose/types/array.js'][156] = 0;
_$jscoverage['mongoose/types/array.js'][157] = 0;
_$jscoverage['mongoose/types/array.js'][159] = 0;
_$jscoverage['mongoose/types/array.js'][160] = 0;
_$jscoverage['mongoose/types/array.js'][169] = 0;
_$jscoverage['mongoose/types/array.js'][170] = 0;
_$jscoverage['mongoose/types/array.js'][171] = 0;
_$jscoverage['mongoose/types/array.js'][180] = 0;
_$jscoverage['mongoose/types/array.js'][181] = 0;
_$jscoverage['mongoose/types/array.js'][182] = 0;
_$jscoverage['mongoose/types/array.js'][164] = 0;
_$jscoverage['mongoose/types/array.js'][165] = 0;
_$jscoverage['mongoose/types/array.js'][166] = 0;
_$jscoverage['mongoose/types/array.js'][175] = 0;
_$jscoverage['mongoose/types/array.js'][176] = 0;
_$jscoverage['mongoose/types/array.js'][177] = 0;
_$jscoverage['mongoose/types/array.js'][191] = 0;
_$jscoverage['mongoose/types/array.js'][192] = 0;
_$jscoverage['mongoose/types/array.js'][193] = 0;
_$jscoverage['mongoose/types/array.js'][194] = 0;
_$jscoverage['mongoose/types/array.js'][196] = 0;
_$jscoverage['mongoose/types/array.js'][197] = 0;
_$jscoverage['mongoose/types/array.js'][198] = 0;
_$jscoverage['mongoose/types/array.js'][199] = 0;
_$jscoverage['mongoose/types/array.js'][201] = 0;
_$jscoverage['mongoose/types/array.js'][202] = 0;
_$jscoverage['mongoose/types/array.js'][206] = 0;
_$jscoverage['mongoose/types/array.js'][208] = 0;
_$jscoverage['mongoose/types/array.js'][211] = 0;
_$jscoverage['mongoose/types/array.js'][212] = 0;
_$jscoverage['mongoose/types/array.js'][213] = 0;
_$jscoverage['mongoose/types/array.js'][222] = 0;
_$jscoverage['mongoose/types/array.js'][214] = 0;
_$jscoverage['mongoose/types/array.js'][215] = 0;
_$jscoverage['mongoose/types/array.js'][217] = 0;
_$jscoverage['mongoose/types/array.js'][219] = 0;
_$jscoverage['mongoose/types/array.js'][220] = 0;
_$jscoverage['mongoose/types/array.js'][221] = 0;
_$jscoverage['mongoose/types/array.js'][223] = 0;
_$jscoverage['mongoose/types/array.js'][224] = 0;
_$jscoverage['mongoose/types/array.js'][225] = 0;
_$jscoverage['mongoose/types/array.js'][235] = 0;
_$jscoverage['mongoose/types/array.js'][236] = 0;
_$jscoverage['mongoose/types/array.js'][237] = 0;
_$jscoverage['mongoose/types/array.js'][226] = 0;
_$jscoverage['mongoose/types/array.js'][227] = 0;
_$jscoverage['mongoose/types/array.js'][229] = 0;
_$jscoverage['mongoose/types/array.js'][232] = 0;
_$jscoverage['mongoose/types/array.js'][241] = 0;
_$jscoverage['mongoose/types/array.js'][242] = 0;
_$jscoverage['mongoose/types/array.js'][243] = 0;
_$jscoverage['mongoose/types/array.js'][245] = 0;
_$jscoverage['mongoose/types/array.js'][246] = 0;
_$jscoverage['mongoose/types/array.js'][247] = 0;
_$jscoverage['mongoose/types/array.js'][248] = 0;
_$jscoverage['mongoose/types/array.js'][249] = 0;
_$jscoverage['mongoose/types/array.js'][251] = 0;
_$jscoverage['mongoose/types/array.js'][253] = 0;
_$jscoverage['mongoose/types/array.js'][254] = 0;
_$jscoverage['mongoose/types/array.js'][264] = 0;
_$jscoverage['mongoose/types/array.js'][265] = 0;
_$jscoverage['mongoose/types/array.js'][266] = 0;
_$jscoverage['mongoose/types/array.js'][274] = 0;
}

@@ -147,98 +165,166 @@ _$jscoverage['mongoose/types/array.js'][6]++;

_$jscoverage['mongoose/types/array.js'][115]++;
var self = this, values = Array.prototype.map.call(arguments, (function (obj) {
_$jscoverage['mongoose/types/array.js'][117]++;
return self._cast(obj);
})), ret = oldPush.apply(this, values);
_$jscoverage['mongoose/types/array.js'][121]++;
var values = Array.prototype.map.call(arguments, this._cast, this), ret = oldPush.apply(this, values);
_$jscoverage['mongoose/types/array.js'][118]++;
if (1 === values.length) {
_$jscoverage['mongoose/types/array.js'][122]++;
_$jscoverage['mongoose/types/array.js'][119]++;
this._registerAtomic(["$push", values[0]]);
}
else {
_$jscoverage['mongoose/types/array.js'][124]++;
_$jscoverage['mongoose/types/array.js'][121]++;
this._registerAtomic(["$pushAll", values]);
}
_$jscoverage['mongoose/types/array.js'][126]++;
_$jscoverage['mongoose/types/array.js'][123]++;
return ret;
});
_$jscoverage['mongoose/types/array.js'][136]++;
_$jscoverage['mongoose/types/array.js'][133]++;
MongooseArray.prototype.nonAtomicPush = (function () {
_$jscoverage['mongoose/types/array.js'][137]++;
var self = this, values = Array.prototype.map.call(arguments, (function (obj) {
_$jscoverage['mongoose/types/array.js'][139]++;
return self._cast(obj);
})), ret = oldPush.apply(this, values);
_$jscoverage['mongoose/types/array.js'][143]++;
_$jscoverage['mongoose/types/array.js'][134]++;
var self = this, values = Array.prototype.map.call(arguments, this._cast, this), ret = oldPush.apply(this, values);
_$jscoverage['mongoose/types/array.js'][138]++;
this._markModified();
_$jscoverage['mongoose/types/array.js'][145]++;
_$jscoverage['mongoose/types/array.js'][140]++;
return ret;
});
_$jscoverage['mongoose/types/array.js'][155]++;
_$jscoverage['mongoose/types/array.js'][150]++;
MongooseArray.prototype.$pushAll = (function (value) {
_$jscoverage['mongoose/types/array.js'][156]++;
_$jscoverage['mongoose/types/array.js'][151]++;
var length = this.length;
_$jscoverage['mongoose/types/array.js'][157]++;
this.push.apply(this, value);
_$jscoverage['mongoose/types/array.js'][159]++;
_$jscoverage['mongoose/types/array.js'][152]++;
this.nonAtomicPush.apply(this, value);
_$jscoverage['mongoose/types/array.js'][154]++;
this._registerAtomic(["$pushAll", this.slice(length)]);
_$jscoverage['mongoose/types/array.js'][160]++;
_$jscoverage['mongoose/types/array.js'][155]++;
return this;
});
_$jscoverage['mongoose/types/array.js'][169]++;
_$jscoverage['mongoose/types/array.js'][164]++;
MongooseArray.prototype.$pop = (function () {
_$jscoverage['mongoose/types/array.js'][170]++;
_$jscoverage['mongoose/types/array.js'][165]++;
this._registerAtomic(["$pop", "1"]);
_$jscoverage['mongoose/types/array.js'][171]++;
_$jscoverage['mongoose/types/array.js'][166]++;
return this.pop();
});
_$jscoverage['mongoose/types/array.js'][180]++;
_$jscoverage['mongoose/types/array.js'][175]++;
MongooseArray.prototype.$shift = (function () {
_$jscoverage['mongoose/types/array.js'][181]++;
_$jscoverage['mongoose/types/array.js'][176]++;
this._registerAtomic(["$shift", "-1"]);
_$jscoverage['mongoose/types/array.js'][182]++;
_$jscoverage['mongoose/types/array.js'][177]++;
return this.shift();
});
_$jscoverage['mongoose/types/array.js'][196]++;
_$jscoverage['mongoose/types/array.js'][191]++;
MongooseArray.prototype.remove = (function () {
_$jscoverage['mongoose/types/array.js'][197]++;
_$jscoverage['mongoose/types/array.js'][192]++;
var args = Array.prototype.map.call(arguments, this._cast, this);
_$jscoverage['mongoose/types/array.js'][198]++;
_$jscoverage['mongoose/types/array.js'][193]++;
if (args.length == 1) {
_$jscoverage['mongoose/types/array.js'][199]++;
_$jscoverage['mongoose/types/array.js'][194]++;
this.$pull(args[0]);
}
else {
_$jscoverage['mongoose/types/array.js'][201]++;
_$jscoverage['mongoose/types/array.js'][196]++;
this.$pullAll(args);
}
_$jscoverage['mongoose/types/array.js'][202]++;
_$jscoverage['mongoose/types/array.js'][197]++;
return args;
});
_$jscoverage['mongoose/types/array.js'][211]++;
MongooseArray.prototype.$pull = (function (value) {
_$jscoverage['mongoose/types/array.js'][212]++;
this._registerAtomic(["$pull", value]);
_$jscoverage['mongoose/types/array.js'][213]++;
_$jscoverage['mongoose/types/array.js'][206]++;
MongooseArray.prototype.pull = MongooseArray.prototype.$pull = (function () {
_$jscoverage['mongoose/types/array.js'][208]++;
var values = Array.prototype.map.call(arguments, this._cast, this), oldArr = this._parent.get(this._path), i = oldArr.length, mem;
_$jscoverage['mongoose/types/array.js'][211]++;
while (i--) {
_$jscoverage['mongoose/types/array.js'][212]++;
mem = oldArr[i];
_$jscoverage['mongoose/types/array.js'][213]++;
if (mem instanceof EmbeddedDocument) {
_$jscoverage['mongoose/types/array.js'][214]++;
if (values.some((function (v) {
_$jscoverage['mongoose/types/array.js'][214]++;
return v.equals(mem);
}))) {
_$jscoverage['mongoose/types/array.js'][215]++;
oldArr.splice(i, 1);
}
}
else {
_$jscoverage['mongoose/types/array.js'][217]++;
if (~ values.indexOf(mem)) {
_$jscoverage['mongoose/types/array.js'][217]++;
oldArr.splice(i, 1);
}
}
}
_$jscoverage['mongoose/types/array.js'][219]++;
if (1 === values.length) {
_$jscoverage['mongoose/types/array.js'][220]++;
if (values[0] instanceof EmbeddedDocument) {
_$jscoverage['mongoose/types/array.js'][221]++;
this._registerAtomic(["$pull", {_id: values[0]._id}]);
}
else {
_$jscoverage['mongoose/types/array.js'][223]++;
this._registerAtomic(["$pull", values[0]]);
}
}
else {
_$jscoverage['mongoose/types/array.js'][226]++;
if (values[0] instanceof EmbeddedDocument) {
_$jscoverage['mongoose/types/array.js'][227]++;
this._registerAtomic(["$pullAll", values.map((function (v) {
_$jscoverage['mongoose/types/array.js'][227]++;
return ({_id: v._id});
}))]);
}
else {
_$jscoverage['mongoose/types/array.js'][229]++;
this._registerAtomic(["$pullAll", values]);
}
}
_$jscoverage['mongoose/types/array.js'][232]++;
return this;
});
_$jscoverage['mongoose/types/array.js'][222]++;
_$jscoverage['mongoose/types/array.js'][241]++;
MongooseArray.prototype.$pullAll = (function (values) {
_$jscoverage['mongoose/types/array.js'][223]++;
_$jscoverage['mongoose/types/array.js'][242]++;
if (values && values.length) {
_$jscoverage['mongoose/types/array.js'][224]++;
this._registerAtomic(["$pullAll", values]);
_$jscoverage['mongoose/types/array.js'][243]++;
var oldArr = this._parent.get(this._path), i = oldArr.length, mem;
}
_$jscoverage['mongoose/types/array.js'][225]++;
_$jscoverage['mongoose/types/array.js'][245]++;
while (i--) {
_$jscoverage['mongoose/types/array.js'][246]++;
mem = oldArr[i];
_$jscoverage['mongoose/types/array.js'][247]++;
if (mem instanceof EmbeddedDocument) {
_$jscoverage['mongoose/types/array.js'][248]++;
if (values.some((function (v) {
_$jscoverage['mongoose/types/array.js'][248]++;
return v.equals(mem);
}))) {
_$jscoverage['mongoose/types/array.js'][249]++;
oldArr.splice(i, 1);
}
}
else {
_$jscoverage['mongoose/types/array.js'][251]++;
if (~ values.indexOf(mem)) {
_$jscoverage['mongoose/types/array.js'][251]++;
oldArr.splice(i, 1);
}
}
}
_$jscoverage['mongoose/types/array.js'][253]++;
this._registerAtomic(["$pullAll", values]);
_$jscoverage['mongoose/types/array.js'][254]++;
return this;
});
_$jscoverage['mongoose/types/array.js'][235]++;
_$jscoverage['mongoose/types/array.js'][264]++;
MongooseArray.prototype.toObject = (function () {
_$jscoverage['mongoose/types/array.js'][236]++;
_$jscoverage['mongoose/types/array.js'][265]++;
return this.map((function (doc) {
_$jscoverage['mongoose/types/array.js'][237]++;
_$jscoverage['mongoose/types/array.js'][266]++;
return doc;
}));
});
_$jscoverage['mongoose/types/array.js'][245]++;
_$jscoverage['mongoose/types/array.js'][274]++;
module.exports = MongooseArray;
_$jscoverage['mongoose/types/array.js'].source = ["","/**"," * Module dependencies."," */","","var EmbeddedDocument = require('./document');","","/**"," * Mongoose Array constructor."," * Values always have to be passed to the constructor to initialize, since"," * otherwise MongooseArray#push will mark the array as modified to the parent."," *"," * @param {Array} values"," * @param {String} key path"," * @param {Document} parent document"," * @api private"," * @see http://bit.ly/f6CnZU"," */","","function MongooseArray (values, path, doc) {"," var arr = [];"," arr.push.apply(arr, values);"," arr.__proto__ = MongooseArray.prototype;"," arr._atomics = [];"," arr.validators = [];"," arr._path = path;"," arr._parent = doc;"," if (doc)"," arr._schema = doc.schema.path(path);"," return arr;","};","","/**"," * Inherit from Array."," */","","MongooseArray.prototype = new Array();","","/**"," * Stores a queue of atomic operations to perform"," *"," * @api private"," */","","MongooseArray.prototype._atomics;","","/**"," * Parent owner document"," *"," * @api private"," */","","MongooseArray.prototype._parent;","","/**"," * Casts a member"," *"," * @api private"," */","","MongooseArray.prototype._cast = function (value) {"," var cast = this._schema.caster.prototype.cast"," , doc = this._parent;",""," return cast.call(null, value, doc);","};","","/**"," * Marks this array as modified"," *"," * @api public"," */","","MongooseArray.prototype._markModified = function () {"," if (this._parent)"," this._parent.activePaths.modify(this._path);"," return this;","};","","/**"," * Register an atomic operation with the parent"," *"," * @param {Array} operation"," * @api private"," */","","MongooseArray.prototype._registerAtomic = function (op) {"," this._atomics.push(op);"," this._markModified();"," return this;","};","","/**"," * Returns true if we have to perform atomics for this, and no normal"," * operations"," *"," * @api public"," */","","MongooseArray.prototype.__defineGetter__('doAtomics', function () {"," return this._atomics.length;","});","","/**"," * Pushes item/s to the array atomically. Overrides Array#push"," *"," * @param {Object} value"," * @api public"," */","","var oldPush = MongooseArray.prototype.push;","","MongooseArray.prototype.$push = ","MongooseArray.prototype.push = function () {"," var self = this"," , values = Array.prototype.map.call(arguments, function(obj){"," return self._cast(obj);"," })"," , ret = oldPush.apply(this, values);",""," if (1 === values.length)"," this._registerAtomic(['$push', values[0]]);"," else"," this._registerAtomic(['$pushAll', values]);",""," return ret;","};","","/**"," * Pushes item/s to the array non-atomically"," *"," * @param {Object} value"," * @api public"," */","","MongooseArray.prototype.nonAtomicPush = function () {"," var self = this"," , values = Array.prototype.map.call(arguments, function (obj) {"," return self._cast(obj);"," })"," , ret = oldPush.apply(this, values);",""," this._markModified();",""," return ret;","};","","/**"," * Pushes several items at once to the array atomically"," *"," * @param {Array} values"," * @api public"," */","","MongooseArray.prototype.$pushAll = function (value) {"," var length = this.length;"," this.push.apply(this, value);"," // make sure we access the casted elements"," this._registerAtomic(['$pushAll', this.slice(length) ]);"," return this;","};","","/**"," * Pops the array atomically"," *"," * @api public"," */","","MongooseArray.prototype.$pop = function () {"," this._registerAtomic(['$pop', '1']);"," return this.pop();","};","","/**"," * Shifts the array"," *"," * @api public"," */","","MongooseArray.prototype.$shift = function () {"," this._registerAtomic(['$shift', '-1']);"," return this.shift();","};","","/**"," * Removes items from an array atomically"," *"," * Examples:"," * doc.array.remove(ObjectId)"," * doc.array.remove('tag 1', 'tag 2')"," *"," * @param {Object} value to remove"," * @api public"," */","","MongooseArray.prototype.remove = function () {"," var args = Array.prototype.map.call(arguments, this._cast, this);"," if (args.length == 1)"," this.$pull(args[0]);"," else"," this.$pullAll(args);"," return args;","};","","/**"," * Pulls from the array"," *"," * @api public"," */","","MongooseArray.prototype.$pull = function (value) {"," this._registerAtomic(['$pull', value]);"," return this;","};","","/**"," * Pulls many items from an array"," *"," * @api public"," */","","MongooseArray.prototype.$pullAll = function (values) {"," if (values &amp;&amp; values.length)"," this._registerAtomic(['$pullAll', values]);"," return this;","};","","/**"," * Returns an Array"," *"," * @return {Array}"," * @api public"," */","","MongooseArray.prototype.toObject = function () {"," return this.map( function (doc) {"," return doc;"," });","};","","/**"," * Module exports."," */","","module.exports = MongooseArray;"];
_$jscoverage['mongoose/types/array.js'].source = ["","/**"," * Module dependencies."," */","","var EmbeddedDocument = require('./document');","","/**"," * Mongoose Array constructor."," * Values always have to be passed to the constructor to initialize, since"," * otherwise MongooseArray#push will mark the array as modified to the parent."," *"," * @param {Array} values"," * @param {String} key path"," * @param {Document} parent document"," * @api private"," * @see http://bit.ly/f6CnZU"," */","","function MongooseArray (values, path, doc) {"," var arr = [];"," arr.push.apply(arr, values);"," arr.__proto__ = MongooseArray.prototype;"," arr._atomics = [];"," arr.validators = [];"," arr._path = path;"," arr._parent = doc;"," if (doc)"," arr._schema = doc.schema.path(path);"," return arr;","};","","/**"," * Inherit from Array."," */","","MongooseArray.prototype = new Array();","","/**"," * Stores a queue of atomic operations to perform"," *"," * @api private"," */","","MongooseArray.prototype._atomics;","","/**"," * Parent owner document"," *"," * @api private"," */","","MongooseArray.prototype._parent;","","/**"," * Casts a member"," *"," * @api private"," */","","MongooseArray.prototype._cast = function (value) {"," var cast = this._schema.caster.prototype.cast"," , doc = this._parent;",""," return cast.call(null, value, doc);","};","","/**"," * Marks this array as modified"," *"," * @api public"," */","","MongooseArray.prototype._markModified = function () {"," if (this._parent)"," this._parent.activePaths.modify(this._path);"," return this;","};","","/**"," * Register an atomic operation with the parent"," *"," * @param {Array} operation"," * @api private"," */","","MongooseArray.prototype._registerAtomic = function (op) {"," this._atomics.push(op);"," this._markModified();"," return this;","};","","/**"," * Returns true if we have to perform atomics for this, and no normal"," * operations"," *"," * @api public"," */","","MongooseArray.prototype.__defineGetter__('doAtomics', function () {"," return this._atomics.length;","});","","/**"," * Pushes item/s to the array atomically. Overrides Array#push"," *"," * @param {Object} value"," * @api public"," */","","var oldPush = MongooseArray.prototype.push;","","MongooseArray.prototype.$push = ","MongooseArray.prototype.push = function () {"," var values = Array.prototype.map.call(arguments, this._cast, this)"," , ret = oldPush.apply(this, values);",""," if (1 === values.length)"," this._registerAtomic(['$push', values[0]]);"," else"," this._registerAtomic(['$pushAll', values]);",""," return ret;","};","","/**"," * Pushes item/s to the array non-atomically"," *"," * @param {Object} value"," * @api public"," */","","MongooseArray.prototype.nonAtomicPush = function () {"," var self = this"," , values = Array.prototype.map.call(arguments, this._cast, this)"," , ret = oldPush.apply(this, values);",""," this._markModified();",""," return ret;","};","","/**"," * Pushes several items at once to the array atomically"," *"," * @param {Array} values"," * @api public"," */","","MongooseArray.prototype.$pushAll = function (value) {"," var length = this.length;"," this.nonAtomicPush.apply(this, value);"," // make sure we access the casted elements"," this._registerAtomic(['$pushAll', this.slice(length) ]);"," return this;","};","","/**"," * Pops the array atomically"," *"," * @api public"," */","","MongooseArray.prototype.$pop = function () {"," this._registerAtomic(['$pop', '1']);"," return this.pop();","};","","/**"," * Shifts the array"," *"," * @api public"," */","","MongooseArray.prototype.$shift = function () {"," this._registerAtomic(['$shift', '-1']);"," return this.shift();","};","","/**"," * Removes items from an array atomically"," *"," * Examples:"," * doc.array.remove(ObjectId)"," * doc.array.remove('tag 1', 'tag 2')"," *"," * @param {Object} value to remove"," * @api public"," */","","MongooseArray.prototype.remove = function () {"," var args = Array.prototype.map.call(arguments, this._cast, this);"," if (args.length == 1)"," this.$pull(args[0]);"," else"," this.$pullAll(args);"," return args;","};","","/**"," * Pulls from the array"," *"," * @api public"," */","","MongooseArray.prototype.pull = ","MongooseArray.prototype.$pull = function () {"," var values = Array.prototype.map.call(arguments, this._cast, this)"," , oldArr = this._parent.get(this._path)"," , i = oldArr.length, mem;"," while (i--) {"," mem = oldArr[i];"," if (mem instanceof EmbeddedDocument) {"," if (values.some( function (v) { return v.equals(mem); } )) {"," oldArr.splice(i, 1);"," }"," } else if (~values.indexOf(mem)) oldArr.splice(i, 1);"," }"," if (1 === values.length) {"," if (values[0] instanceof EmbeddedDocument) {"," this._registerAtomic(['$pull', {_id: values[0]._id}]);"," } else {"," this._registerAtomic(['$pull', values[0]]);"," }"," } else {"," if (values[0] instanceof EmbeddedDocument) {"," this._registerAtomic(['$pullAll', values.map( function (v) { return {_id: v._id}; } )]);"," } else {"," this._registerAtomic(['$pullAll', values]);"," }"," }"," return this;","};","","/**"," * Pulls many items from an array"," *"," * @api public"," */","","MongooseArray.prototype.$pullAll = function (values) {"," if (values &amp;&amp; values.length)"," var oldArr = this._parent.get(this._path)"," , i = oldArr.length, mem;"," while (i--) {"," mem = oldArr[i];"," if (mem instanceof EmbeddedDocument) {"," if (values.some( function (v) { return v.equals(mem); } )) {"," oldArr.splice(i, 1);"," }"," } else if (~values.indexOf(mem)) oldArr.splice(i, 1);"," }"," this._registerAtomic(['$pullAll', values]);"," return this;","};","","/**"," * Returns an Array"," *"," * @return {Array}"," * @api public"," */","","MongooseArray.prototype.toObject = function () {"," return this.map( function (doc) {"," return doc;"," });","};","","/**"," * Module exports."," */","","module.exports = MongooseArray;"];

@@ -25,3 +25,5 @@ /* automatically generated by JSCoverage - do not edit */

_$jscoverage['mongoose/types/number.js'][63] = 0;
_$jscoverage['mongoose/types/number.js'][70] = 0;
_$jscoverage['mongoose/types/number.js'][72] = 0;
_$jscoverage['mongoose/types/number.js'][73] = 0;
_$jscoverage['mongoose/types/number.js'][80] = 0;
}

@@ -75,4 +77,9 @@ _$jscoverage['mongoose/types/number.js'][14]++;

});
_$jscoverage['mongoose/types/number.js'][70]++;
_$jscoverage['mongoose/types/number.js'][72]++;
MongooseNumber.prototype.toString = (function () {
_$jscoverage['mongoose/types/number.js'][73]++;
return String(this.valueOf());
});
_$jscoverage['mongoose/types/number.js'][80]++;
module.exports = MongooseNumber;
_$jscoverage['mongoose/types/number.js'].source = ["","/**"," * Module dependencies."," */","","/**"," * MongooseNumber constructor."," *"," * @param {Object} value to pass to Number"," * @param {Document} parent document"," * @api private"," */","","function MongooseNumber (value, path, doc) {"," var number = new Number(value);"," number.__proto__ = MongooseNumber.prototype;"," number._atomics = [];"," number._path = path;"," number._parent = doc;"," return number;","};","","/**"," * Inherits from Number."," */","","MongooseNumber.prototype = new Number();","","/**"," * Atomic increment"," *"," * @api public"," */","","MongooseNumber.prototype.increment = function(value){"," var schema = this._parent.schema.path(this._path)"," , value = Number(value) || 1;"," if (isNaN(value)) value = 1;"," this._parent.setValue(this._path, schema.cast(this + value));"," this._parent.getValue(this._path)._atomics = [['$inc', value || 1]];"," this._parent.activePaths.modify(this._path);"," return this;","};","","/**"," * Returns true if we have to perform atomics for this, and no normal"," * operations"," *"," * @api public"," */","","MongooseNumber.prototype.__defineGetter__('doAtomics', function () {"," return this._atomics.length;","});","","/**"," * Atomic decrement"," *"," * @api public"," */","","MongooseNumber.prototype.decrement = function(){"," this.increment(-1);","};","","/**"," * Module exports"," */","","module.exports = MongooseNumber;"];
_$jscoverage['mongoose/types/number.js'].source = ["","/**"," * Module dependencies."," */","","/**"," * MongooseNumber constructor."," *"," * @param {Object} value to pass to Number"," * @param {Document} parent document"," * @api private"," */","","function MongooseNumber (value, path, doc) {"," var number = new Number(value);"," number.__proto__ = MongooseNumber.prototype;"," number._atomics = [];"," number._path = path;"," number._parent = doc;"," return number;","};","","/**"," * Inherits from Number."," */","","MongooseNumber.prototype = new Number();","","/**"," * Atomic increment"," *"," * @api public"," */","","MongooseNumber.prototype.increment = function(value){"," var schema = this._parent.schema.path(this._path)"," , value = Number(value) || 1;"," if (isNaN(value)) value = 1;"," this._parent.setValue(this._path, schema.cast(this + value));"," this._parent.getValue(this._path)._atomics = [['$inc', value || 1]];"," this._parent.activePaths.modify(this._path);"," return this;","};","","/**"," * Returns true if we have to perform atomics for this, and no normal"," * operations"," *"," * @api public"," */","","MongooseNumber.prototype.__defineGetter__('doAtomics', function () {"," return this._atomics.length;","});","","/**"," * Atomic decrement"," *"," * @api public"," */","","MongooseNumber.prototype.decrement = function(){"," this.increment(-1);","};","","/**"," * Re-declare toString (for `console.log`)"," *"," * @api public"," */","","MongooseNumber.prototype.toString = function () {"," return String(this.valueOf());","};","","/**"," * Module exports"," */","","module.exports = MongooseNumber;"];

@@ -13,5 +13,5 @@

this.conn = conn;
this.buffer = true;
this.queue = [];
if (this.conn.readyState == 1) this.onOpen();
this.queue = [];
this.buffer = true;
};

@@ -18,0 +18,0 @@

@@ -140,10 +140,19 @@

Connection.prototype.onOpen = function () {
this.readyState = 1;
// avoid having the collection subscribe to our event emitter
// to prevent 0.3 warning
for (var i in this.collections)
this.collections[i].onOpen();
this.emit('open');
var self = this;
var continuation = function(){
self.readyState = 1;
// avoid having the collection subscribe to our event emitter
// to prevent 0.3 warning
for (var i in self.collections)
self.collections[i].onOpen();
self.emit('open');
};
//do authentication before we continue if a database username and password exist
if(self.user && self.pass)
self.db.authenticate(self.user,self.pass,continuation);
else
continuation();
};

@@ -150,0 +159,0 @@

@@ -431,3 +431,3 @@

var nested = function(){};
nested.prototype = this;
nested.prototype.__proto__ = this;
compile(subprops, nested.prototype, path);

@@ -534,3 +534,3 @@ this.__getters[path] = new nested();

Document.prototype.toJSON = function () {
return JSON.stringify(this.toObject());
return this.toObject();
};

@@ -537,0 +537,0 @@

@@ -256,3 +256,3 @@

exports.version = '1.0.7';
exports.version = '1.0.8';

@@ -259,0 +259,0 @@ /**

@@ -66,16 +66,10 @@

Model.prototype.save = function (fn) {
var promise = new Promise()
var promise = new Promise(fn)
, options = {}
, self = this;
// add callback+errback
promise.addBack(function (err) {
if (err) return fn(err);
fn(null);
self.emit('save');
});
function complete (err) {
if (err) return promise.error(err);
promise.complete();
self.emit('save');
};

@@ -82,0 +76,0 @@

{
"name": "mongoose"
, "description": "Mongoose MongoDB ORM"
, "version": "1.0.7"
, "version": "1.0.8"
, "author": "Guillermo Rauch <guillermo@learnboost.com>"

@@ -6,0 +6,0 @@ , "keywords": ["mongodb", "mongoose", "orm", "data", "datastore", "nosql"]

@@ -438,4 +438,18 @@

});
},
'test jsonifying an object': function () {
var doc = new TestDocument({ test: 'woot' })
, oidString = DocumentObjectId.toString(doc._id);
// convert to json string
var json = JSON.stringify(doc);
// parse again
var obj = JSON.parse(json);
obj.test.should.eql('woot');
obj._id.should.eql(oidString);
}
};

Sorry, the diff of this file is too big to display

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