Comparing version 0.4.4 to 0.4.5
@@ -1,2 +0,2 @@ | ||
"use strict" | ||
// "use strict" | ||
@@ -25,27 +25,10 @@ var writeIEEE754 = require('./float_parser').writeIEEE754 | ||
*/ | ||
// Max Size | ||
var MAXSIZE = (1024*1024*17); | ||
// Max Document Buffer size | ||
var buffer = new Buffer(1024 * 64); | ||
var buffer = new Buffer(MAXSIZE); | ||
var BSON = function() { | ||
this.buffer = buffer; | ||
} | ||
// Handle range errors, allowing buffer to grow over time | ||
var attemptSerialize = function(self, object, checkKeys, asBuffer, serializeFunctions, index) { | ||
try { | ||
// Serialize into the buffer | ||
return serializer(self.buffer, object, checkKeys, index || 0, 0, serializeFunctions); | ||
} catch(err) { | ||
// Range error, allocate more space | ||
if(err instanceof RangeError) { | ||
self.buffer = new Buffer(self.buffer.length * 2); | ||
} else { | ||
throw err; | ||
} | ||
// Attempt to serialize again | ||
return attemptSerialize(self, object, checkKeys, asBuffer, serializeFunctions, index); | ||
} | ||
} | ||
/** | ||
@@ -63,7 +46,7 @@ * Serialize a Javascript object. | ||
// Attempt to serialize | ||
var serializationIndex = attemptSerialize(this, object, checkKeys, asBuffer, serializeFunctions, index); | ||
var serializationIndex = serializer(buffer, object, checkKeys, index || 0, 0, serializeFunctions); | ||
// Create the final buffer | ||
var finishedBuffer = new Buffer(serializationIndex); | ||
// Copy into the finished buffer | ||
this.buffer.copy(finishedBuffer, 0, 0, finishedBuffer.length); | ||
buffer.copy(finishedBuffer, 0, 0, finishedBuffer.length); | ||
// Return the buffer | ||
@@ -84,6 +67,7 @@ return finishedBuffer; | ||
*/ | ||
BSON.prototype.serializeWithBufferAndIndex = function(object, checkKeys, buffer, startIndex, serializeFunctions) { | ||
BSON.prototype.serializeWithBufferAndIndex = function(object, checkKeys, finalBuffer, startIndex, serializeFunctions) { | ||
// Attempt to serialize | ||
var serializationIndex = attemptSerialize(this, object, checkKeys, true, serializeFunctions, 0); | ||
this.buffer.copy(buffer, startIndex, 0, serializationIndex); | ||
var serializationIndex = serializer(buffer, object, checkKeys, index || 0, 0, serializeFunctions); | ||
buffer.copy(finalBuffer, startIndex, 0, serializationIndex); | ||
// Return the index | ||
return startIndex + serializationIndex - 1; | ||
@@ -90,0 +74,0 @@ } |
@@ -556,3 +556,3 @@ "use strict" | ||
} else if(type == 'object' && value['_bsontype'] == null) { | ||
index = serializeObject(buffer, key, value, index, checkKeys, depth); | ||
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
} else if(value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') { | ||
@@ -563,5 +563,5 @@ index = serializeLong(buffer, key, value, index); | ||
} else if(typeof value == 'function' && serializeFunctions) { | ||
index = serializeFunction(buffer, key, value, index, checkKeys, depth); | ||
index = serializeFunction(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
} else if(value['_bsontype'] == 'Code') { | ||
index = serializeCode(buffer, key, value, index, checkKeys, depth); | ||
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
} else if(value['_bsontype'] == 'Binary') { | ||
@@ -572,3 +572,3 @@ index = serializeBinary(buffer, key, value, index); | ||
} else if(value['_bsontype'] == 'DBRef') { | ||
index = serializeDBRef(buffer, key, value, index, depth); | ||
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions); | ||
} | ||
@@ -620,3 +620,3 @@ } | ||
} else if(type == 'object' && value['_bsontype'] == null) { | ||
index = serializeObject(buffer, key, value, index, checkKeys, depth); | ||
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
} else if(value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') { | ||
@@ -627,5 +627,5 @@ index = serializeLong(buffer, key, value, index); | ||
} else if(value['_bsontype'] == 'Code') { | ||
index = serializeCode(buffer, key, value, index, checkKeys, depth); | ||
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
} else if(typeof value == 'function' && serializeFunctions) { | ||
index = serializeFunction(buffer, key, value, index, checkKeys, depth); | ||
index = serializeFunction(buffer, key, value, index, checkKeys, depth, serializeFunctions); | ||
} else if(value['_bsontype'] == 'Binary') { | ||
@@ -636,3 +636,3 @@ index = serializeBinary(buffer, key, value, index); | ||
} else if(value['_bsontype'] == 'DBRef') { | ||
index = serializeDBRef(buffer, key, value, index, depth); | ||
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions); | ||
} | ||
@@ -639,0 +639,0 @@ } |
{ "name" : "bson" | ||
, "description" : "A bson parser for node.js and the browser" | ||
, "keywords" : ["mongodb", "bson", "parser"] | ||
, "version" : "0.4.4" | ||
, "version" : "0.4.5" | ||
, "author" : "Christian Amor Kvalheim <christkv@gmail.com>" | ||
@@ -6,0 +6,0 @@ , "contributors" : [] |
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
410537
26
10742