Comparing version 1.0.7 to 1.0.8
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 @@ ================== |
@@ -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 < 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 < 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 && 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 && 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 && obj[i].constructor == Object){ // assume nested object"," doc[i] = {};"," init(obj[i], doc[i], path + '.');"," } else {"," if (obj[i] !== null && 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)"," && path[i] !== null"," && 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 < 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 < 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 < 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 < 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"," && Object.keys(tree[i]).length)"," && (!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 && this.schema.callQueue)"," for (var i = 0, l = this.schema.callQueue.length; i < 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 < 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 && obj[i].constructor == Object){ // assume nested object"," doc[i] = {};"," init(obj[i], doc[i], path + '.');"," } else {"," if (obj[i] !== null && 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)"," && 'undefined' !== typeof path[i]"," && path[i] !== null"," && 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 < 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 < 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 < 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 < 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"," && Object.keys(tree[i]).length)"," && (!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 && this.schema.callQueue)"," for (var i = 0, l = this.schema.callQueue.length; i < 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 < 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 < 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 < 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 && 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 && val instanceof DocumentArray && 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 < 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 && 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 > 1 || (ops.length === 1 && opsAll.length > 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 > 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 && val instanceof DocumentArray && 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 < 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 && !this.tree[i])"," this.tree[i] = obj[i];",""," if (obj[i].constructor == Object && (!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 && 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 && !this.tree[i])"," this.tree[i] = obj[i];",""," if (obj[i].constructor == Object && (!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 && 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 && 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 < 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 && 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 && 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 < 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 && 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] && '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 && 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 >= 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 >= 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] && '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 > 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 && 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 >= 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 >= 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 && 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 && 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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1675830
220
28903