Comparing version 0.4.10 to 0.4.12
@@ -44,5 +44,5 @@ // "use strict" | ||
*/ | ||
BSON.prototype.serialize = function serialize(object, checkKeys, asBuffer, serializeFunctions, index) { | ||
BSON.prototype.serialize = function serialize(object, checkKeys, asBuffer, serializeFunctions, index, ignoreUndefined) { | ||
// Attempt to serialize | ||
var serializationIndex = serializer(buffer, object, checkKeys, index || 0, 0, serializeFunctions); | ||
var serializationIndex = serializer(buffer, object, checkKeys, index || 0, 0, serializeFunctions, ignoreUndefined); | ||
// Create the final buffer | ||
@@ -67,5 +67,5 @@ var finishedBuffer = new Buffer(serializationIndex); | ||
*/ | ||
BSON.prototype.serializeWithBufferAndIndex = function(object, checkKeys, finalBuffer, startIndex, serializeFunctions) { | ||
BSON.prototype.serializeWithBufferAndIndex = function(object, checkKeys, finalBuffer, startIndex, serializeFunctions, ignoreUndefined) { | ||
// Attempt to serialize | ||
var serializationIndex = serializer(buffer, object, checkKeys, startIndex || 0, 0, serializeFunctions); | ||
var serializationIndex = serializer(buffer, object, checkKeys, startIndex || 0, 0, serializeFunctions, ignoreUndefined); | ||
buffer.copy(finalBuffer, startIndex, 0, serializationIndex); | ||
@@ -103,4 +103,4 @@ // Return the index | ||
*/ | ||
BSON.prototype.calculateObjectSize = function(object, serializeFunctions) { | ||
return calculateObjectSize(object, serializeFunctions); | ||
BSON.prototype.calculateObjectSize = function(object, serializeFunctions, ignoreUndefined) { | ||
return calculateObjectSize(object, serializeFunctions, ignoreUndefined); | ||
} | ||
@@ -107,0 +107,0 @@ |
@@ -22,3 +22,3 @@ "use strict" | ||
var calculateObjectSize = function calculateObjectSize(object, serializeFunctions) { | ||
var calculateObjectSize = function calculateObjectSize(object, serializeFunctions, ignoreUndefined) { | ||
var totalLength = (4 + 1); | ||
@@ -28,3 +28,3 @@ | ||
for(var i = 0; i < object.length; i++) { | ||
totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true) | ||
totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined) | ||
} | ||
@@ -39,3 +39,3 @@ } else { | ||
for(var key in object) { | ||
totalLength += calculateElement(key, object[key], serializeFunctions) | ||
totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined) | ||
} | ||
@@ -51,3 +51,3 @@ } | ||
*/ | ||
function calculateElement(name, value, serializeFunctions, isArray) { | ||
function calculateElement(name, value, serializeFunctions, isArray, ignoreUndefined) { | ||
// If we have toBSON defined, override the current object | ||
@@ -72,3 +72,3 @@ if(value && value.toBSON){ | ||
case 'undefined': | ||
if(isArray) return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + (1); | ||
if(isArray || !ignoreUndefined) return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + (1); | ||
return 0; | ||
@@ -92,3 +92,3 @@ case 'boolean': | ||
if(value.scope != null && Object.keys(value.scope).length > 0) { | ||
return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + 1 + 4 + 4 + Buffer.byteLength(value.code.toString(), 'utf8') + 1 + calculateObjectSize(value.scope, serializeFunctions); | ||
return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + 1 + 4 + 4 + Buffer.byteLength(value.code.toString(), 'utf8') + 1 + calculateObjectSize(value.scope, serializeFunctions, ignoreUndefined); | ||
} else { | ||
@@ -118,3 +118,3 @@ return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + 1 + 4 + Buffer.byteLength(value.code.toString(), 'utf8') + 1; | ||
return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + 1 + calculateObjectSize(ordered_values, serializeFunctions); | ||
return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + 1 + calculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined); | ||
} else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') { | ||
@@ -127,3 +127,3 @@ return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + 1 + Buffer.byteLength(value.source, 'utf8') + 1 | ||
} else { | ||
return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + calculateObjectSize(value, serializeFunctions) + 1; | ||
return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + calculateObjectSize(value, serializeFunctions, ignoreUndefined) + 1; | ||
} | ||
@@ -137,3 +137,3 @@ case 'function': | ||
if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { | ||
return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + 1 + 4 + 4 + Buffer.byteLength(value.toString(), 'utf8') + 1 + calculateObjectSize(value.scope, serializeFunctions); | ||
return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + 1 + 4 + 4 + Buffer.byteLength(value.toString(), 'utf8') + 1 + calculateObjectSize(value.scope, serializeFunctions, ignoreUndefined); | ||
} else if(serializeFunctions) { | ||
@@ -140,0 +140,0 @@ return (name != null ? (Buffer.byteLength(name, 'utf8') + 1) : 0) + 1 + 4 + Buffer.byteLength(value.toString(), 'utf8') + 1; |
@@ -268,3 +268,3 @@ "use strict" | ||
var serializeObject = function(buffer, key, value, index, checkKeys, depth, serializeFunctions) { | ||
var serializeObject = function(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined) { | ||
// Write the type | ||
@@ -277,3 +277,3 @@ buffer[index++] = Array.isArray(value) ? BSON.BSON_DATA_ARRAY : BSON.BSON_DATA_OBJECT; | ||
buffer[index++] = 0; | ||
var endIndex = serializeInto(buffer, value, checkKeys, index, depth + 1, serializeFunctions); | ||
var endIndex = serializeInto(buffer, value, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined); | ||
// Write size | ||
@@ -346,3 +346,3 @@ var size = endIndex - index; | ||
var serializeCode = function(buffer, key, value, index, checkKeys, depth, serializeFunctions) { | ||
var serializeCode = function(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined) { | ||
if(value.scope != null && Object.keys(value.scope).length > 0) { | ||
@@ -379,3 +379,3 @@ // Write the type | ||
// Serialize the scope value | ||
var endIndex = serializeInto(buffer, value.scope, checkKeys, index, depth + 1, serializeFunctions) | ||
var endIndex = serializeInto(buffer, value.scope, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined) | ||
index = endIndex - 1; | ||
@@ -513,3 +513,3 @@ | ||
var serializeInto = function serializeInto(buffer, object, checkKeys, startingIndex, depth, serializeFunctions) { | ||
var serializeInto = function serializeInto(buffer, object, checkKeys, startingIndex, depth, serializeFunctions, ignoreUndefined) { | ||
startingIndex = startingIndex || 0; | ||
@@ -553,3 +553,3 @@ | ||
} else if(type == 'object' && value['_bsontype'] == null) { | ||
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined); | ||
} else if(value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') { | ||
@@ -562,3 +562,3 @@ index = serializeLong(buffer, key, value, index); | ||
} else if(value['_bsontype'] == 'Code') { | ||
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined); | ||
} else if(value['_bsontype'] == 'Binary') { | ||
@@ -604,3 +604,3 @@ index = serializeBinary(buffer, key, value, index); | ||
if (!checkKeys) { | ||
if (checkKeys) { | ||
if('$' == key[0]) { | ||
@@ -622,4 +622,4 @@ throw Error("key " + key + " must not start with '$'"); | ||
index = serializeDate(buffer, key, value, index); | ||
} else if(value === undefined) { | ||
} else if(value === null) { | ||
} else if(value === undefined && ignoreUndefined == true) { | ||
} else if(value === null || value === undefined) { | ||
index = serializeUndefined(buffer, key, value, index); | ||
@@ -633,3 +633,3 @@ } else if(value['_bsontype'] == 'ObjectID') { | ||
} else if(type == 'object' && value['_bsontype'] == null) { | ||
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined); | ||
} else if(value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') { | ||
@@ -640,3 +640,3 @@ index = serializeLong(buffer, key, value, index); | ||
} else if(value['_bsontype'] == 'Code') { | ||
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined); | ||
} else if(typeof value == 'function' && serializeFunctions) { | ||
@@ -643,0 +643,0 @@ index = serializeFunction(buffer, key, value, index, checkKeys, depth, serializeFunctions); |
{ "name" : "bson" | ||
, "description" : "A bson parser for node.js and the browser" | ||
, "keywords" : ["mongodb", "bson", "parser"] | ||
, "version" : "0.4.10" | ||
, "version" : "0.4.12" | ||
, "author" : "Christian Amor Kvalheim <christkv@gmail.com>" | ||
@@ -6,0 +6,0 @@ , "contributors" : [] |
Sorry, the diff of this file is not supported yet
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
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
0
416794
27