Comparing version 1.0.0 to 1.0.1
@@ -17,3 +17,2 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/connection.js'][70] = 0; | ||
_$jscoverage['mongoose/connection.js'][73] = 0; | ||
_$jscoverage['mongoose/connection.js'][74] = 0; | ||
@@ -24,72 +23,72 @@ _$jscoverage['mongoose/connection.js'][75] = 0; | ||
_$jscoverage['mongoose/connection.js'][78] = 0; | ||
_$jscoverage['mongoose/connection.js'][80] = 0; | ||
_$jscoverage['mongoose/connection.js'][79] = 0; | ||
_$jscoverage['mongoose/connection.js'][81] = 0; | ||
_$jscoverage['mongoose/connection.js'][85] = 0; | ||
_$jscoverage['mongoose/connection.js'][82] = 0; | ||
_$jscoverage['mongoose/connection.js'][86] = 0; | ||
_$jscoverage['mongoose/connection.js'][87] = 0; | ||
_$jscoverage['mongoose/connection.js'][88] = 0; | ||
_$jscoverage['mongoose/connection.js'][92] = 0; | ||
_$jscoverage['mongoose/connection.js'][89] = 0; | ||
_$jscoverage['mongoose/connection.js'][93] = 0; | ||
_$jscoverage['mongoose/connection.js'][94] = 0; | ||
_$jscoverage['mongoose/connection.js'][95] = 0; | ||
_$jscoverage['mongoose/connection.js'][97] = 0; | ||
_$jscoverage['mongoose/connection.js'][99] = 0; | ||
_$jscoverage['mongoose/connection.js'][96] = 0; | ||
_$jscoverage['mongoose/connection.js'][98] = 0; | ||
_$jscoverage['mongoose/connection.js'][100] = 0; | ||
_$jscoverage['mongoose/connection.js'][101] = 0; | ||
_$jscoverage['mongoose/connection.js'][102] = 0; | ||
_$jscoverage['mongoose/connection.js'][105] = 0; | ||
_$jscoverage['mongoose/connection.js'][103] = 0; | ||
_$jscoverage['mongoose/connection.js'][106] = 0; | ||
_$jscoverage['mongoose/connection.js'][107] = 0; | ||
_$jscoverage['mongoose/connection.js'][108] = 0; | ||
_$jscoverage['mongoose/connection.js'][111] = 0; | ||
_$jscoverage['mongoose/connection.js'][109] = 0; | ||
_$jscoverage['mongoose/connection.js'][112] = 0; | ||
_$jscoverage['mongoose/connection.js'][113] = 0; | ||
_$jscoverage['mongoose/connection.js'][116] = 0; | ||
_$jscoverage['mongoose/connection.js'][114] = 0; | ||
_$jscoverage['mongoose/connection.js'][117] = 0; | ||
_$jscoverage['mongoose/connection.js'][120] = 0; | ||
_$jscoverage['mongoose/connection.js'][118] = 0; | ||
_$jscoverage['mongoose/connection.js'][121] = 0; | ||
_$jscoverage['mongoose/connection.js'][122] = 0; | ||
_$jscoverage['mongoose/connection.js'][124] = 0; | ||
_$jscoverage['mongoose/connection.js'][123] = 0; | ||
_$jscoverage['mongoose/connection.js'][125] = 0; | ||
_$jscoverage['mongoose/connection.js'][129] = 0; | ||
_$jscoverage['mongoose/connection.js'][138] = 0; | ||
_$jscoverage['mongoose/connection.js'][126] = 0; | ||
_$jscoverage['mongoose/connection.js'][130] = 0; | ||
_$jscoverage['mongoose/connection.js'][139] = 0; | ||
_$jscoverage['mongoose/connection.js'][140] = 0; | ||
_$jscoverage['mongoose/connection.js'][151] = 0; | ||
_$jscoverage['mongoose/connection.js'][141] = 0; | ||
_$jscoverage['mongoose/connection.js'][152] = 0; | ||
_$jscoverage['mongoose/connection.js'][154] = 0; | ||
_$jscoverage['mongoose/connection.js'][156] = 0; | ||
_$jscoverage['mongoose/connection.js'][153] = 0; | ||
_$jscoverage['mongoose/connection.js'][155] = 0; | ||
_$jscoverage['mongoose/connection.js'][157] = 0; | ||
_$jscoverage['mongoose/connection.js'][160] = 0; | ||
_$jscoverage['mongoose/connection.js'][158] = 0; | ||
_$jscoverage['mongoose/connection.js'][161] = 0; | ||
_$jscoverage['mongoose/connection.js'][162] = 0; | ||
_$jscoverage['mongoose/connection.js'][163] = 0; | ||
_$jscoverage['mongoose/connection.js'][165] = 0; | ||
_$jscoverage['mongoose/connection.js'][164] = 0; | ||
_$jscoverage['mongoose/connection.js'][166] = 0; | ||
_$jscoverage['mongoose/connection.js'][169] = 0; | ||
_$jscoverage['mongoose/connection.js'][172] = 0; | ||
_$jscoverage['mongoose/connection.js'][167] = 0; | ||
_$jscoverage['mongoose/connection.js'][170] = 0; | ||
_$jscoverage['mongoose/connection.js'][173] = 0; | ||
_$jscoverage['mongoose/connection.js'][175] = 0; | ||
_$jscoverage['mongoose/connection.js'][178] = 0; | ||
_$jscoverage['mongoose/connection.js'][174] = 0; | ||
_$jscoverage['mongoose/connection.js'][176] = 0; | ||
_$jscoverage['mongoose/connection.js'][179] = 0; | ||
_$jscoverage['mongoose/connection.js'][181] = 0; | ||
_$jscoverage['mongoose/connection.js'][184] = 0; | ||
_$jscoverage['mongoose/connection.js'][193] = 0; | ||
_$jscoverage['mongoose/connection.js'][180] = 0; | ||
_$jscoverage['mongoose/connection.js'][182] = 0; | ||
_$jscoverage['mongoose/connection.js'][185] = 0; | ||
_$jscoverage['mongoose/connection.js'][194] = 0; | ||
_$jscoverage['mongoose/connection.js'][195] = 0; | ||
_$jscoverage['mongoose/connection.js'][206] = 0; | ||
_$jscoverage['mongoose/connection.js'][196] = 0; | ||
_$jscoverage['mongoose/connection.js'][207] = 0; | ||
_$jscoverage['mongoose/connection.js'][208] = 0; | ||
_$jscoverage['mongoose/connection.js'][209] = 0; | ||
_$jscoverage['mongoose/connection.js'][221] = 0; | ||
_$jscoverage['mongoose/connection.js'][210] = 0; | ||
_$jscoverage['mongoose/connection.js'][222] = 0; | ||
_$jscoverage['mongoose/connection.js'][224] = 0; | ||
_$jscoverage['mongoose/connection.js'][223] = 0; | ||
_$jscoverage['mongoose/connection.js'][225] = 0; | ||
_$jscoverage['mongoose/connection.js'][227] = 0; | ||
_$jscoverage['mongoose/connection.js'][226] = 0; | ||
_$jscoverage['mongoose/connection.js'][228] = 0; | ||
_$jscoverage['mongoose/connection.js'][231] = 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; | ||
_$jscoverage['mongoose/connection.js'][236] = 0; | ||
_$jscoverage['mongoose/connection.js'][235] = 0; | ||
_$jscoverage['mongoose/connection.js'][237] = 0; | ||
@@ -99,5 +98,6 @@ _$jscoverage['mongoose/connection.js'][238] = 0; | ||
_$jscoverage['mongoose/connection.js'][240] = 0; | ||
_$jscoverage['mongoose/connection.js'][243] = 0; | ||
_$jscoverage['mongoose/connection.js'][246] = 0; | ||
_$jscoverage['mongoose/connection.js'][253] = 0; | ||
_$jscoverage['mongoose/connection.js'][241] = 0; | ||
_$jscoverage['mongoose/connection.js'][244] = 0; | ||
_$jscoverage['mongoose/connection.js'][247] = 0; | ||
_$jscoverage['mongoose/connection.js'][254] = 0; | ||
} | ||
@@ -129,81 +129,81 @@ _$jscoverage['mongoose/connection.js'][6]++; | ||
var self = this, uri; | ||
_$jscoverage['mongoose/connection.js'][73]++; | ||
_$jscoverage['mongoose/connection.js'][74]++; | ||
if (typeof database != "string") { | ||
_$jscoverage['mongoose/connection.js'][74]++; | ||
_$jscoverage['mongoose/connection.js'][75]++; | ||
uri = url.parse(host); | ||
_$jscoverage['mongoose/connection.js'][75]++; | ||
_$jscoverage['mongoose/connection.js'][76]++; | ||
host = uri.hostname; | ||
_$jscoverage['mongoose/connection.js'][76]++; | ||
_$jscoverage['mongoose/connection.js'][77]++; | ||
port = uri.port || 27017; | ||
_$jscoverage['mongoose/connection.js'][77]++; | ||
_$jscoverage['mongoose/connection.js'][78]++; | ||
callback = database; | ||
_$jscoverage['mongoose/connection.js'][78]++; | ||
_$jscoverage['mongoose/connection.js'][79]++; | ||
database = uri.pathname.replace(/\//g, ""); | ||
} | ||
else { | ||
_$jscoverage['mongoose/connection.js'][80]++; | ||
_$jscoverage['mongoose/connection.js'][81]++; | ||
callback = callback || port; | ||
_$jscoverage['mongoose/connection.js'][81]++; | ||
_$jscoverage['mongoose/connection.js'][82]++; | ||
port = typeof port == "number"? port: 27017; | ||
} | ||
_$jscoverage['mongoose/connection.js'][85]++; | ||
_$jscoverage['mongoose/connection.js'][86]++; | ||
if (this.readyState != 0) { | ||
_$jscoverage['mongoose/connection.js'][86]++; | ||
_$jscoverage['mongoose/connection.js'][87]++; | ||
if ("function" == typeof callback) { | ||
_$jscoverage['mongoose/connection.js'][87]++; | ||
_$jscoverage['mongoose/connection.js'][88]++; | ||
callback(new Error("Trying to open unclosed connection")); | ||
} | ||
_$jscoverage['mongoose/connection.js'][88]++; | ||
_$jscoverage['mongoose/connection.js'][89]++; | ||
return this; | ||
} | ||
_$jscoverage['mongoose/connection.js'][92]++; | ||
if (uri.auth) { | ||
_$jscoverage['mongoose/connection.js'][93]++; | ||
_$jscoverage['mongoose/connection.js'][93]++; | ||
if (uri && uri.auth) { | ||
_$jscoverage['mongoose/connection.js'][94]++; | ||
var auth = uri.auth.split(":"); | ||
_$jscoverage['mongoose/connection.js'][94]++; | ||
_$jscoverage['mongoose/connection.js'][95]++; | ||
this.user = auth[0]; | ||
_$jscoverage['mongoose/connection.js'][95]++; | ||
_$jscoverage['mongoose/connection.js'][96]++; | ||
this.pass = auth[1]; | ||
} | ||
else { | ||
_$jscoverage['mongoose/connection.js'][97]++; | ||
_$jscoverage['mongoose/connection.js'][98]++; | ||
this.user = this.pass = undefined; | ||
} | ||
_$jscoverage['mongoose/connection.js'][99]++; | ||
_$jscoverage['mongoose/connection.js'][100]++; | ||
if (! host) { | ||
_$jscoverage['mongoose/connection.js'][100]++; | ||
_$jscoverage['mongoose/connection.js'][101]++; | ||
if ("function" == typeof callback) { | ||
_$jscoverage['mongoose/connection.js'][101]++; | ||
_$jscoverage['mongoose/connection.js'][102]++; | ||
callback(new Error("Please provide a valid hostname.")); | ||
} | ||
_$jscoverage['mongoose/connection.js'][102]++; | ||
_$jscoverage['mongoose/connection.js'][103]++; | ||
return this; | ||
} | ||
_$jscoverage['mongoose/connection.js'][105]++; | ||
_$jscoverage['mongoose/connection.js'][106]++; | ||
if (! database) { | ||
_$jscoverage['mongoose/connection.js'][106]++; | ||
_$jscoverage['mongoose/connection.js'][107]++; | ||
if ("function" == typeof callback) { | ||
_$jscoverage['mongoose/connection.js'][107]++; | ||
_$jscoverage['mongoose/connection.js'][108]++; | ||
callback(new Error("Please provide a database to connect to.")); | ||
} | ||
_$jscoverage['mongoose/connection.js'][108]++; | ||
_$jscoverage['mongoose/connection.js'][109]++; | ||
return this; | ||
} | ||
_$jscoverage['mongoose/connection.js'][111]++; | ||
_$jscoverage['mongoose/connection.js'][112]++; | ||
this.name = database; | ||
_$jscoverage['mongoose/connection.js'][112]++; | ||
_$jscoverage['mongoose/connection.js'][113]++; | ||
this.host = host; | ||
_$jscoverage['mongoose/connection.js'][113]++; | ||
_$jscoverage['mongoose/connection.js'][114]++; | ||
this.port = port; | ||
_$jscoverage['mongoose/connection.js'][116]++; | ||
_$jscoverage['mongoose/connection.js'][117]++; | ||
this.readyState = 2; | ||
_$jscoverage['mongoose/connection.js'][117]++; | ||
_$jscoverage['mongoose/connection.js'][118]++; | ||
this.emit("opening"); | ||
_$jscoverage['mongoose/connection.js'][120]++; | ||
_$jscoverage['mongoose/connection.js'][121]++; | ||
this.doOpen((function (err) { | ||
_$jscoverage['mongoose/connection.js'][121]++; | ||
_$jscoverage['mongoose/connection.js'][122]++; | ||
if (err) { | ||
_$jscoverage['mongoose/connection.js'][122]++; | ||
_$jscoverage['mongoose/connection.js'][123]++; | ||
if (typeof callback == "function") { | ||
_$jscoverage['mongoose/connection.js'][122]++; | ||
_$jscoverage['mongoose/connection.js'][123]++; | ||
callback(err); | ||
@@ -213,7 +213,7 @@ } | ||
else { | ||
_$jscoverage['mongoose/connection.js'][124]++; | ||
_$jscoverage['mongoose/connection.js'][125]++; | ||
self.onOpen(); | ||
_$jscoverage['mongoose/connection.js'][125]++; | ||
_$jscoverage['mongoose/connection.js'][126]++; | ||
if (typeof callback == "function") { | ||
_$jscoverage['mongoose/connection.js'][125]++; | ||
_$jscoverage['mongoose/connection.js'][126]++; | ||
callback(null); | ||
@@ -223,33 +223,33 @@ } | ||
})); | ||
_$jscoverage['mongoose/connection.js'][129]++; | ||
_$jscoverage['mongoose/connection.js'][130]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/connection.js'][138]++; | ||
_$jscoverage['mongoose/connection.js'][139]++; | ||
Connection.prototype.onOpen = (function () { | ||
_$jscoverage['mongoose/connection.js'][139]++; | ||
_$jscoverage['mongoose/connection.js'][140]++; | ||
this.readyState = 1; | ||
_$jscoverage['mongoose/connection.js'][140]++; | ||
_$jscoverage['mongoose/connection.js'][141]++; | ||
this.emit("open"); | ||
}); | ||
_$jscoverage['mongoose/connection.js'][151]++; | ||
_$jscoverage['mongoose/connection.js'][152]++; | ||
Connection.prototype.close = (function (callback) { | ||
_$jscoverage['mongoose/connection.js'][152]++; | ||
_$jscoverage['mongoose/connection.js'][153]++; | ||
var self = this; | ||
_$jscoverage['mongoose/connection.js'][154]++; | ||
_$jscoverage['mongoose/connection.js'][155]++; | ||
switch (this.readyState) { | ||
case 0: | ||
_$jscoverage['mongoose/connection.js'][156]++; | ||
_$jscoverage['mongoose/connection.js'][157]++; | ||
callback(null); | ||
_$jscoverage['mongoose/connection.js'][157]++; | ||
_$jscoverage['mongoose/connection.js'][158]++; | ||
break; | ||
case 1: | ||
_$jscoverage['mongoose/connection.js'][160]++; | ||
_$jscoverage['mongoose/connection.js'][161]++; | ||
this.readyState = 3; | ||
_$jscoverage['mongoose/connection.js'][161]++; | ||
_$jscoverage['mongoose/connection.js'][162]++; | ||
this.doClose((function (err) { | ||
_$jscoverage['mongoose/connection.js'][162]++; | ||
_$jscoverage['mongoose/connection.js'][163]++; | ||
if (err) { | ||
_$jscoverage['mongoose/connection.js'][163]++; | ||
_$jscoverage['mongoose/connection.js'][164]++; | ||
if (callback) { | ||
_$jscoverage['mongoose/connection.js'][163]++; | ||
_$jscoverage['mongoose/connection.js'][164]++; | ||
callback(err); | ||
@@ -259,7 +259,7 @@ } | ||
else { | ||
_$jscoverage['mongoose/connection.js'][165]++; | ||
_$jscoverage['mongoose/connection.js'][166]++; | ||
self.onClose(); | ||
_$jscoverage['mongoose/connection.js'][166]++; | ||
_$jscoverage['mongoose/connection.js'][167]++; | ||
if (callback) { | ||
_$jscoverage['mongoose/connection.js'][166]++; | ||
_$jscoverage['mongoose/connection.js'][167]++; | ||
callback(null); | ||
@@ -269,82 +269,82 @@ } | ||
})); | ||
_$jscoverage['mongoose/connection.js'][169]++; | ||
_$jscoverage['mongoose/connection.js'][170]++; | ||
break; | ||
case 2: | ||
_$jscoverage['mongoose/connection.js'][172]++; | ||
_$jscoverage['mongoose/connection.js'][173]++; | ||
this.once("open", (function () { | ||
_$jscoverage['mongoose/connection.js'][173]++; | ||
_$jscoverage['mongoose/connection.js'][174]++; | ||
self.close(callback); | ||
})); | ||
_$jscoverage['mongoose/connection.js'][175]++; | ||
_$jscoverage['mongoose/connection.js'][176]++; | ||
break; | ||
case 3: | ||
_$jscoverage['mongoose/connection.js'][178]++; | ||
_$jscoverage['mongoose/connection.js'][179]++; | ||
this.once("close", (function () { | ||
_$jscoverage['mongoose/connection.js'][179]++; | ||
_$jscoverage['mongoose/connection.js'][180]++; | ||
callback(null); | ||
})); | ||
_$jscoverage['mongoose/connection.js'][181]++; | ||
_$jscoverage['mongoose/connection.js'][182]++; | ||
break; | ||
} | ||
_$jscoverage['mongoose/connection.js'][184]++; | ||
_$jscoverage['mongoose/connection.js'][185]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/connection.js'][193]++; | ||
_$jscoverage['mongoose/connection.js'][194]++; | ||
Connection.prototype.onClose = (function () { | ||
_$jscoverage['mongoose/connection.js'][194]++; | ||
_$jscoverage['mongoose/connection.js'][195]++; | ||
this.readyState = 0; | ||
_$jscoverage['mongoose/connection.js'][195]++; | ||
_$jscoverage['mongoose/connection.js'][196]++; | ||
this.emit("close"); | ||
}); | ||
_$jscoverage['mongoose/connection.js'][206]++; | ||
_$jscoverage['mongoose/connection.js'][207]++; | ||
Connection.prototype.collection = (function (name) { | ||
_$jscoverage['mongoose/connection.js'][207]++; | ||
_$jscoverage['mongoose/connection.js'][208]++; | ||
if (! (name in this.collections)) { | ||
_$jscoverage['mongoose/connection.js'][208]++; | ||
_$jscoverage['mongoose/connection.js'][209]++; | ||
this.collections[name] = new Collection(name, this); | ||
} | ||
_$jscoverage['mongoose/connection.js'][209]++; | ||
_$jscoverage['mongoose/connection.js'][210]++; | ||
return this.collections[name]; | ||
}); | ||
_$jscoverage['mongoose/connection.js'][221]++; | ||
_$jscoverage['mongoose/connection.js'][222]++; | ||
Connection.prototype.model = (function (name, collection) { | ||
_$jscoverage['mongoose/connection.js'][222]++; | ||
_$jscoverage['mongoose/connection.js'][223]++; | ||
collection || (collection = utils.toCollectionName(name)); | ||
_$jscoverage['mongoose/connection.js'][224]++; | ||
_$jscoverage['mongoose/connection.js'][225]++; | ||
if (! this.models[collection]) { | ||
_$jscoverage['mongoose/connection.js'][225]++; | ||
_$jscoverage['mongoose/connection.js'][226]++; | ||
this.models[collection] = {}; | ||
} | ||
_$jscoverage['mongoose/connection.js'][227]++; | ||
_$jscoverage['mongoose/connection.js'][228]++; | ||
if (! this.models[collection][name]) { | ||
_$jscoverage['mongoose/connection.js'][228]++; | ||
_$jscoverage['mongoose/connection.js'][229]++; | ||
var model = this.base.model(name, null, collection, true), Model; | ||
_$jscoverage['mongoose/connection.js'][231]++; | ||
_$jscoverage['mongoose/connection.js'][232]++; | ||
if (model.prototype.connection != this) { | ||
_$jscoverage['mongoose/connection.js'][232]++; | ||
_$jscoverage['mongoose/connection.js'][233]++; | ||
function Model() { | ||
_$jscoverage['mongoose/connection.js'][233]++; | ||
_$jscoverage['mongoose/connection.js'][234]++; | ||
model.apply(this, arguments); | ||
} | ||
_$jscoverage['mongoose/connection.js'][234]++; | ||
_$jscoverage['mongoose/connection.js'][235]++; | ||
; | ||
_$jscoverage['mongoose/connection.js'][236]++; | ||
_$jscoverage['mongoose/connection.js'][237]++; | ||
Model.__proto__ = model; | ||
_$jscoverage['mongoose/connection.js'][237]++; | ||
_$jscoverage['mongoose/connection.js'][238]++; | ||
Model.prototype.__proto__ = model.prototype; | ||
_$jscoverage['mongoose/connection.js'][238]++; | ||
_$jscoverage['mongoose/connection.js'][239]++; | ||
Model.prototype.db = this; | ||
_$jscoverage['mongoose/connection.js'][239]++; | ||
_$jscoverage['mongoose/connection.js'][240]++; | ||
Model.prototype.collection = this.collection(collection); | ||
_$jscoverage['mongoose/connection.js'][240]++; | ||
_$jscoverage['mongoose/connection.js'][241]++; | ||
Model.init(); | ||
} | ||
_$jscoverage['mongoose/connection.js'][243]++; | ||
_$jscoverage['mongoose/connection.js'][244]++; | ||
this.models[collection][name] = Model || model; | ||
} | ||
_$jscoverage['mongoose/connection.js'][246]++; | ||
_$jscoverage['mongoose/connection.js'][247]++; | ||
return this.models[collection][name]; | ||
}); | ||
_$jscoverage['mongoose/connection.js'][253]++; | ||
_$jscoverage['mongoose/connection.js'][254]++; | ||
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.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;"," 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;"]; |
@@ -6,5 +6,2 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/document.js'][6] = 0; | ||
_$jscoverage['mongoose/document.js'][22] = 0; | ||
_$jscoverage['mongoose/document.js'][23] = 0; | ||
_$jscoverage['mongoose/document.js'][24] = 0; | ||
_$jscoverage['mongoose/document.js'][25] = 0; | ||
@@ -17,18 +14,19 @@ _$jscoverage['mongoose/document.js'][26] = 0; | ||
_$jscoverage['mongoose/document.js'][31] = 0; | ||
_$jscoverage['mongoose/document.js'][37] = 0; | ||
_$jscoverage['mongoose/document.js'][46] = 0; | ||
_$jscoverage['mongoose/document.js'][54] = 0; | ||
_$jscoverage['mongoose/document.js'][62] = 0; | ||
_$jscoverage['mongoose/document.js'][70] = 0; | ||
_$jscoverage['mongoose/document.js'][71] = 0; | ||
_$jscoverage['mongoose/document.js'][32] = 0; | ||
_$jscoverage['mongoose/document.js'][33] = 0; | ||
_$jscoverage['mongoose/document.js'][34] = 0; | ||
_$jscoverage['mongoose/document.js'][40] = 0; | ||
_$jscoverage['mongoose/document.js'][49] = 0; | ||
_$jscoverage['mongoose/document.js'][57] = 0; | ||
_$jscoverage['mongoose/document.js'][65] = 0; | ||
_$jscoverage['mongoose/document.js'][73] = 0; | ||
_$jscoverage['mongoose/document.js'][74] = 0; | ||
_$jscoverage['mongoose/document.js'][75] = 0; | ||
_$jscoverage['mongoose/document.js'][77] = 0; | ||
_$jscoverage['mongoose/document.js'][78] = 0; | ||
_$jscoverage['mongoose/document.js'][79] = 0; | ||
_$jscoverage['mongoose/document.js'][80] = 0; | ||
_$jscoverage['mongoose/document.js'][81] = 0; | ||
_$jscoverage['mongoose/document.js'][82] = 0; | ||
_$jscoverage['mongoose/document.js'][86] = 0; | ||
_$jscoverage['mongoose/document.js'][96] = 0; | ||
_$jscoverage['mongoose/document.js'][97] = 0; | ||
_$jscoverage['mongoose/document.js'][98] = 0; | ||
_$jscoverage['mongoose/document.js'][83] = 0; | ||
_$jscoverage['mongoose/document.js'][85] = 0; | ||
_$jscoverage['mongoose/document.js'][89] = 0; | ||
_$jscoverage['mongoose/document.js'][99] = 0; | ||
_$jscoverage['mongoose/document.js'][100] = 0; | ||
@@ -40,91 +38,86 @@ _$jscoverage['mongoose/document.js'][101] = 0; | ||
_$jscoverage['mongoose/document.js'][107] = 0; | ||
_$jscoverage['mongoose/document.js'][108] = 0; | ||
_$jscoverage['mongoose/document.js'][110] = 0; | ||
_$jscoverage['mongoose/document.js'][111] = 0; | ||
_$jscoverage['mongoose/document.js'][113] = 0; | ||
_$jscoverage['mongoose/document.js'][112] = 0; | ||
_$jscoverage['mongoose/document.js'][114] = 0; | ||
_$jscoverage['mongoose/document.js'][115] = 0; | ||
_$jscoverage['mongoose/document.js'][117] = 0; | ||
_$jscoverage['mongoose/document.js'][118] = 0; | ||
_$jscoverage['mongoose/document.js'][119] = 0; | ||
_$jscoverage['mongoose/document.js'][122] = 0; | ||
_$jscoverage['mongoose/document.js'][125] = 0; | ||
_$jscoverage['mongoose/document.js'][127] = 0; | ||
_$jscoverage['mongoose/document.js'][126] = 0; | ||
_$jscoverage['mongoose/document.js'][129] = 0; | ||
_$jscoverage['mongoose/document.js'][130] = 0; | ||
_$jscoverage['mongoose/document.js'][132] = 0; | ||
_$jscoverage['mongoose/document.js'][143] = 0; | ||
_$jscoverage['mongoose/document.js'][144] = 0; | ||
_$jscoverage['mongoose/document.js'][145] = 0; | ||
_$jscoverage['mongoose/document.js'][131] = 0; | ||
_$jscoverage['mongoose/document.js'][133] = 0; | ||
_$jscoverage['mongoose/document.js'][134] = 0; | ||
_$jscoverage['mongoose/document.js'][136] = 0; | ||
_$jscoverage['mongoose/document.js'][147] = 0; | ||
_$jscoverage['mongoose/document.js'][148] = 0; | ||
_$jscoverage['mongoose/document.js'][149] = 0; | ||
_$jscoverage['mongoose/document.js'][150] = 0; | ||
_$jscoverage['mongoose/document.js'][164] = 0; | ||
_$jscoverage['mongoose/document.js'][165] = 0; | ||
_$jscoverage['mongoose/document.js'][166] = 0; | ||
_$jscoverage['mongoose/document.js'][167] = 0; | ||
_$jscoverage['mongoose/document.js'][168] = 0; | ||
_$jscoverage['mongoose/document.js'][169] = 0; | ||
_$jscoverage['mongoose/document.js'][171] = 0; | ||
_$jscoverage['mongoose/document.js'][175] = 0; | ||
_$jscoverage['mongoose/document.js'][177] = 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'][182] = 0; | ||
_$jscoverage['mongoose/document.js'][183] = 0; | ||
_$jscoverage['mongoose/document.js'][184] = 0; | ||
_$jscoverage['mongoose/document.js'][187] = 0; | ||
_$jscoverage['mongoose/document.js'][186] = 0; | ||
_$jscoverage['mongoose/document.js'][188] = 0; | ||
_$jscoverage['mongoose/document.js'][189] = 0; | ||
_$jscoverage['mongoose/document.js'][191] = 0; | ||
_$jscoverage['mongoose/document.js'][196] = 0; | ||
_$jscoverage['mongoose/document.js'][193] = 0; | ||
_$jscoverage['mongoose/document.js'][198] = 0; | ||
_$jscoverage['mongoose/document.js'][199] = 0; | ||
_$jscoverage['mongoose/document.js'][200] = 0; | ||
_$jscoverage['mongoose/document.js'][210] = 0; | ||
_$jscoverage['mongoose/document.js'][201] = 0; | ||
_$jscoverage['mongoose/document.js'][204] = 0; | ||
_$jscoverage['mongoose/document.js'][206] = 0; | ||
_$jscoverage['mongoose/document.js'][208] = 0; | ||
_$jscoverage['mongoose/document.js'][211] = 0; | ||
_$jscoverage['mongoose/document.js'][214] = 0; | ||
_$jscoverage['mongoose/document.js'][212] = 0; | ||
_$jscoverage['mongoose/document.js'][213] = 0; | ||
_$jscoverage['mongoose/document.js'][215] = 0; | ||
_$jscoverage['mongoose/document.js'][216] = 0; | ||
_$jscoverage['mongoose/document.js'][218] = 0; | ||
_$jscoverage['mongoose/document.js'][229] = 0; | ||
_$jscoverage['mongoose/document.js'][230] = 0; | ||
_$jscoverage['mongoose/document.js'][233] = 0; | ||
_$jscoverage['mongoose/document.js'][234] = 0; | ||
_$jscoverage['mongoose/document.js'][221] = 0; | ||
_$jscoverage['mongoose/document.js'][224] = 0; | ||
_$jscoverage['mongoose/document.js'][225] = 0; | ||
_$jscoverage['mongoose/document.js'][235] = 0; | ||
_$jscoverage['mongoose/document.js'][236] = 0; | ||
_$jscoverage['mongoose/document.js'][246] = 0; | ||
_$jscoverage['mongoose/document.js'][247] = 0; | ||
_$jscoverage['mongoose/document.js'][248] = 0; | ||
_$jscoverage['mongoose/document.js'][249] = 0; | ||
_$jscoverage['mongoose/document.js'][239] = 0; | ||
_$jscoverage['mongoose/document.js'][240] = 0; | ||
_$jscoverage['mongoose/document.js'][241] = 0; | ||
_$jscoverage['mongoose/document.js'][243] = 0; | ||
_$jscoverage['mongoose/document.js'][254] = 0; | ||
_$jscoverage['mongoose/document.js'][255] = 0; | ||
_$jscoverage['mongoose/document.js'][258] = 0; | ||
_$jscoverage['mongoose/document.js'][259] = 0; | ||
_$jscoverage['mongoose/document.js'][260] = 0; | ||
_$jscoverage['mongoose/document.js'][264] = 0; | ||
_$jscoverage['mongoose/document.js'][265] = 0; | ||
_$jscoverage['mongoose/document.js'][267] = 0; | ||
_$jscoverage['mongoose/document.js'][268] = 0; | ||
_$jscoverage['mongoose/document.js'][270] = 0; | ||
_$jscoverage['mongoose/document.js'][280] = 0; | ||
_$jscoverage['mongoose/document.js'][281] = 0; | ||
_$jscoverage['mongoose/document.js'][282] = 0; | ||
_$jscoverage['mongoose/document.js'][283] = 0; | ||
_$jscoverage['mongoose/document.js'][261] = 0; | ||
_$jscoverage['mongoose/document.js'][271] = 0; | ||
_$jscoverage['mongoose/document.js'][272] = 0; | ||
_$jscoverage['mongoose/document.js'][273] = 0; | ||
_$jscoverage['mongoose/document.js'][274] = 0; | ||
_$jscoverage['mongoose/document.js'][284] = 0; | ||
_$jscoverage['mongoose/document.js'][286] = 0; | ||
_$jscoverage['mongoose/document.js'][287] = 0; | ||
_$jscoverage['mongoose/document.js'][288] = 0; | ||
_$jscoverage['mongoose/document.js'][285] = 0; | ||
_$jscoverage['mongoose/document.js'][289] = 0; | ||
_$jscoverage['mongoose/document.js'][298] = 0; | ||
_$jscoverage['mongoose/document.js'][299] = 0; | ||
_$jscoverage['mongoose/document.js'][290] = 0; | ||
_$jscoverage['mongoose/document.js'][291] = 0; | ||
_$jscoverage['mongoose/document.js'][293] = 0; | ||
_$jscoverage['mongoose/document.js'][294] = 0; | ||
_$jscoverage['mongoose/document.js'][297] = 0; | ||
_$jscoverage['mongoose/document.js'][306] = 0; | ||
_$jscoverage['mongoose/document.js'][308] = 0; | ||
_$jscoverage['mongoose/document.js'][309] = 0; | ||
_$jscoverage['mongoose/document.js'][318] = 0; | ||
_$jscoverage['mongoose/document.js'][319] = 0; | ||
_$jscoverage['mongoose/document.js'][320] = 0; | ||
_$jscoverage['mongoose/document.js'][321] = 0; | ||
_$jscoverage['mongoose/document.js'][322] = 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'][329] = 0; | ||
_$jscoverage['mongoose/document.js'][330] = 0; | ||
_$jscoverage['mongoose/document.js'][331] = 0; | ||
_$jscoverage['mongoose/document.js'][332] = 0; | ||
_$jscoverage['mongoose/document.js'][333] = 0; | ||
_$jscoverage['mongoose/document.js'][334] = 0; | ||
_$jscoverage['mongoose/document.js'][336] = 0; | ||
_$jscoverage['mongoose/document.js'][339] = 0; | ||
_$jscoverage['mongoose/document.js'][342] = 0; | ||
_$jscoverage['mongoose/document.js'][343] = 0; | ||
_$jscoverage['mongoose/document.js'][337] = 0; | ||
_$jscoverage['mongoose/document.js'][346] = 0; | ||
_$jscoverage['mongoose/document.js'][356] = 0; | ||
_$jscoverage['mongoose/document.js'][347] = 0; | ||
_$jscoverage['mongoose/document.js'][357] = 0; | ||
_$jscoverage['mongoose/document.js'][358] = 0; | ||
_$jscoverage['mongoose/document.js'][363] = 0; | ||
_$jscoverage['mongoose/document.js'][365] = 0; | ||
_$jscoverage['mongoose/document.js'][366] = 0; | ||
@@ -134,24 +127,20 @@ _$jscoverage['mongoose/document.js'][367] = 0; | ||
_$jscoverage['mongoose/document.js'][369] = 0; | ||
_$jscoverage['mongoose/document.js'][370] = 0; | ||
_$jscoverage['mongoose/document.js'][371] = 0; | ||
_$jscoverage['mongoose/document.js'][372] = 0; | ||
_$jscoverage['mongoose/document.js'][375] = 0; | ||
_$jscoverage['mongoose/document.js'][374] = 0; | ||
_$jscoverage['mongoose/document.js'][377] = 0; | ||
_$jscoverage['mongoose/document.js'][378] = 0; | ||
_$jscoverage['mongoose/document.js'][379] = 0; | ||
_$jscoverage['mongoose/document.js'][380] = 0; | ||
_$jscoverage['mongoose/document.js'][381] = 0; | ||
_$jscoverage['mongoose/document.js'][382] = 0; | ||
_$jscoverage['mongoose/document.js'][383] = 0; | ||
_$jscoverage['mongoose/document.js'][384] = 0; | ||
_$jscoverage['mongoose/document.js'][385] = 0; | ||
_$jscoverage['mongoose/document.js'][388] = 0; | ||
_$jscoverage['mongoose/document.js'][391] = 0; | ||
_$jscoverage['mongoose/document.js'][392] = 0; | ||
_$jscoverage['mongoose/document.js'][394] = 0; | ||
_$jscoverage['mongoose/document.js'][395] = 0; | ||
_$jscoverage['mongoose/document.js'][396] = 0; | ||
_$jscoverage['mongoose/document.js'][399] = 0; | ||
_$jscoverage['mongoose/document.js'][401] = 0; | ||
_$jscoverage['mongoose/document.js'][402] = 0; | ||
_$jscoverage['mongoose/document.js'][403] = 0; | ||
_$jscoverage['mongoose/document.js'][412] = 0; | ||
_$jscoverage['mongoose/document.js'][404] = 0; | ||
_$jscoverage['mongoose/document.js'][405] = 0; | ||
_$jscoverage['mongoose/document.js'][406] = 0; | ||
_$jscoverage['mongoose/document.js'][413] = 0; | ||
_$jscoverage['mongoose/document.js'][415] = 0; | ||
_$jscoverage['mongoose/document.js'][416] = 0; | ||
_$jscoverage['mongoose/document.js'][419] = 0; | ||
_$jscoverage['mongoose/document.js'][421] = 0; | ||
_$jscoverage['mongoose/document.js'][422] = 0; | ||
@@ -163,46 +152,37 @@ _$jscoverage['mongoose/document.js'][423] = 0; | ||
_$jscoverage['mongoose/document.js'][428] = 0; | ||
_$jscoverage['mongoose/document.js'][430] = 0; | ||
_$jscoverage['mongoose/document.js'][434] = 0; | ||
_$jscoverage['mongoose/document.js'][429] = 0; | ||
_$jscoverage['mongoose/document.js'][432] = 0; | ||
_$jscoverage['mongoose/document.js'][435] = 0; | ||
_$jscoverage['mongoose/document.js'][436] = 0; | ||
_$jscoverage['mongoose/document.js'][439] = 0; | ||
_$jscoverage['mongoose/document.js'][440] = 0; | ||
_$jscoverage['mongoose/document.js'][443] = 0; | ||
_$jscoverage['mongoose/document.js'][445] = 0; | ||
_$jscoverage['mongoose/document.js'][446] = 0; | ||
_$jscoverage['mongoose/document.js'][447] = 0; | ||
_$jscoverage['mongoose/document.js'][448] = 0; | ||
_$jscoverage['mongoose/document.js'][449] = 0; | ||
_$jscoverage['mongoose/document.js'][458] = 0; | ||
_$jscoverage['mongoose/document.js'][459] = 0; | ||
_$jscoverage['mongoose/document.js'][460] = 0; | ||
_$jscoverage['mongoose/document.js'][461] = 0; | ||
_$jscoverage['mongoose/document.js'][462] = 0; | ||
_$jscoverage['mongoose/document.js'][473] = 0; | ||
_$jscoverage['mongoose/document.js'][456] = 0; | ||
_$jscoverage['mongoose/document.js'][457] = 0; | ||
_$jscoverage['mongoose/document.js'][466] = 0; | ||
_$jscoverage['mongoose/document.js'][467] = 0; | ||
_$jscoverage['mongoose/document.js'][469] = 0; | ||
_$jscoverage['mongoose/document.js'][470] = 0; | ||
_$jscoverage['mongoose/document.js'][471] = 0; | ||
_$jscoverage['mongoose/document.js'][472] = 0; | ||
_$jscoverage['mongoose/document.js'][474] = 0; | ||
_$jscoverage['mongoose/document.js'][484] = 0; | ||
_$jscoverage['mongoose/document.js'][485] = 0; | ||
_$jscoverage['mongoose/document.js'][495] = 0; | ||
_$jscoverage['mongoose/document.js'][497] = 0; | ||
_$jscoverage['mongoose/document.js'][498] = 0; | ||
_$jscoverage['mongoose/document.js'][499] = 0; | ||
_$jscoverage['mongoose/document.js'][500] = 0; | ||
_$jscoverage['mongoose/document.js'][501] = 0; | ||
_$jscoverage['mongoose/document.js'][478] = 0; | ||
_$jscoverage['mongoose/document.js'][479] = 0; | ||
_$jscoverage['mongoose/document.js'][491] = 0; | ||
_$jscoverage['mongoose/document.js'][492] = 0; | ||
_$jscoverage['mongoose/document.js'][493] = 0; | ||
_$jscoverage['mongoose/document.js'][502] = 0; | ||
_$jscoverage['mongoose/document.js'][503] = 0; | ||
_$jscoverage['mongoose/document.js'][504] = 0; | ||
_$jscoverage['mongoose/document.js'][505] = 0; | ||
_$jscoverage['mongoose/document.js'][506] = 0; | ||
_$jscoverage['mongoose/document.js'][507] = 0; | ||
_$jscoverage['mongoose/document.js'][509] = 0; | ||
_$jscoverage['mongoose/document.js'][510] = 0; | ||
_$jscoverage['mongoose/document.js'][512] = 0; | ||
_$jscoverage['mongoose/document.js'][514] = 0; | ||
_$jscoverage['mongoose/document.js'][515] = 0; | ||
_$jscoverage['mongoose/document.js'][517] = 0; | ||
_$jscoverage['mongoose/document.js'][518] = 0; | ||
_$jscoverage['mongoose/document.js'][520] = 0; | ||
_$jscoverage['mongoose/document.js'][522] = 0; | ||
_$jscoverage['mongoose/document.js'][526] = 0; | ||
_$jscoverage['mongoose/document.js'][528] = 0; | ||
_$jscoverage['mongoose/document.js'][529] = 0; | ||
_$jscoverage['mongoose/document.js'][530] = 0; | ||
_$jscoverage['mongoose/document.js'][533] = 0; | ||
_$jscoverage['mongoose/document.js'][534] = 0; | ||
_$jscoverage['mongoose/document.js'][536] = 0; | ||
_$jscoverage['mongoose/document.js'][537] = 0; | ||
_$jscoverage['mongoose/document.js'][538] = 0; | ||
_$jscoverage['mongoose/document.js'][539] = 0; | ||
_$jscoverage['mongoose/document.js'][541] = 0; | ||
_$jscoverage['mongoose/document.js'][542] = 0; | ||
@@ -212,68 +192,95 @@ _$jscoverage['mongoose/document.js'][543] = 0; | ||
_$jscoverage['mongoose/document.js'][545] = 0; | ||
_$jscoverage['mongoose/document.js'][546] = 0; | ||
_$jscoverage['mongoose/document.js'][547] = 0; | ||
_$jscoverage['mongoose/document.js'][548] = 0; | ||
_$jscoverage['mongoose/document.js'][549] = 0; | ||
_$jscoverage['mongoose/document.js'][550] = 0; | ||
_$jscoverage['mongoose/document.js'][551] = 0; | ||
_$jscoverage['mongoose/document.js'][555] = 0; | ||
_$jscoverage['mongoose/document.js'][553] = 0; | ||
_$jscoverage['mongoose/document.js'][554] = 0; | ||
_$jscoverage['mongoose/document.js'][556] = 0; | ||
_$jscoverage['mongoose/document.js'][558] = 0; | ||
_$jscoverage['mongoose/document.js'][559] = 0; | ||
_$jscoverage['mongoose/document.js'][561] = 0; | ||
_$jscoverage['mongoose/document.js'][562] = 0; | ||
_$jscoverage['mongoose/document.js'][564] = 0; | ||
_$jscoverage['mongoose/document.js'][566] = 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'][577] = 0; | ||
_$jscoverage['mongoose/document.js'][578] = 0; | ||
_$jscoverage['mongoose/document.js'][584] = 0; | ||
_$jscoverage['mongoose/document.js'][580] = 0; | ||
_$jscoverage['mongoose/document.js'][581] = 0; | ||
_$jscoverage['mongoose/document.js'][582] = 0; | ||
_$jscoverage['mongoose/document.js'][583] = 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'][595] = 0; | ||
_$jscoverage['mongoose/document.js'][599] = 0; | ||
_$jscoverage['mongoose/document.js'][610] = 0; | ||
_$jscoverage['mongoose/document.js'][618] = 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'][628] = 0; | ||
_$jscoverage['mongoose/document.js'][630] = 0; | ||
} | ||
_$jscoverage['mongoose/document.js'][6]++; | ||
var EventEmitter = require("events").EventEmitter, MongooseError = require("./error"), Schema = require("./schema"), ArrayType = require("./types/array"), DocumentArraySchema = require("./schema/documentarray"), utils = require("./utils"), clone = utils.clone, ActiveRoster = utils.StateMachine.ctor("require", "modify", "init"); | ||
_$jscoverage['mongoose/document.js'][22]++; | ||
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"); | ||
_$jscoverage['mongoose/document.js'][25]++; | ||
function Document(obj) { | ||
_$jscoverage['mongoose/document.js'][23]++; | ||
_$jscoverage['mongoose/document.js'][26]++; | ||
this.doc = this.buildDoc(); | ||
_$jscoverage['mongoose/document.js'][24]++; | ||
_$jscoverage['mongoose/document.js'][27]++; | ||
this.activePaths = new ActiveRoster(); | ||
_$jscoverage['mongoose/document.js'][25]++; | ||
_$jscoverage['mongoose/document.js'][28]++; | ||
this.saveError = null; | ||
_$jscoverage['mongoose/document.js'][26]++; | ||
_$jscoverage['mongoose/document.js'][29]++; | ||
if (obj) { | ||
_$jscoverage['mongoose/document.js'][26]++; | ||
_$jscoverage['mongoose/document.js'][29]++; | ||
this.set(obj); | ||
} | ||
_$jscoverage['mongoose/document.js'][27]++; | ||
_$jscoverage['mongoose/document.js'][30]++; | ||
this.pres = {}; | ||
_$jscoverage['mongoose/document.js'][28]++; | ||
_$jscoverage['mongoose/document.js'][31]++; | ||
this.registerHooks(); | ||
_$jscoverage['mongoose/document.js'][29]++; | ||
_$jscoverage['mongoose/document.js'][32]++; | ||
this.doQueue(); | ||
_$jscoverage['mongoose/document.js'][30]++; | ||
_$jscoverage['mongoose/document.js'][33]++; | ||
this.isNew = true; | ||
} | ||
_$jscoverage['mongoose/document.js'][31]++; | ||
_$jscoverage['mongoose/document.js'][34]++; | ||
; | ||
_$jscoverage['mongoose/document.js'][37]++; | ||
_$jscoverage['mongoose/document.js'][40]++; | ||
Document.prototype.__proto__ = EventEmitter.prototype; | ||
_$jscoverage['mongoose/document.js'][46]++; | ||
_$jscoverage['mongoose/document.js'][49]++; | ||
Document.prototype.base; | ||
_$jscoverage['mongoose/document.js'][54]++; | ||
_$jscoverage['mongoose/document.js'][57]++; | ||
Document.prototype.schema; | ||
_$jscoverage['mongoose/document.js'][62]++; | ||
_$jscoverage['mongoose/document.js'][65]++; | ||
Document.prototype.isNew; | ||
_$jscoverage['mongoose/document.js'][70]++; | ||
_$jscoverage['mongoose/document.js'][73]++; | ||
Document.prototype.buildDoc = (function () { | ||
_$jscoverage['mongoose/document.js'][71]++; | ||
_$jscoverage['mongoose/document.js'][74]++; | ||
var doc = {}, self = this; | ||
_$jscoverage['mongoose/document.js'][74]++; | ||
_$jscoverage['mongoose/document.js'][77]++; | ||
this.schema.eachPath((function (i, type) { | ||
_$jscoverage['mongoose/document.js'][75]++; | ||
_$jscoverage['mongoose/document.js'][78]++; | ||
var path = i.split("."), len = path.length; | ||
_$jscoverage['mongoose/document.js'][78]++; | ||
_$jscoverage['mongoose/document.js'][81]++; | ||
path.reduce((function (ref, piece, i) { | ||
_$jscoverage['mongoose/document.js'][79]++; | ||
_$jscoverage['mongoose/document.js'][82]++; | ||
if (i === len - 1) { | ||
_$jscoverage['mongoose/document.js'][80]++; | ||
_$jscoverage['mongoose/document.js'][83]++; | ||
ref[piece] = type.getDefault(self); | ||
} | ||
else { | ||
_$jscoverage['mongoose/document.js'][82]++; | ||
_$jscoverage['mongoose/document.js'][85]++; | ||
return ref[piece] || (ref[piece] = {}); | ||
@@ -283,36 +290,36 @@ } | ||
})); | ||
_$jscoverage['mongoose/document.js'][86]++; | ||
_$jscoverage['mongoose/document.js'][89]++; | ||
return doc; | ||
}); | ||
_$jscoverage['mongoose/document.js'][96]++; | ||
_$jscoverage['mongoose/document.js'][99]++; | ||
Document.prototype.init = (function (doc, fn) { | ||
_$jscoverage['mongoose/document.js'][97]++; | ||
_$jscoverage['mongoose/document.js'][100]++; | ||
var self = this; | ||
_$jscoverage['mongoose/document.js'][98]++; | ||
_$jscoverage['mongoose/document.js'][101]++; | ||
this.isNew = false; | ||
_$jscoverage['mongoose/document.js'][100]++; | ||
_$jscoverage['mongoose/document.js'][103]++; | ||
function init(obj, doc, prefix) { | ||
_$jscoverage['mongoose/document.js'][101]++; | ||
_$jscoverage['mongoose/document.js'][104]++; | ||
prefix = prefix || ""; | ||
_$jscoverage['mongoose/document.js'][103]++; | ||
_$jscoverage['mongoose/document.js'][106]++; | ||
for (var i in obj) { | ||
_$jscoverage['mongoose/document.js'][104]++; | ||
var path = prefix + i; | ||
_$jscoverage['mongoose/document.js'][106]++; | ||
if (obj[i] && obj[i].constructor == Object) { | ||
_$jscoverage['mongoose/document.js'][107]++; | ||
_$jscoverage['mongoose/document.js'][107]++; | ||
var path = prefix + i, schema = self.schema.path(path); | ||
_$jscoverage['mongoose/document.js'][110]++; | ||
if (! schema && obj[i].constructor == Object) { | ||
_$jscoverage['mongoose/document.js'][111]++; | ||
doc[i] = {}; | ||
_$jscoverage['mongoose/document.js'][108]++; | ||
_$jscoverage['mongoose/document.js'][112]++; | ||
init(obj[i], doc[i], path + "."); | ||
} | ||
else { | ||
_$jscoverage['mongoose/document.js'][110]++; | ||
_$jscoverage['mongoose/document.js'][114]++; | ||
if (obj[i] !== null && obj[i] !== undefined) { | ||
_$jscoverage['mongoose/document.js'][111]++; | ||
_$jscoverage['mongoose/document.js'][115]++; | ||
var schema = self.schema.path(path); | ||
_$jscoverage['mongoose/document.js'][113]++; | ||
_$jscoverage['mongoose/document.js'][117]++; | ||
if (schema) { | ||
_$jscoverage['mongoose/document.js'][114]++; | ||
_$jscoverage['mongoose/document.js'][118]++; | ||
self["try"]((function () { | ||
_$jscoverage['mongoose/document.js'][115]++; | ||
_$jscoverage['mongoose/document.js'][119]++; | ||
doc[i] = schema.cast(obj[i], self); | ||
@@ -322,7 +329,7 @@ })); | ||
else { | ||
_$jscoverage['mongoose/document.js'][118]++; | ||
_$jscoverage['mongoose/document.js'][122]++; | ||
doc[i] = obj[i]; | ||
} | ||
} | ||
_$jscoverage['mongoose/document.js'][122]++; | ||
_$jscoverage['mongoose/document.js'][126]++; | ||
self.activePaths.init(path); | ||
@@ -332,41 +339,41 @@ } | ||
} | ||
_$jscoverage['mongoose/document.js'][125]++; | ||
_$jscoverage['mongoose/document.js'][129]++; | ||
; | ||
_$jscoverage['mongoose/document.js'][127]++; | ||
_$jscoverage['mongoose/document.js'][131]++; | ||
init(doc, self.doc); | ||
_$jscoverage['mongoose/document.js'][129]++; | ||
_$jscoverage['mongoose/document.js'][133]++; | ||
if (fn) { | ||
_$jscoverage['mongoose/document.js'][130]++; | ||
_$jscoverage['mongoose/document.js'][134]++; | ||
fn(null); | ||
} | ||
_$jscoverage['mongoose/document.js'][132]++; | ||
_$jscoverage['mongoose/document.js'][136]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/document.js'][143]++; | ||
_$jscoverage['mongoose/document.js'][147]++; | ||
Document.prototype.pre = (function (method, fn) { | ||
_$jscoverage['mongoose/document.js'][144]++; | ||
_$jscoverage['mongoose/document.js'][148]++; | ||
if (! (method in this.pres)) { | ||
_$jscoverage['mongoose/document.js'][145]++; | ||
_$jscoverage['mongoose/document.js'][149]++; | ||
this.pres[method] = {serial: [], parallel: []}; | ||
} | ||
_$jscoverage['mongoose/document.js'][149]++; | ||
_$jscoverage['mongoose/document.js'][153]++; | ||
this.pres[method][fn.length == 1? "serial": "parallel"].push(fn); | ||
_$jscoverage['mongoose/document.js'][150]++; | ||
_$jscoverage['mongoose/document.js'][154]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/document.js'][164]++; | ||
_$jscoverage['mongoose/document.js'][180]++; | ||
Document.prototype.set = (function (path, val) { | ||
_$jscoverage['mongoose/document.js'][165]++; | ||
_$jscoverage['mongoose/document.js'][181]++; | ||
if (typeof path != "string") { | ||
_$jscoverage['mongoose/document.js'][166]++; | ||
_$jscoverage['mongoose/document.js'][182]++; | ||
var prefix = val? val + ".": ""; | ||
_$jscoverage['mongoose/document.js'][167]++; | ||
_$jscoverage['mongoose/document.js'][183]++; | ||
for (var i in path) { | ||
_$jscoverage['mongoose/document.js'][168]++; | ||
if (path[i].constructor == Object) { | ||
_$jscoverage['mongoose/document.js'][169]++; | ||
this.set(path[i], prefix + i + "."); | ||
_$jscoverage['mongoose/document.js'][184]++; | ||
if (! (this.schema.path(prefix + i) instanceof MixedSchema) && path[i].constructor == Object) { | ||
_$jscoverage['mongoose/document.js'][186]++; | ||
this.set(path[i], prefix + i); | ||
} | ||
else { | ||
_$jscoverage['mongoose/document.js'][171]++; | ||
_$jscoverage['mongoose/document.js'][188]++; | ||
this.set(prefix + i, path[i]); | ||
@@ -377,20 +384,29 @@ } | ||
else { | ||
_$jscoverage['mongoose/document.js'][175]++; | ||
_$jscoverage['mongoose/document.js'][193]++; | ||
var schema = this.schema.path(path), parts = path.split("."), obj = this.doc, self = this; | ||
_$jscoverage['mongoose/document.js'][198]++; | ||
if (this.schema.pathType(path) === "virtual") { | ||
_$jscoverage['mongoose/document.js'][199]++; | ||
schema = this.schema.virtualpath(path); | ||
_$jscoverage['mongoose/document.js'][200]++; | ||
schema.applySetters(val, this); | ||
_$jscoverage['mongoose/document.js'][201]++; | ||
return this; | ||
} | ||
_$jscoverage['mongoose/document.js'][204]++; | ||
this.activePaths.modify(path); | ||
_$jscoverage['mongoose/document.js'][177]++; | ||
var schema = this.schema.path(path), parts = path.split("."), obj = this.doc, self = this; | ||
_$jscoverage['mongoose/document.js'][182]++; | ||
_$jscoverage['mongoose/document.js'][206]++; | ||
if ((! schema || val === null || val === undefined) || this["try"]((function () { | ||
_$jscoverage['mongoose/document.js'][184]++; | ||
_$jscoverage['mongoose/document.js'][208]++; | ||
val = schema.applySetters(schema.cast(val, self), self); | ||
}))) { | ||
_$jscoverage['mongoose/document.js'][187]++; | ||
_$jscoverage['mongoose/document.js'][211]++; | ||
for (var i = 0, l = parts.length; i < l; i++) { | ||
_$jscoverage['mongoose/document.js'][188]++; | ||
_$jscoverage['mongoose/document.js'][212]++; | ||
if (i + 1 == l) { | ||
_$jscoverage['mongoose/document.js'][189]++; | ||
_$jscoverage['mongoose/document.js'][213]++; | ||
obj[parts[i]] = val; | ||
} | ||
else { | ||
_$jscoverage['mongoose/document.js'][191]++; | ||
_$jscoverage['mongoose/document.js'][215]++; | ||
obj = obj[parts[i]]; | ||
@@ -401,188 +417,195 @@ } | ||
} | ||
_$jscoverage['mongoose/document.js'][196]++; | ||
_$jscoverage['mongoose/document.js'][221]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/document.js'][199]++; | ||
_$jscoverage['mongoose/document.js'][224]++; | ||
Document.prototype._markModified = (function (path) { | ||
_$jscoverage['mongoose/document.js'][200]++; | ||
_$jscoverage['mongoose/document.js'][225]++; | ||
this.activePaths.modify(path); | ||
}); | ||
_$jscoverage['mongoose/document.js'][210]++; | ||
_$jscoverage['mongoose/document.js'][235]++; | ||
Document.prototype.getValue = (function (path) { | ||
_$jscoverage['mongoose/document.js'][211]++; | ||
_$jscoverage['mongoose/document.js'][236]++; | ||
var parts = path.split("."), obj = this.doc; | ||
_$jscoverage['mongoose/document.js'][214]++; | ||
_$jscoverage['mongoose/document.js'][239]++; | ||
for (var i = 0, l = parts.length; i < l - 1; i++) { | ||
_$jscoverage['mongoose/document.js'][215]++; | ||
_$jscoverage['mongoose/document.js'][240]++; | ||
obj = obj[parts[i]]; | ||
_$jscoverage['mongoose/document.js'][216]++; | ||
_$jscoverage['mongoose/document.js'][241]++; | ||
if (! obj) { | ||
_$jscoverage['mongoose/document.js'][216]++; | ||
_$jscoverage['mongoose/document.js'][241]++; | ||
return obj; | ||
} | ||
} | ||
_$jscoverage['mongoose/document.js'][218]++; | ||
_$jscoverage['mongoose/document.js'][243]++; | ||
return obj[parts[l - 1]]; | ||
}); | ||
_$jscoverage['mongoose/document.js'][229]++; | ||
_$jscoverage['mongoose/document.js'][254]++; | ||
Document.prototype.setValue = (function (path, val) { | ||
_$jscoverage['mongoose/document.js'][230]++; | ||
_$jscoverage['mongoose/document.js'][255]++; | ||
var parts = path.split("."), obj = this.doc; | ||
_$jscoverage['mongoose/document.js'][233]++; | ||
_$jscoverage['mongoose/document.js'][258]++; | ||
for (var i = 0, l = parts.length; i < l - 1; i++) { | ||
_$jscoverage['mongoose/document.js'][233]++; | ||
_$jscoverage['mongoose/document.js'][258]++; | ||
obj = obj[parts[i]]; | ||
} | ||
_$jscoverage['mongoose/document.js'][234]++; | ||
_$jscoverage['mongoose/document.js'][259]++; | ||
obj[parts[l - 1]] = val; | ||
_$jscoverage['mongoose/document.js'][236]++; | ||
_$jscoverage['mongoose/document.js'][261]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/document.js'][246]++; | ||
_$jscoverage['mongoose/document.js'][271]++; | ||
Document.prototype.doCast = (function (path) { | ||
_$jscoverage['mongoose/document.js'][247]++; | ||
_$jscoverage['mongoose/document.js'][272]++; | ||
var schema = this.schema.path(path); | ||
_$jscoverage['mongoose/document.js'][248]++; | ||
_$jscoverage['mongoose/document.js'][273]++; | ||
if (schema) { | ||
_$jscoverage['mongoose/document.js'][249]++; | ||
_$jscoverage['mongoose/document.js'][274]++; | ||
this.setValue(path, this.getValue(path)); | ||
} | ||
}); | ||
_$jscoverage['mongoose/document.js'][259]++; | ||
_$jscoverage['mongoose/document.js'][284]++; | ||
Document.prototype.get = (function (path) { | ||
_$jscoverage['mongoose/document.js'][260]++; | ||
var obj = this.doc, schema = this.schema.path(path), pieces = path.split("."); | ||
_$jscoverage['mongoose/document.js'][264]++; | ||
_$jscoverage['mongoose/document.js'][285]++; | ||
var obj, schema = this.schema.path(path) || this.schema.virtualpath(path), pieces = path.split("."); | ||
_$jscoverage['mongoose/document.js'][289]++; | ||
obj = this.doc; | ||
_$jscoverage['mongoose/document.js'][290]++; | ||
for (var i = 0, l = pieces.length; i < l; i++) { | ||
_$jscoverage['mongoose/document.js'][265]++; | ||
_$jscoverage['mongoose/document.js'][291]++; | ||
obj = obj[pieces[i]]; | ||
} | ||
_$jscoverage['mongoose/document.js'][267]++; | ||
_$jscoverage['mongoose/document.js'][293]++; | ||
if (schema) { | ||
_$jscoverage['mongoose/document.js'][268]++; | ||
_$jscoverage['mongoose/document.js'][294]++; | ||
obj = schema.applyGetters(obj, this); | ||
} | ||
_$jscoverage['mongoose/document.js'][270]++; | ||
_$jscoverage['mongoose/document.js'][297]++; | ||
return obj; | ||
}); | ||
_$jscoverage['mongoose/document.js'][280]++; | ||
_$jscoverage['mongoose/document.js'][306]++; | ||
Document.prototype.commit = (function (path) { | ||
_$jscoverage['mongoose/document.js'][308]++; | ||
this.activePaths.modify(path); | ||
}); | ||
_$jscoverage['mongoose/document.js'][318]++; | ||
Document.prototype["try"] = (function (fn, scope) { | ||
_$jscoverage['mongoose/document.js'][281]++; | ||
_$jscoverage['mongoose/document.js'][319]++; | ||
var res; | ||
_$jscoverage['mongoose/document.js'][282]++; | ||
_$jscoverage['mongoose/document.js'][320]++; | ||
try { | ||
_$jscoverage['mongoose/document.js'][283]++; | ||
_$jscoverage['mongoose/document.js'][321]++; | ||
fn.call(scope); | ||
_$jscoverage['mongoose/document.js'][284]++; | ||
_$jscoverage['mongoose/document.js'][322]++; | ||
res = true; | ||
} | ||
catch (e) { | ||
_$jscoverage['mongoose/document.js'][286]++; | ||
_$jscoverage['mongoose/document.js'][324]++; | ||
this.error(e); | ||
_$jscoverage['mongoose/document.js'][287]++; | ||
_$jscoverage['mongoose/document.js'][325]++; | ||
res = false; | ||
} | ||
_$jscoverage['mongoose/document.js'][288]++; | ||
_$jscoverage['mongoose/document.js'][326]++; | ||
; | ||
_$jscoverage['mongoose/document.js'][289]++; | ||
_$jscoverage['mongoose/document.js'][327]++; | ||
return res; | ||
}); | ||
_$jscoverage['mongoose/document.js'][298]++; | ||
_$jscoverage['mongoose/document.js'][336]++; | ||
Document.prototype.isModified = (function (path) { | ||
_$jscoverage['mongoose/document.js'][299]++; | ||
_$jscoverage['mongoose/document.js'][337]++; | ||
return (path in this.activePaths.states.modify); | ||
}); | ||
_$jscoverage['mongoose/document.js'][308]++; | ||
_$jscoverage['mongoose/document.js'][346]++; | ||
Document.prototype.isInit = (function (path) { | ||
_$jscoverage['mongoose/document.js'][309]++; | ||
_$jscoverage['mongoose/document.js'][347]++; | ||
return (path in this.activePaths.states.init); | ||
}); | ||
_$jscoverage['mongoose/document.js'][319]++; | ||
_$jscoverage['mongoose/document.js'][357]++; | ||
Document.prototype.validate = (function (next) { | ||
_$jscoverage['mongoose/document.js'][320]++; | ||
_$jscoverage['mongoose/document.js'][358]++; | ||
var total = 0, self = this, validating = {}, didErr = false; | ||
_$jscoverage['mongoose/document.js'][325]++; | ||
_$jscoverage['mongoose/document.js'][363]++; | ||
if (! this.activePaths.some("init", "modify")) { | ||
_$jscoverage['mongoose/document.js'][325]++; | ||
_$jscoverage['mongoose/document.js'][363]++; | ||
return next(); | ||
} | ||
_$jscoverage['mongoose/document.js'][327]++; | ||
_$jscoverage['mongoose/document.js'][365]++; | ||
function validatePath(path) { | ||
_$jscoverage['mongoose/document.js'][328]++; | ||
_$jscoverage['mongoose/document.js'][366]++; | ||
if (validating[path]) { | ||
_$jscoverage['mongoose/document.js'][328]++; | ||
_$jscoverage['mongoose/document.js'][366]++; | ||
return; | ||
} | ||
_$jscoverage['mongoose/document.js'][329]++; | ||
_$jscoverage['mongoose/document.js'][367]++; | ||
total++; | ||
_$jscoverage['mongoose/document.js'][330]++; | ||
_$jscoverage['mongoose/document.js'][368]++; | ||
process.nextTick((function () { | ||
_$jscoverage['mongoose/document.js'][331]++; | ||
_$jscoverage['mongoose/document.js'][369]++; | ||
self.schema.path(path).doValidate(self.getValue(path), (function (err) { | ||
_$jscoverage['mongoose/document.js'][332]++; | ||
_$jscoverage['mongoose/document.js'][370]++; | ||
if (err) { | ||
_$jscoverage['mongoose/document.js'][333]++; | ||
_$jscoverage['mongoose/document.js'][371]++; | ||
didErr = true; | ||
_$jscoverage['mongoose/document.js'][334]++; | ||
_$jscoverage['mongoose/document.js'][372]++; | ||
return next(err); | ||
} | ||
_$jscoverage['mongoose/document.js'][336]++; | ||
_$jscoverage['mongoose/document.js'][374]++; | ||
--total || next(); | ||
}), self); | ||
})); | ||
_$jscoverage['mongoose/document.js'][339]++; | ||
_$jscoverage['mongoose/document.js'][377]++; | ||
validating[path] = true; | ||
} | ||
_$jscoverage['mongoose/document.js'][342]++; | ||
_$jscoverage['mongoose/document.js'][380]++; | ||
this.activePaths.forEach("init", "modify", (function (path) { | ||
_$jscoverage['mongoose/document.js'][343]++; | ||
_$jscoverage['mongoose/document.js'][381]++; | ||
if (! didErr) { | ||
_$jscoverage['mongoose/document.js'][343]++; | ||
_$jscoverage['mongoose/document.js'][381]++; | ||
validatePath(path); | ||
} | ||
})); | ||
_$jscoverage['mongoose/document.js'][346]++; | ||
_$jscoverage['mongoose/document.js'][384]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/document.js'][356]++; | ||
_$jscoverage['mongoose/document.js'][394]++; | ||
Document.prototype.__defineGetter__("modified", (function () { | ||
_$jscoverage['mongoose/document.js'][357]++; | ||
_$jscoverage['mongoose/document.js'][395]++; | ||
return this.activePaths.some("modified"); | ||
})); | ||
_$jscoverage['mongoose/document.js'][366]++; | ||
_$jscoverage['mongoose/document.js'][404]++; | ||
function compile(tree, proto, prefix) { | ||
_$jscoverage['mongoose/document.js'][367]++; | ||
_$jscoverage['mongoose/document.js'][405]++; | ||
for (var i in tree) { | ||
_$jscoverage['mongoose/document.js'][368]++; | ||
define(i, tree[i].constructor == Object? tree[i]: null, proto, prefix); | ||
_$jscoverage['mongoose/document.js'][406]++; | ||
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'][369]++; | ||
_$jscoverage['mongoose/document.js'][413]++; | ||
; | ||
_$jscoverage['mongoose/document.js'][371]++; | ||
_$jscoverage['mongoose/document.js'][415]++; | ||
function define(prop, subprops, prototype, prefix) { | ||
_$jscoverage['mongoose/document.js'][372]++; | ||
_$jscoverage['mongoose/document.js'][416]++; | ||
var prefix = prefix || "", path = (prefix? prefix + ".": "") + prop; | ||
_$jscoverage['mongoose/document.js'][375]++; | ||
_$jscoverage['mongoose/document.js'][419]++; | ||
if (subprops) { | ||
_$jscoverage['mongoose/document.js'][377]++; | ||
_$jscoverage['mongoose/document.js'][421]++; | ||
prototype.__defineGetter__(prop, (function () { | ||
_$jscoverage['mongoose/document.js'][378]++; | ||
_$jscoverage['mongoose/document.js'][422]++; | ||
if (! this.__getters) { | ||
_$jscoverage['mongoose/document.js'][379]++; | ||
_$jscoverage['mongoose/document.js'][423]++; | ||
this.__getters = {}; | ||
} | ||
_$jscoverage['mongoose/document.js'][381]++; | ||
_$jscoverage['mongoose/document.js'][425]++; | ||
if (! this.__getters[path]) { | ||
_$jscoverage['mongoose/document.js'][382]++; | ||
_$jscoverage['mongoose/document.js'][426]++; | ||
var nested = (function () { | ||
}); | ||
_$jscoverage['mongoose/document.js'][383]++; | ||
_$jscoverage['mongoose/document.js'][427]++; | ||
nested.prototype = this; | ||
_$jscoverage['mongoose/document.js'][384]++; | ||
_$jscoverage['mongoose/document.js'][428]++; | ||
compile(subprops, nested.prototype, path); | ||
_$jscoverage['mongoose/document.js'][385]++; | ||
_$jscoverage['mongoose/document.js'][429]++; | ||
this.__getters[path] = new nested(); | ||
} | ||
_$jscoverage['mongoose/document.js'][388]++; | ||
_$jscoverage['mongoose/document.js'][432]++; | ||
return this.__getters[path]; | ||
@@ -592,10 +615,10 @@ })); | ||
else { | ||
_$jscoverage['mongoose/document.js'][391]++; | ||
_$jscoverage['mongoose/document.js'][435]++; | ||
prototype.__defineGetter__(prop, (function () { | ||
_$jscoverage['mongoose/document.js'][392]++; | ||
_$jscoverage['mongoose/document.js'][436]++; | ||
return this.get(path); | ||
})); | ||
_$jscoverage['mongoose/document.js'][395]++; | ||
_$jscoverage['mongoose/document.js'][439]++; | ||
prototype.__defineSetter__(prop, (function (v) { | ||
_$jscoverage['mongoose/document.js'][396]++; | ||
_$jscoverage['mongoose/document.js'][440]++; | ||
return this.set(path, v); | ||
@@ -605,181 +628,181 @@ })); | ||
} | ||
_$jscoverage['mongoose/document.js'][399]++; | ||
_$jscoverage['mongoose/document.js'][443]++; | ||
; | ||
_$jscoverage['mongoose/document.js'][401]++; | ||
_$jscoverage['mongoose/document.js'][445]++; | ||
Document.prototype.__defineSetter__("schema", (function (schema) { | ||
_$jscoverage['mongoose/document.js'][402]++; | ||
_$jscoverage['mongoose/document.js'][446]++; | ||
compile(schema.tree, this); | ||
_$jscoverage['mongoose/document.js'][403]++; | ||
_$jscoverage['mongoose/document.js'][447]++; | ||
this._schema = schema; | ||
})); | ||
_$jscoverage['mongoose/document.js'][412]++; | ||
_$jscoverage['mongoose/document.js'][456]++; | ||
Document.prototype.__defineGetter__("schema", (function () { | ||
_$jscoverage['mongoose/document.js'][413]++; | ||
_$jscoverage['mongoose/document.js'][457]++; | ||
return this._schema; | ||
})); | ||
_$jscoverage['mongoose/document.js'][422]++; | ||
_$jscoverage['mongoose/document.js'][466]++; | ||
Document.prototype.registerHooks = (function () { | ||
_$jscoverage['mongoose/document.js'][423]++; | ||
_$jscoverage['mongoose/document.js'][467]++; | ||
var self = this; | ||
_$jscoverage['mongoose/document.js'][425]++; | ||
_$jscoverage['mongoose/document.js'][469]++; | ||
this.pre("save", (function checkForExistingErrors(next) { | ||
_$jscoverage['mongoose/document.js'][426]++; | ||
_$jscoverage['mongoose/document.js'][470]++; | ||
if (self.saveError) { | ||
_$jscoverage['mongoose/document.js'][427]++; | ||
_$jscoverage['mongoose/document.js'][471]++; | ||
next(self.saveError); | ||
_$jscoverage['mongoose/document.js'][428]++; | ||
_$jscoverage['mongoose/document.js'][472]++; | ||
self.saveError = null; | ||
} | ||
else { | ||
_$jscoverage['mongoose/document.js'][430]++; | ||
_$jscoverage['mongoose/document.js'][474]++; | ||
next(); | ||
} | ||
})); | ||
_$jscoverage['mongoose/document.js'][434]++; | ||
_$jscoverage['mongoose/document.js'][478]++; | ||
this.pre("save", (function validation(next) { | ||
_$jscoverage['mongoose/document.js'][435]++; | ||
_$jscoverage['mongoose/document.js'][479]++; | ||
return self.validate.call(self, next); | ||
})); | ||
}); | ||
_$jscoverage['mongoose/document.js'][447]++; | ||
_$jscoverage['mongoose/document.js'][491]++; | ||
Document.prototype.error = (function (err) { | ||
_$jscoverage['mongoose/document.js'][448]++; | ||
_$jscoverage['mongoose/document.js'][492]++; | ||
this.saveError = err; | ||
_$jscoverage['mongoose/document.js'][449]++; | ||
_$jscoverage['mongoose/document.js'][493]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/document.js'][458]++; | ||
_$jscoverage['mongoose/document.js'][502]++; | ||
Document.prototype.doQueue = (function () { | ||
_$jscoverage['mongoose/document.js'][459]++; | ||
_$jscoverage['mongoose/document.js'][503]++; | ||
if (this.schema && this.schema.callQueue) { | ||
_$jscoverage['mongoose/document.js'][460]++; | ||
_$jscoverage['mongoose/document.js'][504]++; | ||
for (var i = 0, l = this.schema.callQueue.length; i < l; i++) { | ||
_$jscoverage['mongoose/document.js'][461]++; | ||
_$jscoverage['mongoose/document.js'][505]++; | ||
this[this.schema.callQueue[i][0]].apply(this, this.schema.callQueue[i][1]); | ||
} | ||
} | ||
_$jscoverage['mongoose/document.js'][462]++; | ||
_$jscoverage['mongoose/document.js'][506]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/document.js'][473]++; | ||
_$jscoverage['mongoose/document.js'][517]++; | ||
Document.prototype.toObject = (function () { | ||
_$jscoverage['mongoose/document.js'][474]++; | ||
_$jscoverage['mongoose/document.js'][518]++; | ||
return clone(this.doc); | ||
}); | ||
_$jscoverage['mongoose/document.js'][484]++; | ||
_$jscoverage['mongoose/document.js'][528]++; | ||
Document.prototype.toJSON = (function () { | ||
_$jscoverage['mongoose/document.js'][485]++; | ||
_$jscoverage['mongoose/document.js'][529]++; | ||
return JSON.stringify(this.toObject()); | ||
}); | ||
_$jscoverage['mongoose/document.js'][495]++; | ||
_$jscoverage['mongoose/document.js'][539]++; | ||
function noop() { | ||
} | ||
_$jscoverage['mongoose/document.js'][495]++; | ||
_$jscoverage['mongoose/document.js'][539]++; | ||
; | ||
_$jscoverage['mongoose/document.js'][497]++; | ||
_$jscoverage['mongoose/document.js'][541]++; | ||
Document.registerHooks = (function () { | ||
_$jscoverage['mongoose/document.js'][498]++; | ||
_$jscoverage['mongoose/document.js'][542]++; | ||
for (var i = 0, l = arguments.length; i < l; i++) { | ||
_$jscoverage['mongoose/document.js'][499]++; | ||
_$jscoverage['mongoose/document.js'][543]++; | ||
this.prototype[arguments[i]] = (function (methodName, oldFn) { | ||
_$jscoverage['mongoose/document.js'][500]++; | ||
_$jscoverage['mongoose/document.js'][544]++; | ||
return (function () { | ||
_$jscoverage['mongoose/document.js'][501]++; | ||
_$jscoverage['mongoose/document.js'][545]++; | ||
var self = this, args = arguments; | ||
_$jscoverage['mongoose/document.js'][504]++; | ||
_$jscoverage['mongoose/document.js'][548]++; | ||
function error(err) { | ||
_$jscoverage['mongoose/document.js'][505]++; | ||
_$jscoverage['mongoose/document.js'][549]++; | ||
var lastArg = args[args.length - 1]; | ||
_$jscoverage['mongoose/document.js'][506]++; | ||
_$jscoverage['mongoose/document.js'][550]++; | ||
if (typeof lastArg == "function") { | ||
_$jscoverage['mongoose/document.js'][507]++; | ||
_$jscoverage['mongoose/document.js'][551]++; | ||
lastArg.call(self, err); | ||
} | ||
} | ||
_$jscoverage['mongoose/document.js'][509]++; | ||
_$jscoverage['mongoose/document.js'][553]++; | ||
var pres = this.pres[methodName]; | ||
_$jscoverage['mongoose/document.js'][510]++; | ||
_$jscoverage['mongoose/document.js'][554]++; | ||
if (! pres) { | ||
_$jscoverage['mongoose/document.js'][510]++; | ||
_$jscoverage['mongoose/document.js'][554]++; | ||
return oldFn.apply(this, args); | ||
} | ||
_$jscoverage['mongoose/document.js'][512]++; | ||
_$jscoverage['mongoose/document.js'][556]++; | ||
var pres = this.pres[methodName], chain = pres.serial.map((function (fn, i) { | ||
_$jscoverage['mongoose/document.js'][514]++; | ||
_$jscoverage['mongoose/document.js'][558]++; | ||
return (function (err) { | ||
_$jscoverage['mongoose/document.js'][515]++; | ||
_$jscoverage['mongoose/document.js'][559]++; | ||
if (arguments.callee._hookCalled) { | ||
_$jscoverage['mongoose/document.js'][515]++; | ||
_$jscoverage['mongoose/document.js'][559]++; | ||
return; | ||
} | ||
_$jscoverage['mongoose/document.js'][517]++; | ||
_$jscoverage['mongoose/document.js'][561]++; | ||
if (err instanceof Error) { | ||
_$jscoverage['mongoose/document.js'][518]++; | ||
_$jscoverage['mongoose/document.js'][562]++; | ||
error(err); | ||
} | ||
else { | ||
_$jscoverage['mongoose/document.js'][520]++; | ||
_$jscoverage['mongoose/document.js'][564]++; | ||
fn.call(self, chain[i + 1] || parallel); | ||
} | ||
_$jscoverage['mongoose/document.js'][522]++; | ||
_$jscoverage['mongoose/document.js'][566]++; | ||
arguments.callee._hookCalled = true; | ||
}); | ||
})); | ||
_$jscoverage['mongoose/document.js'][526]++; | ||
_$jscoverage['mongoose/document.js'][570]++; | ||
chain.length? chain[0](): parallel(); | ||
_$jscoverage['mongoose/document.js'][528]++; | ||
_$jscoverage['mongoose/document.js'][572]++; | ||
function parallel(err) { | ||
_$jscoverage['mongoose/document.js'][529]++; | ||
_$jscoverage['mongoose/document.js'][573]++; | ||
if (err instanceof Error) { | ||
_$jscoverage['mongoose/document.js'][530]++; | ||
_$jscoverage['mongoose/document.js'][574]++; | ||
return error(err); | ||
} | ||
_$jscoverage['mongoose/document.js'][533]++; | ||
_$jscoverage['mongoose/document.js'][577]++; | ||
var complete = pres.parallel.length; | ||
_$jscoverage['mongoose/document.js'][534]++; | ||
_$jscoverage['mongoose/document.js'][578]++; | ||
if (! complete) { | ||
_$jscoverage['mongoose/document.js'][534]++; | ||
_$jscoverage['mongoose/document.js'][578]++; | ||
return oldFn.apply(self, args); | ||
} | ||
_$jscoverage['mongoose/document.js'][536]++; | ||
_$jscoverage['mongoose/document.js'][580]++; | ||
function done(err) { | ||
_$jscoverage['mongoose/document.js'][537]++; | ||
_$jscoverage['mongoose/document.js'][581]++; | ||
if (err instanceof Error) { | ||
_$jscoverage['mongoose/document.js'][538]++; | ||
_$jscoverage['mongoose/document.js'][582]++; | ||
return error(err); | ||
} | ||
_$jscoverage['mongoose/document.js'][539]++; | ||
_$jscoverage['mongoose/document.js'][583]++; | ||
--complete || oldFn.apply(self, args); | ||
} | ||
_$jscoverage['mongoose/document.js'][542]++; | ||
_$jscoverage['mongoose/document.js'][586]++; | ||
var chain = pres.parallel.map((function (fn, i) { | ||
_$jscoverage['mongoose/document.js'][543]++; | ||
_$jscoverage['mongoose/document.js'][587]++; | ||
return (function (err) { | ||
_$jscoverage['mongoose/document.js'][544]++; | ||
_$jscoverage['mongoose/document.js'][588]++; | ||
if (arguments.callee._hookCalled) { | ||
_$jscoverage['mongoose/document.js'][544]++; | ||
_$jscoverage['mongoose/document.js'][588]++; | ||
return; | ||
} | ||
_$jscoverage['mongoose/document.js'][545]++; | ||
_$jscoverage['mongoose/document.js'][589]++; | ||
if (err) { | ||
_$jscoverage['mongoose/document.js'][545]++; | ||
_$jscoverage['mongoose/document.js'][589]++; | ||
return error(err); | ||
} | ||
_$jscoverage['mongoose/document.js'][546]++; | ||
_$jscoverage['mongoose/document.js'][590]++; | ||
fn.call(self, chain[i + 1] || noop, (function (err) { | ||
_$jscoverage['mongoose/document.js'][547]++; | ||
_$jscoverage['mongoose/document.js'][591]++; | ||
if (arguments.callee._hookCalled) { | ||
_$jscoverage['mongoose/document.js'][547]++; | ||
_$jscoverage['mongoose/document.js'][591]++; | ||
return; | ||
} | ||
_$jscoverage['mongoose/document.js'][548]++; | ||
_$jscoverage['mongoose/document.js'][592]++; | ||
done(err); | ||
_$jscoverage['mongoose/document.js'][549]++; | ||
_$jscoverage['mongoose/document.js'][593]++; | ||
arguments.callee._hookCalled = true; | ||
})); | ||
_$jscoverage['mongoose/document.js'][551]++; | ||
_$jscoverage['mongoose/document.js'][595]++; | ||
arguments.callee._hookCalled = true; | ||
}); | ||
})); | ||
_$jscoverage['mongoose/document.js'][555]++; | ||
_$jscoverage['mongoose/document.js'][599]++; | ||
chain[0](); | ||
@@ -791,19 +814,19 @@ } | ||
}); | ||
_$jscoverage['mongoose/document.js'][566]++; | ||
_$jscoverage['mongoose/document.js'][610]++; | ||
module.exports = Document; | ||
_$jscoverage['mongoose/document.js'][574]++; | ||
_$jscoverage['mongoose/document.js'][618]++; | ||
function DocumentError() { | ||
_$jscoverage['mongoose/document.js'][575]++; | ||
_$jscoverage['mongoose/document.js'][619]++; | ||
MongooseError.call(this, msg); | ||
_$jscoverage['mongoose/document.js'][576]++; | ||
_$jscoverage['mongoose/document.js'][620]++; | ||
MongooseError.captureStackTrace(this, arguments.callee); | ||
_$jscoverage['mongoose/document.js'][577]++; | ||
_$jscoverage['mongoose/document.js'][621]++; | ||
this.name = "DocumentError"; | ||
} | ||
_$jscoverage['mongoose/document.js'][578]++; | ||
_$jscoverage['mongoose/document.js'][622]++; | ||
; | ||
_$jscoverage['mongoose/document.js'][584]++; | ||
_$jscoverage['mongoose/document.js'][628]++; | ||
DocumentError.prototype.__proto__ = MongooseError.prototype; | ||
_$jscoverage['mongoose/document.js'][586]++; | ||
_$jscoverage['mongoose/document.js'][630]++; | ||
exports.Error = DocumentError; | ||
_$jscoverage['mongoose/document.js'].source = ["","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , MongooseError = require('./error')"," , Schema = require('./schema')"," , ArrayType = require('./types/array')"," , 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;",""," if (obj[i] && obj[i].constructor == 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"," *"," * @param {String} key path"," * @param {Object} value"," * @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 (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"," this.activePaths.modify(path);",""," var schema = this.schema.path(path)"," , parts = path.split('.')"," , obj = this.doc"," , self = this;",""," 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 = this.doc"," , schema = this.schema.path(path)"," , pieces = path.split('.');",""," for (var i = 0, l = pieces.length; i < l; i++)"," obj = obj[pieces[i]];",""," if (schema)"," obj = schema.applyGetters(obj, this);",""," return obj;","};","","/**"," * 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 ? 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);",""," 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].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;"]; |
@@ -6,5 +6,2 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/index.js'][6] = 0; | ||
_$jscoverage['mongoose/index.js'][19] = 0; | ||
_$jscoverage['mongoose/index.js'][20] = 0; | ||
_$jscoverage['mongoose/index.js'][21] = 0; | ||
_$jscoverage['mongoose/index.js'][22] = 0; | ||
@@ -15,19 +12,19 @@ _$jscoverage['mongoose/index.js'][23] = 0; | ||
_$jscoverage['mongoose/index.js'][26] = 0; | ||
_$jscoverage['mongoose/index.js'][40] = 0; | ||
_$jscoverage['mongoose/index.js'][42] = 0; | ||
_$jscoverage['mongoose/index.js'][27] = 0; | ||
_$jscoverage['mongoose/index.js'][28] = 0; | ||
_$jscoverage['mongoose/index.js'][29] = 0; | ||
_$jscoverage['mongoose/index.js'][43] = 0; | ||
_$jscoverage['mongoose/index.js'][44] = 0; | ||
_$jscoverage['mongoose/index.js'][45] = 0; | ||
_$jscoverage['mongoose/index.js'][68] = 0; | ||
_$jscoverage['mongoose/index.js'][69] = 0; | ||
_$jscoverage['mongoose/index.js'][70] = 0; | ||
_$jscoverage['mongoose/index.js'][46] = 0; | ||
_$jscoverage['mongoose/index.js'][47] = 0; | ||
_$jscoverage['mongoose/index.js'][48] = 0; | ||
_$jscoverage['mongoose/index.js'][71] = 0; | ||
_$jscoverage['mongoose/index.js'][72] = 0; | ||
_$jscoverage['mongoose/index.js'][73] = 0; | ||
_$jscoverage['mongoose/index.js'][83] = 0; | ||
_$jscoverage['mongoose/index.js'][84] = 0; | ||
_$jscoverage['mongoose/index.js'][85] = 0; | ||
_$jscoverage['mongoose/index.js'][95] = 0; | ||
_$jscoverage['mongoose/index.js'][96] = 0; | ||
_$jscoverage['mongoose/index.js'][97] = 0; | ||
_$jscoverage['mongoose/index.js'][74] = 0; | ||
_$jscoverage['mongoose/index.js'][75] = 0; | ||
_$jscoverage['mongoose/index.js'][76] = 0; | ||
_$jscoverage['mongoose/index.js'][86] = 0; | ||
_$jscoverage['mongoose/index.js'][87] = 0; | ||
_$jscoverage['mongoose/index.js'][88] = 0; | ||
_$jscoverage['mongoose/index.js'][98] = 0; | ||
@@ -37,118 +34,124 @@ _$jscoverage['mongoose/index.js'][99] = 0; | ||
_$jscoverage['mongoose/index.js'][101] = 0; | ||
_$jscoverage['mongoose/index.js'][102] = 0; | ||
_$jscoverage['mongoose/index.js'][103] = 0; | ||
_$jscoverage['mongoose/index.js'][104] = 0; | ||
_$jscoverage['mongoose/index.js'][117] = 0; | ||
_$jscoverage['mongoose/index.js'][119] = 0; | ||
_$jscoverage['mongoose/index.js'][107] = 0; | ||
_$jscoverage['mongoose/index.js'][120] = 0; | ||
_$jscoverage['mongoose/index.js'][121] = 0; | ||
_$jscoverage['mongoose/index.js'][122] = 0; | ||
_$jscoverage['mongoose/index.js'][123] = 0; | ||
_$jscoverage['mongoose/index.js'][124] = 0; | ||
_$jscoverage['mongoose/index.js'][127] = 0; | ||
_$jscoverage['mongoose/index.js'][128] = 0; | ||
_$jscoverage['mongoose/index.js'][129] = 0; | ||
_$jscoverage['mongoose/index.js'][130] = 0; | ||
_$jscoverage['mongoose/index.js'][131] = 0; | ||
_$jscoverage['mongoose/index.js'][132] = 0; | ||
_$jscoverage['mongoose/index.js'][133] = 0; | ||
_$jscoverage['mongoose/index.js'][134] = 0; | ||
_$jscoverage['mongoose/index.js'][135] = 0; | ||
_$jscoverage['mongoose/index.js'][137] = 0; | ||
_$jscoverage['mongoose/index.js'][138] = 0; | ||
_$jscoverage['mongoose/index.js'][141] = 0; | ||
_$jscoverage['mongoose/index.js'][142] = 0; | ||
_$jscoverage['mongoose/index.js'][144] = 0; | ||
_$jscoverage['mongoose/index.js'][145] = 0; | ||
_$jscoverage['mongoose/index.js'][151] = 0; | ||
_$jscoverage['mongoose/index.js'][152] = 0; | ||
_$jscoverage['mongoose/index.js'][147] = 0; | ||
_$jscoverage['mongoose/index.js'][148] = 0; | ||
_$jscoverage['mongoose/index.js'][154] = 0; | ||
_$jscoverage['mongoose/index.js'][155] = 0; | ||
_$jscoverage['mongoose/index.js'][157] = 0; | ||
_$jscoverage['mongoose/index.js'][169] = 0; | ||
_$jscoverage['mongoose/index.js'][170] = 0; | ||
_$jscoverage['mongoose/index.js'][171] = 0; | ||
_$jscoverage['mongoose/index.js'][180] = 0; | ||
_$jscoverage['mongoose/index.js'][181] = 0; | ||
_$jscoverage['mongoose/index.js'][190] = 0; | ||
_$jscoverage['mongoose/index.js'][192] = 0; | ||
_$jscoverage['mongoose/index.js'][158] = 0; | ||
_$jscoverage['mongoose/index.js'][160] = 0; | ||
_$jscoverage['mongoose/index.js'][172] = 0; | ||
_$jscoverage['mongoose/index.js'][173] = 0; | ||
_$jscoverage['mongoose/index.js'][174] = 0; | ||
_$jscoverage['mongoose/index.js'][183] = 0; | ||
_$jscoverage['mongoose/index.js'][184] = 0; | ||
_$jscoverage['mongoose/index.js'][193] = 0; | ||
_$jscoverage['mongoose/index.js'][195] = 0; | ||
_$jscoverage['mongoose/index.js'][196] = 0; | ||
_$jscoverage['mongoose/index.js'][197] = 0; | ||
_$jscoverage['mongoose/index.js'][198] = 0; | ||
_$jscoverage['mongoose/index.js'][205] = 0; | ||
_$jscoverage['mongoose/index.js'][213] = 0; | ||
_$jscoverage['mongoose/index.js'][221] = 0; | ||
_$jscoverage['mongoose/index.js'][229] = 0; | ||
_$jscoverage['mongoose/index.js'][237] = 0; | ||
_$jscoverage['mongoose/index.js'][245] = 0; | ||
_$jscoverage['mongoose/index.js'][253] = 0; | ||
_$jscoverage['mongoose/index.js'][261] = 0; | ||
_$jscoverage['mongoose/index.js'][269] = 0; | ||
_$jscoverage['mongoose/index.js'][277] = 0; | ||
_$jscoverage['mongoose/index.js'][285] = 0; | ||
_$jscoverage['mongoose/index.js'][293] = 0; | ||
_$jscoverage['mongoose/index.js'][301] = 0; | ||
_$jscoverage['mongoose/index.js'][199] = 0; | ||
_$jscoverage['mongoose/index.js'][200] = 0; | ||
_$jscoverage['mongoose/index.js'][201] = 0; | ||
_$jscoverage['mongoose/index.js'][208] = 0; | ||
_$jscoverage['mongoose/index.js'][216] = 0; | ||
_$jscoverage['mongoose/index.js'][224] = 0; | ||
_$jscoverage['mongoose/index.js'][232] = 0; | ||
_$jscoverage['mongoose/index.js'][240] = 0; | ||
_$jscoverage['mongoose/index.js'][248] = 0; | ||
_$jscoverage['mongoose/index.js'][256] = 0; | ||
_$jscoverage['mongoose/index.js'][264] = 0; | ||
_$jscoverage['mongoose/index.js'][272] = 0; | ||
_$jscoverage['mongoose/index.js'][280] = 0; | ||
_$jscoverage['mongoose/index.js'][288] = 0; | ||
_$jscoverage['mongoose/index.js'][296] = 0; | ||
_$jscoverage['mongoose/index.js'][304] = 0; | ||
_$jscoverage['mongoose/index.js'][312] = 0; | ||
_$jscoverage['mongoose/index.js'][320] = 0; | ||
_$jscoverage['mongoose/index.js'][328] = 0; | ||
} | ||
_$jscoverage['mongoose/index.js'][6]++; | ||
var Schema = require("./schema"), SchemaType = require("./schematype"), SchemaTypes = Schema.Types, Types = require("./types"), Model = require("./model"), utils = require("./utils"); | ||
_$jscoverage['mongoose/index.js'][19]++; | ||
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"); | ||
_$jscoverage['mongoose/index.js'][22]++; | ||
function Mongoose() { | ||
_$jscoverage['mongoose/index.js'][20]++; | ||
_$jscoverage['mongoose/index.js'][23]++; | ||
this.connections = []; | ||
_$jscoverage['mongoose/index.js'][21]++; | ||
_$jscoverage['mongoose/index.js'][24]++; | ||
this.plugins = []; | ||
_$jscoverage['mongoose/index.js'][22]++; | ||
_$jscoverage['mongoose/index.js'][25]++; | ||
this.models = {}; | ||
_$jscoverage['mongoose/index.js'][23]++; | ||
_$jscoverage['mongoose/index.js'][26]++; | ||
this.modelSchemas = {}; | ||
_$jscoverage['mongoose/index.js'][24]++; | ||
_$jscoverage['mongoose/index.js'][27]++; | ||
this.options = {}; | ||
_$jscoverage['mongoose/index.js'][25]++; | ||
_$jscoverage['mongoose/index.js'][28]++; | ||
this.createConnection(); | ||
} | ||
_$jscoverage['mongoose/index.js'][26]++; | ||
_$jscoverage['mongoose/index.js'][29]++; | ||
; | ||
_$jscoverage['mongoose/index.js'][40]++; | ||
_$jscoverage['mongoose/index.js'][43]++; | ||
Mongoose.prototype.set = Mongoose.prototype.get = (function (key, value) { | ||
_$jscoverage['mongoose/index.js'][42]++; | ||
_$jscoverage['mongoose/index.js'][45]++; | ||
if (arguments.length == 1) { | ||
_$jscoverage['mongoose/index.js'][43]++; | ||
_$jscoverage['mongoose/index.js'][46]++; | ||
return this.options[key]; | ||
} | ||
_$jscoverage['mongoose/index.js'][44]++; | ||
_$jscoverage['mongoose/index.js'][47]++; | ||
this.options[key] = value; | ||
_$jscoverage['mongoose/index.js'][45]++; | ||
_$jscoverage['mongoose/index.js'][48]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/index.js'][68]++; | ||
_$jscoverage['mongoose/index.js'][71]++; | ||
Mongoose.prototype.createConnection = (function () { | ||
_$jscoverage['mongoose/index.js'][69]++; | ||
_$jscoverage['mongoose/index.js'][72]++; | ||
var conn = new Connection(this); | ||
_$jscoverage['mongoose/index.js'][70]++; | ||
_$jscoverage['mongoose/index.js'][73]++; | ||
this.connections.push(conn); | ||
_$jscoverage['mongoose/index.js'][71]++; | ||
_$jscoverage['mongoose/index.js'][74]++; | ||
if (arguments.length) { | ||
_$jscoverage['mongoose/index.js'][72]++; | ||
_$jscoverage['mongoose/index.js'][75]++; | ||
conn.open.apply(conn, arguments); | ||
} | ||
_$jscoverage['mongoose/index.js'][73]++; | ||
_$jscoverage['mongoose/index.js'][76]++; | ||
return conn; | ||
}); | ||
_$jscoverage['mongoose/index.js'][83]++; | ||
_$jscoverage['mongoose/index.js'][86]++; | ||
Mongoose.prototype.connect = (function () { | ||
_$jscoverage['mongoose/index.js'][84]++; | ||
_$jscoverage['mongoose/index.js'][87]++; | ||
this.connection.open.apply(this.connection, arguments); | ||
_$jscoverage['mongoose/index.js'][85]++; | ||
_$jscoverage['mongoose/index.js'][88]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/index.js'][95]++; | ||
_$jscoverage['mongoose/index.js'][98]++; | ||
Mongoose.prototype.disconnect = (function (fn) { | ||
_$jscoverage['mongoose/index.js'][96]++; | ||
_$jscoverage['mongoose/index.js'][99]++; | ||
var count = this.connections.length; | ||
_$jscoverage['mongoose/index.js'][97]++; | ||
_$jscoverage['mongoose/index.js'][100]++; | ||
this.connections.forEach((function (conn) { | ||
_$jscoverage['mongoose/index.js'][98]++; | ||
_$jscoverage['mongoose/index.js'][101]++; | ||
conn.close((function (err) { | ||
_$jscoverage['mongoose/index.js'][99]++; | ||
_$jscoverage['mongoose/index.js'][102]++; | ||
if (err) { | ||
_$jscoverage['mongoose/index.js'][99]++; | ||
_$jscoverage['mongoose/index.js'][102]++; | ||
return fn(err); | ||
} | ||
_$jscoverage['mongoose/index.js'][100]++; | ||
_$jscoverage['mongoose/index.js'][103]++; | ||
if (fn) { | ||
_$jscoverage['mongoose/index.js'][101]++; | ||
_$jscoverage['mongoose/index.js'][104]++; | ||
--count || fn(); | ||
@@ -158,26 +161,26 @@ } | ||
})); | ||
_$jscoverage['mongoose/index.js'][104]++; | ||
_$jscoverage['mongoose/index.js'][107]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/index.js'][117]++; | ||
_$jscoverage['mongoose/index.js'][120]++; | ||
Mongoose.prototype.model = (function (name, schema, collection, skipInit) { | ||
_$jscoverage['mongoose/index.js'][119]++; | ||
_$jscoverage['mongoose/index.js'][122]++; | ||
if (! (schema instanceof Schema)) { | ||
_$jscoverage['mongoose/index.js'][120]++; | ||
_$jscoverage['mongoose/index.js'][123]++; | ||
collection = schema; | ||
_$jscoverage['mongoose/index.js'][121]++; | ||
_$jscoverage['mongoose/index.js'][124]++; | ||
schema = false; | ||
} | ||
_$jscoverage['mongoose/index.js'][124]++; | ||
_$jscoverage['mongoose/index.js'][127]++; | ||
collection = collection || utils.toCollectionName(name); | ||
_$jscoverage['mongoose/index.js'][127]++; | ||
_$jscoverage['mongoose/index.js'][130]++; | ||
if (schema) { | ||
_$jscoverage['mongoose/index.js'][128]++; | ||
_$jscoverage['mongoose/index.js'][131]++; | ||
if (! this.modelSchemas[name]) { | ||
_$jscoverage['mongoose/index.js'][129]++; | ||
_$jscoverage['mongoose/index.js'][132]++; | ||
this.modelSchemas[name] = schema; | ||
_$jscoverage['mongoose/index.js'][130]++; | ||
_$jscoverage['mongoose/index.js'][133]++; | ||
for (var i = 0, l = this.plugins.length; i < l; i++) { | ||
_$jscoverage['mongoose/index.js'][131]++; | ||
schema.plugin(this.plugins[i]); | ||
_$jscoverage['mongoose/index.js'][134]++; | ||
schema.plugin(this.plugins[i][0], this.plugins[i][1]); | ||
} | ||
@@ -187,87 +190,93 @@ } | ||
else { | ||
_$jscoverage['mongoose/index.js'][134]++; | ||
_$jscoverage['mongoose/index.js'][137]++; | ||
if (! this.modelSchemas[name]) { | ||
_$jscoverage['mongoose/index.js'][135]++; | ||
_$jscoverage['mongoose/index.js'][138]++; | ||
throw new Error("Schema hasn't been registered for model \"" + name + "\".\n" + "Use Mongoose.define(name, schema)"); | ||
} | ||
_$jscoverage['mongoose/index.js'][138]++; | ||
_$jscoverage['mongoose/index.js'][141]++; | ||
var conn = this.connection, model; | ||
_$jscoverage['mongoose/index.js'][141]++; | ||
_$jscoverage['mongoose/index.js'][144]++; | ||
if (! this.models[collection]) { | ||
_$jscoverage['mongoose/index.js'][142]++; | ||
_$jscoverage['mongoose/index.js'][145]++; | ||
this.models[collection] = {}; | ||
} | ||
_$jscoverage['mongoose/index.js'][144]++; | ||
_$jscoverage['mongoose/index.js'][147]++; | ||
if (! this.models[collection][name]) { | ||
_$jscoverage['mongoose/index.js'][145]++; | ||
_$jscoverage['mongoose/index.js'][148]++; | ||
model = Model.compile(name, this.modelSchemas[name], collection, conn, this); | ||
_$jscoverage['mongoose/index.js'][151]++; | ||
_$jscoverage['mongoose/index.js'][154]++; | ||
if (! skipInit) { | ||
_$jscoverage['mongoose/index.js'][152]++; | ||
_$jscoverage['mongoose/index.js'][155]++; | ||
model.init(); | ||
} | ||
_$jscoverage['mongoose/index.js'][154]++; | ||
_$jscoverage['mongoose/index.js'][157]++; | ||
this.models[collection][name] = model; | ||
} | ||
_$jscoverage['mongoose/index.js'][155]++; | ||
_$jscoverage['mongoose/index.js'][158]++; | ||
; | ||
_$jscoverage['mongoose/index.js'][157]++; | ||
_$jscoverage['mongoose/index.js'][160]++; | ||
return this.models[collection][name]; | ||
} | ||
}); | ||
_$jscoverage['mongoose/index.js'][169]++; | ||
Mongoose.prototype.plugin = (function (fn) { | ||
_$jscoverage['mongoose/index.js'][170]++; | ||
this.plugins.push(fn); | ||
_$jscoverage['mongoose/index.js'][171]++; | ||
_$jscoverage['mongoose/index.js'][172]++; | ||
Mongoose.prototype.plugin = (function (fn, opts) { | ||
_$jscoverage['mongoose/index.js'][173]++; | ||
this.plugins.push([fn, opts]); | ||
_$jscoverage['mongoose/index.js'][174]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/index.js'][180]++; | ||
_$jscoverage['mongoose/index.js'][183]++; | ||
Mongoose.prototype.__defineGetter__("connection", (function () { | ||
_$jscoverage['mongoose/index.js'][181]++; | ||
_$jscoverage['mongoose/index.js'][184]++; | ||
return this.connections[0]; | ||
})); | ||
_$jscoverage['mongoose/index.js'][190]++; | ||
_$jscoverage['mongoose/index.js'][193]++; | ||
var compat = false; | ||
_$jscoverage['mongoose/index.js'][192]++; | ||
_$jscoverage['mongoose/index.js'][195]++; | ||
exports.__defineGetter__("compat", (function () { | ||
_$jscoverage['mongoose/index.js'][193]++; | ||
_$jscoverage['mongoose/index.js'][196]++; | ||
return compat; | ||
})); | ||
_$jscoverage['mongoose/index.js'][196]++; | ||
_$jscoverage['mongoose/index.js'][199]++; | ||
exports.__defineSetter__("compat", (function (v) { | ||
_$jscoverage['mongoose/index.js'][197]++; | ||
_$jscoverage['mongoose/index.js'][200]++; | ||
compat = v; | ||
_$jscoverage['mongoose/index.js'][198]++; | ||
_$jscoverage['mongoose/index.js'][201]++; | ||
if (v) { | ||
_$jscoverage['mongoose/index.js'][198]++; | ||
_$jscoverage['mongoose/index.js'][201]++; | ||
require("./compat"); | ||
} | ||
})); | ||
_$jscoverage['mongoose/index.js'][205]++; | ||
_$jscoverage['mongoose/index.js'][208]++; | ||
var driver = global.MONGOOSE_DRIVER_PATH || "./drivers/node-mongodb-native"; | ||
_$jscoverage['mongoose/index.js'][213]++; | ||
_$jscoverage['mongoose/index.js'][216]++; | ||
var Connection = require(driver + "/connection"); | ||
_$jscoverage['mongoose/index.js'][221]++; | ||
_$jscoverage['mongoose/index.js'][224]++; | ||
var Collection = require(driver + "/collection"); | ||
_$jscoverage['mongoose/index.js'][229]++; | ||
_$jscoverage['mongoose/index.js'][232]++; | ||
module.exports = exports = new Mongoose(); | ||
_$jscoverage['mongoose/index.js'][237]++; | ||
_$jscoverage['mongoose/index.js'][240]++; | ||
exports.Collection = Collection; | ||
_$jscoverage['mongoose/index.js'][245]++; | ||
_$jscoverage['mongoose/index.js'][248]++; | ||
exports.Connection = Connection; | ||
_$jscoverage['mongoose/index.js'][253]++; | ||
_$jscoverage['mongoose/index.js'][256]++; | ||
exports.version = "1.0.0"; | ||
_$jscoverage['mongoose/index.js'][261]++; | ||
_$jscoverage['mongoose/index.js'][264]++; | ||
exports.Mongoose = Mongoose; | ||
_$jscoverage['mongoose/index.js'][269]++; | ||
_$jscoverage['mongoose/index.js'][272]++; | ||
exports.Schema = Schema; | ||
_$jscoverage['mongoose/index.js'][277]++; | ||
_$jscoverage['mongoose/index.js'][280]++; | ||
exports.SchemaType = SchemaType; | ||
_$jscoverage['mongoose/index.js'][285]++; | ||
_$jscoverage['mongoose/index.js'][288]++; | ||
exports.VirtualType = VirtualType; | ||
_$jscoverage['mongoose/index.js'][296]++; | ||
exports.SchemaTypes = SchemaTypes; | ||
_$jscoverage['mongoose/index.js'][293]++; | ||
_$jscoverage['mongoose/index.js'][304]++; | ||
exports.Types = Types; | ||
_$jscoverage['mongoose/index.js'][301]++; | ||
_$jscoverage['mongoose/index.js'][312]++; | ||
exports.Query = Query; | ||
_$jscoverage['mongoose/index.js'][320]++; | ||
exports.Promise = Promise; | ||
_$jscoverage['mongoose/index.js'][328]++; | ||
exports.Error = require("./error"); | ||
_$jscoverage['mongoose/index.js'].source = ["","/**"," * Module dependencies."," */","","var Schema = require('./schema')"," , SchemaType = require('./schematype')"," , SchemaTypes = Schema.Types"," , Types = require('./types')"," , 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]);"," }"," } 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) {"," this.plugins.push(fn);"," 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.0';","","/**"," * 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 Schema types"," *"," * @api public"," */","","exports.SchemaTypes = SchemaTypes;","","/**"," * Export types"," *"," * @api public"," */","","exports.Types = Types;","","/**"," * Export MongooseError"," *"," * @api public"," */","","exports.Error = require('./error');"]; | ||
_$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.0';","","/**"," * 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');"]; |
@@ -16,65 +16,69 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/model.js'][67] = 0; | ||
_$jscoverage['mongoose/model.js'][70] = 0; | ||
_$jscoverage['mongoose/model.js'][73] = 0; | ||
_$jscoverage['mongoose/model.js'][74] = 0; | ||
_$jscoverage['mongoose/model.js'][68] = 0; | ||
_$jscoverage['mongoose/model.js'][71] = 0; | ||
_$jscoverage['mongoose/model.js'][75] = 0; | ||
_$jscoverage['mongoose/model.js'][76] = 0; | ||
_$jscoverage['mongoose/model.js'][77] = 0; | ||
_$jscoverage['mongoose/model.js'][78] = 0; | ||
_$jscoverage['mongoose/model.js'][79] = 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'][96] = 0; | ||
_$jscoverage['mongoose/model.js'][99] = 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'][112] = 0; | ||
_$jscoverage['mongoose/model.js'][111] = 0; | ||
_$jscoverage['mongoose/model.js'][113] = 0; | ||
_$jscoverage['mongoose/model.js'][116] = 0; | ||
_$jscoverage['mongoose/model.js'][117] = 0; | ||
_$jscoverage['mongoose/model.js'][115] = 0; | ||
_$jscoverage['mongoose/model.js'][118] = 0; | ||
_$jscoverage['mongoose/model.js'][119] = 0; | ||
_$jscoverage['mongoose/model.js'][123] = 0; | ||
_$jscoverage['mongoose/model.js'][132] = 0; | ||
_$jscoverage['mongoose/model.js'][134] = 0; | ||
_$jscoverage['mongoose/model.js'][137] = 0; | ||
_$jscoverage['mongoose/model.js'][141] = 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'][146] = 0; | ||
_$jscoverage['mongoose/model.js'][144] = 0; | ||
_$jscoverage['mongoose/model.js'][145] = 0; | ||
_$jscoverage['mongoose/model.js'][149] = 0; | ||
_$jscoverage['mongoose/model.js'][151] = 0; | ||
_$jscoverage['mongoose/model.js'][152] = 0; | ||
_$jscoverage['mongoose/model.js'][153] = 0; | ||
_$jscoverage['mongoose/model.js'][154] = 0; | ||
_$jscoverage['mongoose/model.js'][155] = 0; | ||
_$jscoverage['mongoose/model.js'][156] = 0; | ||
_$jscoverage['mongoose/model.js'][157] = 0; | ||
_$jscoverage['mongoose/model.js'][158] = 0; | ||
_$jscoverage['mongoose/model.js'][159] = 0; | ||
_$jscoverage['mongoose/model.js'][161] = 0; | ||
_$jscoverage['mongoose/model.js'][168] = 0; | ||
_$jscoverage['mongoose/model.js'][160] = 0; | ||
_$jscoverage['mongoose/model.js'][163] = 0; | ||
_$jscoverage['mongoose/model.js'][167] = 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'][182] = 0; | ||
_$jscoverage['mongoose/model.js'][183] = 0; | ||
_$jscoverage['mongoose/model.js'][184] = 0; | ||
_$jscoverage['mongoose/model.js'][185] = 0; | ||
_$jscoverage['mongoose/model.js'][186] = 0; | ||
_$jscoverage['mongoose/model.js'][187] = 0; | ||
_$jscoverage['mongoose/model.js'][194] = 0; | ||
_$jscoverage['mongoose/model.js'][196] = 0; | ||
_$jscoverage['mongoose/model.js'][200] = 0; | ||
_$jscoverage['mongoose/model.js'][201] = 0; | ||
_$jscoverage['mongoose/model.js'][202] = 0; | ||
_$jscoverage['mongoose/model.js'][213] = 0; | ||
_$jscoverage['mongoose/model.js'][221] = 0; | ||
_$jscoverage['mongoose/model.js'][229] = 0; | ||
_$jscoverage['mongoose/model.js'][235] = 0; | ||
_$jscoverage['mongoose/model.js'][236] = 0; | ||
_$jscoverage['mongoose/model.js'][237] = 0; | ||
_$jscoverage['mongoose/model.js'][245] = 0; | ||
_$jscoverage['mongoose/model.js'][251] = 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'][222] = 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'][265] = 0; | ||
_$jscoverage['mongoose/model.js'][266] = 0; | ||
_$jscoverage['mongoose/model.js'][267] = 0; | ||
_$jscoverage['mongoose/model.js'][270] = 0; | ||
_$jscoverage['mongoose/model.js'][271] = 0; | ||
_$jscoverage['mongoose/model.js'][274] = 0; | ||
_$jscoverage['mongoose/model.js'][275] = 0; | ||
_$jscoverage['mongoose/model.js'][277] = 0; | ||
@@ -84,77 +88,106 @@ _$jscoverage['mongoose/model.js'][279] = 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'][299] = 0; | ||
_$jscoverage['mongoose/model.js'][300] = 0; | ||
_$jscoverage['mongoose/model.js'][301] = 0; | ||
_$jscoverage['mongoose/model.js'][302] = 0; | ||
_$jscoverage['mongoose/model.js'][303] = 0; | ||
_$jscoverage['mongoose/model.js'][304] = 0; | ||
_$jscoverage['mongoose/model.js'][305] = 0; | ||
_$jscoverage['mongoose/model.js'][308] = 0; | ||
_$jscoverage['mongoose/model.js'][306] = 0; | ||
_$jscoverage['mongoose/model.js'][309] = 0; | ||
_$jscoverage['mongoose/model.js'][310] = 0; | ||
_$jscoverage['mongoose/model.js'][311] = 0; | ||
_$jscoverage['mongoose/model.js'][312] = 0; | ||
_$jscoverage['mongoose/model.js'][314] = 0; | ||
_$jscoverage['mongoose/model.js'][315] = 0; | ||
_$jscoverage['mongoose/model.js'][330] = 0; | ||
_$jscoverage['mongoose/model.js'][331] = 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'][341] = 0; | ||
_$jscoverage['mongoose/model.js'][344] = 0; | ||
_$jscoverage['mongoose/model.js'][363] = 0; | ||
_$jscoverage['mongoose/model.js'][340] = 0; | ||
_$jscoverage['mongoose/model.js'][343] = 0; | ||
_$jscoverage['mongoose/model.js'][345] = 0; | ||
_$jscoverage['mongoose/model.js'][346] = 0; | ||
_$jscoverage['mongoose/model.js'][349] = 0; | ||
_$jscoverage['mongoose/model.js'][364] = 0; | ||
_$jscoverage['mongoose/model.js'][366] = 0; | ||
_$jscoverage['mongoose/model.js'][367] = 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'][379] = 0; | ||
_$jscoverage['mongoose/model.js'][381] = 0; | ||
_$jscoverage['mongoose/model.js'][378] = 0; | ||
_$jscoverage['mongoose/model.js'][380] = 0; | ||
_$jscoverage['mongoose/model.js'][382] = 0; | ||
_$jscoverage['mongoose/model.js'][383] = 0; | ||
_$jscoverage['mongoose/model.js'][384] = 0; | ||
_$jscoverage['mongoose/model.js'][399] = 0; | ||
_$jscoverage['mongoose/model.js'][400] = 0; | ||
_$jscoverage['mongoose/model.js'][412] = 0; | ||
_$jscoverage['mongoose/model.js'][413] = 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'][415] = 0; | ||
_$jscoverage['mongoose/model.js'][416] = 0; | ||
_$jscoverage['mongoose/model.js'][419] = 0; | ||
_$jscoverage['mongoose/model.js'][420] = 0; | ||
_$jscoverage['mongoose/model.js'][417] = 0; | ||
_$jscoverage['mongoose/model.js'][418] = 0; | ||
_$jscoverage['mongoose/model.js'][421] = 0; | ||
_$jscoverage['mongoose/model.js'][422] = 0; | ||
_$jscoverage['mongoose/model.js'][424] = 0; | ||
_$jscoverage['mongoose/model.js'][426] = 0; | ||
_$jscoverage['mongoose/model.js'][425] = 0; | ||
_$jscoverage['mongoose/model.js'][427] = 0; | ||
_$jscoverage['mongoose/model.js'][441] = 0; | ||
_$jscoverage['mongoose/model.js'][442] = 0; | ||
_$jscoverage['mongoose/model.js'][444] = 0; | ||
_$jscoverage['mongoose/model.js'][445] = 0; | ||
_$jscoverage['mongoose/model.js'][446] = 0; | ||
_$jscoverage['mongoose/model.js'][428] = 0; | ||
_$jscoverage['mongoose/model.js'][430] = 0; | ||
_$jscoverage['mongoose/model.js'][433] = 0; | ||
_$jscoverage['mongoose/model.js'][435] = 0; | ||
_$jscoverage['mongoose/model.js'][436] = 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'][471] = 0; | ||
_$jscoverage['mongoose/model.js'][472] = 0; | ||
_$jscoverage['mongoose/model.js'][474] = 0; | ||
_$jscoverage['mongoose/model.js'][475] = 0; | ||
_$jscoverage['mongoose/model.js'][479] = 0; | ||
_$jscoverage['mongoose/model.js'][494] = 0; | ||
_$jscoverage['mongoose/model.js'][496] = 0; | ||
_$jscoverage['mongoose/model.js'][497] = 0; | ||
_$jscoverage['mongoose/model.js'][498] = 0; | ||
_$jscoverage['mongoose/model.js'][477] = 0; | ||
_$jscoverage['mongoose/model.js'][478] = 0; | ||
_$jscoverage['mongoose/model.js'][480] = 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'][502] = 0; | ||
_$jscoverage['mongoose/model.js'][503] = 0; | ||
_$jscoverage['mongoose/model.js'][504] = 0; | ||
_$jscoverage['mongoose/model.js'][505] = 0; | ||
_$jscoverage['mongoose/model.js'][506] = 0; | ||
_$jscoverage['mongoose/model.js'][509] = 0; | ||
_$jscoverage['mongoose/model.js'][510] = 0; | ||
_$jscoverage['mongoose/model.js'][513] = 0; | ||
_$jscoverage['mongoose/model.js'][514] = 0; | ||
_$jscoverage['mongoose/model.js'][516] = 0; | ||
_$jscoverage['mongoose/model.js'][530] = 0; | ||
_$jscoverage['mongoose/model.js'][531] = 0; | ||
_$jscoverage['mongoose/model.js'][533] = 0; | ||
_$jscoverage['mongoose/model.js'][534] = 0; | ||
_$jscoverage['mongoose/model.js'][538] = 0; | ||
_$jscoverage['mongoose/model.js'][553] = 0; | ||
_$jscoverage['mongoose/model.js'][555] = 0; | ||
_$jscoverage['mongoose/model.js'][556] = 0; | ||
_$jscoverage['mongoose/model.js'][557] = 0; | ||
_$jscoverage['mongoose/model.js'][559] = 0; | ||
_$jscoverage['mongoose/model.js'][560] = 0; | ||
_$jscoverage['mongoose/model.js'][561] = 0; | ||
_$jscoverage['mongoose/model.js'][562] = 0; | ||
_$jscoverage['mongoose/model.js'][563] = 0; | ||
_$jscoverage['mongoose/model.js'][564] = 0; | ||
_$jscoverage['mongoose/model.js'][565] = 0; | ||
_$jscoverage['mongoose/model.js'][568] = 0; | ||
_$jscoverage['mongoose/model.js'][569] = 0; | ||
_$jscoverage['mongoose/model.js'][572] = 0; | ||
_$jscoverage['mongoose/model.js'][573] = 0; | ||
_$jscoverage['mongoose/model.js'][575] = 0; | ||
} | ||
@@ -184,20 +217,32 @@ _$jscoverage['mongoose/model.js'][6]++; | ||
this.collection.insert(this.toObject(), fn); | ||
_$jscoverage['mongoose/model.js'][68]++; | ||
this.isNew = false; | ||
} | ||
else { | ||
_$jscoverage['mongoose/model.js'][70]++; | ||
var self = this, delta; | ||
_$jscoverage['mongoose/model.js'][73]++; | ||
_$jscoverage['mongoose/model.js'][71]++; | ||
var self = this, delta, useSet = this.options.use$SetOnSave; | ||
_$jscoverage['mongoose/model.js'][75]++; | ||
delta = this.activePaths.map("modify", (function (path) { | ||
_$jscoverage['mongoose/model.js'][74]++; | ||
return self.getValue(path); | ||
})).reduce((function (delta, type) { | ||
_$jscoverage['mongoose/model.js'][76]++; | ||
if (type.doAtomics) { | ||
_$jscoverage['mongoose/model.js'][77]++; | ||
return ({path: path, value: self.getValue(path), schema: self.schema.path(path)}); | ||
})).reduce((function (delta, data) { | ||
_$jscoverage['mongoose/model.js'][78]++; | ||
var type = data.value, schema = data.schema; | ||
_$jscoverage['mongoose/model.js'][82]++; | ||
if (type._path && type.doAtomics) { | ||
_$jscoverage['mongoose/model.js'][83]++; | ||
type._atomics.forEach((function (op) { | ||
_$jscoverage['mongoose/model.js'][78]++; | ||
var obj = delta[op[0]] = {}; | ||
_$jscoverage['mongoose/model.js'][79]++; | ||
_$jscoverage['mongoose/model.js'][84]++; | ||
var obj = delta[op[0]] = delta[op[0]] || {}; | ||
_$jscoverage['mongoose/model.js'][85]++; | ||
if (op[0] === "$pull" || op[0] === "$push") { | ||
_$jscoverage['mongoose/model.js'][86]++; | ||
if (op[1].constructor !== Object) { | ||
_$jscoverage['mongoose/model.js'][87]++; | ||
op[1] = schema.cast(op[1])[0]; | ||
} | ||
} | ||
_$jscoverage['mongoose/model.js'][90]++; | ||
obj[type._path] = op[1].toObject? op[1].toObject(): Array.isArray(op[1])? op[1].map((function (mem) { | ||
_$jscoverage['mongoose/model.js'][83]++; | ||
_$jscoverage['mongoose/model.js'][94]++; | ||
return mem.toObject? mem.toObject(): mem.valueOf? mem.valueOf(): mem; | ||
@@ -208,79 +253,103 @@ })): op[1].valueOf? op[1].valueOf(): op[1]; | ||
else { | ||
_$jscoverage['mongoose/model.js'][94]++; | ||
delta[type._path] = this.doc[type._path]; | ||
_$jscoverage['mongoose/model.js'][106]++; | ||
if (type._path) { | ||
_$jscoverage['mongoose/model.js'][107]++; | ||
type = type.valueOf(); | ||
} | ||
_$jscoverage['mongoose/model.js'][109]++; | ||
if (useSet) { | ||
_$jscoverage['mongoose/model.js'][110]++; | ||
if (! ("$set" in delta)) { | ||
_$jscoverage['mongoose/model.js'][111]++; | ||
delta.$set = {}; | ||
} | ||
_$jscoverage['mongoose/model.js'][113]++; | ||
delta.$set[data.path] = type; | ||
} | ||
else { | ||
_$jscoverage['mongoose/model.js'][115]++; | ||
delta[data.path] = type; | ||
} | ||
} | ||
_$jscoverage['mongoose/model.js'][96]++; | ||
_$jscoverage['mongoose/model.js'][118]++; | ||
return delta; | ||
}), {}); | ||
_$jscoverage['mongoose/model.js'][99]++; | ||
this.collection.findAndModify({_id: this.doc._id}, [], delta, {}, fn); | ||
_$jscoverage['mongoose/model.js'][121]++; | ||
if (Object.keys(delta).length) { | ||
_$jscoverage['mongoose/model.js'][122]++; | ||
this.collection.update({_id: this.doc._id}, delta, {}, fn); | ||
} | ||
else { | ||
_$jscoverage['mongoose/model.js'][124]++; | ||
fn(null); | ||
} | ||
} | ||
}); | ||
_$jscoverage['mongoose/model.js'][109]++; | ||
_$jscoverage['mongoose/model.js'][135]++; | ||
Model.prototype.remove = (function (fn) { | ||
_$jscoverage['mongoose/model.js'][110]++; | ||
_$jscoverage['mongoose/model.js'][136]++; | ||
if (this.removing || this.removed) { | ||
_$jscoverage['mongoose/model.js'][110]++; | ||
_$jscoverage['mongoose/model.js'][136]++; | ||
return this; | ||
} | ||
_$jscoverage['mongoose/model.js'][112]++; | ||
_$jscoverage['mongoose/model.js'][138]++; | ||
if (! this.removing) { | ||
_$jscoverage['mongoose/model.js'][113]++; | ||
_$jscoverage['mongoose/model.js'][139]++; | ||
var promise = this.removing = new Promise(fn), self = this; | ||
_$jscoverage['mongoose/model.js'][116]++; | ||
_$jscoverage['mongoose/model.js'][142]++; | ||
this.collection.remove({_id: this.doc._id}, (function (err) { | ||
_$jscoverage['mongoose/model.js'][117]++; | ||
_$jscoverage['mongoose/model.js'][143]++; | ||
if (err) { | ||
_$jscoverage['mongoose/model.js'][117]++; | ||
_$jscoverage['mongoose/model.js'][143]++; | ||
return promise.error(err); | ||
} | ||
_$jscoverage['mongoose/model.js'][118]++; | ||
_$jscoverage['mongoose/model.js'][144]++; | ||
promise.complete(); | ||
_$jscoverage['mongoose/model.js'][119]++; | ||
_$jscoverage['mongoose/model.js'][145]++; | ||
self.emit("remove"); | ||
})); | ||
} | ||
_$jscoverage['mongoose/model.js'][123]++; | ||
_$jscoverage['mongoose/model.js'][149]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/model.js'][132]++; | ||
_$jscoverage['mongoose/model.js'][158]++; | ||
Model.prototype.registerHooks = (function () { | ||
_$jscoverage['mongoose/model.js'][134]++; | ||
_$jscoverage['mongoose/model.js'][160]++; | ||
this.pre("save", (function (next) { | ||
_$jscoverage['mongoose/model.js'][137]++; | ||
_$jscoverage['mongoose/model.js'][163]++; | ||
var subdocs = 0, error = false, self = this; | ||
_$jscoverage['mongoose/model.js'][141]++; | ||
_$jscoverage['mongoose/model.js'][167]++; | ||
var arrays = this.activePaths.map("init", "modify", (function (i) { | ||
_$jscoverage['mongoose/model.js'][143]++; | ||
_$jscoverage['mongoose/model.js'][169]++; | ||
return self.getValue(i); | ||
})).filter((function (val) { | ||
_$jscoverage['mongoose/model.js'][146]++; | ||
_$jscoverage['mongoose/model.js'][172]++; | ||
return (val && val instanceof DocumentArray && val.length); | ||
})); | ||
_$jscoverage['mongoose/model.js'][149]++; | ||
_$jscoverage['mongoose/model.js'][175]++; | ||
if (! arrays.length) { | ||
_$jscoverage['mongoose/model.js'][149]++; | ||
_$jscoverage['mongoose/model.js'][175]++; | ||
return next(); | ||
} | ||
_$jscoverage['mongoose/model.js'][151]++; | ||
_$jscoverage['mongoose/model.js'][177]++; | ||
arrays.forEach((function (array) { | ||
_$jscoverage['mongoose/model.js'][152]++; | ||
_$jscoverage['mongoose/model.js'][178]++; | ||
subdocs += array.length; | ||
_$jscoverage['mongoose/model.js'][153]++; | ||
_$jscoverage['mongoose/model.js'][179]++; | ||
array.forEach((function (value) { | ||
_$jscoverage['mongoose/model.js'][154]++; | ||
_$jscoverage['mongoose/model.js'][180]++; | ||
if (! error) { | ||
_$jscoverage['mongoose/model.js'][155]++; | ||
_$jscoverage['mongoose/model.js'][181]++; | ||
value.save((function (err) { | ||
_$jscoverage['mongoose/model.js'][156]++; | ||
_$jscoverage['mongoose/model.js'][182]++; | ||
if (! error) { | ||
_$jscoverage['mongoose/model.js'][157]++; | ||
_$jscoverage['mongoose/model.js'][183]++; | ||
if (err) { | ||
_$jscoverage['mongoose/model.js'][158]++; | ||
_$jscoverage['mongoose/model.js'][184]++; | ||
error = true; | ||
_$jscoverage['mongoose/model.js'][159]++; | ||
_$jscoverage['mongoose/model.js'][185]++; | ||
next(err); | ||
} | ||
else { | ||
_$jscoverage['mongoose/model.js'][161]++; | ||
_$jscoverage['mongoose/model.js'][187]++; | ||
--subdocs || next(); | ||
@@ -294,24 +363,24 @@ } | ||
})); | ||
_$jscoverage['mongoose/model.js'][168]++; | ||
_$jscoverage['mongoose/model.js'][194]++; | ||
Document.prototype.registerHooks.call(this); | ||
}); | ||
_$jscoverage['mongoose/model.js'][177]++; | ||
_$jscoverage['mongoose/model.js'][203]++; | ||
Model.prototype.__defineGetter__("options", (function () { | ||
_$jscoverage['mongoose/model.js'][178]++; | ||
_$jscoverage['mongoose/model.js'][204]++; | ||
return this.schema? this.schema.options: {}; | ||
})); | ||
_$jscoverage['mongoose/model.js'][185]++; | ||
_$jscoverage['mongoose/model.js'][211]++; | ||
for (var i in EventEmitter.prototype) { | ||
_$jscoverage['mongoose/model.js'][186]++; | ||
_$jscoverage['mongoose/model.js'][212]++; | ||
Model[i] = EventEmitter.prototype[i]; | ||
} | ||
_$jscoverage['mongoose/model.js'][194]++; | ||
_$jscoverage['mongoose/model.js'][220]++; | ||
Model.init = (function () { | ||
_$jscoverage['mongoose/model.js'][196]++; | ||
_$jscoverage['mongoose/model.js'][222]++; | ||
var self = this, indexes = this.schema.indexes, count = indexes.length; | ||
_$jscoverage['mongoose/model.js'][200]++; | ||
_$jscoverage['mongoose/model.js'][226]++; | ||
indexes.forEach((function (index) { | ||
_$jscoverage['mongoose/model.js'][201]++; | ||
_$jscoverage['mongoose/model.js'][227]++; | ||
self.collection.ensureIndex(index[0], index[1], (function () { | ||
_$jscoverage['mongoose/model.js'][202]++; | ||
_$jscoverage['mongoose/model.js'][228]++; | ||
--count || self.emit("index"); | ||
@@ -321,145 +390,194 @@ })); | ||
}); | ||
_$jscoverage['mongoose/model.js'][213]++; | ||
_$jscoverage['mongoose/model.js'][239]++; | ||
Model.schema; | ||
_$jscoverage['mongoose/model.js'][221]++; | ||
_$jscoverage['mongoose/model.js'][247]++; | ||
Model.db; | ||
_$jscoverage['mongoose/model.js'][229]++; | ||
_$jscoverage['mongoose/model.js'][255]++; | ||
Model.collection; | ||
_$jscoverage['mongoose/model.js'][235]++; | ||
_$jscoverage['mongoose/model.js'][261]++; | ||
["db", "collection", "schema", "options"].forEach((function (prop) { | ||
_$jscoverage['mongoose/model.js'][236]++; | ||
_$jscoverage['mongoose/model.js'][262]++; | ||
Model.__defineGetter__(prop, (function () { | ||
_$jscoverage['mongoose/model.js'][237]++; | ||
_$jscoverage['mongoose/model.js'][263]++; | ||
return this.prototype[prop]; | ||
})); | ||
})); | ||
_$jscoverage['mongoose/model.js'][245]++; | ||
_$jscoverage['mongoose/model.js'][271]++; | ||
Document.registerHooks.call(Model, "save", "remove", "init"); | ||
_$jscoverage['mongoose/model.js'][251]++; | ||
_$jscoverage['mongoose/model.js'][277]++; | ||
module.exports = exports = Model; | ||
_$jscoverage['mongoose/model.js'][263]++; | ||
_$jscoverage['mongoose/model.js'][279]++; | ||
Model.remove = (function (query, callback) { | ||
_$jscoverage['mongoose/model.js'][280]++; | ||
var self = this; | ||
_$jscoverage['mongoose/model.js'][281]++; | ||
this.query(query, {}, callback, (function () { | ||
_$jscoverage['mongoose/model.js'][282]++; | ||
var casted = self.castQuery(this.query), queryComplete = this.queryComplete.bind(this); | ||
_$jscoverage['mongoose/model.js'][284]++; | ||
self.collection.remove(casted, queryComplete); | ||
})); | ||
}); | ||
_$jscoverage['mongoose/model.js'][298]++; | ||
Model.query = (function (query, options, callback, onExecute) { | ||
_$jscoverage['mongoose/model.js'][265]++; | ||
_$jscoverage['mongoose/model.js'][300]++; | ||
if ("function" == typeof options) { | ||
_$jscoverage['mongoose/model.js'][266]++; | ||
_$jscoverage['mongoose/model.js'][301]++; | ||
callback = options; | ||
_$jscoverage['mongoose/model.js'][267]++; | ||
_$jscoverage['mongoose/model.js'][302]++; | ||
options = {}; | ||
} | ||
_$jscoverage['mongoose/model.js'][270]++; | ||
_$jscoverage['mongoose/model.js'][305]++; | ||
if (! options) { | ||
_$jscoverage['mongoose/model.js'][271]++; | ||
_$jscoverage['mongoose/model.js'][306]++; | ||
options = {}; | ||
} | ||
_$jscoverage['mongoose/model.js'][274]++; | ||
_$jscoverage['mongoose/model.js'][309]++; | ||
if (! ("safe" in options)) { | ||
_$jscoverage['mongoose/model.js'][275]++; | ||
_$jscoverage['mongoose/model.js'][310]++; | ||
options.safe = this.options.safe; | ||
} | ||
_$jscoverage['mongoose/model.js'][277]++; | ||
_$jscoverage['mongoose/model.js'][312]++; | ||
var query = new Query(query, options, onExecute); | ||
_$jscoverage['mongoose/model.js'][279]++; | ||
_$jscoverage['mongoose/model.js'][314]++; | ||
if (callback) { | ||
_$jscoverage['mongoose/model.js'][280]++; | ||
_$jscoverage['mongoose/model.js'][315]++; | ||
query.addBack(callback); | ||
_$jscoverage['mongoose/model.js'][281]++; | ||
_$jscoverage['mongoose/model.js'][316]++; | ||
query.run(); | ||
} | ||
_$jscoverage['mongoose/model.js'][284]++; | ||
_$jscoverage['mongoose/model.js'][319]++; | ||
return query; | ||
}); | ||
_$jscoverage['mongoose/model.js'][298]++; | ||
_$jscoverage['mongoose/model.js'][333]++; | ||
Model.findQuery = (function (query, fields, options, callback, onExecute) { | ||
_$jscoverage['mongoose/model.js'][299]++; | ||
_$jscoverage['mongoose/model.js'][334]++; | ||
if ("function" == typeof fields) { | ||
_$jscoverage['mongoose/model.js'][300]++; | ||
_$jscoverage['mongoose/model.js'][335]++; | ||
callback = fields; | ||
_$jscoverage['mongoose/model.js'][301]++; | ||
_$jscoverage['mongoose/model.js'][336]++; | ||
fields = {}; | ||
_$jscoverage['mongoose/model.js'][302]++; | ||
_$jscoverage['mongoose/model.js'][337]++; | ||
options = {}; | ||
} | ||
else { | ||
_$jscoverage['mongoose/model.js'][303]++; | ||
_$jscoverage['mongoose/model.js'][338]++; | ||
if ("function" == typeof options) { | ||
_$jscoverage['mongoose/model.js'][304]++; | ||
_$jscoverage['mongoose/model.js'][339]++; | ||
callback = options; | ||
_$jscoverage['mongoose/model.js'][305]++; | ||
_$jscoverage['mongoose/model.js'][340]++; | ||
options = {}; | ||
} | ||
} | ||
_$jscoverage['mongoose/model.js'][308]++; | ||
_$jscoverage['mongoose/model.js'][343]++; | ||
var query = new FindQuery(query, fields, options, onExecute); | ||
_$jscoverage['mongoose/model.js'][310]++; | ||
_$jscoverage['mongoose/model.js'][345]++; | ||
if (callback) { | ||
_$jscoverage['mongoose/model.js'][311]++; | ||
query.addBack(callback); | ||
_$jscoverage['mongoose/model.js'][312]++; | ||
query.run(); | ||
_$jscoverage['mongoose/model.js'][346]++; | ||
query.run(callback); | ||
} | ||
_$jscoverage['mongoose/model.js'][315]++; | ||
_$jscoverage['mongoose/model.js'][349]++; | ||
return query; | ||
}); | ||
_$jscoverage['mongoose/model.js'][330]++; | ||
_$jscoverage['mongoose/model.js'][364]++; | ||
Model.castQuery = (function (query) { | ||
_$jscoverage['mongoose/model.js'][331]++; | ||
var ret = {}; | ||
_$jscoverage['mongoose/model.js'][333]++; | ||
_$jscoverage['mongoose/model.js'][365]++; | ||
var ret = {}, self = this; | ||
_$jscoverage['mongoose/model.js'][368]++; | ||
for (var i in query) { | ||
_$jscoverage['mongoose/model.js'][334]++; | ||
_$jscoverage['mongoose/model.js'][369]++; | ||
if (query[i] === null || query[i] === undefined) { | ||
_$jscoverage['mongoose/model.js'][335]++; | ||
_$jscoverage['mongoose/model.js'][370]++; | ||
ret[i] = query[i]; | ||
} | ||
else { | ||
_$jscoverage['mongoose/model.js'][337]++; | ||
if (query[i].constructor == Object || query[i].constructor == RegExp || Array.isArray(query[i])) { | ||
_$jscoverage['mongoose/model.js'][339]++; | ||
_$jscoverage['mongoose/model.js'][371]++; | ||
if (query[i].constructor == Object) { | ||
_$jscoverage['mongoose/model.js'][372]++; | ||
ret[i] = query[i]; | ||
_$jscoverage['mongoose/model.js'][373]++; | ||
Object.keys(query[i]).filter((function (key) { | ||
_$jscoverage['mongoose/model.js'][374]++; | ||
return key.charAt(0) === "$"; | ||
})).forEach((function (key) { | ||
_$jscoverage['mongoose/model.js'][376]++; | ||
var schema = self.schema.path(i); | ||
_$jscoverage['mongoose/model.js'][378]++; | ||
if (key == "$in") { | ||
_$jscoverage['mongoose/model.js'][380]++; | ||
ret[i][key] = ret[i][key].map(schema.cast); | ||
} | ||
else { | ||
_$jscoverage['mongoose/model.js'][382]++; | ||
ret[i][key] = schema.cast(query[i][key]); | ||
} | ||
_$jscoverage['mongoose/model.js'][386]++; | ||
if (ret[i][key]._path) { | ||
_$jscoverage['mongoose/model.js'][387]++; | ||
ret[i][key] = ret[i][key].valueOf(); | ||
} | ||
})); | ||
} | ||
else { | ||
_$jscoverage['mongoose/model.js'][341]++; | ||
ret[i] = this.schema.path(i).cast(query[i]); | ||
_$jscoverage['mongoose/model.js'][389]++; | ||
if (query[i].constructor == RegExp || Array.isArray(query[i])) { | ||
_$jscoverage['mongoose/model.js'][390]++; | ||
ret[i] = query[i]; | ||
} | ||
else { | ||
_$jscoverage['mongoose/model.js'][392]++; | ||
ret[i] = this.schema.path(i).cast(query[i]); | ||
} | ||
} | ||
} | ||
} | ||
_$jscoverage['mongoose/model.js'][344]++; | ||
_$jscoverage['mongoose/model.js'][395]++; | ||
return ret; | ||
}); | ||
_$jscoverage['mongoose/model.js'][363]++; | ||
_$jscoverage['mongoose/model.js'][414]++; | ||
Model.find = (function (query, fields, options, callback) { | ||
_$jscoverage['mongoose/model.js'][364]++; | ||
_$jscoverage['mongoose/model.js'][415]++; | ||
var self = this; | ||
_$jscoverage['mongoose/model.js'][366]++; | ||
_$jscoverage['mongoose/model.js'][417]++; | ||
return this.findQuery(query, fields, options, callback, (function (query) { | ||
_$jscoverage['mongoose/model.js'][367]++; | ||
_$jscoverage['mongoose/model.js'][418]++; | ||
var q = this, casted = self.castQuery(this.query); | ||
_$jscoverage['mongoose/model.js'][370]++; | ||
self.collection.find(casted, this.fields, this.options, (function (err, cursor) { | ||
_$jscoverage['mongoose/model.js'][371]++; | ||
_$jscoverage['mongoose/model.js'][421]++; | ||
if (this.fields) { | ||
_$jscoverage['mongoose/model.js'][422]++; | ||
this.options.fields = this.fields; | ||
} | ||
_$jscoverage['mongoose/model.js'][424]++; | ||
self.collection.find(casted, this.options, (function (err, cursor) { | ||
_$jscoverage['mongoose/model.js'][425]++; | ||
if (err) { | ||
_$jscoverage['mongoose/model.js'][371]++; | ||
_$jscoverage['mongoose/model.js'][425]++; | ||
return q.queryComplete(err); | ||
} | ||
_$jscoverage['mongoose/model.js'][373]++; | ||
_$jscoverage['mongoose/model.js'][427]++; | ||
cursor.toArray((function (err, docs) { | ||
_$jscoverage['mongoose/model.js'][374]++; | ||
_$jscoverage['mongoose/model.js'][428]++; | ||
if (err) { | ||
_$jscoverage['mongoose/model.js'][374]++; | ||
_$jscoverage['mongoose/model.js'][428]++; | ||
return q.queryComplete(err); | ||
} | ||
_$jscoverage['mongoose/model.js'][376]++; | ||
_$jscoverage['mongoose/model.js'][430]++; | ||
var arr = [], count = docs.length; | ||
_$jscoverage['mongoose/model.js'][379]++; | ||
_$jscoverage['mongoose/model.js'][433]++; | ||
if (! count) { | ||
_$jscoverage['mongoose/model.js'][379]++; | ||
_$jscoverage['mongoose/model.js'][433]++; | ||
return q.queryComplete(null, []); | ||
} | ||
_$jscoverage['mongoose/model.js'][381]++; | ||
_$jscoverage['mongoose/model.js'][435]++; | ||
for (var i = 0, l = docs.length; i < l; i++) { | ||
_$jscoverage['mongoose/model.js'][382]++; | ||
_$jscoverage['mongoose/model.js'][436]++; | ||
arr[i] = new self(); | ||
_$jscoverage['mongoose/model.js'][383]++; | ||
arr[i].init(docs[i], (function () { | ||
_$jscoverage['mongoose/model.js'][384]++; | ||
_$jscoverage['mongoose/model.js'][437]++; | ||
arr[i].init(docs[i], (function (err) { | ||
_$jscoverage['mongoose/model.js'][438]++; | ||
if (err) { | ||
_$jscoverage['mongoose/model.js'][438]++; | ||
return q.queryComplete(err); | ||
} | ||
_$jscoverage['mongoose/model.js'][439]++; | ||
--count || q.queryComplete(null, arr); | ||
@@ -472,32 +590,42 @@ })); | ||
}); | ||
_$jscoverage['mongoose/model.js'][399]++; | ||
_$jscoverage['mongoose/model.js'][454]++; | ||
Model.findById = (function (id, fields, options, callback) { | ||
_$jscoverage['mongoose/model.js'][400]++; | ||
_$jscoverage['mongoose/model.js'][455]++; | ||
return this.findOne({_id: id}, fields, options, callback); | ||
}); | ||
_$jscoverage['mongoose/model.js'][412]++; | ||
_$jscoverage['mongoose/model.js'][467]++; | ||
Model.findOne = (function (query, fields, options, callback) { | ||
_$jscoverage['mongoose/model.js'][413]++; | ||
_$jscoverage['mongoose/model.js'][468]++; | ||
var self = this; | ||
_$jscoverage['mongoose/model.js'][415]++; | ||
_$jscoverage['mongoose/model.js'][470]++; | ||
return this.findQuery(query, fields, options, callback, (function () { | ||
_$jscoverage['mongoose/model.js'][416]++; | ||
_$jscoverage['mongoose/model.js'][471]++; | ||
var q = this, casted = self.castQuery(this.query); | ||
_$jscoverage['mongoose/model.js'][419]++; | ||
self.collection.findOne(casted, this.fields, (function (err, doc) { | ||
_$jscoverage['mongoose/model.js'][420]++; | ||
_$jscoverage['mongoose/model.js'][474]++; | ||
if (this.fields) { | ||
_$jscoverage['mongoose/model.js'][475]++; | ||
this.options.fields = this.fields; | ||
} | ||
_$jscoverage['mongoose/model.js'][477]++; | ||
self.collection.findOne(casted, this.options, (function (err, doc) { | ||
_$jscoverage['mongoose/model.js'][478]++; | ||
if (err) { | ||
_$jscoverage['mongoose/model.js'][420]++; | ||
_$jscoverage['mongoose/model.js'][478]++; | ||
return q.queryComplete(err); | ||
} | ||
_$jscoverage['mongoose/model.js'][422]++; | ||
_$jscoverage['mongoose/model.js'][480]++; | ||
if (! doc) { | ||
_$jscoverage['mongoose/model.js'][422]++; | ||
_$jscoverage['mongoose/model.js'][480]++; | ||
return q.queryComplete(null, null); | ||
} | ||
_$jscoverage['mongoose/model.js'][424]++; | ||
_$jscoverage['mongoose/model.js'][482]++; | ||
var casted = new self(); | ||
_$jscoverage['mongoose/model.js'][426]++; | ||
casted.init(doc, (function () { | ||
_$jscoverage['mongoose/model.js'][427]++; | ||
_$jscoverage['mongoose/model.js'][484]++; | ||
casted.init(doc, (function (err) { | ||
_$jscoverage['mongoose/model.js'][485]++; | ||
if (err) { | ||
_$jscoverage['mongoose/model.js'][485]++; | ||
return q.queryComplete(err); | ||
} | ||
_$jscoverage['mongoose/model.js'][486]++; | ||
q.queryComplete(null, casted); | ||
@@ -508,62 +636,62 @@ })); | ||
}); | ||
_$jscoverage['mongoose/model.js'][441]++; | ||
_$jscoverage['mongoose/model.js'][500]++; | ||
Model.count = (function (query, callback) { | ||
_$jscoverage['mongoose/model.js'][442]++; | ||
_$jscoverage['mongoose/model.js'][501]++; | ||
var self = this; | ||
_$jscoverage['mongoose/model.js'][444]++; | ||
_$jscoverage['mongoose/model.js'][503]++; | ||
return this.query(query, {}, callback, (function () { | ||
_$jscoverage['mongoose/model.js'][445]++; | ||
_$jscoverage['mongoose/model.js'][504]++; | ||
var casted = self.castQuery(this.query); | ||
_$jscoverage['mongoose/model.js'][446]++; | ||
_$jscoverage['mongoose/model.js'][505]++; | ||
self.collection.count(casted, this.queryComplete.bind(this)); | ||
})); | ||
}); | ||
_$jscoverage['mongoose/model.js'][471]++; | ||
_$jscoverage['mongoose/model.js'][530]++; | ||
Model.update = (function (query, doc, options, callback) { | ||
_$jscoverage['mongoose/model.js'][472]++; | ||
_$jscoverage['mongoose/model.js'][531]++; | ||
var self = this; | ||
_$jscoverage['mongoose/model.js'][474]++; | ||
_$jscoverage['mongoose/model.js'][533]++; | ||
return this.query(query, options, callback, (function () { | ||
_$jscoverage['mongoose/model.js'][475]++; | ||
_$jscoverage['mongoose/model.js'][534]++; | ||
var castQuery = self.castQuery(this.query), castDoc = self.castQuery(doc), queryComplete = this.queryComplete.bind(this); | ||
_$jscoverage['mongoose/model.js'][479]++; | ||
_$jscoverage['mongoose/model.js'][538]++; | ||
self.collection.update(castQuery, castDoc, this.options, queryComplete); | ||
})); | ||
}); | ||
_$jscoverage['mongoose/model.js'][494]++; | ||
_$jscoverage['mongoose/model.js'][553]++; | ||
Model.compile = (function (name, schema, collectionName, connection, base) { | ||
_$jscoverage['mongoose/model.js'][496]++; | ||
_$jscoverage['mongoose/model.js'][555]++; | ||
function model() { | ||
_$jscoverage['mongoose/model.js'][497]++; | ||
_$jscoverage['mongoose/model.js'][556]++; | ||
Model.apply(this, arguments); | ||
} | ||
_$jscoverage['mongoose/model.js'][498]++; | ||
_$jscoverage['mongoose/model.js'][557]++; | ||
; | ||
_$jscoverage['mongoose/model.js'][500]++; | ||
_$jscoverage['mongoose/model.js'][559]++; | ||
model.name = name; | ||
_$jscoverage['mongoose/model.js'][501]++; | ||
_$jscoverage['mongoose/model.js'][560]++; | ||
model.__proto__ = Model; | ||
_$jscoverage['mongoose/model.js'][502]++; | ||
_$jscoverage['mongoose/model.js'][561]++; | ||
model.prototype.__proto__ = Model.prototype; | ||
_$jscoverage['mongoose/model.js'][503]++; | ||
_$jscoverage['mongoose/model.js'][562]++; | ||
model.prototype.base = base; | ||
_$jscoverage['mongoose/model.js'][504]++; | ||
_$jscoverage['mongoose/model.js'][563]++; | ||
model.prototype.schema = schema; | ||
_$jscoverage['mongoose/model.js'][505]++; | ||
_$jscoverage['mongoose/model.js'][564]++; | ||
model.prototype.db = connection; | ||
_$jscoverage['mongoose/model.js'][506]++; | ||
_$jscoverage['mongoose/model.js'][565]++; | ||
model.prototype.collection = connection.collection(collectionName); | ||
_$jscoverage['mongoose/model.js'][509]++; | ||
for (var i in schema._methods) { | ||
_$jscoverage['mongoose/model.js'][510]++; | ||
model.prototype[i] = schema._methods[i]; | ||
_$jscoverage['mongoose/model.js'][568]++; | ||
for (var i in schema.methods) { | ||
_$jscoverage['mongoose/model.js'][569]++; | ||
model.prototype[i] = schema.methods[i]; | ||
} | ||
_$jscoverage['mongoose/model.js'][513]++; | ||
for (var i in schema._statics) { | ||
_$jscoverage['mongoose/model.js'][514]++; | ||
model[i] = schema._statics[i]; | ||
_$jscoverage['mongoose/model.js'][572]++; | ||
for (var i in schema.statics) { | ||
_$jscoverage['mongoose/model.js'][573]++; | ||
model[i] = schema.statics[i]; | ||
} | ||
_$jscoverage['mongoose/model.js'][516]++; | ||
_$jscoverage['mongoose/model.js'][575]++; | ||
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);"," } else {"," // send delta"," var self = this"," , delta;",""," delta = this.activePaths.map('modify', function (path) {"," return self.getValue(path);"," }).reduce( function (delta, type) {"," if (type.doAtomics) {"," type._atomics.forEach( function (op) {"," var obj = delta[op[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 {"," delta[type._path] = this.doc[type._path];"," }"," return delta;"," }, {});",""," this.collection.findAndModify({ _id: this.doc._id }, [], delta, {}, fn);"," }","};","","/**"," * 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;","","/**"," * 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.addBack(callback);"," query.run();"," }",""," return query;","};","","/**"," * Casts a query"," *"," * Examples:"," * "," * // will return { _id: ObjectId }"," * castQuery({ _id: '4c40f33a37483d8e14000001' })"," * "," * @param {Object} query"," * @api private"," */","","Model.castQuery = function (query) {"," var ret = {};",""," for (var i in query){"," if (query[i] === null || query[i] === undefined)"," ret[i] = query[i]"," // TODO: cast within nested modifiers ($gt, $ne, etc)"," else if (query[i].constructor == Object || 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);",""," self.collection.find(casted, this.fields, 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 () {"," --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);",""," self.collection.findOne(casted, this.fields, function (err, doc) {"," if (err) return q.queryComplete(err);",""," if (!doc) return q.queryComplete(null, null);"," "," var casted = new self();",""," casted.init(doc, function () {"," 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));"," });","};","","/**"," * 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')"," , 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));"," });","};","","/**"," * 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;","};"]; |
@@ -6,3 +6,2 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/query.js'][6] = 0; | ||
_$jscoverage['mongoose/query.js'][14] = 0; | ||
_$jscoverage['mongoose/query.js'][15] = 0; | ||
@@ -14,102 +13,130 @@ _$jscoverage['mongoose/query.js'][16] = 0; | ||
_$jscoverage['mongoose/query.js'][20] = 0; | ||
_$jscoverage['mongoose/query.js'][26] = 0; | ||
_$jscoverage['mongoose/query.js'][34] = 0; | ||
_$jscoverage['mongoose/query.js'][35] = 0; | ||
_$jscoverage['mongoose/query.js'][37] = 0; | ||
_$jscoverage['mongoose/query.js'][21] = 0; | ||
_$jscoverage['mongoose/query.js'][27] = 0; | ||
_$jscoverage['mongoose/query.js'][36] = 0; | ||
_$jscoverage['mongoose/query.js'][38] = 0; | ||
_$jscoverage['mongoose/query.js'][39] = 0; | ||
_$jscoverage['mongoose/query.js'][41] = 0; | ||
_$jscoverage['mongoose/query.js'][45] = 0; | ||
_$jscoverage['mongoose/query.js'][56] = 0; | ||
_$jscoverage['mongoose/query.js'][57] = 0; | ||
_$jscoverage['mongoose/query.js'][58] = 0; | ||
_$jscoverage['mongoose/query.js'][59] = 0; | ||
_$jscoverage['mongoose/query.js'][60] = 0; | ||
_$jscoverage['mongoose/query.js'][70] = 0; | ||
_$jscoverage['mongoose/query.js'][71] = 0; | ||
_$jscoverage['mongoose/query.js'][72] = 0; | ||
_$jscoverage['mongoose/query.js'][73] = 0; | ||
_$jscoverage['mongoose/query.js'][75] = 0; | ||
_$jscoverage['mongoose/query.js'][76] = 0; | ||
_$jscoverage['mongoose/query.js'][42] = 0; | ||
_$jscoverage['mongoose/query.js'][44] = 0; | ||
_$jscoverage['mongoose/query.js'][46] = 0; | ||
_$jscoverage['mongoose/query.js'][47] = 0; | ||
_$jscoverage['mongoose/query.js'][48] = 0; | ||
_$jscoverage['mongoose/query.js'][50] = 0; | ||
_$jscoverage['mongoose/query.js'][54] = 0; | ||
_$jscoverage['mongoose/query.js'][65] = 0; | ||
_$jscoverage['mongoose/query.js'][66] = 0; | ||
_$jscoverage['mongoose/query.js'][67] = 0; | ||
_$jscoverage['mongoose/query.js'][68] = 0; | ||
_$jscoverage['mongoose/query.js'][69] = 0; | ||
_$jscoverage['mongoose/query.js'][79] = 0; | ||
_$jscoverage['mongoose/query.js'][80] = 0; | ||
_$jscoverage['mongoose/query.js'][81] = 0; | ||
_$jscoverage['mongoose/query.js'][82] = 0; | ||
_$jscoverage['mongoose/query.js'][84] = 0; | ||
_$jscoverage['mongoose/query.js'][85] = 0; | ||
_$jscoverage['mongoose/query.js'][86] = 0; | ||
_$jscoverage['mongoose/query.js'][87] = 0; | ||
_$jscoverage['mongoose/query.js'][89] = 0; | ||
_$jscoverage['mongoose/query.js'][91] = 0; | ||
_$jscoverage['mongoose/query.js'][100] = 0; | ||
_$jscoverage['mongoose/query.js'][101] = 0; | ||
_$jscoverage['mongoose/query.js'][102] = 0; | ||
_$jscoverage['mongoose/query.js'][103] = 0; | ||
_$jscoverage['mongoose/query.js'][109] = 0; | ||
_$jscoverage['mongoose/query.js'][124] = 0; | ||
_$jscoverage['mongoose/query.js'][125] = 0; | ||
_$jscoverage['mongoose/query.js'][126] = 0; | ||
_$jscoverage['mongoose/query.js'][127] = 0; | ||
_$jscoverage['mongoose/query.js'][128] = 0; | ||
_$jscoverage['mongoose/query.js'][129] = 0; | ||
_$jscoverage['mongoose/query.js'][130] = 0; | ||
_$jscoverage['mongoose/query.js'][131] = 0; | ||
_$jscoverage['mongoose/query.js'][132] = 0; | ||
_$jscoverage['mongoose/query.js'][95] = 0; | ||
_$jscoverage['mongoose/query.js'][96] = 0; | ||
_$jscoverage['mongoose/query.js'][106] = 0; | ||
_$jscoverage['mongoose/query.js'][107] = 0; | ||
_$jscoverage['mongoose/query.js'][117] = 0; | ||
_$jscoverage['mongoose/query.js'][118] = 0; | ||
_$jscoverage['mongoose/query.js'][133] = 0; | ||
_$jscoverage['mongoose/query.js'][136] = 0; | ||
_$jscoverage['mongoose/query.js'][134] = 0; | ||
_$jscoverage['mongoose/query.js'][135] = 0; | ||
_$jscoverage['mongoose/query.js'][137] = 0; | ||
_$jscoverage['mongoose/query.js'][139] = 0; | ||
_$jscoverage['mongoose/query.js'][140] = 0; | ||
_$jscoverage['mongoose/query.js'][143] = 0; | ||
_$jscoverage['mongoose/query.js'][145] = 0; | ||
_$jscoverage['mongoose/query.js'][152] = 0; | ||
_$jscoverage['mongoose/query.js'][153] = 0; | ||
_$jscoverage['mongoose/query.js'][154] = 0; | ||
_$jscoverage['mongoose/query.js'][156] = 0; | ||
_$jscoverage['mongoose/query.js'][158] = 0; | ||
_$jscoverage['mongoose/query.js'][167] = 0; | ||
_$jscoverage['mongoose/query.js'][168] = 0; | ||
_$jscoverage['mongoose/query.js'][169] = 0; | ||
_$jscoverage['mongoose/query.js'][170] = 0; | ||
_$jscoverage['mongoose/query.js'][176] = 0; | ||
_$jscoverage['mongoose/query.js'][191] = 0; | ||
_$jscoverage['mongoose/query.js'][192] = 0; | ||
_$jscoverage['mongoose/query.js'][193] = 0; | ||
_$jscoverage['mongoose/query.js'][194] = 0; | ||
_$jscoverage['mongoose/query.js'][195] = 0; | ||
_$jscoverage['mongoose/query.js'][196] = 0; | ||
_$jscoverage['mongoose/query.js'][197] = 0; | ||
_$jscoverage['mongoose/query.js'][198] = 0; | ||
_$jscoverage['mongoose/query.js'][199] = 0; | ||
_$jscoverage['mongoose/query.js'][200] = 0; | ||
_$jscoverage['mongoose/query.js'][203] = 0; | ||
_$jscoverage['mongoose/query.js'][210] = 0; | ||
_$jscoverage['mongoose/query.js'][212] = 0; | ||
} | ||
_$jscoverage['mongoose/query.js'][6]++; | ||
var Promise = require("./promise"); | ||
_$jscoverage['mongoose/query.js'][14]++; | ||
var Promise = require("./promise"), inGroupsOf = require("./utils").inGroupsOf; | ||
_$jscoverage['mongoose/query.js'][15]++; | ||
function Query(query, options, onExecute) { | ||
_$jscoverage['mongoose/query.js'][15]++; | ||
_$jscoverage['mongoose/query.js'][16]++; | ||
Promise.call(this); | ||
_$jscoverage['mongoose/query.js'][16]++; | ||
_$jscoverage['mongoose/query.js'][17]++; | ||
this.query = query || {}; | ||
_$jscoverage['mongoose/query.js'][17]++; | ||
_$jscoverage['mongoose/query.js'][18]++; | ||
this.options = options || {}; | ||
_$jscoverage['mongoose/query.js'][18]++; | ||
_$jscoverage['mongoose/query.js'][19]++; | ||
this.onExecute = onExecute; | ||
_$jscoverage['mongoose/query.js'][19]++; | ||
_$jscoverage['mongoose/query.js'][20]++; | ||
this.executed = false; | ||
} | ||
_$jscoverage['mongoose/query.js'][20]++; | ||
_$jscoverage['mongoose/query.js'][21]++; | ||
; | ||
_$jscoverage['mongoose/query.js'][26]++; | ||
_$jscoverage['mongoose/query.js'][27]++; | ||
Query.prototype.__proto__ = Promise.prototype; | ||
_$jscoverage['mongoose/query.js'][34]++; | ||
Query.prototype.run = (function () { | ||
_$jscoverage['mongoose/query.js'][35]++; | ||
_$jscoverage['mongoose/query.js'][36]++; | ||
Query.prototype.exec = Query.prototype.run = (function (fn) { | ||
_$jscoverage['mongoose/query.js'][38]++; | ||
if (this.executed) { | ||
_$jscoverage['mongoose/query.js'][39]++; | ||
return this; | ||
} | ||
_$jscoverage['mongoose/query.js'][41]++; | ||
if (fn) { | ||
_$jscoverage['mongoose/query.js'][42]++; | ||
this.addBack(fn); | ||
} | ||
_$jscoverage['mongoose/query.js'][44]++; | ||
this.executed = true; | ||
_$jscoverage['mongoose/query.js'][37]++; | ||
_$jscoverage['mongoose/query.js'][46]++; | ||
if (this.onExecute) { | ||
_$jscoverage['mongoose/query.js'][38]++; | ||
_$jscoverage['mongoose/query.js'][47]++; | ||
try { | ||
_$jscoverage['mongoose/query.js'][39]++; | ||
_$jscoverage['mongoose/query.js'][48]++; | ||
this.onExecute.call(this); | ||
} | ||
catch (e) { | ||
_$jscoverage['mongoose/query.js'][41]++; | ||
_$jscoverage['mongoose/query.js'][50]++; | ||
this.queryComplete(e); | ||
} | ||
} | ||
_$jscoverage['mongoose/query.js'][45]++; | ||
_$jscoverage['mongoose/query.js'][54]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/query.js'][56]++; | ||
_$jscoverage['mongoose/query.js'][65]++; | ||
Query.prototype.set = (function (key, value) { | ||
_$jscoverage['mongoose/query.js'][57]++; | ||
_$jscoverage['mongoose/query.js'][66]++; | ||
if (arguments.length == 1) { | ||
_$jscoverage['mongoose/query.js'][58]++; | ||
_$jscoverage['mongoose/query.js'][67]++; | ||
return this.options[key]; | ||
} | ||
_$jscoverage['mongoose/query.js'][59]++; | ||
_$jscoverage['mongoose/query.js'][68]++; | ||
this.options[key] = value; | ||
_$jscoverage['mongoose/query.js'][60]++; | ||
_$jscoverage['mongoose/query.js'][69]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/query.js'][70]++; | ||
_$jscoverage['mongoose/query.js'][79]++; | ||
Query.prototype.where = (function (obj, value) { | ||
_$jscoverage['mongoose/query.js'][71]++; | ||
_$jscoverage['mongoose/query.js'][80]++; | ||
if (value == undefined) { | ||
_$jscoverage['mongoose/query.js'][72]++; | ||
_$jscoverage['mongoose/query.js'][81]++; | ||
for (var i in obj) { | ||
_$jscoverage['mongoose/query.js'][73]++; | ||
_$jscoverage['mongoose/query.js'][82]++; | ||
this.query[i] = obj[i]; | ||
@@ -119,42 +146,74 @@ } | ||
else { | ||
_$jscoverage['mongoose/query.js'][75]++; | ||
_$jscoverage['mongoose/query.js'][84]++; | ||
this.query[obj] = value; | ||
} | ||
_$jscoverage['mongoose/query.js'][76]++; | ||
_$jscoverage['mongoose/query.js'][85]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/query.js'][85]++; | ||
_$jscoverage['mongoose/query.js'][95]++; | ||
Query.prototype.skip = (function (v) { | ||
_$jscoverage['mongoose/query.js'][96]++; | ||
return this.set("skip", v); | ||
}); | ||
_$jscoverage['mongoose/query.js'][106]++; | ||
Query.prototype.limit = (function (v) { | ||
_$jscoverage['mongoose/query.js'][107]++; | ||
return this.set("limit", v); | ||
}); | ||
_$jscoverage['mongoose/query.js'][117]++; | ||
Query.prototype.timeout = (function (v) { | ||
_$jscoverage['mongoose/query.js'][118]++; | ||
return this.set("timeout", v); | ||
}); | ||
_$jscoverage['mongoose/query.js'][133]++; | ||
Query.prototype.sort = (function () { | ||
_$jscoverage['mongoose/query.js'][134]++; | ||
if (! this.options.sort) { | ||
_$jscoverage['mongoose/query.js'][135]++; | ||
this.options.sort = []; | ||
} | ||
_$jscoverage['mongoose/query.js'][137]++; | ||
var args = [].slice.call(arguments), query = this; | ||
_$jscoverage['mongoose/query.js'][139]++; | ||
inGroupsOf(2, args, (function (field, value) { | ||
_$jscoverage['mongoose/query.js'][140]++; | ||
query.options.sort.push([field, value]); | ||
})); | ||
_$jscoverage['mongoose/query.js'][143]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/query.js'][152]++; | ||
Query.prototype.queryComplete = (function (err) { | ||
_$jscoverage['mongoose/query.js'][86]++; | ||
_$jscoverage['mongoose/query.js'][153]++; | ||
if (err) { | ||
_$jscoverage['mongoose/query.js'][87]++; | ||
_$jscoverage['mongoose/query.js'][154]++; | ||
this.error(err); | ||
} | ||
else { | ||
_$jscoverage['mongoose/query.js'][89]++; | ||
_$jscoverage['mongoose/query.js'][156]++; | ||
this.complete.apply(this, Array.prototype.slice.call(arguments, 1)); | ||
} | ||
_$jscoverage['mongoose/query.js'][91]++; | ||
_$jscoverage['mongoose/query.js'][158]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/query.js'][100]++; | ||
_$jscoverage['mongoose/query.js'][167]++; | ||
function FindQuery(query, fields, options, onExecute) { | ||
_$jscoverage['mongoose/query.js'][101]++; | ||
_$jscoverage['mongoose/query.js'][168]++; | ||
this.fields = fields || {}; | ||
_$jscoverage['mongoose/query.js'][102]++; | ||
_$jscoverage['mongoose/query.js'][169]++; | ||
Query.call(this, query, options, onExecute); | ||
} | ||
_$jscoverage['mongoose/query.js'][103]++; | ||
_$jscoverage['mongoose/query.js'][170]++; | ||
; | ||
_$jscoverage['mongoose/query.js'][109]++; | ||
_$jscoverage['mongoose/query.js'][176]++; | ||
FindQuery.prototype.__proto__ = Query.prototype; | ||
_$jscoverage['mongoose/query.js'][124]++; | ||
_$jscoverage['mongoose/query.js'][191]++; | ||
FindQuery.prototype.select = (function () { | ||
_$jscoverage['mongoose/query.js'][125]++; | ||
_$jscoverage['mongoose/query.js'][192]++; | ||
for (var i = 0, l = arguments.length; i < l; i++) { | ||
_$jscoverage['mongoose/query.js'][126]++; | ||
_$jscoverage['mongoose/query.js'][193]++; | ||
if (Array.isArray(arguments[i])) { | ||
_$jscoverage['mongoose/query.js'][127]++; | ||
_$jscoverage['mongoose/query.js'][194]++; | ||
for (var a = 0, l = arguments[i].length; a < l; a++) { | ||
_$jscoverage['mongoose/query.js'][128]++; | ||
_$jscoverage['mongoose/query.js'][195]++; | ||
this.fields[arguments[i][a]] = 1; | ||
@@ -164,7 +223,7 @@ } | ||
else { | ||
_$jscoverage['mongoose/query.js'][129]++; | ||
_$jscoverage['mongoose/query.js'][196]++; | ||
if ("object" == typeof arguments[i]) { | ||
_$jscoverage['mongoose/query.js'][130]++; | ||
_$jscoverage['mongoose/query.js'][197]++; | ||
for (var a in arguments[i]) { | ||
_$jscoverage['mongoose/query.js'][131]++; | ||
_$jscoverage['mongoose/query.js'][198]++; | ||
this.fields[a] = arguments[i][a]; | ||
@@ -174,5 +233,5 @@ } | ||
else { | ||
_$jscoverage['mongoose/query.js'][132]++; | ||
_$jscoverage['mongoose/query.js'][199]++; | ||
if ("string" == typeof arguments[i]) { | ||
_$jscoverage['mongoose/query.js'][133]++; | ||
_$jscoverage['mongoose/query.js'][200]++; | ||
this.fields[arguments[i]] = 1; | ||
@@ -183,9 +242,9 @@ } | ||
} | ||
_$jscoverage['mongoose/query.js'][136]++; | ||
_$jscoverage['mongoose/query.js'][203]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/query.js'][143]++; | ||
_$jscoverage['mongoose/query.js'][210]++; | ||
exports.Query = Query; | ||
_$jscoverage['mongoose/query.js'][145]++; | ||
_$jscoverage['mongoose/query.js'][212]++; | ||
exports.FindQuery = FindQuery; | ||
_$jscoverage['mongoose/query.js'].source = ["","/**"," * Module dependencies."," */","","var Promise = require('./promise');","","/**"," * Query constructor"," *"," * @api private"," */","","function Query (query, options, onExecute) {"," Promise.call(this);"," this.query = query || {};"," this.options = options || {};"," this.onExecute = onExecute;"," this.executed = false;","};","","/**"," * Inherits from Promise."," */","","Query.prototype.__proto__ = Promise.prototype;","","/**"," * Runs the Query"," *"," * @api private"," */","","Query.prototype.run = function () {"," this.executed = true;"," "," if (this.onExecute) {"," try {"," this.onExecute.call(this);"," } catch (e) {"," this.queryComplete(e);"," }"," }",""," return this;","};","","/**"," * Sets an option"," *"," * @param {String} key"," * @param {Object} optional value"," * @api public"," */","","Query.prototype.set = function (key, value) {"," if (arguments.length == 1)"," return this.options[key];"," this.options[key] = value;"," return this;","};","","/**"," * Add conditions to query"," *"," * @param {Object} query"," * @api public"," */","","Query.prototype.where = function (obj, value) {"," if (value == undefined)"," for (var i in obj)"," this.query[i] = obj[i];"," else"," this.query[obj] = value;"," return this;","};","","/**"," * Resolves the promise from a driver response"," *"," * @api private"," */","","Query.prototype.queryComplete = function (err) {"," if (err)"," this.error(err);"," else"," this.complete.apply(this, Array.prototype.slice.call(arguments, 1));",""," return this;","};","","/**"," * Find Query constructor (for queries that retrieve docs)"," *"," * @api private"," */","","function FindQuery (query, fields, options, onExecute) {"," this.fields = fields || {};"," Query.call(this, query, options, onExecute);","};","","/**"," * Inherits from Query."," */","","FindQuery.prototype.__proto__ = Query.prototype;","","/**"," * Specifies fields to return"," *"," * Examples:"," *"," * // these three are equivalent"," * query.select('field', 'field2')"," * query.select({ field: 1, field2: 1 })"," * query.select(('field', 'field2');"," *"," * @api public"," */","","FindQuery.prototype.select = function () {"," for (var i = 0, l = arguments.length; i < l; i++) {"," if (Array.isArray(arguments[i])) {"," for (var a = 0, l = arguments[i].length; a < l; a++)"," this.fields[arguments[i][a]] = 1;"," } else if ('object' == typeof arguments[i]) {"," for (var a in arguments[i])"," this.fields[a] = arguments[i][a];"," } else if ('string' == typeof arguments[i]) {"," this.fields[arguments[i]] = 1;"," }"," }"," return this;","};","","/**"," * Module exports"," */","","exports.Query = Query;","","exports.FindQuery = FindQuery;"]; | ||
_$jscoverage['mongoose/query.js'].source = ["","/**"," * Module dependencies."," */","","var Promise = require('./promise')"," , inGroupsOf = require('./utils').inGroupsOf;","","/**"," * Query constructor"," *"," * @api private"," */","","function Query (query, options, onExecute) {"," Promise.call(this);"," this.query = query || {};"," this.options = options || {};"," this.onExecute = onExecute;"," this.executed = false;","};","","/**"," * Inherits from Promise."," */","","Query.prototype.__proto__ = Promise.prototype;","","/**"," * Runs the Query"," *"," * @param {Function} optional back"," * @api private"," */","","Query.prototype.exec = ","Query.prototype.run = function (fn) {"," if (this.executed)"," return this;",""," if (fn)"," this.addBack(fn);",""," this.executed = true;"," "," if (this.onExecute) {"," try {"," this.onExecute.call(this);"," } catch (e) {"," this.queryComplete(e);"," }"," }",""," return this;","};","","/**"," * Sets an option"," *"," * @param {String} key"," * @param {Object} optional value"," * @api public"," */","","Query.prototype.set = function (key, value) {"," if (arguments.length == 1)"," return this.options[key];"," this.options[key] = value;"," return this;","};","","/**"," * Add conditions to query"," *"," * @param {Object} query"," * @api public"," */","","Query.prototype.where = function (obj, value) {"," if (value == undefined)"," for (var i in obj)"," this.query[i] = obj[i];"," else"," this.query[obj] = value;"," return this;","};","","/**"," * Sets the `skip` option"," *"," * @param {Number} value"," * @api public"," */","","Query.prototype.skip = function (v) {"," return this.set('skip', v);","};","","/**"," * Sets the `limit` option"," *"," * @param {Number} value"," * @api public"," */","","Query.prototype.limit = function (v) {"," return this.set('limit', v);","};","","/**"," * Sets the `timeout` option"," *"," * @param {Number} value"," * @api public"," */","","Query.prototype.timeout = function (v) {"," return this.set('timeout', v);","};","","/**"," * Sets the sort"," *"," * Examples:"," * query.sort('test', 1)"," * query.sort('field', -1)"," * query.sort('field', -1, 'test', 1)"," *"," * @param {Object} fields"," * @api public"," */","","Query.prototype.sort = function () {"," if (!this.options.sort)"," this.options.sort = [];",""," var args = [].slice.call(arguments)"," , query = this;"," inGroupsOf(2, args, function (field, value) {"," query.options.sort.push([field, value]);"," });",""," return this;","};","","/**"," * Resolves the promise from a driver response"," *"," * @api private"," */","","Query.prototype.queryComplete = function (err) {"," if (err)"," this.error(err);"," else"," this.complete.apply(this, Array.prototype.slice.call(arguments, 1));",""," return this;","};","","/**"," * Find Query constructor (for queries that retrieve docs)"," *"," * @api private"," */","","function FindQuery (query, fields, options, onExecute) {"," this.fields = fields || {};"," Query.call(this, query, options, onExecute);","};","","/**"," * Inherits from Query."," */","","FindQuery.prototype.__proto__ = Query.prototype;","","/**"," * Specifies fields to return"," *"," * Examples:"," *"," * // these three are equivalent"," * query.select('field', 'field2')"," * query.select({ field: 1, field2: 1 })"," * query.select(('field', 'field2');"," *"," * @api public"," */","","FindQuery.prototype.select = function () {"," for (var i = 0, l = arguments.length; i < l; i++) {"," if (Array.isArray(arguments[i])) {"," for (var a = 0, l = arguments[i].length; a < l; a++)"," this.fields[arguments[i][a]] = 1;"," } else if ('object' == typeof arguments[i]) {"," for (var a in arguments[i])"," this.fields[a] = arguments[i][a];"," } else if ('string' == typeof arguments[i]) {"," this.fields[arguments[i]] = 1;"," }"," }"," return this;","};","","/**"," * Module exports"," */","","exports.Query = Query;","","exports.FindQuery = FindQuery;"]; |
@@ -6,3 +6,2 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/schema.js'][6] = 0; | ||
_$jscoverage['mongoose/schema.js'][17] = 0; | ||
_$jscoverage['mongoose/schema.js'][18] = 0; | ||
@@ -17,136 +16,169 @@ _$jscoverage['mongoose/schema.js'][19] = 0; | ||
_$jscoverage['mongoose/schema.js'][26] = 0; | ||
_$jscoverage['mongoose/schema.js'][27] = 0; | ||
_$jscoverage['mongoose/schema.js'][28] = 0; | ||
_$jscoverage['mongoose/schema.js'][31] = 0; | ||
_$jscoverage['mongoose/schema.js'][37] = 0; | ||
_$jscoverage['mongoose/schema.js'][52] = 0; | ||
_$jscoverage['mongoose/schema.js'][68] = 0; | ||
_$jscoverage['mongoose/schema.js'][78] = 0; | ||
_$jscoverage['mongoose/schema.js'][79] = 0; | ||
_$jscoverage['mongoose/schema.js'][80] = 0; | ||
_$jscoverage['mongoose/schema.js'][82] = 0; | ||
_$jscoverage['mongoose/schema.js'][83] = 0; | ||
_$jscoverage['mongoose/schema.js'][85] = 0; | ||
_$jscoverage['mongoose/schema.js'][86] = 0; | ||
_$jscoverage['mongoose/schema.js'][29] = 0; | ||
_$jscoverage['mongoose/schema.js'][35] = 0; | ||
_$jscoverage['mongoose/schema.js'][36] = 0; | ||
_$jscoverage['mongoose/schema.js'][38] = 0; | ||
_$jscoverage['mongoose/schema.js'][39] = 0; | ||
_$jscoverage['mongoose/schema.js'][40] = 0; | ||
_$jscoverage['mongoose/schema.js'][46] = 0; | ||
_$jscoverage['mongoose/schema.js'][61] = 0; | ||
_$jscoverage['mongoose/schema.js'][77] = 0; | ||
_$jscoverage['mongoose/schema.js'][87] = 0; | ||
_$jscoverage['mongoose/schema.js'][88] = 0; | ||
_$jscoverage['mongoose/schema.js'][101] = 0; | ||
_$jscoverage['mongoose/schema.js'][102] = 0; | ||
_$jscoverage['mongoose/schema.js'][103] = 0; | ||
_$jscoverage['mongoose/schema.js'][105] = 0; | ||
_$jscoverage['mongoose/schema.js'][106] = 0; | ||
_$jscoverage['mongoose/schema.js'][108] = 0; | ||
_$jscoverage['mongoose/schema.js'][110] = 0; | ||
_$jscoverage['mongoose/schema.js'][112] = 0; | ||
_$jscoverage['mongoose/schema.js'][89] = 0; | ||
_$jscoverage['mongoose/schema.js'][91] = 0; | ||
_$jscoverage['mongoose/schema.js'][92] = 0; | ||
_$jscoverage['mongoose/schema.js'][94] = 0; | ||
_$jscoverage['mongoose/schema.js'][95] = 0; | ||
_$jscoverage['mongoose/schema.js'][96] = 0; | ||
_$jscoverage['mongoose/schema.js'][98] = 0; | ||
_$jscoverage['mongoose/schema.js'][100] = 0; | ||
_$jscoverage['mongoose/schema.js'][113] = 0; | ||
_$jscoverage['mongoose/schema.js'][114] = 0; | ||
_$jscoverage['mongoose/schema.js'][115] = 0; | ||
_$jscoverage['mongoose/schema.js'][117] = 0; | ||
_$jscoverage['mongoose/schema.js'][119] = 0; | ||
_$jscoverage['mongoose/schema.js'][118] = 0; | ||
_$jscoverage['mongoose/schema.js'][120] = 0; | ||
_$jscoverage['mongoose/schema.js'][122] = 0; | ||
_$jscoverage['mongoose/schema.js'][123] = 0; | ||
_$jscoverage['mongoose/schema.js'][124] = 0; | ||
_$jscoverage['mongoose/schema.js'][126] = 0; | ||
_$jscoverage['mongoose/schema.js'][128] = 0; | ||
_$jscoverage['mongoose/schema.js'][129] = 0; | ||
_$jscoverage['mongoose/schema.js'][131] = 0; | ||
_$jscoverage['mongoose/schema.js'][132] = 0; | ||
_$jscoverage['mongoose/schema.js'][133] = 0; | ||
_$jscoverage['mongoose/schema.js'][134] = 0; | ||
_$jscoverage['mongoose/schema.js'][135] = 0; | ||
_$jscoverage['mongoose/schema.js'][146] = 0; | ||
_$jscoverage['mongoose/schema.js'][147] = 0; | ||
_$jscoverage['mongoose/schema.js'][148] = 0; | ||
_$jscoverage['mongoose/schema.js'][159] = 0; | ||
_$jscoverage['mongoose/schema.js'][160] = 0; | ||
_$jscoverage['mongoose/schema.js'][171] = 0; | ||
_$jscoverage['mongoose/schema.js'][172] = 0; | ||
_$jscoverage['mongoose/schema.js'][182] = 0; | ||
_$jscoverage['mongoose/schema.js'][183] = 0; | ||
_$jscoverage['mongoose/schema.js'][184] = 0; | ||
_$jscoverage['mongoose/schema.js'][195] = 0; | ||
_$jscoverage['mongoose/schema.js'][196] = 0; | ||
_$jscoverage['mongoose/schema.js'][197] = 0; | ||
_$jscoverage['mongoose/schema.js'][207] = 0; | ||
_$jscoverage['mongoose/schema.js'][208] = 0; | ||
_$jscoverage['mongoose/schema.js'][209] = 0; | ||
_$jscoverage['mongoose/schema.js'][210] = 0; | ||
_$jscoverage['mongoose/schema.js'][211] = 0; | ||
_$jscoverage['mongoose/schema.js'][222] = 0; | ||
_$jscoverage['mongoose/schema.js'][223] = 0; | ||
_$jscoverage['mongoose/schema.js'][224] = 0; | ||
_$jscoverage['mongoose/schema.js'][234] = 0; | ||
_$jscoverage['mongoose/schema.js'][235] = 0; | ||
_$jscoverage['mongoose/schema.js'][236] = 0; | ||
_$jscoverage['mongoose/schema.js'][237] = 0; | ||
_$jscoverage['mongoose/schema.js'][238] = 0; | ||
_$jscoverage['mongoose/schema.js'][251] = 0; | ||
_$jscoverage['mongoose/schema.js'][252] = 0; | ||
_$jscoverage['mongoose/schema.js'][253] = 0; | ||
_$jscoverage['mongoose/schema.js'][264] = 0; | ||
_$jscoverage['mongoose/schema.js'][265] = 0; | ||
_$jscoverage['mongoose/schema.js'][266] = 0; | ||
_$jscoverage['mongoose/schema.js'][267] = 0; | ||
_$jscoverage['mongoose/schema.js'][268] = 0; | ||
_$jscoverage['mongoose/schema.js'][149] = 0; | ||
_$jscoverage['mongoose/schema.js'][150] = 0; | ||
_$jscoverage['mongoose/schema.js'][151] = 0; | ||
_$jscoverage['mongoose/schema.js'][162] = 0; | ||
_$jscoverage['mongoose/schema.js'][163] = 0; | ||
_$jscoverage['mongoose/schema.js'][164] = 0; | ||
_$jscoverage['mongoose/schema.js'][165] = 0; | ||
_$jscoverage['mongoose/schema.js'][176] = 0; | ||
_$jscoverage['mongoose/schema.js'][177] = 0; | ||
_$jscoverage['mongoose/schema.js'][178] = 0; | ||
_$jscoverage['mongoose/schema.js'][189] = 0; | ||
_$jscoverage['mongoose/schema.js'][190] = 0; | ||
_$jscoverage['mongoose/schema.js'][201] = 0; | ||
_$jscoverage['mongoose/schema.js'][202] = 0; | ||
_$jscoverage['mongoose/schema.js'][212] = 0; | ||
_$jscoverage['mongoose/schema.js'][213] = 0; | ||
_$jscoverage['mongoose/schema.js'][214] = 0; | ||
_$jscoverage['mongoose/schema.js'][225] = 0; | ||
_$jscoverage['mongoose/schema.js'][226] = 0; | ||
_$jscoverage['mongoose/schema.js'][227] = 0; | ||
_$jscoverage['mongoose/schema.js'][228] = 0; | ||
_$jscoverage['mongoose/schema.js'][230] = 0; | ||
_$jscoverage['mongoose/schema.js'][231] = 0; | ||
_$jscoverage['mongoose/schema.js'][242] = 0; | ||
_$jscoverage['mongoose/schema.js'][243] = 0; | ||
_$jscoverage['mongoose/schema.js'][244] = 0; | ||
_$jscoverage['mongoose/schema.js'][245] = 0; | ||
_$jscoverage['mongoose/schema.js'][247] = 0; | ||
_$jscoverage['mongoose/schema.js'][248] = 0; | ||
_$jscoverage['mongoose/schema.js'][261] = 0; | ||
_$jscoverage['mongoose/schema.js'][262] = 0; | ||
_$jscoverage['mongoose/schema.js'][263] = 0; | ||
_$jscoverage['mongoose/schema.js'][274] = 0; | ||
_$jscoverage['mongoose/schema.js'][275] = 0; | ||
_$jscoverage['mongoose/schema.js'][276] = 0; | ||
_$jscoverage['mongoose/schema.js'][277] = 0; | ||
_$jscoverage['mongoose/schema.js'][278] = 0; | ||
_$jscoverage['mongoose/schema.js'][280] = 0; | ||
_$jscoverage['mongoose/schema.js'][281] = 0; | ||
_$jscoverage['mongoose/schema.js'][282] = 0; | ||
_$jscoverage['mongoose/schema.js'][283] = 0; | ||
_$jscoverage['mongoose/schema.js'][284] = 0; | ||
_$jscoverage['mongoose/schema.js'][285] = 0; | ||
_$jscoverage['mongoose/schema.js'][287] = 0; | ||
_$jscoverage['mongoose/schema.js'][288] = 0; | ||
_$jscoverage['mongoose/schema.js'][292] = 0; | ||
_$jscoverage['mongoose/schema.js'][293] = 0; | ||
_$jscoverage['mongoose/schema.js'][295] = 0; | ||
_$jscoverage['mongoose/schema.js'][296] = 0; | ||
_$jscoverage['mongoose/schema.js'][297] = 0; | ||
_$jscoverage['mongoose/schema.js'][298] = 0; | ||
_$jscoverage['mongoose/schema.js'][299] = 0; | ||
_$jscoverage['mongoose/schema.js'][300] = 0; | ||
_$jscoverage['mongoose/schema.js'][301] = 0; | ||
_$jscoverage['mongoose/schema.js'][304] = 0; | ||
_$jscoverage['mongoose/schema.js'][306] = 0; | ||
_$jscoverage['mongoose/schema.js'][307] = 0; | ||
_$jscoverage['mongoose/schema.js'][308] = 0; | ||
_$jscoverage['mongoose/schema.js'][310] = 0; | ||
_$jscoverage['mongoose/schema.js'][309] = 0; | ||
_$jscoverage['mongoose/schema.js'][316] = 0; | ||
_$jscoverage['mongoose/schema.js'][318] = 0; | ||
_$jscoverage['mongoose/schema.js'][328] = 0; | ||
_$jscoverage['mongoose/schema.js'][329] = 0; | ||
_$jscoverage['mongoose/schema.js'][330] = 0; | ||
_$jscoverage['mongoose/schema.js'][342] = 0; | ||
_$jscoverage['mongoose/schema.js'][343] = 0; | ||
_$jscoverage['mongoose/schema.js'][352] = 0; | ||
_$jscoverage['mongoose/schema.js'][353] = 0; | ||
_$jscoverage['mongoose/schema.js'][361] = 0; | ||
_$jscoverage['mongoose/schema.js'][363] = 0; | ||
_$jscoverage['mongoose/schema.js'][365] = 0; | ||
} | ||
_$jscoverage['mongoose/schema.js'][6]++; | ||
var EventEmitter = require("events").EventEmitter, Types = require("./schema/"), utils = require("./utils"); | ||
_$jscoverage['mongoose/schema.js'][17]++; | ||
var EventEmitter = require("events").EventEmitter, Types = require("./schema/index"), VirtualType = require("./virtualtype"), utils = require("./utils"); | ||
_$jscoverage['mongoose/schema.js'][18]++; | ||
function Schema(obj, options) { | ||
_$jscoverage['mongoose/schema.js'][18]++; | ||
_$jscoverage['mongoose/schema.js'][19]++; | ||
this.paths = {}; | ||
_$jscoverage['mongoose/schema.js'][19]++; | ||
this.inherits = {}; | ||
_$jscoverage['mongoose/schema.js'][20]++; | ||
this.callQueue = []; | ||
this.virtuals = {}; | ||
_$jscoverage['mongoose/schema.js'][21]++; | ||
this._indexes = []; | ||
this.inherits = {}; | ||
_$jscoverage['mongoose/schema.js'][22]++; | ||
this._methods = {}; | ||
this.callQueue = []; | ||
_$jscoverage['mongoose/schema.js'][23]++; | ||
this._statics = {}; | ||
this._indexes = []; | ||
_$jscoverage['mongoose/schema.js'][24]++; | ||
this.methods = {}; | ||
_$jscoverage['mongoose/schema.js'][25]++; | ||
this.statics = {}; | ||
_$jscoverage['mongoose/schema.js'][26]++; | ||
this.tree = {}; | ||
_$jscoverage['mongoose/schema.js'][25]++; | ||
_$jscoverage['mongoose/schema.js'][29]++; | ||
this.options = utils.options({safe: false, "use$SetOnSave": true}, options); | ||
_$jscoverage['mongoose/schema.js'][35]++; | ||
if (obj) { | ||
_$jscoverage['mongoose/schema.js'][26]++; | ||
_$jscoverage['mongoose/schema.js'][36]++; | ||
this.add(obj); | ||
} | ||
_$jscoverage['mongoose/schema.js'][27]++; | ||
this.add({_id: ObjectId}); | ||
_$jscoverage['mongoose/schema.js'][28]++; | ||
this.options = utils.options({safe: false}, options); | ||
_$jscoverage['mongoose/schema.js'][38]++; | ||
if (! this.paths._id) { | ||
_$jscoverage['mongoose/schema.js'][39]++; | ||
this.add({_id: ObjectId}); | ||
} | ||
} | ||
_$jscoverage['mongoose/schema.js'][31]++; | ||
_$jscoverage['mongoose/schema.js'][40]++; | ||
; | ||
_$jscoverage['mongoose/schema.js'][37]++; | ||
_$jscoverage['mongoose/schema.js'][46]++; | ||
Schema.prototype.__proto__ = EventEmitter.prototype; | ||
_$jscoverage['mongoose/schema.js'][52]++; | ||
_$jscoverage['mongoose/schema.js'][61]++; | ||
Schema.prototype.paths; | ||
_$jscoverage['mongoose/schema.js'][68]++; | ||
_$jscoverage['mongoose/schema.js'][77]++; | ||
Schema.prototype.tree; | ||
_$jscoverage['mongoose/schema.js'][78]++; | ||
_$jscoverage['mongoose/schema.js'][87]++; | ||
Schema.prototype.add = (function (obj, prefix) { | ||
_$jscoverage['mongoose/schema.js'][79]++; | ||
_$jscoverage['mongoose/schema.js'][88]++; | ||
prefix = prefix || ""; | ||
_$jscoverage['mongoose/schema.js'][80]++; | ||
_$jscoverage['mongoose/schema.js'][89]++; | ||
for (var i in obj) { | ||
_$jscoverage['mongoose/schema.js'][82]++; | ||
_$jscoverage['mongoose/schema.js'][91]++; | ||
if (! prefix && ! this.tree[i]) { | ||
_$jscoverage['mongoose/schema.js'][83]++; | ||
_$jscoverage['mongoose/schema.js'][92]++; | ||
this.tree[i] = obj[i]; | ||
} | ||
_$jscoverage['mongoose/schema.js'][85]++; | ||
_$jscoverage['mongoose/schema.js'][94]++; | ||
if (obj[i].constructor == Object && (! obj[i].type || obj[i].__nested)) { | ||
_$jscoverage['mongoose/schema.js'][86]++; | ||
this.add(obj[i], i + "."); | ||
_$jscoverage['mongoose/schema.js'][95]++; | ||
if (Object.keys(obj[i]).length) { | ||
_$jscoverage['mongoose/schema.js'][96]++; | ||
this.add(obj[i], i + "."); | ||
} | ||
else { | ||
_$jscoverage['mongoose/schema.js'][98]++; | ||
this.path(prefix + i, obj[i]); | ||
} | ||
} | ||
else { | ||
_$jscoverage['mongoose/schema.js'][88]++; | ||
_$jscoverage['mongoose/schema.js'][100]++; | ||
this.path(prefix + i, obj[i]); | ||
@@ -156,163 +188,215 @@ } | ||
}); | ||
_$jscoverage['mongoose/schema.js'][101]++; | ||
_$jscoverage['mongoose/schema.js'][113]++; | ||
Schema.prototype.path = (function (path, obj) { | ||
_$jscoverage['mongoose/schema.js'][102]++; | ||
_$jscoverage['mongoose/schema.js'][114]++; | ||
if (obj == undefined) { | ||
_$jscoverage['mongoose/schema.js'][103]++; | ||
_$jscoverage['mongoose/schema.js'][115]++; | ||
return this.paths[path]; | ||
} | ||
_$jscoverage['mongoose/schema.js'][105]++; | ||
_$jscoverage['mongoose/schema.js'][117]++; | ||
if (obj.constructor != Object) { | ||
_$jscoverage['mongoose/schema.js'][106]++; | ||
_$jscoverage['mongoose/schema.js'][118]++; | ||
obj = {type: obj}; | ||
} | ||
_$jscoverage['mongoose/schema.js'][108]++; | ||
var type = obj.type; | ||
_$jscoverage['mongoose/schema.js'][110]++; | ||
if (Array.isArray(type) || type == Array) { | ||
_$jscoverage['mongoose/schema.js'][112]++; | ||
var cast = type == Array? obj.cast: type[0]; | ||
_$jscoverage['mongoose/schema.js'][114]++; | ||
if (cast instanceof Schema) { | ||
_$jscoverage['mongoose/schema.js'][115]++; | ||
this.paths[path] = new Types.DocumentArray(path, cast, obj); | ||
_$jscoverage['mongoose/schema.js'][120]++; | ||
var type = obj.type || {}; | ||
_$jscoverage['mongoose/schema.js'][122]++; | ||
if (type.constructor == Object) { | ||
_$jscoverage['mongoose/schema.js'][123]++; | ||
this.paths[path] = new Types.Mixed(path, obj); | ||
} | ||
else { | ||
_$jscoverage['mongoose/schema.js'][124]++; | ||
if (Array.isArray(type) || type == Array) { | ||
_$jscoverage['mongoose/schema.js'][126]++; | ||
var cast = type == Array? obj.cast: type[0]; | ||
_$jscoverage['mongoose/schema.js'][128]++; | ||
if (cast instanceof Schema) { | ||
_$jscoverage['mongoose/schema.js'][129]++; | ||
this.paths[path] = new Types.DocumentArray(path, cast, obj); | ||
} | ||
else { | ||
_$jscoverage['mongoose/schema.js'][131]++; | ||
this.paths[path] = new Types.Array(path, cast, obj); | ||
} | ||
} | ||
else { | ||
_$jscoverage['mongoose/schema.js'][117]++; | ||
this.paths[path] = new Types.Array(path, cast, obj); | ||
_$jscoverage['mongoose/schema.js'][133]++; | ||
this.paths[path] = new Types[type.name](path, obj); | ||
} | ||
} | ||
else { | ||
_$jscoverage['mongoose/schema.js'][119]++; | ||
this.paths[path] = new Types[type.name](path, obj); | ||
} | ||
_$jscoverage['mongoose/schema.js'][135]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][131]++; | ||
_$jscoverage['mongoose/schema.js'][147]++; | ||
Schema.prototype.eachPath = (function (fn) { | ||
_$jscoverage['mongoose/schema.js'][132]++; | ||
_$jscoverage['mongoose/schema.js'][148]++; | ||
for (var k in this.paths) { | ||
_$jscoverage['mongoose/schema.js'][133]++; | ||
_$jscoverage['mongoose/schema.js'][149]++; | ||
if (this.paths.hasOwnProperty(k)) { | ||
_$jscoverage['mongoose/schema.js'][134]++; | ||
_$jscoverage['mongoose/schema.js'][150]++; | ||
fn(k, this.paths[k]); | ||
} | ||
} | ||
_$jscoverage['mongoose/schema.js'][135]++; | ||
_$jscoverage['mongoose/schema.js'][151]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][146]++; | ||
_$jscoverage['mongoose/schema.js'][162]++; | ||
Schema.prototype.pathType = (function (path) { | ||
_$jscoverage['mongoose/schema.js'][163]++; | ||
if (path in this.paths) { | ||
_$jscoverage['mongoose/schema.js'][163]++; | ||
return "real"; | ||
} | ||
_$jscoverage['mongoose/schema.js'][164]++; | ||
if (path in this.virtuals) { | ||
_$jscoverage['mongoose/schema.js'][164]++; | ||
return "virtual"; | ||
} | ||
_$jscoverage['mongoose/schema.js'][165]++; | ||
return "adhocOrUndefined"; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][176]++; | ||
Schema.prototype.queue = (function (name, args) { | ||
_$jscoverage['mongoose/schema.js'][147]++; | ||
_$jscoverage['mongoose/schema.js'][177]++; | ||
this.callQueue.push([name, args]); | ||
_$jscoverage['mongoose/schema.js'][148]++; | ||
_$jscoverage['mongoose/schema.js'][178]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][159]++; | ||
_$jscoverage['mongoose/schema.js'][189]++; | ||
Schema.prototype.pre = (function () { | ||
_$jscoverage['mongoose/schema.js'][160]++; | ||
_$jscoverage['mongoose/schema.js'][190]++; | ||
return this.queue("pre", arguments); | ||
}); | ||
_$jscoverage['mongoose/schema.js'][171]++; | ||
_$jscoverage['mongoose/schema.js'][201]++; | ||
Schema.prototype.post = (function (method, fn) { | ||
_$jscoverage['mongoose/schema.js'][172]++; | ||
_$jscoverage['mongoose/schema.js'][202]++; | ||
return this.queue("on", arguments); | ||
}); | ||
_$jscoverage['mongoose/schema.js'][182]++; | ||
Schema.prototype.plugin = (function (fn) { | ||
_$jscoverage['mongoose/schema.js'][183]++; | ||
fn(this); | ||
_$jscoverage['mongoose/schema.js'][184]++; | ||
_$jscoverage['mongoose/schema.js'][212]++; | ||
Schema.prototype.plugin = (function (fn, opts) { | ||
_$jscoverage['mongoose/schema.js'][213]++; | ||
fn(this, opts); | ||
_$jscoverage['mongoose/schema.js'][214]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][195]++; | ||
_$jscoverage['mongoose/schema.js'][225]++; | ||
Schema.prototype.method = (function (name, fn) { | ||
_$jscoverage['mongoose/schema.js'][196]++; | ||
this._methods[name] = fn; | ||
_$jscoverage['mongoose/schema.js'][197]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][207]++; | ||
Schema.prototype.methods = (function (obj) { | ||
_$jscoverage['mongoose/schema.js'][208]++; | ||
if (obj) { | ||
_$jscoverage['mongoose/schema.js'][209]++; | ||
for (var i in obj) { | ||
_$jscoverage['mongoose/schema.js'][210]++; | ||
this._methods[i] = obj[i]; | ||
_$jscoverage['mongoose/schema.js'][226]++; | ||
if ("string" != typeof name) { | ||
_$jscoverage['mongoose/schema.js'][227]++; | ||
for (var i in name) { | ||
_$jscoverage['mongoose/schema.js'][228]++; | ||
this.methods[i] = name[i]; | ||
} | ||
} | ||
_$jscoverage['mongoose/schema.js'][211]++; | ||
else { | ||
_$jscoverage['mongoose/schema.js'][230]++; | ||
this.methods[name] = fn; | ||
} | ||
_$jscoverage['mongoose/schema.js'][231]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][222]++; | ||
_$jscoverage['mongoose/schema.js'][242]++; | ||
Schema.prototype["static"] = (function (name, fn) { | ||
_$jscoverage['mongoose/schema.js'][223]++; | ||
this._statics[name] = fn; | ||
_$jscoverage['mongoose/schema.js'][224]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][234]++; | ||
Schema.prototype.statics = (function (obj) { | ||
_$jscoverage['mongoose/schema.js'][235]++; | ||
if (obj) { | ||
_$jscoverage['mongoose/schema.js'][236]++; | ||
for (var i in obj) { | ||
_$jscoverage['mongoose/schema.js'][237]++; | ||
this._statics[i] = obj[i]; | ||
_$jscoverage['mongoose/schema.js'][243]++; | ||
if ("string" != typeof name) { | ||
_$jscoverage['mongoose/schema.js'][244]++; | ||
for (var i in name) { | ||
_$jscoverage['mongoose/schema.js'][245]++; | ||
this.statics[i] = name[i]; | ||
} | ||
} | ||
_$jscoverage['mongoose/schema.js'][238]++; | ||
else { | ||
_$jscoverage['mongoose/schema.js'][247]++; | ||
this.statics[name] = fn; | ||
} | ||
_$jscoverage['mongoose/schema.js'][248]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][251]++; | ||
_$jscoverage['mongoose/schema.js'][261]++; | ||
Schema.prototype.index = (function (fields, options) { | ||
_$jscoverage['mongoose/schema.js'][252]++; | ||
_$jscoverage['mongoose/schema.js'][262]++; | ||
this._indexes.push([fields, options || {}]); | ||
_$jscoverage['mongoose/schema.js'][253]++; | ||
_$jscoverage['mongoose/schema.js'][263]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][264]++; | ||
_$jscoverage['mongoose/schema.js'][274]++; | ||
Schema.prototype.set = (function (key, value) { | ||
_$jscoverage['mongoose/schema.js'][265]++; | ||
_$jscoverage['mongoose/schema.js'][275]++; | ||
if (arguments.length == 1) { | ||
_$jscoverage['mongoose/schema.js'][266]++; | ||
_$jscoverage['mongoose/schema.js'][276]++; | ||
return this.options[key]; | ||
} | ||
_$jscoverage['mongoose/schema.js'][267]++; | ||
_$jscoverage['mongoose/schema.js'][277]++; | ||
this.options[key] = value; | ||
_$jscoverage['mongoose/schema.js'][268]++; | ||
_$jscoverage['mongoose/schema.js'][278]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][277]++; | ||
_$jscoverage['mongoose/schema.js'][287]++; | ||
Schema.prototype.__defineGetter__("indexes", (function () { | ||
_$jscoverage['mongoose/schema.js'][278]++; | ||
var index, indexes = []; | ||
_$jscoverage['mongoose/schema.js'][280]++; | ||
for (var i in this.paths) { | ||
_$jscoverage['mongoose/schema.js'][281]++; | ||
index = this.paths[i]._index; | ||
_$jscoverage['mongoose/schema.js'][282]++; | ||
if (index !== false && index !== null) { | ||
_$jscoverage['mongoose/schema.js'][283]++; | ||
var field = {}; | ||
_$jscoverage['mongoose/schema.js'][284]++; | ||
field[i] = 1; | ||
_$jscoverage['mongoose/schema.js'][285]++; | ||
indexes.push([field, index.constructor == Object? index: {}]); | ||
} | ||
_$jscoverage['mongoose/schema.js'][288]++; | ||
var index, indexes = [], seenSchemas = []; | ||
_$jscoverage['mongoose/schema.js'][292]++; | ||
function collectIndexes(paths, prefix) { | ||
_$jscoverage['mongoose/schema.js'][293]++; | ||
prefix = prefix || ""; | ||
_$jscoverage['mongoose/schema.js'][295]++; | ||
for (var i in paths) { | ||
_$jscoverage['mongoose/schema.js'][296]++; | ||
if (paths[i]) { | ||
_$jscoverage['mongoose/schema.js'][297]++; | ||
if (paths[i] instanceof Types.DocumentArray) { | ||
_$jscoverage['mongoose/schema.js'][299]++; | ||
if (! (~ seenSchemas.indexOf(paths[i].schema))) { | ||
_$jscoverage['mongoose/schema.js'][300]++; | ||
seenSchemas.push(paths[i].schema); | ||
_$jscoverage['mongoose/schema.js'][301]++; | ||
collectIndexes(paths[i].schema.paths, i + "."); | ||
} | ||
} | ||
else { | ||
_$jscoverage['mongoose/schema.js'][304]++; | ||
index = paths[i]._index; | ||
_$jscoverage['mongoose/schema.js'][306]++; | ||
if (index !== false && index !== null) { | ||
_$jscoverage['mongoose/schema.js'][307]++; | ||
var field = {}; | ||
_$jscoverage['mongoose/schema.js'][308]++; | ||
field[prefix + i] = 1; | ||
_$jscoverage['mongoose/schema.js'][309]++; | ||
indexes.push([field, index.constructor == Object? index: {}]); | ||
} | ||
} | ||
} | ||
} | ||
_$jscoverage['mongoose/schema.js'][288]++; | ||
} | ||
_$jscoverage['mongoose/schema.js'][316]++; | ||
collectIndexes(this.paths); | ||
_$jscoverage['mongoose/schema.js'][318]++; | ||
return indexes.concat(this._indexes); | ||
})); | ||
_$jscoverage['mongoose/schema.js'][297]++; | ||
_$jscoverage['mongoose/schema.js'][328]++; | ||
Schema.prototype.virtual = (function (name) { | ||
_$jscoverage['mongoose/schema.js'][329]++; | ||
var virtuals = this.virtuals || (this.virtuals = {}); | ||
_$jscoverage['mongoose/schema.js'][330]++; | ||
return virtuals[name] || (virtuals[name] = this.tree[name] = new VirtualType()); | ||
}); | ||
_$jscoverage['mongoose/schema.js'][342]++; | ||
Schema.prototype.virtualpath = (function (name) { | ||
_$jscoverage['mongoose/schema.js'][343]++; | ||
return this.virtuals[name]; | ||
}); | ||
_$jscoverage['mongoose/schema.js'][352]++; | ||
function ObjectId() { | ||
_$jscoverage['mongoose/schema.js'][298]++; | ||
_$jscoverage['mongoose/schema.js'][353]++; | ||
throw new Error("This is an abstract interface. Its only purpose is to mark fields as ObjectId in the schema creation."); | ||
} | ||
_$jscoverage['mongoose/schema.js'][306]++; | ||
_$jscoverage['mongoose/schema.js'][361]++; | ||
module.exports = exports = Schema; | ||
_$jscoverage['mongoose/schema.js'][308]++; | ||
_$jscoverage['mongoose/schema.js'][363]++; | ||
exports.Types = Types; | ||
_$jscoverage['mongoose/schema.js'][310]++; | ||
_$jscoverage['mongoose/schema.js'][365]++; | ||
exports.ObjectId = ObjectId; | ||
_$jscoverage['mongoose/schema.js'].source = ["","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , Types = require('./schema/')"," , utils = require('./utils');","","/**"," * Schema constructor."," *"," * @param {Object} definition"," * @api public"," */","","function Schema (obj, options) {"," this.paths = {};"," this.inherits = {};"," this.callQueue = [];"," this._indexes = [];"," this._methods = {};"," this._statics = {};"," this.tree = {};"," if (obj)"," this.add(obj);"," this.add({ _id: ObjectId });"," this.options = utils.options({"," safe: false"," }, options);","};","","/**"," * 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))"," this.add(obj[i], i + '.');"," 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;",""," 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);","};","","/**"," * 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;","};","","/**"," * 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) {"," fn(this);"," return this;","};","","/**"," * Adds a method"," *"," * @param {String} method name"," * @param {Function} handler"," * @api public"," */","","Schema.prototype.method = function (name, fn) {"," this._methods[name] = fn;"," return this;","};","","/**"," * Adds several methods"," *"," * @param {Object} handlers by name"," * @api public"," */","","Schema.prototype.methods = function (obj) {"," if (obj)"," for (var i in obj)"," this._methods[i] = obj[i];"," return this;","};","","/**"," * Defines a static method"," *"," * @param {String} name"," * @param {Function} handler"," * @api public"," */","","Schema.prototype.static = function(name, fn) {"," this._statics[name] = fn;"," return this;","};","","/**"," * Adds several statics"," *"," * @param {Object} handlers by name"," * @api public"," */","","Schema.prototype.statics = function (obj) {"," if (obj)"," for (var i in obj)"," this._statics[i] = obj[i];"," return this;","};","","/**"," * Defines an index (most likely compound)"," * Example:"," * schema.index({ first: 1, last: -1 }, true })"," *"," * @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 = [];"," for (var i in this.paths){"," index = this.paths[i]._index;"," if (index !== false && index !== null){"," var field = {};"," field[i] = 1;"," indexes.push([field, index.constructor == Object ? index : {} ]);"," }"," }"," return indexes.concat(this._indexes);","});","","/**"," * 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: 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], 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;"]; |
@@ -6,78 +6,84 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/schema/array.js'][5] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][24] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][25] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][27] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][26] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][28] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][31] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][33] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][29] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][32] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][34] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][36] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][42] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][50] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][35] = 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'][62] = 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'][65] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][67] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][69] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][66] = 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'][75] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][77] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][79] = 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'][82] = 0; | ||
_$jscoverage['mongoose/schema/array.js'][89] = 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'][98] = 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'][5]++; | ||
var SchemaType = require("../schematype"), CastError = SchemaType.CastError, Types = {Boolean: require("./boolean"), Date: require("./date"), Number: require("./number"), String: require("./string"), ObjectId: require("./objectid")}, MongooseArray = require("../types").Array; | ||
_$jscoverage['mongoose/schema/array.js'][24]++; | ||
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; | ||
_$jscoverage['mongoose/schema/array.js'][25]++; | ||
function SchemaArray(key, cast, options) { | ||
_$jscoverage['mongoose/schema/array.js'][25]++; | ||
_$jscoverage['mongoose/schema/array.js'][26]++; | ||
SchemaType.call(this, key, options); | ||
_$jscoverage['mongoose/schema/array.js'][27]++; | ||
_$jscoverage['mongoose/schema/array.js'][28]++; | ||
if (cast) { | ||
_$jscoverage['mongoose/schema/array.js'][28]++; | ||
_$jscoverage['mongoose/schema/array.js'][29]++; | ||
this.caster = cast.name in Types? Types[cast.name]: cast; | ||
} | ||
_$jscoverage['mongoose/schema/array.js'][31]++; | ||
_$jscoverage['mongoose/schema/array.js'][32]++; | ||
var self = this; | ||
_$jscoverage['mongoose/schema/array.js'][33]++; | ||
_$jscoverage['mongoose/schema/array.js'][34]++; | ||
this["default"]((function () { | ||
_$jscoverage['mongoose/schema/array.js'][34]++; | ||
_$jscoverage['mongoose/schema/array.js'][35]++; | ||
return new MongooseArray([], self.path, this); | ||
})); | ||
} | ||
_$jscoverage['mongoose/schema/array.js'][36]++; | ||
_$jscoverage['mongoose/schema/array.js'][37]++; | ||
; | ||
_$jscoverage['mongoose/schema/array.js'][42]++; | ||
_$jscoverage['mongoose/schema/array.js'][43]++; | ||
SchemaArray.prototype.__proto__ = SchemaType.prototype; | ||
_$jscoverage['mongoose/schema/array.js'][50]++; | ||
_$jscoverage['mongoose/schema/array.js'][51]++; | ||
SchemaArray.prototype.checkRequired = (function (value) { | ||
_$jscoverage['mongoose/schema/array.js'][51]++; | ||
_$jscoverage['mongoose/schema/array.js'][52]++; | ||
return ! ! (value && value.length); | ||
}); | ||
_$jscoverage['mongoose/schema/array.js'][62]++; | ||
_$jscoverage['mongoose/schema/array.js'][63]++; | ||
SchemaArray.prototype.cast = (function (value, doc) { | ||
_$jscoverage['mongoose/schema/array.js'][63]++; | ||
_$jscoverage['mongoose/schema/array.js'][64]++; | ||
if (Array.isArray(value)) { | ||
_$jscoverage['mongoose/schema/array.js'][64]++; | ||
_$jscoverage['mongoose/schema/array.js'][65]++; | ||
if (! (value instanceof MongooseArray)) { | ||
_$jscoverage['mongoose/schema/array.js'][65]++; | ||
_$jscoverage['mongoose/schema/array.js'][66]++; | ||
value = new MongooseArray(value, this.path, doc); | ||
} | ||
_$jscoverage['mongoose/schema/array.js'][67]++; | ||
_$jscoverage['mongoose/schema/array.js'][68]++; | ||
var caster = this.caster; | ||
_$jscoverage['mongoose/schema/array.js'][69]++; | ||
_$jscoverage['mongoose/schema/array.js'][70]++; | ||
if (caster) { | ||
_$jscoverage['mongoose/schema/array.js'][70]++; | ||
_$jscoverage['mongoose/schema/array.js'][71]++; | ||
for (var i = 0, l = value.length; i < l; i++) { | ||
_$jscoverage['mongoose/schema/array.js'][71]++; | ||
_$jscoverage['mongoose/schema/array.js'][72]++; | ||
try { | ||
_$jscoverage['mongoose/schema/array.js'][72]++; | ||
_$jscoverage['mongoose/schema/array.js'][73]++; | ||
value[i] = caster.prototype.cast.call(null, value[i]); | ||
} | ||
catch (e) { | ||
_$jscoverage['mongoose/schema/array.js'][75]++; | ||
_$jscoverage['mongoose/schema/array.js'][76]++; | ||
throw new CastError(e.type, value); | ||
@@ -87,12 +93,27 @@ } | ||
} | ||
_$jscoverage['mongoose/schema/array.js'][77]++; | ||
; | ||
_$jscoverage['mongoose/schema/array.js'][79]++; | ||
_$jscoverage['mongoose/schema/array.js'][80]++; | ||
return value; | ||
} | ||
_$jscoverage['mongoose/schema/array.js'][82]++; | ||
else { | ||
_$jscoverage['mongoose/schema/array.js'][82]++; | ||
return this.cast([value], doc); | ||
} | ||
_$jscoverage['mongoose/schema/array.js'][85]++; | ||
throw new CastError("array", value, caster); | ||
}); | ||
_$jscoverage['mongoose/schema/array.js'][89]++; | ||
_$jscoverage['mongoose/schema/array.js'][96]++; | ||
ArrayNumberSchema.prototype.cast = (function (value) { | ||
_$jscoverage['mongoose/schema/array.js'][97]++; | ||
if (! isNaN(value)) { | ||
_$jscoverage['mongoose/schema/array.js'][98]++; | ||
if (value instanceof Number || typeof value == "number" || (value.toString && value.toString() == Number(value))) { | ||
_$jscoverage['mongoose/schema/array.js'][100]++; | ||
return Number(value); | ||
} | ||
} | ||
_$jscoverage['mongoose/schema/array.js'][102]++; | ||
throw new CastError("number", value); | ||
}); | ||
_$jscoverage['mongoose/schema/array.js'][109]++; | ||
module.exports = SchemaArray; | ||
_$jscoverage['mongoose/schema/array.js'].source = ["/**"," * Module dependencies."," */","","var SchemaType = require('../schematype')"," , CastError = SchemaType.CastError"," , Types = {"," Boolean: require('./boolean')"," , Date: require('./date')"," , Number: require('./number')"," , 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;"," }",""," throw new CastError('array', value, caster);","};","","/**"," * 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;",""," 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;"]; |
@@ -16,28 +16,30 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/schema/documentarray.js'][36] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][38] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][44] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][52] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][37] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][39] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][45] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][53] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][54] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][55] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][57] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][60] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][62] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][56] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][58] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][61] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][63] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][64] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][66] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][65] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][67] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][68] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][70] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][85] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][69] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][71] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][86] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][87] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][88] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][90] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][89] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][91] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][92] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][93] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][96] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][94] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][97] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][99] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][106] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][102] = 0; | ||
_$jscoverage['mongoose/schema/documentarray.js'][109] = 0; | ||
} | ||
@@ -64,44 +66,46 @@ _$jscoverage['mongoose/schema/documentarray.js'][6]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][35]++; | ||
this.schema = schema; | ||
_$jscoverage['mongoose/schema/documentarray.js'][36]++; | ||
this["default"]((function () { | ||
_$jscoverage['mongoose/schema/documentarray.js'][36]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][37]++; | ||
return new MongooseDocumentArray([], self.path, this); | ||
})); | ||
} | ||
_$jscoverage['mongoose/schema/documentarray.js'][38]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][39]++; | ||
; | ||
_$jscoverage['mongoose/schema/documentarray.js'][44]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][45]++; | ||
DocumentArray.prototype.__proto__ = ArrayType.prototype; | ||
_$jscoverage['mongoose/schema/documentarray.js'][52]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][53]++; | ||
DocumentArray.prototype.doValidate = (function (array, fn, scope) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][53]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][54]++; | ||
var self = this; | ||
_$jscoverage['mongoose/schema/documentarray.js'][54]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][55]++; | ||
SchemaType.prototype.doValidate.call(this, array, (function (err) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][55]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][56]++; | ||
if (err) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][55]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][56]++; | ||
return fn(err); | ||
} | ||
_$jscoverage['mongoose/schema/documentarray.js'][57]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][58]++; | ||
var count = array.length, error = false; | ||
_$jscoverage['mongoose/schema/documentarray.js'][60]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][61]++; | ||
if (! count) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][60]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][61]++; | ||
return fn(); | ||
} | ||
_$jscoverage['mongoose/schema/documentarray.js'][62]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][63]++; | ||
array.forEach((function (doc, index) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][63]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][64]++; | ||
doc.validate((function (err) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][64]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][65]++; | ||
if (err && ! error) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][66]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][67]++; | ||
err.key = self.key + "." + index + "." + err.key; | ||
_$jscoverage['mongoose/schema/documentarray.js'][67]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][68]++; | ||
fn(err); | ||
_$jscoverage['mongoose/schema/documentarray.js'][68]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][69]++; | ||
error = true; | ||
} | ||
else { | ||
_$jscoverage['mongoose/schema/documentarray.js'][70]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][71]++; | ||
--count || fn(); | ||
@@ -113,29 +117,33 @@ } | ||
}); | ||
_$jscoverage['mongoose/schema/documentarray.js'][85]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][86]++; | ||
DocumentArray.prototype.cast = (function (value, doc) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][86]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][87]++; | ||
if (Array.isArray(value)) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][87]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][88]++; | ||
if (! (value instanceof MongooseDocumentArray)) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][88]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][89]++; | ||
value = new MongooseDocumentArray(value, this.path, doc); | ||
} | ||
_$jscoverage['mongoose/schema/documentarray.js'][90]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][91]++; | ||
for (var i = 0, l = value.length; i < l; i++) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][91]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][92]++; | ||
if (! (value[i] instanceof Subdocument)) { | ||
_$jscoverage['mongoose/schema/documentarray.js'][92]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][93]++; | ||
var doc = new this.caster(null, value); | ||
_$jscoverage['mongoose/schema/documentarray.js'][93]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][94]++; | ||
value[i] = doc.init(value[i]); | ||
} | ||
} | ||
_$jscoverage['mongoose/schema/documentarray.js'][96]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][97]++; | ||
return value; | ||
} | ||
_$jscoverage['mongoose/schema/documentarray.js'][99]++; | ||
throw new CastError("documentarray", value, caster); | ||
else { | ||
_$jscoverage['mongoose/schema/documentarray.js'][99]++; | ||
return this.cast([value], doc); | ||
} | ||
_$jscoverage['mongoose/schema/documentarray.js'][102]++; | ||
throw new CastError("documentarray", value, this.caster); | ||
}); | ||
_$jscoverage['mongoose/schema/documentarray.js'][106]++; | ||
_$jscoverage['mongoose/schema/documentarray.js'][109]++; | ||
module.exports = DocumentArray; | ||
_$jscoverage['mongoose/schema/documentarray.js'].source = ["","/**"," * Module dependencies."," */","","var SchemaType = require('../schematype')"," , ArrayType = require('./array')"," , MongooseDocumentArray = require('../types/documentarray')"," , Subdocument = require('../types/document')"," , CastError = SchemaType.CastError"," , Document = require('../document');","","/**"," * SubdocsArray SchemaType constructor"," *"," * @param {String} key"," * @param {Schema} schema"," * @param {Object} options"," * @api private"," */","","function DocumentArray (key, schema, options) {"," // compile an embedded document for this schema"," function EmbeddedDocument () {"," Subdocument.apply(this, arguments);"," };",""," EmbeddedDocument.prototype.__proto__ = Subdocument.prototype;"," EmbeddedDocument.prototype.schema = schema;",""," ArrayType.call(this, key, EmbeddedDocument, options);",""," var self = this;",""," this.default(function(){"," return new MongooseDocumentArray([], self.path, this);"," });","};","","/**"," * Inherits from ArrayType."," */","","DocumentArray.prototype.__proto__ = ArrayType.prototype;","","/**"," * Performs local validations first, then validations on each embedded doc"," *"," * @api private"," */","","DocumentArray.prototype.doValidate = function (array, fn, scope) {"," var self = this;"," SchemaType.prototype.doValidate.call(this, array, function(err){"," if (err) return fn(err);"," "," var count = array.length"," , error = false;",""," if (!count) return fn();",""," array.forEach(function(doc, index){"," doc.validate(function(err){"," if (err && !error){"," // rewrite they key"," err.key = self.key + '.' + index + '.' + err.key;"," fn(err);"," error = true;"," } else {"," --count || fn();"," }"," });"," });"," }, scope);","};","","/**"," * Casts contents"," *"," * @param {Object} value"," * @param {Document} document that triggers the casting"," * @api private"," */","","DocumentArray.prototype.cast = function (value, doc) {"," if (Array.isArray(value)){"," if (!(value instanceof MongooseDocumentArray))"," value = new MongooseDocumentArray(value, this.path, doc);",""," for (var i = 0, l = value.length; i < l; i++)"," if (!(value[i] instanceof Subdocument)){"," var doc = new this.caster(null, value);"," value[i] = doc.init(value[i]);"," }",""," return value;"," }",""," throw new CastError('documentarray', value, caster);","};","","/**"," * Module exports."," */","","module.exports = DocumentArray;"]; | ||
_$jscoverage['mongoose/schema/documentarray.js'].source = ["","/**"," * Module dependencies."," */","","var SchemaType = require('../schematype')"," , ArrayType = require('./array')"," , MongooseDocumentArray = require('../types/documentarray')"," , Subdocument = require('../types/document')"," , CastError = SchemaType.CastError"," , Document = require('../document');","","/**"," * SubdocsArray SchemaType constructor"," *"," * @param {String} key"," * @param {Schema} schema"," * @param {Object} options"," * @api private"," */","","function DocumentArray (key, schema, options) {"," // compile an embedded document for this schema"," function EmbeddedDocument () {"," Subdocument.apply(this, arguments);"," };",""," EmbeddedDocument.prototype.__proto__ = Subdocument.prototype;"," EmbeddedDocument.prototype.schema = schema;",""," ArrayType.call(this, key, EmbeddedDocument, options);",""," var self = this;",""," this.schema = schema;"," this.default(function(){"," return new MongooseDocumentArray([], self.path, this);"," });","};","","/**"," * Inherits from ArrayType."," */","","DocumentArray.prototype.__proto__ = ArrayType.prototype;","","/**"," * Performs local validations first, then validations on each embedded doc"," *"," * @api private"," */","","DocumentArray.prototype.doValidate = function (array, fn, scope) {"," var self = this;"," SchemaType.prototype.doValidate.call(this, array, function(err){"," if (err) return fn(err);"," "," var count = array.length"," , error = false;",""," if (!count) return fn();",""," array.forEach(function(doc, index){"," doc.validate(function(err){"," if (err && !error){"," // rewrite they key"," err.key = self.key + '.' + index + '.' + err.key;"," fn(err);"," error = true;"," } else {"," --count || fn();"," }"," });"," });"," }, scope);","};","","/**"," * Casts contents"," *"," * @param {Object} value"," * @param {Document} document that triggers the casting"," * @api private"," */","","DocumentArray.prototype.cast = function (value, doc) {"," if (Array.isArray(value)){"," if (!(value instanceof MongooseDocumentArray))"," value = new MongooseDocumentArray(value, this.path, doc);",""," for (var i = 0, l = value.length; i < l; i++)"," if (!(value[i] instanceof Subdocument)){"," var doc = new this.caster(null, value);"," value[i] = doc.init(value[i]);"," }",""," return value;"," } else {"," return this.cast([value], doc);"," }",""," throw new CastError('documentarray', value, this.caster);","};","","/**"," * Module exports."," */","","module.exports = DocumentArray;"]; |
@@ -6,23 +6,26 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/schema/index.js'][6] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][7] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][8] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][9] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][10] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][11] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][12] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][14] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][16] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][18] = 0; | ||
_$jscoverage['mongoose/schema/index.js'][20] = 0; | ||
} | ||
_$jscoverage['mongoose/schema/index.js'][6]++; | ||
exports.String = require("./string"); | ||
_$jscoverage['mongoose/schema/index.js'][7]++; | ||
_$jscoverage['mongoose/schema/index.js'][8]++; | ||
exports.Number = require("./number"); | ||
_$jscoverage['mongoose/schema/index.js'][8]++; | ||
_$jscoverage['mongoose/schema/index.js'][10]++; | ||
exports.Boolean = require("./boolean"); | ||
_$jscoverage['mongoose/schema/index.js'][9]++; | ||
_$jscoverage['mongoose/schema/index.js'][12]++; | ||
exports.DocumentArray = require("./documentarray"); | ||
_$jscoverage['mongoose/schema/index.js'][10]++; | ||
_$jscoverage['mongoose/schema/index.js'][14]++; | ||
exports.Array = require("./array"); | ||
_$jscoverage['mongoose/schema/index.js'][11]++; | ||
_$jscoverage['mongoose/schema/index.js'][16]++; | ||
exports.Date = require("./date"); | ||
_$jscoverage['mongoose/schema/index.js'][12]++; | ||
_$jscoverage['mongoose/schema/index.js'][18]++; | ||
exports.ObjectId = require("./objectid"); | ||
_$jscoverage['mongoose/schema/index.js'].source = ["","/**"," * Module exports."," */","","exports.String = require('./string');","exports.Number = require('./number');","exports.Boolean = require('./boolean');","exports.DocumentArray = require('./documentarray');","exports.Array = require('./array');","exports.Date = require('./date');","exports.ObjectId = require('./objectid');"]; | ||
_$jscoverage['mongoose/schema/index.js'][20]++; | ||
exports.Mixed = require("./mixed"); | ||
_$jscoverage['mongoose/schema/index.js'].source = ["","/**"," * Module exports."," */","","exports.String = require('./string');","","exports.Number = require('./number');","","exports.Boolean = require('./boolean');","","exports.DocumentArray = require('./documentarray');","","exports.Array = require('./array');","","exports.Date = require('./date');","","exports.ObjectId = require('./objectid');","","exports.Mixed = require('./mixed');"]; |
@@ -31,5 +31,6 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/schema/number.js'][86] = 0; | ||
_$jscoverage['mongoose/schema/number.js'][88] = 0; | ||
_$jscoverage['mongoose/schema/number.js'][90] = 0; | ||
_$jscoverage['mongoose/schema/number.js'][97] = 0; | ||
_$jscoverage['mongoose/schema/number.js'][87] = 0; | ||
_$jscoverage['mongoose/schema/number.js'][89] = 0; | ||
_$jscoverage['mongoose/schema/number.js'][91] = 0; | ||
_$jscoverage['mongoose/schema/number.js'][98] = 0; | ||
} | ||
@@ -99,12 +100,17 @@ _$jscoverage['mongoose/schema/number.js'][6]++; | ||
_$jscoverage['mongoose/schema/number.js'][86]++; | ||
if ("string" === typeof value) { | ||
_$jscoverage['mongoose/schema/number.js'][86]++; | ||
value = Number(value); | ||
} | ||
_$jscoverage['mongoose/schema/number.js'][87]++; | ||
if (value instanceof Number || typeof value == "number" || (value.toString && value.toString() == Number(value))) { | ||
_$jscoverage['mongoose/schema/number.js'][88]++; | ||
_$jscoverage['mongoose/schema/number.js'][89]++; | ||
return new MongooseNumber(value, this.path, doc); | ||
} | ||
} | ||
_$jscoverage['mongoose/schema/number.js'][90]++; | ||
_$jscoverage['mongoose/schema/number.js'][91]++; | ||
throw new CastError("number", value); | ||
}); | ||
_$jscoverage['mongoose/schema/number.js'][97]++; | ||
_$jscoverage['mongoose/schema/number.js'][98]++; | ||
module.exports = SchemaNumber; | ||
_$jscoverage['mongoose/schema/number.js'].source = ["","/**"," * Module requirements."," */","","var SchemaType = require('../schematype')"," , CastError = SchemaType.CastError"," , MongooseNumber = require('../types/number');","","/**"," * Number SchemaType constructor."," *"," * @param {String} key"," * @param {Object} options"," * @api private"," */","","function SchemaNumber (key, options) {"," SchemaType.call(this, key, options);","};","","/**"," * Inherits from SchemaType."," */","","SchemaNumber.prototype.__proto__ = SchemaType.prototype;","","/**"," * Required validator for number"," *"," * @api private"," */","","SchemaNumber.prototype.checkRequired = function (value) {"," return typeof value == 'number' || value instanceof Number;","};","","/**"," * Sets a maximum number validator"," *"," * @param {Number} minimum number"," * @api public"," */","","SchemaNumber.prototype.min = function (value, message) {"," if (this.minValidator)"," this.validators = this.validators.filter(function(v){"," return v[1] != 'min';"," });"," if (value != null)"," this.validators.push([function(v){"," return v >= value;"," }, 'min']);"," return this;","};","","/**"," * Sets a maximum number validator"," *"," * @param {Number} maximum number"," * @api public"," */","","SchemaNumber.prototype.max = function (value, message) {"," if (this.maxValidator)"," this.validators = this.validators.filter(function(v){"," return v[1] != 'max';"," });"," if (value != null)"," this.validators.push([this.maxValidator = function(v){"," return v <= value;"," }, 'max']);"," return this;","};","","/**"," * Casts to number"," *"," * @param {Object} value to cast"," * @param {Document} document that triggers the casting"," * @api private"," */","","SchemaNumber.prototype.cast = function (value, doc) {"," if (!isNaN(value)){"," if (value instanceof Number || typeof value == 'number' ||"," (value.toString && value.toString() == Number(value)))"," return new MongooseNumber(value, this.path, doc);"," }"," throw new CastError('number', value);","};","","/**"," * Module exports."," */","","module.exports = SchemaNumber;"]; | ||
_$jscoverage['mongoose/schema/number.js'].source = ["","/**"," * Module requirements."," */","","var SchemaType = require('../schematype')"," , CastError = SchemaType.CastError"," , MongooseNumber = require('../types/number');","","/**"," * Number SchemaType constructor."," *"," * @param {String} key"," * @param {Object} options"," * @api private"," */","","function SchemaNumber (key, options) {"," SchemaType.call(this, key, options);","};","","/**"," * Inherits from SchemaType."," */","","SchemaNumber.prototype.__proto__ = SchemaType.prototype;","","/**"," * Required validator for number"," *"," * @api private"," */","","SchemaNumber.prototype.checkRequired = function (value) {"," return typeof value == 'number' || value instanceof Number;","};","","/**"," * Sets a maximum number validator"," *"," * @param {Number} minimum number"," * @api public"," */","","SchemaNumber.prototype.min = function (value, message) {"," if (this.minValidator)"," this.validators = this.validators.filter(function(v){"," return v[1] != 'min';"," });"," if (value != null)"," this.validators.push([function(v){"," return v >= value;"," }, 'min']);"," return this;","};","","/**"," * Sets a maximum number validator"," *"," * @param {Number} maximum number"," * @api public"," */","","SchemaNumber.prototype.max = function (value, message) {"," if (this.maxValidator)"," this.validators = this.validators.filter(function(v){"," return v[1] != 'max';"," });"," if (value != null)"," this.validators.push([this.maxValidator = function(v){"," return v <= value;"," }, 'max']);"," return this;","};","","/**"," * Casts to number"," *"," * @param {Object} value to cast"," * @param {Document} document that triggers the casting"," * @api private"," */","","SchemaNumber.prototype.cast = function (value, doc) {"," if (!isNaN(value)){"," if ('string' === typeof value) value = Number(value);"," if (value instanceof Number || typeof value == 'number' ||"," (value.toString && value.toString() == Number(value)))"," return new MongooseNumber(value, this.path, doc);"," }"," throw new CastError('number', value);","};","","/**"," * Module exports."," */","","module.exports = SchemaNumber;"]; |
@@ -27,52 +27,48 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/schematype.js'][67] = 0; | ||
_$jscoverage['mongoose/schematype.js'][77] = 0; | ||
_$jscoverage['mongoose/schematype.js'][68] = 0; | ||
_$jscoverage['mongoose/schematype.js'][78] = 0; | ||
_$jscoverage['mongoose/schematype.js'][79] = 0; | ||
_$jscoverage['mongoose/schematype.js'][89] = 0; | ||
_$jscoverage['mongoose/schematype.js'][80] = 0; | ||
_$jscoverage['mongoose/schematype.js'][90] = 0; | ||
_$jscoverage['mongoose/schematype.js'][91] = 0; | ||
_$jscoverage['mongoose/schematype.js'][92] = 0; | ||
_$jscoverage['mongoose/schematype.js'][102] = 0; | ||
_$jscoverage['mongoose/schematype.js'][103] = 0; | ||
_$jscoverage['mongoose/schematype.js'][104] = 0; | ||
_$jscoverage['mongoose/schematype.js'][114] = 0; | ||
_$jscoverage['mongoose/schematype.js'][115] = 0; | ||
_$jscoverage['mongoose/schematype.js'][116] = 0; | ||
_$jscoverage['mongoose/schematype.js'][117] = 0; | ||
_$jscoverage['mongoose/schematype.js'][118] = 0; | ||
_$jscoverage['mongoose/schematype.js'][119] = 0; | ||
_$jscoverage['mongoose/schematype.js'][122] = 0; | ||
_$jscoverage['mongoose/schematype.js'][124] = 0; | ||
_$jscoverage['mongoose/schematype.js'][134] = 0; | ||
_$jscoverage['mongoose/schematype.js'][127] = 0; | ||
_$jscoverage['mongoose/schematype.js'][128] = 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'][136] = 0; | ||
_$jscoverage['mongoose/schematype.js'][138] = 0; | ||
_$jscoverage['mongoose/schematype.js'][140] = 0; | ||
_$jscoverage['mongoose/schematype.js'][141] = 0; | ||
_$jscoverage['mongoose/schematype.js'][143] = 0; | ||
_$jscoverage['mongoose/schematype.js'][145] = 0; | ||
_$jscoverage['mongoose/schematype.js'][146] = 0; | ||
_$jscoverage['mongoose/schematype.js'][137] = 0; | ||
_$jscoverage['mongoose/schematype.js'][147] = 0; | ||
_$jscoverage['mongoose/schematype.js'][148] = 0; | ||
_$jscoverage['mongoose/schematype.js'][149] = 0; | ||
_$jscoverage['mongoose/schematype.js'][151] = 0; | ||
_$jscoverage['mongoose/schematype.js'][153] = 0; | ||
_$jscoverage['mongoose/schematype.js'][154] = 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'][162] = 0; | ||
_$jscoverage['mongoose/schematype.js'][163] = 0; | ||
_$jscoverage['mongoose/schematype.js'][164] = 0; | ||
_$jscoverage['mongoose/schematype.js'][166] = 0; | ||
_$jscoverage['mongoose/schematype.js'][172] = 0; | ||
_$jscoverage['mongoose/schematype.js'][173] = 0; | ||
_$jscoverage['mongoose/schematype.js'][174] = 0; | ||
_$jscoverage['mongoose/schematype.js'][175] = 0; | ||
_$jscoverage['mongoose/schematype.js'][176] = 0; | ||
_$jscoverage['mongoose/schematype.js'][177] = 0; | ||
_$jscoverage['mongoose/schematype.js'][178] = 0; | ||
_$jscoverage['mongoose/schematype.js'][179] = 0; | ||
_$jscoverage['mongoose/schematype.js'][180] = 0; | ||
_$jscoverage['mongoose/schematype.js'][181] = 0; | ||
_$jscoverage['mongoose/schematype.js'][182] = 0; | ||
_$jscoverage['mongoose/schematype.js'][184] = 0; | ||
_$jscoverage['mongoose/schematype.js'][190] = 0; | ||
_$jscoverage['mongoose/schematype.js'][191] = 0; | ||
_$jscoverage['mongoose/schematype.js'][192] = 0; | ||
_$jscoverage['mongoose/schematype.js'][193] = 0; | ||
_$jscoverage['mongoose/schematype.js'][194] = 0; | ||
_$jscoverage['mongoose/schematype.js'][195] = 0; | ||
_$jscoverage['mongoose/schematype.js'][196] = 0; | ||
_$jscoverage['mongoose/schematype.js'][200] = 0; | ||
_$jscoverage['mongoose/schematype.js'][202] = 0; | ||
_$jscoverage['mongoose/schematype.js'][203] = 0; | ||
_$jscoverage['mongoose/schematype.js'][204] = 0; | ||
_$jscoverage['mongoose/schematype.js'][205] = 0; | ||
_$jscoverage['mongoose/schematype.js'][207] = 0; | ||
_$jscoverage['mongoose/schematype.js'][197] = 0; | ||
_$jscoverage['mongoose/schematype.js'][208] = 0; | ||
_$jscoverage['mongoose/schematype.js'][212] = 0; | ||
_$jscoverage['mongoose/schematype.js'][209] = 0; | ||
_$jscoverage['mongoose/schematype.js'][213] = 0; | ||
@@ -83,24 +79,32 @@ _$jscoverage['mongoose/schematype.js'][215] = 0; | ||
_$jscoverage['mongoose/schematype.js'][218] = 0; | ||
_$jscoverage['mongoose/schematype.js'][219] = 0; | ||
_$jscoverage['mongoose/schematype.js'][220] = 0; | ||
_$jscoverage['mongoose/schematype.js'][223] = 0; | ||
_$jscoverage['mongoose/schematype.js'][235] = 0; | ||
_$jscoverage['mongoose/schematype.js'][221] = 0; | ||
_$jscoverage['mongoose/schematype.js'][225] = 0; | ||
_$jscoverage['mongoose/schematype.js'][226] = 0; | ||
_$jscoverage['mongoose/schematype.js'][228] = 0; | ||
_$jscoverage['mongoose/schematype.js'][229] = 0; | ||
_$jscoverage['mongoose/schematype.js'][230] = 0; | ||
_$jscoverage['mongoose/schematype.js'][231] = 0; | ||
_$jscoverage['mongoose/schematype.js'][232] = 0; | ||
_$jscoverage['mongoose/schematype.js'][233] = 0; | ||
_$jscoverage['mongoose/schematype.js'][236] = 0; | ||
_$jscoverage['mongoose/schematype.js'][237] = 0; | ||
_$jscoverage['mongoose/schematype.js'][238] = 0; | ||
_$jscoverage['mongoose/schematype.js'][239] = 0; | ||
_$jscoverage['mongoose/schematype.js'][240] = 0; | ||
_$jscoverage['mongoose/schematype.js'][246] = 0; | ||
_$jscoverage['mongoose/schematype.js'][254] = 0; | ||
_$jscoverage['mongoose/schematype.js'][255] = 0; | ||
_$jscoverage['mongoose/schematype.js'][256] = 0; | ||
_$jscoverage['mongoose/schematype.js'][257] = 0; | ||
_$jscoverage['mongoose/schematype.js'][258] = 0; | ||
_$jscoverage['mongoose/schematype.js'][248] = 0; | ||
_$jscoverage['mongoose/schematype.js'][249] = 0; | ||
_$jscoverage['mongoose/schematype.js'][250] = 0; | ||
_$jscoverage['mongoose/schematype.js'][251] = 0; | ||
_$jscoverage['mongoose/schematype.js'][252] = 0; | ||
_$jscoverage['mongoose/schematype.js'][253] = 0; | ||
_$jscoverage['mongoose/schematype.js'][259] = 0; | ||
_$jscoverage['mongoose/schematype.js'][260] = 0; | ||
_$jscoverage['mongoose/schematype.js'][261] = 0; | ||
_$jscoverage['mongoose/schematype.js'][267] = 0; | ||
_$jscoverage['mongoose/schematype.js'][268] = 0; | ||
_$jscoverage['mongoose/schematype.js'][269] = 0; | ||
_$jscoverage['mongoose/schematype.js'][270] = 0; | ||
_$jscoverage['mongoose/schematype.js'][271] = 0; | ||
_$jscoverage['mongoose/schematype.js'][272] = 0; | ||
_$jscoverage['mongoose/schematype.js'][273] = 0; | ||
_$jscoverage['mongoose/schematype.js'][275] = 0; | ||
_$jscoverage['mongoose/schematype.js'][277] = 0; | ||
_$jscoverage['mongoose/schematype.js'][274] = 0; | ||
_$jscoverage['mongoose/schematype.js'][280] = 0; | ||
_$jscoverage['mongoose/schematype.js'][286] = 0; | ||
_$jscoverage['mongoose/schematype.js'][288] = 0; | ||
_$jscoverage['mongoose/schematype.js'][290] = 0; | ||
} | ||
@@ -156,33 +160,42 @@ _$jscoverage['mongoose/schematype.js'][6]++; | ||
this._index = index; | ||
_$jscoverage['mongoose/schematype.js'][68]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][77]++; | ||
_$jscoverage['mongoose/schematype.js'][78]++; | ||
SchemaType.prototype.unique = (function (bool) { | ||
_$jscoverage['mongoose/schematype.js'][79]++; | ||
this._index = bool? {unique: true}: null; | ||
_$jscoverage['mongoose/schematype.js'][80]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][90]++; | ||
SchemaType.prototype.set = (function (fn) { | ||
_$jscoverage['mongoose/schematype.js'][78]++; | ||
_$jscoverage['mongoose/schematype.js'][91]++; | ||
this.setters.push(fn); | ||
_$jscoverage['mongoose/schematype.js'][79]++; | ||
_$jscoverage['mongoose/schematype.js'][92]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][89]++; | ||
_$jscoverage['mongoose/schematype.js'][102]++; | ||
SchemaType.prototype.get = (function (fn) { | ||
_$jscoverage['mongoose/schematype.js'][90]++; | ||
_$jscoverage['mongoose/schematype.js'][103]++; | ||
this.getters.push(fn); | ||
_$jscoverage['mongoose/schematype.js'][91]++; | ||
_$jscoverage['mongoose/schematype.js'][104]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][102]++; | ||
_$jscoverage['mongoose/schematype.js'][115]++; | ||
SchemaType.prototype.validate = (function (obj, error) { | ||
_$jscoverage['mongoose/schematype.js'][103]++; | ||
_$jscoverage['mongoose/schematype.js'][116]++; | ||
this.validators.push([obj, error]); | ||
_$jscoverage['mongoose/schematype.js'][104]++; | ||
_$jscoverage['mongoose/schematype.js'][117]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][114]++; | ||
_$jscoverage['mongoose/schematype.js'][127]++; | ||
SchemaType.prototype.required = (function (required) { | ||
_$jscoverage['mongoose/schematype.js'][115]++; | ||
_$jscoverage['mongoose/schematype.js'][128]++; | ||
var checkRequired = this.checkRequired.bind(this); | ||
_$jscoverage['mongoose/schematype.js'][117]++; | ||
_$jscoverage['mongoose/schematype.js'][130]++; | ||
if (false === required) { | ||
_$jscoverage['mongoose/schematype.js'][118]++; | ||
_$jscoverage['mongoose/schematype.js'][131]++; | ||
this.validators = this.validators.filter((function (v) { | ||
_$jscoverage['mongoose/schematype.js'][119]++; | ||
_$jscoverage['mongoose/schematype.js'][132]++; | ||
return v[0] !== checkRequired; | ||
@@ -192,117 +205,117 @@ })); | ||
else { | ||
_$jscoverage['mongoose/schematype.js'][122]++; | ||
_$jscoverage['mongoose/schematype.js'][135]++; | ||
this.validators.push([checkRequired, "required"]); | ||
} | ||
_$jscoverage['mongoose/schematype.js'][124]++; | ||
_$jscoverage['mongoose/schematype.js'][137]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][134]++; | ||
_$jscoverage['mongoose/schematype.js'][147]++; | ||
SchemaType.prototype.getDefault = (function (scope) { | ||
_$jscoverage['mongoose/schematype.js'][135]++; | ||
_$jscoverage['mongoose/schematype.js'][148]++; | ||
if (this.defaultValue === undefined) { | ||
_$jscoverage['mongoose/schematype.js'][136]++; | ||
_$jscoverage['mongoose/schematype.js'][149]++; | ||
return null; | ||
} | ||
_$jscoverage['mongoose/schematype.js'][138]++; | ||
_$jscoverage['mongoose/schematype.js'][151]++; | ||
var ret; | ||
_$jscoverage['mongoose/schematype.js'][140]++; | ||
_$jscoverage['mongoose/schematype.js'][153]++; | ||
if ("function" == typeof this.defaultValue) { | ||
_$jscoverage['mongoose/schematype.js'][141]++; | ||
_$jscoverage['mongoose/schematype.js'][154]++; | ||
ret = this.defaultValue.call(scope); | ||
} | ||
else { | ||
_$jscoverage['mongoose/schematype.js'][143]++; | ||
_$jscoverage['mongoose/schematype.js'][156]++; | ||
ret = this.defaultValue; | ||
} | ||
_$jscoverage['mongoose/schematype.js'][145]++; | ||
_$jscoverage['mongoose/schematype.js'][158]++; | ||
if (ret !== null && ret !== undefined) { | ||
_$jscoverage['mongoose/schematype.js'][146]++; | ||
_$jscoverage['mongoose/schematype.js'][159]++; | ||
ret = this.cast(ret, scope); | ||
} | ||
_$jscoverage['mongoose/schematype.js'][148]++; | ||
_$jscoverage['mongoose/schematype.js'][161]++; | ||
return ret; | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][159]++; | ||
_$jscoverage['mongoose/schematype.js'][172]++; | ||
SchemaType.prototype.applySetters = (function (value, scope) { | ||
_$jscoverage['mongoose/schematype.js'][160]++; | ||
_$jscoverage['mongoose/schematype.js'][173]++; | ||
var v = value; | ||
_$jscoverage['mongoose/schematype.js'][161]++; | ||
_$jscoverage['mongoose/schematype.js'][174]++; | ||
for (var l = this.setters.length - 1; l >= 0; l--) { | ||
_$jscoverage['mongoose/schematype.js'][162]++; | ||
_$jscoverage['mongoose/schematype.js'][175]++; | ||
v = this.setters[l].call(scope, v); | ||
_$jscoverage['mongoose/schematype.js'][163]++; | ||
_$jscoverage['mongoose/schematype.js'][176]++; | ||
if (v === null || v === undefined) { | ||
_$jscoverage['mongoose/schematype.js'][163]++; | ||
_$jscoverage['mongoose/schematype.js'][176]++; | ||
return v; | ||
} | ||
_$jscoverage['mongoose/schematype.js'][164]++; | ||
_$jscoverage['mongoose/schematype.js'][177]++; | ||
v = this.cast(v, scope); | ||
} | ||
_$jscoverage['mongoose/schematype.js'][166]++; | ||
_$jscoverage['mongoose/schematype.js'][179]++; | ||
return v; | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][177]++; | ||
_$jscoverage['mongoose/schematype.js'][190]++; | ||
SchemaType.prototype.applyGetters = (function (value, scope) { | ||
_$jscoverage['mongoose/schematype.js'][178]++; | ||
_$jscoverage['mongoose/schematype.js'][191]++; | ||
var v = value; | ||
_$jscoverage['mongoose/schematype.js'][179]++; | ||
_$jscoverage['mongoose/schematype.js'][192]++; | ||
for (var l = this.getters.length - 1; l >= 0; l--) { | ||
_$jscoverage['mongoose/schematype.js'][180]++; | ||
_$jscoverage['mongoose/schematype.js'][193]++; | ||
v = this.getters[l].call(scope, v); | ||
_$jscoverage['mongoose/schematype.js'][181]++; | ||
_$jscoverage['mongoose/schematype.js'][194]++; | ||
if (v === null || v === undefined) { | ||
_$jscoverage['mongoose/schematype.js'][181]++; | ||
_$jscoverage['mongoose/schematype.js'][194]++; | ||
return v; | ||
} | ||
_$jscoverage['mongoose/schematype.js'][182]++; | ||
_$jscoverage['mongoose/schematype.js'][195]++; | ||
v = this.cast(v, scope); | ||
} | ||
_$jscoverage['mongoose/schematype.js'][184]++; | ||
_$jscoverage['mongoose/schematype.js'][197]++; | ||
return v; | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][195]++; | ||
_$jscoverage['mongoose/schematype.js'][208]++; | ||
SchemaType.prototype.doValidate = (function (value, fn, scope) { | ||
_$jscoverage['mongoose/schematype.js'][196]++; | ||
_$jscoverage['mongoose/schematype.js'][209]++; | ||
var err = false, path = this.path, count = this.validators.length; | ||
_$jscoverage['mongoose/schematype.js'][200]++; | ||
_$jscoverage['mongoose/schematype.js'][213]++; | ||
if (! count) { | ||
_$jscoverage['mongoose/schematype.js'][200]++; | ||
_$jscoverage['mongoose/schematype.js'][213]++; | ||
return fn(null); | ||
} | ||
_$jscoverage['mongoose/schematype.js'][202]++; | ||
_$jscoverage['mongoose/schematype.js'][215]++; | ||
function validate(val, msg) { | ||
_$jscoverage['mongoose/schematype.js'][203]++; | ||
_$jscoverage['mongoose/schematype.js'][216]++; | ||
if (err) { | ||
_$jscoverage['mongoose/schematype.js'][203]++; | ||
_$jscoverage['mongoose/schematype.js'][216]++; | ||
return; | ||
} | ||
_$jscoverage['mongoose/schematype.js'][204]++; | ||
_$jscoverage['mongoose/schematype.js'][217]++; | ||
if (val === undefined || val) { | ||
_$jscoverage['mongoose/schematype.js'][205]++; | ||
_$jscoverage['mongoose/schematype.js'][218]++; | ||
--count || fn(null); | ||
} | ||
else { | ||
_$jscoverage['mongoose/schematype.js'][207]++; | ||
_$jscoverage['mongoose/schematype.js'][220]++; | ||
fn(new ValidatorError(path, msg)); | ||
_$jscoverage['mongoose/schematype.js'][208]++; | ||
_$jscoverage['mongoose/schematype.js'][221]++; | ||
err = true; | ||
} | ||
} | ||
_$jscoverage['mongoose/schematype.js'][212]++; | ||
_$jscoverage['mongoose/schematype.js'][225]++; | ||
this.validators.forEach((function (v) { | ||
_$jscoverage['mongoose/schematype.js'][213]++; | ||
_$jscoverage['mongoose/schematype.js'][226]++; | ||
var validator = v[0], message = v[1]; | ||
_$jscoverage['mongoose/schematype.js'][215]++; | ||
_$jscoverage['mongoose/schematype.js'][228]++; | ||
if (validator instanceof RegExp) { | ||
_$jscoverage['mongoose/schematype.js'][216]++; | ||
_$jscoverage['mongoose/schematype.js'][229]++; | ||
validate(validator.test(value), message); | ||
} | ||
else { | ||
_$jscoverage['mongoose/schematype.js'][217]++; | ||
_$jscoverage['mongoose/schematype.js'][230]++; | ||
if ("function" == typeof validator) { | ||
_$jscoverage['mongoose/schematype.js'][218]++; | ||
_$jscoverage['mongoose/schematype.js'][231]++; | ||
if (2 == validator.length) { | ||
_$jscoverage['mongoose/schematype.js'][219]++; | ||
_$jscoverage['mongoose/schematype.js'][232]++; | ||
validator.call(scope, value, (function (val) { | ||
_$jscoverage['mongoose/schematype.js'][220]++; | ||
_$jscoverage['mongoose/schematype.js'][233]++; | ||
validate(val, message); | ||
@@ -312,3 +325,3 @@ })); | ||
else { | ||
_$jscoverage['mongoose/schematype.js'][223]++; | ||
_$jscoverage['mongoose/schematype.js'][236]++; | ||
validate(validator.call(scope, value), message); | ||
@@ -320,42 +333,42 @@ } | ||
}); | ||
_$jscoverage['mongoose/schematype.js'][235]++; | ||
_$jscoverage['mongoose/schematype.js'][248]++; | ||
function ValidatorError(path, msg) { | ||
_$jscoverage['mongoose/schematype.js'][236]++; | ||
_$jscoverage['mongoose/schematype.js'][249]++; | ||
MongooseError.call(this, "Validator \"" + msg + "\" failed for path " + path); | ||
_$jscoverage['mongoose/schematype.js'][237]++; | ||
_$jscoverage['mongoose/schematype.js'][250]++; | ||
Error.captureStackTrace(this, arguments.callee); | ||
_$jscoverage['mongoose/schematype.js'][238]++; | ||
_$jscoverage['mongoose/schematype.js'][251]++; | ||
this.name = "ValidatorError"; | ||
_$jscoverage['mongoose/schematype.js'][239]++; | ||
_$jscoverage['mongoose/schematype.js'][252]++; | ||
this.path = path; | ||
} | ||
_$jscoverage['mongoose/schematype.js'][240]++; | ||
_$jscoverage['mongoose/schematype.js'][253]++; | ||
; | ||
_$jscoverage['mongoose/schematype.js'][246]++; | ||
_$jscoverage['mongoose/schematype.js'][259]++; | ||
ValidatorError.prototype.__proto__ = MongooseError.prototype; | ||
_$jscoverage['mongoose/schematype.js'][254]++; | ||
_$jscoverage['mongoose/schematype.js'][267]++; | ||
function CastError(type, path, type, value) { | ||
_$jscoverage['mongoose/schematype.js'][255]++; | ||
_$jscoverage['mongoose/schematype.js'][268]++; | ||
MongooseError.call(this, "Cast to " + type + " failed for value \"" + value + "\""); | ||
_$jscoverage['mongoose/schematype.js'][256]++; | ||
_$jscoverage['mongoose/schematype.js'][269]++; | ||
Error.captureStackTrace(this, arguments.callee); | ||
_$jscoverage['mongoose/schematype.js'][257]++; | ||
_$jscoverage['mongoose/schematype.js'][270]++; | ||
this.name = "CastError"; | ||
_$jscoverage['mongoose/schematype.js'][258]++; | ||
_$jscoverage['mongoose/schematype.js'][271]++; | ||
this.path = path; | ||
_$jscoverage['mongoose/schematype.js'][259]++; | ||
_$jscoverage['mongoose/schematype.js'][272]++; | ||
this.type = type; | ||
_$jscoverage['mongoose/schematype.js'][260]++; | ||
_$jscoverage['mongoose/schematype.js'][273]++; | ||
this.value = value; | ||
} | ||
_$jscoverage['mongoose/schematype.js'][261]++; | ||
_$jscoverage['mongoose/schematype.js'][274]++; | ||
; | ||
_$jscoverage['mongoose/schematype.js'][267]++; | ||
_$jscoverage['mongoose/schematype.js'][280]++; | ||
CastError.prototype.__proto__ = MongooseError.prototype; | ||
_$jscoverage['mongoose/schematype.js'][273]++; | ||
_$jscoverage['mongoose/schematype.js'][286]++; | ||
module.exports = exports = SchemaType; | ||
_$jscoverage['mongoose/schematype.js'][275]++; | ||
_$jscoverage['mongoose/schematype.js'][288]++; | ||
exports.CastError = CastError; | ||
_$jscoverage['mongoose/schematype.js'][277]++; | ||
_$jscoverage['mongoose/schematype.js'][290]++; | ||
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;","};","","/**"," * 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){"," 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;"]; |
@@ -36,34 +36,41 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/types/array.js'][113] = 0; | ||
_$jscoverage['mongoose/types/array.js'][114] = 0; | ||
_$jscoverage['mongoose/types/array.js'][116] = 0; | ||
_$jscoverage['mongoose/types/array.js'][120] = 0; | ||
_$jscoverage['mongoose/types/array.js'][115] = 0; | ||
_$jscoverage['mongoose/types/array.js'][117] = 0; | ||
_$jscoverage['mongoose/types/array.js'][121] = 0; | ||
_$jscoverage['mongoose/types/array.js'][123] = 0; | ||
_$jscoverage['mongoose/types/array.js'][125] = 0; | ||
_$jscoverage['mongoose/types/array.js'][135] = 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'][138] = 0; | ||
_$jscoverage['mongoose/types/array.js'][142] = 0; | ||
_$jscoverage['mongoose/types/array.js'][144] = 0; | ||
_$jscoverage['mongoose/types/array.js'][154] = 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'][155] = 0; | ||
_$jscoverage['mongoose/types/array.js'][156] = 0; | ||
_$jscoverage['mongoose/types/array.js'][158] = 0; | ||
_$jscoverage['mongoose/types/array.js'][157] = 0; | ||
_$jscoverage['mongoose/types/array.js'][159] = 0; | ||
_$jscoverage['mongoose/types/array.js'][168] = 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'][179] = 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'][190] = 0; | ||
_$jscoverage['mongoose/types/array.js'][191] = 0; | ||
_$jscoverage['mongoose/types/array.js'][192] = 0; | ||
_$jscoverage['mongoose/types/array.js'][182] = 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'][203] = 0; | ||
_$jscoverage['mongoose/types/array.js'][206] = 0; | ||
_$jscoverage['mongoose/types/array.js'][207] = 0; | ||
_$jscoverage['mongoose/types/array.js'][208] = 0; | ||
_$jscoverage['mongoose/types/array.js'][216] = 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'][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'][245] = 0; | ||
} | ||
@@ -139,80 +146,99 @@ _$jscoverage['mongoose/types/array.js'][6]++; | ||
MongooseArray.prototype.$push = MongooseArray.prototype.push = (function () { | ||
_$jscoverage['mongoose/types/array.js'][114]++; | ||
_$jscoverage['mongoose/types/array.js'][115]++; | ||
var self = this, values = Array.prototype.map.call(arguments, (function (obj) { | ||
_$jscoverage['mongoose/types/array.js'][116]++; | ||
_$jscoverage['mongoose/types/array.js'][117]++; | ||
return self._cast(obj); | ||
})), ret = oldPush.apply(this, values); | ||
_$jscoverage['mongoose/types/array.js'][120]++; | ||
_$jscoverage['mongoose/types/array.js'][121]++; | ||
if (1 === values.length) { | ||
_$jscoverage['mongoose/types/array.js'][121]++; | ||
_$jscoverage['mongoose/types/array.js'][122]++; | ||
this._registerAtomic(["$push", values[0]]); | ||
} | ||
else { | ||
_$jscoverage['mongoose/types/array.js'][123]++; | ||
_$jscoverage['mongoose/types/array.js'][124]++; | ||
this._registerAtomic(["$pushAll", values]); | ||
} | ||
_$jscoverage['mongoose/types/array.js'][125]++; | ||
_$jscoverage['mongoose/types/array.js'][126]++; | ||
return ret; | ||
}); | ||
_$jscoverage['mongoose/types/array.js'][135]++; | ||
_$jscoverage['mongoose/types/array.js'][136]++; | ||
MongooseArray.prototype.nonAtomicPush = (function () { | ||
_$jscoverage['mongoose/types/array.js'][136]++; | ||
_$jscoverage['mongoose/types/array.js'][137]++; | ||
var self = this, values = Array.prototype.map.call(arguments, (function (obj) { | ||
_$jscoverage['mongoose/types/array.js'][138]++; | ||
_$jscoverage['mongoose/types/array.js'][139]++; | ||
return self._cast(obj); | ||
})), ret = oldPush.apply(this, values); | ||
_$jscoverage['mongoose/types/array.js'][142]++; | ||
_$jscoverage['mongoose/types/array.js'][143]++; | ||
this._markModified(); | ||
_$jscoverage['mongoose/types/array.js'][144]++; | ||
_$jscoverage['mongoose/types/array.js'][145]++; | ||
return ret; | ||
}); | ||
_$jscoverage['mongoose/types/array.js'][154]++; | ||
_$jscoverage['mongoose/types/array.js'][155]++; | ||
MongooseArray.prototype.$pushAll = (function (value) { | ||
_$jscoverage['mongoose/types/array.js'][155]++; | ||
_$jscoverage['mongoose/types/array.js'][156]++; | ||
var length = this.length; | ||
_$jscoverage['mongoose/types/array.js'][156]++; | ||
_$jscoverage['mongoose/types/array.js'][157]++; | ||
this.push.apply(this, value); | ||
_$jscoverage['mongoose/types/array.js'][158]++; | ||
_$jscoverage['mongoose/types/array.js'][159]++; | ||
this._registerAtomic(["$pushAll", this.slice(length)]); | ||
_$jscoverage['mongoose/types/array.js'][159]++; | ||
_$jscoverage['mongoose/types/array.js'][160]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/types/array.js'][168]++; | ||
_$jscoverage['mongoose/types/array.js'][169]++; | ||
MongooseArray.prototype.$pop = (function () { | ||
_$jscoverage['mongoose/types/array.js'][169]++; | ||
_$jscoverage['mongoose/types/array.js'][170]++; | ||
this._registerAtomic(["$pop", "1"]); | ||
_$jscoverage['mongoose/types/array.js'][170]++; | ||
_$jscoverage['mongoose/types/array.js'][171]++; | ||
return this.pop(); | ||
}); | ||
_$jscoverage['mongoose/types/array.js'][179]++; | ||
_$jscoverage['mongoose/types/array.js'][180]++; | ||
MongooseArray.prototype.$shift = (function () { | ||
_$jscoverage['mongoose/types/array.js'][180]++; | ||
_$jscoverage['mongoose/types/array.js'][181]++; | ||
this._registerAtomic(["$shift", "-1"]); | ||
_$jscoverage['mongoose/types/array.js'][181]++; | ||
_$jscoverage['mongoose/types/array.js'][182]++; | ||
return this.shift(); | ||
}); | ||
_$jscoverage['mongoose/types/array.js'][190]++; | ||
MongooseArray.prototype.$pull = (function (match) { | ||
_$jscoverage['mongoose/types/array.js'][191]++; | ||
this._registerAtomic(["$pull", match]); | ||
_$jscoverage['mongoose/types/array.js'][192]++; | ||
_$jscoverage['mongoose/types/array.js'][196]++; | ||
MongooseArray.prototype.remove = (function () { | ||
_$jscoverage['mongoose/types/array.js'][197]++; | ||
var args = Array.prototype.map.call(arguments, this._cast, this); | ||
_$jscoverage['mongoose/types/array.js'][198]++; | ||
if (args.length == 1) { | ||
_$jscoverage['mongoose/types/array.js'][199]++; | ||
this.$pull(args[0]); | ||
} | ||
else { | ||
_$jscoverage['mongoose/types/array.js'][201]++; | ||
this.$pullAll(args); | ||
} | ||
_$jscoverage['mongoose/types/array.js'][202]++; | ||
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]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/types/array.js'][201]++; | ||
MongooseArray.prototype.$pullAll = (function (match) { | ||
_$jscoverage['mongoose/types/array.js'][202]++; | ||
this._registerAtomic(["$pullAll", match]); | ||
_$jscoverage['mongoose/types/array.js'][203]++; | ||
_$jscoverage['mongoose/types/array.js'][222]++; | ||
MongooseArray.prototype.$pullAll = (function (values) { | ||
_$jscoverage['mongoose/types/array.js'][223]++; | ||
if (values && values.length) { | ||
_$jscoverage['mongoose/types/array.js'][224]++; | ||
this._registerAtomic(["$pullAll", values]); | ||
} | ||
_$jscoverage['mongoose/types/array.js'][225]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/types/array.js'][206]++; | ||
_$jscoverage['mongoose/types/array.js'][235]++; | ||
MongooseArray.prototype.toObject = (function () { | ||
_$jscoverage['mongoose/types/array.js'][207]++; | ||
_$jscoverage['mongoose/types/array.js'][236]++; | ||
return this.map((function (doc) { | ||
_$jscoverage['mongoose/types/array.js'][208]++; | ||
_$jscoverage['mongoose/types/array.js'][237]++; | ||
return doc; | ||
})); | ||
}); | ||
_$jscoverage['mongoose/types/array.js'][216]++; | ||
_$jscoverage['mongoose/types/array.js'][245]++; | ||
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();","};","","/**"," * Pulls from the array"," *"," * @api public"," */","","MongooseArray.prototype.$pull = function (match) {"," this._registerAtomic(['$pull', match]);"," return this;","};","","/**"," * Pulls many items from an array"," *"," * @api public"," */","","MongooseArray.prototype.$pullAll = function (match) {"," this._registerAtomic(['$pullAll', match]);"," return this;","};","","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 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;"]; |
@@ -21,16 +21,12 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/types/document.js'][60] = 0; | ||
_$jscoverage['mongoose/types/document.js'][69] = 0; | ||
_$jscoverage['mongoose/types/document.js'][61] = 0; | ||
_$jscoverage['mongoose/types/document.js'][70] = 0; | ||
_$jscoverage['mongoose/types/document.js'][71] = 0; | ||
_$jscoverage['mongoose/types/document.js'][72] = 0; | ||
_$jscoverage['mongoose/types/document.js'][83] = 0; | ||
_$jscoverage['mongoose/types/document.js'][84] = 0; | ||
_$jscoverage['mongoose/types/document.js'][85] = 0; | ||
_$jscoverage['mongoose/types/document.js'][95] = 0; | ||
_$jscoverage['mongoose/types/document.js'][96] = 0; | ||
_$jscoverage['mongoose/types/document.js'][97] = 0; | ||
_$jscoverage['mongoose/types/document.js'][108] = 0; | ||
_$jscoverage['mongoose/types/document.js'][109] = 0; | ||
_$jscoverage['mongoose/types/document.js'][116] = 0; | ||
_$jscoverage['mongoose/types/document.js'][122] = 0; | ||
_$jscoverage['mongoose/types/document.js'][73] = 0; | ||
_$jscoverage['mongoose/types/document.js'][76] = 0; | ||
_$jscoverage['mongoose/types/document.js'][77] = 0; | ||
_$jscoverage['mongoose/types/document.js'][79] = 0; | ||
_$jscoverage['mongoose/types/document.js'][86] = 0; | ||
_$jscoverage['mongoose/types/document.js'][92] = 0; | ||
} | ||
@@ -69,45 +65,30 @@ _$jscoverage['mongoose/types/document.js'][6]++; | ||
_$jscoverage['mongoose/types/document.js'][59]++; | ||
fn(null); | ||
_$jscoverage['mongoose/types/document.js'][60]++; | ||
if (fn) { | ||
_$jscoverage['mongoose/types/document.js'][60]++; | ||
fn(null); | ||
} | ||
_$jscoverage['mongoose/types/document.js'][61]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/types/document.js'][69]++; | ||
EmbeddedDocument.prototype.remove = (function () { | ||
_$jscoverage['mongoose/types/document.js'][70]++; | ||
_$jscoverage['mongoose/types/document.js'][70]++; | ||
EmbeddedDocument.prototype.remove = (function (fn) { | ||
_$jscoverage['mongoose/types/document.js'][71]++; | ||
if (! this.willRemove) { | ||
_$jscoverage['mongoose/types/document.js'][71]++; | ||
_$jscoverage['mongoose/types/document.js'][72]++; | ||
this.parentArray.$pull({_id: this.doc._id}); | ||
_$jscoverage['mongoose/types/document.js'][72]++; | ||
_$jscoverage['mongoose/types/document.js'][73]++; | ||
this.willRemove = true; | ||
} | ||
}); | ||
_$jscoverage['mongoose/types/document.js'][83]++; | ||
EmbeddedDocument.prototype.validate = (function (next) { | ||
_$jscoverage['mongoose/types/document.js'][84]++; | ||
if (this.willRemove) { | ||
_$jscoverage['mongoose/types/document.js'][84]++; | ||
return next(); | ||
_$jscoverage['mongoose/types/document.js'][76]++; | ||
if (fn) { | ||
_$jscoverage['mongoose/types/document.js'][77]++; | ||
fn(null); | ||
} | ||
_$jscoverage['mongoose/types/document.js'][85]++; | ||
return Document.prototype.validate.call(this, next); | ||
_$jscoverage['mongoose/types/document.js'][79]++; | ||
return this; | ||
}); | ||
_$jscoverage['mongoose/types/document.js'][95]++; | ||
EmbeddedDocument.prototype.applyDefaults = (function (next) { | ||
_$jscoverage['mongoose/types/document.js'][96]++; | ||
if (this.willRemove) { | ||
_$jscoverage['mongoose/types/document.js'][96]++; | ||
return next(); | ||
} | ||
_$jscoverage['mongoose/types/document.js'][97]++; | ||
return Document.prototype.validate.call(this, next); | ||
}); | ||
_$jscoverage['mongoose/types/document.js'][108]++; | ||
EmbeddedDocument.prototype.registerAtomic = (function (atomic) { | ||
_$jscoverage['mongoose/types/document.js'][109]++; | ||
this.error("Unsupported"); | ||
}); | ||
_$jscoverage['mongoose/types/document.js'][116]++; | ||
_$jscoverage['mongoose/types/document.js'][86]++; | ||
Document.registerHooks.call(EmbeddedDocument, "save", "remove", "init"); | ||
_$jscoverage['mongoose/types/document.js'][122]++; | ||
_$jscoverage['mongoose/types/document.js'][92]++; | ||
module.exports = EmbeddedDocument; | ||
_$jscoverage['mongoose/types/document.js'].source = ["","/**"," * Module dependencies."," */","","var Document = require('../document');","","/**"," * EmbeddedDocument constructor."," *"," * @param {Object} object from db"," * @param {MongooseDocumentArray} parent array"," * @api private"," */","","function EmbeddedDocument (obj, parentArr) {"," this.parentArray = parentArr;"," this.parent = parentArr.parent;"," Document.call(this, obj);","};","","/**"," * Inherit from Document"," *"," */","","EmbeddedDocument.prototype.__proto__ = Document.prototype;","","/**"," * Override save to mark the parent as modified"," *"," * @api public"," */","","var oldSet = Document.prototype.set;","","EmbeddedDocument.prototype.set = function () {"," this.markModified();"," return oldSet.apply(this, arguments);","};","","/**"," * Marks parent array as modified"," *"," * @api private"," */","","EmbeddedDocument.prototype.markModified = function () {"," this.parentArray._markModified();","};","","/**"," * Save the subdocument"," *"," * @api public"," */","","EmbeddedDocument.prototype.save = function(fn) {"," fn(null);"," return this;","};","","/**"," * Remove the subdocument"," *"," * @api public"," */","","EmbeddedDocument.prototype.remove = function () {"," if (!this.willRemove){"," this.parentArray.$pull({ _id: this.doc._id });"," this.willRemove = true;"," }","};","","/**"," * Validate the doc"," *"," * @param {Function} next"," * @api private"," */","","EmbeddedDocument.prototype.validate = function (next) {"," if (this.willRemove) return next();"," return Document.prototype.validate.call(this, next);","};","","/**"," * Apply defaults"," *"," * @param {Function} next"," * @api private"," */","","EmbeddedDocument.prototype.applyDefaults = function (next) {"," if (this.willRemove) return next();"," return Document.prototype.validate.call(this, next);","};","","","/**"," * Delegates the atomic registration to the parent doc"," *"," * @param {Array} atomic operation"," * @api private"," */","","EmbeddedDocument.prototype.registerAtomic = function (atomic) {"," this.error('Unsupported');","};","","/**"," * Register hooks for some methods"," */","","Document.registerHooks.call(EmbeddedDocument, 'save', 'remove', 'init');","","/**"," * Module exxports."," */","","module.exports = EmbeddedDocument;"]; | ||
_$jscoverage['mongoose/types/document.js'].source = ["","/**"," * Module dependencies."," */","","var Document = require('../document');","","/**"," * EmbeddedDocument constructor."," *"," * @param {Object} object from db"," * @param {MongooseDocumentArray} parent array"," * @api private"," */","","function EmbeddedDocument (obj, parentArr) {"," this.parentArray = parentArr;"," this.parent = parentArr.parent;"," Document.call(this, obj);","};","","/**"," * Inherit from Document"," *"," */","","EmbeddedDocument.prototype.__proto__ = Document.prototype;","","/**"," * Override save to mark the parent as modified"," *"," * @api public"," */","","var oldSet = Document.prototype.set;","","EmbeddedDocument.prototype.set = function () {"," this.markModified();"," return oldSet.apply(this, arguments);","};","","/**"," * Marks parent array as modified"," *"," * @api private"," */","","EmbeddedDocument.prototype.markModified = function () {"," this.parentArray._markModified();","};","","/**"," * Save the subdocument"," *"," * @api public"," */","","EmbeddedDocument.prototype.save = function(fn) {"," if (fn)"," fn(null);"," return this;","};","","/**"," * Remove the subdocument"," *"," * @api public"," */","","EmbeddedDocument.prototype.remove = function (fn) {"," if (!this.willRemove){"," this.parentArray.$pull({ _id: this.doc._id });"," this.willRemove = true;"," }",""," if (fn)"," fn(null);",""," return this;","};","","/**"," * Register hooks for some methods"," */","","Document.registerHooks.call(EmbeddedDocument, 'save', 'remove', 'init');","","/**"," * Module exxports."," */","","module.exports = EmbeddedDocument;"]; |
@@ -25,5 +25,8 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/types/documentarray.js'][62] = 0; | ||
_$jscoverage['mongoose/types/documentarray.js'][63] = 0; | ||
_$jscoverage['mongoose/types/documentarray.js'][64] = 0; | ||
_$jscoverage['mongoose/types/documentarray.js'][71] = 0; | ||
_$jscoverage['mongoose/types/documentarray.js'][65] = 0; | ||
_$jscoverage['mongoose/types/documentarray.js'][68] = 0; | ||
_$jscoverage['mongoose/types/documentarray.js'][69] = 0; | ||
_$jscoverage['mongoose/types/documentarray.js'][70] = 0; | ||
_$jscoverage['mongoose/types/documentarray.js'][73] = 0; | ||
_$jscoverage['mongoose/types/documentarray.js'][80] = 0; | ||
} | ||
@@ -70,14 +73,23 @@ _$jscoverage['mongoose/types/documentarray.js'][6]++; | ||
_$jscoverage['mongoose/types/documentarray.js'][61]++; | ||
var casted = ObjectIdSchema.prototype.cast.apply(null, id); | ||
_$jscoverage['mongoose/types/documentarray.js'][62]++; | ||
try { | ||
_$jscoverage['mongoose/types/documentarray.js'][62]++; | ||
var casted = ObjectIdSchema.prototype.cast.call(null, id); | ||
} | ||
catch (e) { | ||
_$jscoverage['mongoose/types/documentarray.js'][65]++; | ||
return null; | ||
} | ||
_$jscoverage['mongoose/types/documentarray.js'][68]++; | ||
for (var i = 0, l = this.length; i < l; i++) { | ||
_$jscoverage['mongoose/types/documentarray.js'][63]++; | ||
if (ObjectId.toString(casted) == ObjectId.toString(this[i]._doc._id)) { | ||
_$jscoverage['mongoose/types/documentarray.js'][64]++; | ||
_$jscoverage['mongoose/types/documentarray.js'][69]++; | ||
if (ObjectId.toString(casted) == ObjectId.toString(this[i].get("_id"))) { | ||
_$jscoverage['mongoose/types/documentarray.js'][70]++; | ||
return this[i]; | ||
} | ||
} | ||
_$jscoverage['mongoose/types/documentarray.js'][73]++; | ||
return null; | ||
}); | ||
_$jscoverage['mongoose/types/documentarray.js'][71]++; | ||
_$jscoverage['mongoose/types/documentarray.js'][80]++; | ||
module.exports = MongooseDocumentArray; | ||
_$jscoverage['mongoose/types/documentarray.js'].source = ["","/**"," * Module dependencies."," */","","var MongooseArray = require('./array')"," , driver = global.MONGOOSE_DRIVER_PATH || '../drivers/node-mongodb-native'"," , ObjectId = require(driver + '/objectid')"," , ObjectIdSchema = require('../schema/objectid');","","/**"," * Array of embedded documents"," * 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 MongooseDocumentArray (values, path, doc) {"," var arr = [];"," arr.push.apply(arr, values);"," arr.__proto__ = MongooseDocumentArray.prototype;"," arr._atomics = [];"," arr.validators = [];"," arr._path = path;"," arr._parent = doc;"," if (doc)"," arr._schema = doc.schema.path(path);"," return arr;","};","","/**"," * Inherits from MongooseArray"," */","","MongooseDocumentArray.prototype.__proto__ = MongooseArray.prototype;","","/**"," * Overrides cast"," *"," * @api private"," */","","MongooseDocumentArray.prototype._cast = function (value) {"," var doc = new this._schema.caster(value, this);"," return doc;","};","","/**"," * Filters items by id"," *"," * @param {Object} id"," * @api public"," */","","MongooseDocumentArray.prototype.id = function(id) {"," var casted = ObjectIdSchema.prototype.cast.apply(null, id);"," for (var i = 0, l = this.length; i < l; i++)"," if (ObjectId.toString(casted) == ObjectId.toString(this[i]._doc._id))"," return this[i];","};","","/**"," * Module exports."," */","","module.exports = MongooseDocumentArray;"]; | ||
_$jscoverage['mongoose/types/documentarray.js'].source = ["","/**"," * Module dependencies."," */","","var MongooseArray = require('./array')"," , driver = global.MONGOOSE_DRIVER_PATH || '../drivers/node-mongodb-native'"," , ObjectId = require(driver + '/objectid')"," , ObjectIdSchema = require('../schema/objectid');","","/**"," * Array of embedded documents"," * 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 MongooseDocumentArray (values, path, doc) {"," var arr = [];"," arr.push.apply(arr, values);"," arr.__proto__ = MongooseDocumentArray.prototype;"," arr._atomics = [];"," arr.validators = [];"," arr._path = path;"," arr._parent = doc;"," if (doc)"," arr._schema = doc.schema.path(path);"," return arr;","};","","/**"," * Inherits from MongooseArray"," */","","MongooseDocumentArray.prototype.__proto__ = MongooseArray.prototype;","","/**"," * Overrides cast"," *"," * @api private"," */","","MongooseDocumentArray.prototype._cast = function (value) {"," var doc = new this._schema.caster(value, this);"," return doc;","};","","/**"," * Filters items by id"," *"," * @param {Object} id"," * @api public"," */","","MongooseDocumentArray.prototype.id = function(id) {"," try {"," var casted = ObjectIdSchema.prototype.cast.call(null, id);"," } catch (e) {"," // cast error"," return null;"," }",""," for (var i = 0, l = this.length; i < l; i++) {"," if (ObjectId.toString(casted) == ObjectId.toString(this[i].get('_id')))"," return this[i];"," }",""," return null;","};","","/**"," * Module exports."," */","","module.exports = MongooseDocumentArray;"]; |
@@ -108,2 +108,10 @@ /* automatically generated by JSCoverage - do not edit */ | ||
_$jscoverage['mongoose/utils.js'][374] = 0; | ||
_$jscoverage['mongoose/utils.js'][376] = 0; | ||
_$jscoverage['mongoose/utils.js'][377] = 0; | ||
_$jscoverage['mongoose/utils.js'][378] = 0; | ||
_$jscoverage['mongoose/utils.js'][379] = 0; | ||
_$jscoverage['mongoose/utils.js'][380] = 0; | ||
_$jscoverage['mongoose/utils.js'][381] = 0; | ||
_$jscoverage['mongoose/utils.js'][383] = 0; | ||
_$jscoverage['mongoose/utils.js'][385] = 0; | ||
} | ||
@@ -370,2 +378,21 @@ _$jscoverage['mongoose/utils.js'][6]++; | ||
exports.StateMachine = StateMachine; | ||
_$jscoverage['mongoose/utils.js'].source = ["","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , ObjectId = require('./types/objectid')","","/**"," * Produces a collection name from a model name"," *"," * @param {String} model name"," * @return {String} collection name"," * @api private"," */","","exports.toCollectionName = function(name) {"," return pluralize(name.toLowerCase());","};","","/**"," * Pluralization rules."," */","","var rules = ["," [/(m)an$/gi, '$1en'],"," [/(pe)rson$/gi, '$1ople'],"," [/(child)$/gi, '$1ren'],"," [/^(ox)$/gi, '$1en'],"," [/(ax|test)is$/gi, '$1es'],"," [/(octop|vir)us$/gi, '$1i'],"," [/(alias|status)$/gi, '$1es'],"," [/(bu)s$/gi, '$1ses'],"," [/(buffal|tomat|potat)o$/gi, '$1oes'],"," [/([ti])um$/gi, '$1a'],"," [/sis$/gi, 'ses'],"," [/(?:([^f])fe|([lr])f)$/gi, '$1$2ves'],"," [/(hive)$/gi, '$1s'],"," [/([^aeiouy]|qu)y$/gi, '$1ies'],"," [/(x|ch|ss|sh)$/gi, '$1es'],"," [/(matr|vert|ind)ix|ex$/gi, '$1ices'],"," [/([m|l])ouse$/gi, '$1ice'],"," [/(quiz)$/gi, '$1zes'],"," [/s$/gi, 's'],"," [/$/gi, 's']","];","","/**"," * Uncountable words."," */","","var uncountables = ["," 'advice',"," 'energy',"," 'excretion',"," 'digestion',"," 'cooperation',"," 'health',"," 'justice',"," 'labour',"," 'machinery',"," 'equipment',"," 'information',"," 'pollution',"," 'sewage',"," 'paprer',"," 'money',"," 'species',"," 'series',"," 'rain',"," 'rice',"," 'fish',"," 'sheep',"," 'moose',"," 'deer',"," 'news'","];","","/**"," * Pluralize function."," *"," * @author TJ Holowaychuk (extracted from _ext.js_)"," * @param {String} string to pluralize"," * @api private"," */","","function pluralize (str) {"," var rule, found;"," if (!~uncountables.indexOf(str.lowercase)){"," found = rules.filter(function(rule){"," return str.match(rule[0]);"," });"," if (found[0]) return str.replace(found[0][0], found[0][1]);"," }"," return str;","};","","/**"," * Add `once` to EventEmitter if absent"," *"," * @param {String} event name"," * @param {Function} listener"," * @api private"," */","","var Events = EventEmitter;","","if (!('once' in EventEmitter.prototype)){"," "," Events = function () {"," EventEmitter.apply(this, arguments);"," };",""," /**"," * Inherit from EventEmitter."," */",""," Events.prototype.__proto__ = EventEmitter.prototype;"," "," /**"," * Add `once`."," */"," "," Events.prototype.once = function (type, listener) {"," var self = this;"," self.on(type, function g(){"," self.removeListener(type, g);"," listener.apply(this, arguments);"," });"," };","","}","","exports.EventEmitter = Events;","","/**"," * Object clone with Mongoose natives support"," *"," * @param {Object} object to clone"," * @return {Object} cloned object"," * @api private"," */","","var clone = exports.clone = function (obj) {"," if (obj === undefined || obj === null)"," return obj;"," if (Array.isArray(obj))"," return cloneArray(obj);"," if (obj.toObject)"," return obj.toObject();"," if (obj.constructor == Object)"," return cloneObject(obj);"," if (obj.constructor == Date || obj.constructor == RegExp"," || obj.constructor == Function)"," return new obj.constructor(+obj);"," if (obj instanceof ObjectId)"," return ObjectId.fromString(ObjectId.toString(obj));"," if (obj.valueOf)"," return obj.valueOf();"," return obj;","};","","function cloneObject (obj) {"," var ret = {};"," for (var i in obj)"," ret[i] = clone(obj[i]);"," return ret;","};","","function cloneArray (arr) {"," var ret = [];"," for (var i = 0, l = arr.length; i < l; i++)"," ret.push(clone(arr[i]));"," return ret;","};","","/**"," * Copies and merges options with defaults."," *"," * @param {Object} defaults"," * @param {Object} supplied options"," * @return {Object} new (merged) object"," * @api private"," */","","exports.options = function (defaults, opts){"," var opts = opts || {}"," , c = clone(opts);"," for (var i in defaults)"," if (!(i in opts))"," c[i] = clone(defaults[i]);"," return c;","};","","/**"," * Erases an item from an array"," *"," * @param {Array} array"," * @param {Object} value"," * @return undefined"," * @api private"," */","","exports.erase = function (arr, item) {"," for (var i = 0, l = arr.length; i < l; i++)"," if (arr[i] === item) arr.splice(i, 1);","};","","/**"," * Generates a random string"," *"," * @api private"," */","","exports.random = function () {"," return Math.random().toString().substr(3);","};","","","/**"," * A StateMachine represents a minimal `interface` for the"," * constructors it builds via StateMachine.ctor(...)."," *"," * @api private"," */","","function StateMachine () {"," this.paths = {};"," this.states = {};","}","","/**"," * StateMachine.ctor('state1', 'state2', ...)"," * A factory method for subclassing StateMachine."," * The arguments are a list of states. For each state,"," * the constructor's prototype gets state transition"," * methods named after each state. These transition methods"," * place their path argument into the given state."," *"," * @param {String} state"," * @param {String} [state]"," * @return {Function} subclass constructor"," * @api public"," */","","StateMachine.ctor = function () {"," var states = [].slice.call(arguments);"," var ctor = function () {"," StateMachine.apply(this, arguments);"," this.stateNames = states;"," var i = states.length"," , state;"," while (i--) {"," state = states[i];"," this.states[state] = {};"," }"," };",""," ctor.prototype.__proto__ = StateMachine.prototype;"," states.forEach( function (state) {"," /**"," * Changes the `path`'s state to `state`."," */"," ctor.prototype[state] = function (path) {"," this._changeState(path, state);"," }"," });"," return ctor;","};","","StateMachine.prototype = {"," /**"," * This function is wrapped by the state change functions:"," * - `require(path)`"," * - `modify(path)`"," * - `init(path)`"," * @api private"," */",""," _changeState: function (path, nextState) {"," var prevState = this.paths[path]"," , prevBucket = this.states[prevState];"," delete this.paths[path];"," if (prevBucket) delete prevBucket[path];",""," this.paths[path] = nextState;"," this.states[nextState][path] = true;"," },",""," stateOf: function (path) {"," return this.paths[path];"," },",""," /**"," * Checks to see if at least one path is in the states passed in via `arguments`"," * e.g., this.some('required', 'inited')"," * @param {String} state that we want to check for."," * @api public"," */",""," some: function () {"," var self = this;"," return Array.prototype.some.call(arguments.length ? arguments : this.stateNames, function (state) {"," return Object.keys(self.states[state]).length;"," });"," },",""," /**"," * This function builds the functions that get assigned to `forEach` and `map`,"," * since both of those methods share a lot of the same logic."," *"," * @param {String} iterMethod is either 'forEach' or 'map'"," * @return {Function}"," * @api private"," */",""," _iter: function (iterMethod) {"," return function () {"," var numArgs = arguments.length"," , states = [].slice.call(arguments, 0, numArgs-1)"," , callback = arguments[arguments.length-1];"," if (!states.length) states = this.stateNames;"," var self = this;"," var paths = states.reduce( function (paths, state) {"," return paths.concat(Object.keys(self.states[state]));"," "," }, []);"," return paths[iterMethod]( function (path) {"," return callback(path);"," });"," };"," },",""," /**"," * Iterates over the paths that belong to one of the parameter states."," *"," * The function profile can look like:"," * this.forEach(state1, fn); // iterates over all paths in state1"," * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2"," * this.forEach(fn); // iterates over all paths in all states"," *"," * @param {String} [state]"," * @param {String} [state]"," * @param {Function} callback"," * @api public"," */",""," forEach: function () {"," this.forEach = this._iter('forEach');"," return this.forEach.apply(this, arguments);"," },",""," /**"," * Maps over the paths that belong to one of the parameter states."," *"," * The function profile can look like:"," * this.forEach(state1, fn); // iterates over all paths in state1"," * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2"," * this.forEach(fn); // iterates over all paths in all states"," *"," * @param {String} [state]"," * @param {String} [state]"," * @param {Function} callback"," * @return {Array}"," * @api public"," */",""," map: function () {"," this.map = this._iter('map');"," return this.map.apply(this, arguments);"," }","};","","exports.StateMachine = StateMachine;"]; | ||
_$jscoverage['mongoose/utils.js'][376]++; | ||
exports.inGroupsOf = (function inGroupsOf(card, arr, fn) { | ||
_$jscoverage['mongoose/utils.js'][377]++; | ||
var group = []; | ||
_$jscoverage['mongoose/utils.js'][378]++; | ||
for (var i = 0, l = arr.length; i < l; i++) { | ||
_$jscoverage['mongoose/utils.js'][379]++; | ||
if (i && i % card === 0) { | ||
_$jscoverage['mongoose/utils.js'][380]++; | ||
fn.apply(this, group); | ||
_$jscoverage['mongoose/utils.js'][381]++; | ||
group.length = 0; | ||
} | ||
_$jscoverage['mongoose/utils.js'][383]++; | ||
group.push(arr[i]); | ||
} | ||
_$jscoverage['mongoose/utils.js'][385]++; | ||
fn.apply(this, group); | ||
}); | ||
_$jscoverage['mongoose/utils.js'].source = ["","/**"," * Module dependencies."," */","","var EventEmitter = require('events').EventEmitter"," , ObjectId = require('./types/objectid')","","/**"," * Produces a collection name from a model name"," *"," * @param {String} model name"," * @return {String} collection name"," * @api private"," */","","exports.toCollectionName = function(name) {"," return pluralize(name.toLowerCase());","};","","/**"," * Pluralization rules."," */","","var rules = ["," [/(m)an$/gi, '$1en'],"," [/(pe)rson$/gi, '$1ople'],"," [/(child)$/gi, '$1ren'],"," [/^(ox)$/gi, '$1en'],"," [/(ax|test)is$/gi, '$1es'],"," [/(octop|vir)us$/gi, '$1i'],"," [/(alias|status)$/gi, '$1es'],"," [/(bu)s$/gi, '$1ses'],"," [/(buffal|tomat|potat)o$/gi, '$1oes'],"," [/([ti])um$/gi, '$1a'],"," [/sis$/gi, 'ses'],"," [/(?:([^f])fe|([lr])f)$/gi, '$1$2ves'],"," [/(hive)$/gi, '$1s'],"," [/([^aeiouy]|qu)y$/gi, '$1ies'],"," [/(x|ch|ss|sh)$/gi, '$1es'],"," [/(matr|vert|ind)ix|ex$/gi, '$1ices'],"," [/([m|l])ouse$/gi, '$1ice'],"," [/(quiz)$/gi, '$1zes'],"," [/s$/gi, 's'],"," [/$/gi, 's']","];","","/**"," * Uncountable words."," */","","var uncountables = ["," 'advice',"," 'energy',"," 'excretion',"," 'digestion',"," 'cooperation',"," 'health',"," 'justice',"," 'labour',"," 'machinery',"," 'equipment',"," 'information',"," 'pollution',"," 'sewage',"," 'paprer',"," 'money',"," 'species',"," 'series',"," 'rain',"," 'rice',"," 'fish',"," 'sheep',"," 'moose',"," 'deer',"," 'news'","];","","/**"," * Pluralize function."," *"," * @author TJ Holowaychuk (extracted from _ext.js_)"," * @param {String} string to pluralize"," * @api private"," */","","function pluralize (str) {"," var rule, found;"," if (!~uncountables.indexOf(str.lowercase)){"," found = rules.filter(function(rule){"," return str.match(rule[0]);"," });"," if (found[0]) return str.replace(found[0][0], found[0][1]);"," }"," return str;","};","","/**"," * Add `once` to EventEmitter if absent"," *"," * @param {String} event name"," * @param {Function} listener"," * @api private"," */","","var Events = EventEmitter;","","if (!('once' in EventEmitter.prototype)){"," "," Events = function () {"," EventEmitter.apply(this, arguments);"," };",""," /**"," * Inherit from EventEmitter."," */",""," Events.prototype.__proto__ = EventEmitter.prototype;"," "," /**"," * Add `once`."," */"," "," Events.prototype.once = function (type, listener) {"," var self = this;"," self.on(type, function g(){"," self.removeListener(type, g);"," listener.apply(this, arguments);"," });"," };","","}","","exports.EventEmitter = Events;","","/**"," * Object clone with Mongoose natives support"," *"," * @param {Object} object to clone"," * @return {Object} cloned object"," * @api private"," */","","var clone = exports.clone = function (obj) {"," if (obj === undefined || obj === null)"," return obj;"," if (Array.isArray(obj))"," return cloneArray(obj);"," if (obj.toObject)"," return obj.toObject();"," if (obj.constructor == Object)"," return cloneObject(obj);"," if (obj.constructor == Date || obj.constructor == RegExp"," || obj.constructor == Function)"," return new obj.constructor(+obj);"," if (obj instanceof ObjectId)"," return ObjectId.fromString(ObjectId.toString(obj));"," if (obj.valueOf)"," return obj.valueOf();"," return obj;","};","","function cloneObject (obj) {"," var ret = {};"," for (var i in obj)"," ret[i] = clone(obj[i]);"," return ret;","};","","function cloneArray (arr) {"," var ret = [];"," for (var i = 0, l = arr.length; i < l; i++)"," ret.push(clone(arr[i]));"," return ret;","};","","/**"," * Copies and merges options with defaults."," *"," * @param {Object} defaults"," * @param {Object} supplied options"," * @return {Object} new (merged) object"," * @api private"," */","","exports.options = function (defaults, opts){"," var opts = opts || {}"," , c = clone(opts);"," for (var i in defaults)"," if (!(i in opts))"," c[i] = clone(defaults[i]);"," return c;","};","","/**"," * Erases an item from an array"," *"," * @param {Array} array"," * @param {Object} value"," * @return undefined"," * @api private"," */","","exports.erase = function (arr, item) {"," for (var i = 0, l = arr.length; i < l; i++)"," if (arr[i] === item) arr.splice(i, 1);","};","","/**"," * Generates a random string"," *"," * @api private"," */","","exports.random = function () {"," return Math.random().toString().substr(3);","};","","","/**"," * A StateMachine represents a minimal `interface` for the"," * constructors it builds via StateMachine.ctor(...)."," *"," * @api private"," */","","function StateMachine () {"," this.paths = {};"," this.states = {};","}","","/**"," * StateMachine.ctor('state1', 'state2', ...)"," * A factory method for subclassing StateMachine."," * The arguments are a list of states. For each state,"," * the constructor's prototype gets state transition"," * methods named after each state. These transition methods"," * place their path argument into the given state."," *"," * @param {String} state"," * @param {String} [state]"," * @return {Function} subclass constructor"," * @api public"," */","","StateMachine.ctor = function () {"," var states = [].slice.call(arguments);"," var ctor = function () {"," StateMachine.apply(this, arguments);"," this.stateNames = states;"," var i = states.length"," , state;"," while (i--) {"," state = states[i];"," this.states[state] = {};"," }"," };",""," ctor.prototype.__proto__ = StateMachine.prototype;"," states.forEach( function (state) {"," /**"," * Changes the `path`'s state to `state`."," */"," ctor.prototype[state] = function (path) {"," this._changeState(path, state);"," }"," });"," return ctor;","};","","StateMachine.prototype = {"," /**"," * This function is wrapped by the state change functions:"," * - `require(path)`"," * - `modify(path)`"," * - `init(path)`"," * @api private"," */",""," _changeState: function (path, nextState) {"," var prevState = this.paths[path]"," , prevBucket = this.states[prevState];"," delete this.paths[path];"," if (prevBucket) delete prevBucket[path];",""," this.paths[path] = nextState;"," this.states[nextState][path] = true;"," },",""," stateOf: function (path) {"," return this.paths[path];"," },",""," /**"," * Checks to see if at least one path is in the states passed in via `arguments`"," * e.g., this.some('required', 'inited')"," * @param {String} state that we want to check for."," * @api public"," */",""," some: function () {"," var self = this;"," return Array.prototype.some.call(arguments.length ? arguments : this.stateNames, function (state) {"," return Object.keys(self.states[state]).length;"," });"," },",""," /**"," * This function builds the functions that get assigned to `forEach` and `map`,"," * since both of those methods share a lot of the same logic."," *"," * @param {String} iterMethod is either 'forEach' or 'map'"," * @return {Function}"," * @api private"," */",""," _iter: function (iterMethod) {"," return function () {"," var numArgs = arguments.length"," , states = [].slice.call(arguments, 0, numArgs-1)"," , callback = arguments[arguments.length-1];"," if (!states.length) states = this.stateNames;"," var self = this;"," var paths = states.reduce( function (paths, state) {"," return paths.concat(Object.keys(self.states[state]));"," "," }, []);"," return paths[iterMethod]( function (path) {"," return callback(path);"," });"," };"," },",""," /**"," * Iterates over the paths that belong to one of the parameter states."," *"," * The function profile can look like:"," * this.forEach(state1, fn); // iterates over all paths in state1"," * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2"," * this.forEach(fn); // iterates over all paths in all states"," *"," * @param {String} [state]"," * @param {String} [state]"," * @param {Function} callback"," * @api public"," */",""," forEach: function () {"," this.forEach = this._iter('forEach');"," return this.forEach.apply(this, arguments);"," },",""," /**"," * Maps over the paths that belong to one of the parameter states."," *"," * The function profile can look like:"," * this.forEach(state1, fn); // iterates over all paths in state1"," * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2"," * this.forEach(fn); // iterates over all paths in all states"," *"," * @param {String} [state]"," * @param {String} [state]"," * @param {Function} callback"," * @return {Array}"," * @api public"," */",""," map: function () {"," this.map = this._iter('map');"," return this.map.apply(this, arguments);"," }","};","","exports.StateMachine = StateMachine;","","exports.inGroupsOf = function inGroupsOf (card, arr, fn) {"," var group = [];"," for (var i = 0, l = arr.length; i < l; i++) {"," if (i && i % card === 0) {"," fn.apply(this, group);"," group.length = 0;"," }"," group.push(arr[i]);"," }"," fn.apply(this, group);","};"]; |
@@ -256,3 +256,3 @@ | ||
exports.version = '1.0.0'; | ||
exports.version = '1.0.1'; | ||
@@ -259,0 +259,0 @@ /** |
@@ -15,7 +15,8 @@ | ||
function MongooseNumber (value, path, doc) { | ||
this._atomics = []; | ||
this.v = value; | ||
this._path = path; | ||
this._parent = doc; | ||
Number.call(this, value); | ||
var number = new Number(value); | ||
number.__proto__ = MongooseNumber.prototype; | ||
number._atomics = []; | ||
number._path = path; | ||
number._parent = doc; | ||
return number; | ||
}; | ||
@@ -27,3 +28,3 @@ | ||
MongooseNumber.prototype.__proto__ = Number.prototype; | ||
MongooseNumber.prototype = new Number(); | ||
@@ -37,5 +38,7 @@ /** | ||
MongooseNumber.prototype.increment = function(value){ | ||
value = Number(value); | ||
this.v += (value || 1); | ||
this._atomics = [['$inc', value || 1]]; | ||
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); | ||
@@ -67,22 +70,2 @@ return this; | ||
/** | ||
* Implement valueOf | ||
* | ||
* @api public | ||
*/ | ||
MongooseNumber.prototype.valueOf = function () { | ||
return this.v; | ||
}; | ||
/** | ||
* Implement toString | ||
* | ||
* @api public | ||
*/ | ||
MongooseNumber.prototype.toString = function () { | ||
return String(this.valueOf()); | ||
}; | ||
/** | ||
* Module exports | ||
@@ -89,0 +72,0 @@ */ |
{ | ||
"name": "mongoose" | ||
, "description": "Mongoose MongoDB ORM" | ||
, "version": "1.0.0" | ||
, "version": "1.0.1" | ||
, "author": "Guillermo Rauch <guillermo@learnboost.com>" | ||
@@ -6,0 +6,0 @@ , "keywords": ["mongodb", "mongoose", "orm", "data", "datastore", "nosql"] |
@@ -31,2 +31,19 @@ Mongoose 1.0 | ||
## Installation | ||
The recommended way is through the excellent NPM: | ||
$ npm install mongoose | ||
Otherwise, you can check it in your repository and then expose it: | ||
$ git clone git@github.com:LearnBoost/mongoose.git support/mongoose/ | ||
// in your code | ||
require.paths.unshift('support/mongoose/lib') | ||
Then you can require it: | ||
require('mongoose') | ||
## Connecting to MongoDB | ||
@@ -220,4 +237,9 @@ | ||
You can find the [Dox](http://github.com/visionmedia/dox) generated API docs at | ||
http://mongoosejs.com. | ||
[http://mongoosejs.com](http://mongoosejs.com). | ||
## Getting support | ||
Please subscribe to the Google Groups [mailing | ||
list](http://groups.google.com/group/mongoose-orm/boxsubscribe). | ||
## Contributing to Mongoose | ||
@@ -224,0 +246,0 @@ |
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
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
1396133
198
25986
291
8