Socket
Socket
Sign inDemoInstall

bson

Package Overview
Dependencies
Maintainers
2
Versions
162
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bson - npm Package Compare versions

Comparing version 0.5.3 to 0.5.4

lib/bson/int_32.js

4

HISTORY.md

@@ -0,1 +1,5 @@

0.5.4 2016-08-23
-----------------
- Added promoteValues flag (default to true) allowing user to specify if deserialization should be into wrapper classes only.
0.5.3 2016-07-11

@@ -2,0 +6,0 @@ -----------------

26

lib/bson/bson.js

@@ -6,14 +6,15 @@ "use strict"

Map = require('./map'),
Long = require('./long').Long,
Double = require('./double').Double,
Timestamp = require('./timestamp').Timestamp,
ObjectID = require('./objectid').ObjectID,
BSONRegExp = require('./regexp').BSONRegExp,
Symbol = require('./symbol').Symbol,
Code = require('./code').Code,
Decimal128 = require('./decimal128').Decimal128,
MinKey = require('./min_key').MinKey,
MaxKey = require('./max_key').MaxKey,
DBRef = require('./db_ref').DBRef,
Binary = require('./binary').Binary;
Long = require('./long'),
Double = require('./double'),
Timestamp = require('./timestamp'),
ObjectID = require('./objectid'),
BSONRegExp = require('./regexp'),
Symbol = require('./symbol'),
Int32 = require('./int_32'),
Code = require('./code'),
Decimal128 = require('./decimal128'),
MinKey = require('./min_key'),
MaxKey = require('./max_key'),
DBRef = require('./db_ref'),
Binary = require('./binary');

@@ -323,2 +324,3 @@ // Parts of the parser

module.exports.Double = Double;
module.exports.Int32 = Int32;
module.exports.MinKey = MinKey;

@@ -325,0 +327,0 @@ module.exports.MaxKey = MaxKey;

@@ -10,3 +10,3 @@ /**

if(!(this instanceof Double)) return new Double(value);
this._bsontype = 'Double';

@@ -34,2 +34,2 @@ this.value = value;

module.exports = Double;
module.exports.Double = Double;
module.exports.Double = Double;

@@ -12,2 +12,3 @@ try {

, './double'
, './int_32'
, './max_key'

@@ -36,2 +37,3 @@ , './min_key'

, './double'
, './int_32'
, './max_key'

@@ -64,2 +66,3 @@ , './min_key'

, './double'
, './int_32'
, './max_key'

@@ -66,0 +69,0 @@ , './min_key'

@@ -14,2 +14,3 @@ "use strict"

Decimal128 = require('../decimal128'),
Int32 = require('../int_32'),
DBRef = require('../db_ref').DBRef,

@@ -43,8 +44,16 @@ BSONRegExp = require('../regexp').BSONRegExp,

var cacheFunctionsCrc32 = options['cacheFunctionsCrc32'] == null ? false : options['cacheFunctionsCrc32'];
var promoteLongs = options['promoteLongs'] == null ? true : options['promoteLongs'];
var fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw'];
// Return raw bson buffer instead of parsing it
var raw = options['raw'] == null ? false : options['raw'];
// Return BSONRegExp objects instead of native regular expressions
// Return BSONRegExp objects instead of native regular expressions
var bsonRegExp = typeof options['bsonRegExp'] == 'boolean' ? options['bsonRegExp'] : false;
var promoteBuffers = options['promoteBuffers'] == null ? false : options['promoteBuffers'];
// Controls the promotion of values vs wrapper classes
var promoteBuffers = options['promoteBuffers'] == null ? false : options['promoteBuffers'];
var promoteLongs = options['promoteLongs'] == null ? true : options['promoteLongs'];
var promoteValues = options['promoteValues'] == null ? true : options['promoteValues'];
// Set the start index
var startIndex = index;

@@ -98,4 +107,9 @@

index = index + 12;
} else if(elementType == BSON.BSON_DATA_INT && promoteValues == false) {
object[name] = new Int32(buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24);
} else if(elementType == BSON.BSON_DATA_INT) {
object[name] = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24;
} else if(elementType == BSON.BSON_DATA_NUMBER && promoteValues == false) {
object[name] = new Double(buffer.readDoubleLE(index));
index = index + 8;
} else if(elementType == BSON.BSON_DATA_NUMBER) {

@@ -154,3 +168,3 @@ object[name] = buffer.readDoubleLE(index);

// Promote the long if possible
if(promoteLongs) {
if(promoteLongs && promoteValues == true) {
object[name] = long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG) ? long.toNumber() : long;

@@ -192,3 +206,3 @@ } else {

if(promoteBuffers) {
if(promoteBuffers && promoteValues) {
object[name] = buffer.slice(index, index + binarySize);

@@ -213,3 +227,3 @@ } else {

if(promoteBuffers) {
if(promoteBuffers && promoteValues) {
object[name] = _buffer;

@@ -216,0 +230,0 @@ } else {

@@ -13,2 +13,3 @@ "use strict"

BSONRegExp = require('../regexp').BSONRegExp,
Int32 = require('../int_32').Int32,
MinKey = require('../min_key').MinKey,

@@ -37,7 +38,7 @@ MaxKey = require('../max_key').MaxKey,

var serializeString = function(buffer, key, value, index) {
var serializeString = function(buffer, key, value, index, isArray) {
// Encode String type
buffer[index++] = BSON.BSON_DATA_STRING;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -60,3 +61,3 @@ index = index + numberOfWrittenBytes + 1;

var serializeNumber = function(buffer, key, value, index) {
var serializeNumber = function(buffer, key, value, index, isArray) {
// We have an integer value

@@ -70,3 +71,3 @@ if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) {

// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -84,3 +85,3 @@ index = index + numberOfWrittenBytes;

// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -97,3 +98,3 @@ index = index + numberOfWrittenBytes;

// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -120,3 +121,3 @@ index = index + numberOfWrittenBytes;

// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -134,7 +135,7 @@ index = index + numberOfWrittenBytes;

var serializeUndefined = function(buffer, key, value, index) {
var serializeUndefined = function(buffer, key, value, index, isArray) {
// Set long type
buffer[index++] = BSON.BSON_DATA_NULL;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -146,7 +147,7 @@ index = index + numberOfWrittenBytes;

var serializeBoolean = function(buffer, key, value, index) {
var serializeBoolean = function(buffer, key, value, index, isArray) {
// Write the type
buffer[index++] = BSON.BSON_DATA_BOOLEAN;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -160,7 +161,7 @@ index = index + numberOfWrittenBytes;

var serializeDate = function(buffer, key, value, index) {
var serializeDate = function(buffer, key, value, index, isArray) {
// Write the type
buffer[index++] = BSON.BSON_DATA_DATE;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -187,7 +188,7 @@ index = index + numberOfWrittenBytes;

var serializeRegExp = function(buffer, key, value, index) {
var serializeRegExp = function(buffer, key, value, index, isArray) {
// Write the type
buffer[index++] = BSON.BSON_DATA_REGEXP;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -212,7 +213,7 @@ index = index + numberOfWrittenBytes;

var serializeBSONRegExp = function(buffer, key, value, index) {
var serializeBSONRegExp = function(buffer, key, value, index, isArray) {
// Write the type
buffer[index++] = BSON.BSON_DATA_REGEXP;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -232,3 +233,3 @@ index = index + numberOfWrittenBytes;

var serializeMinMax = function(buffer, key, value, index) {
var serializeMinMax = function(buffer, key, value, index, isArray) {
// Write the type of either min or max key

@@ -244,3 +245,3 @@ if(value === null) {

// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -252,7 +253,7 @@ index = index + numberOfWrittenBytes;

var serializeObjectId = function(buffer, key, value, index) {
var serializeObjectId = function(buffer, key, value, index, isArray) {
// Write the type
buffer[index++] = BSON.BSON_DATA_OID;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');

@@ -276,7 +277,7 @@ // Encode the name

var serializeBuffer = function(buffer, key, value, index) {
var serializeBuffer = function(buffer, key, value, index, isArray) {
// Write the type
buffer[index++] = BSON.BSON_DATA_BINARY;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -301,7 +302,7 @@ index = index + numberOfWrittenBytes;

var serializeObject = function(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined) {
var serializeObject = function(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, isArray) {
// Write the type
buffer[index++] = Array.isArray(value) ? BSON.BSON_DATA_ARRAY : BSON.BSON_DATA_OBJECT;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -316,6 +317,6 @@ index = index + numberOfWrittenBytes;

var serializeDecimal128 = function(buffer, key, value, index) {
var serializeDecimal128 = function(buffer, key, value, index, isArray) {
buffer[index++] = BSON.BSON_DATA_DECIMAL128;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -329,7 +330,7 @@ index = index + numberOfWrittenBytes;

var serializeLong = function(buffer, key, value, index) {
var serializeLong = function(buffer, key, value, index, isArray) {
// Write the type
buffer[index++] = value._bsontype == 'Long' ? BSON.BSON_DATA_LONG : BSON.BSON_DATA_TIMESTAMP;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -354,7 +355,23 @@ index = index + numberOfWrittenBytes;

var serializeDouble = function(buffer, key, value, index) {
var serializeInt32 = function(buffer, key, value, index, isArray) {
// Set int type 32 bits or less
buffer[index++] = BSON.BSON_DATA_INT;
// Number of written bytes
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
// Write the int value
buffer[index++] = value & 0xff;
buffer[index++] = (value >> 8) & 0xff;
buffer[index++] = (value >> 16) & 0xff;
buffer[index++] = (value >> 24) & 0xff;
return index;
}
var serializeDouble = function(buffer, key, value, index, isArray) {
// Encode as double
buffer[index++] = BSON.BSON_DATA_NUMBER;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -370,6 +387,6 @@ index = index + numberOfWrittenBytes;

var serializeFunction = function(buffer, key, value, index, checkKeys, depth) {
var serializeFunction = function(buffer, key, value, index, checkKeys, depth, isArray) {
buffer[index++] = BSON.BSON_DATA_CODE;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -394,3 +411,3 @@ index = index + numberOfWrittenBytes;

var serializeCode = function(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined) {
var serializeCode = function(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, isArray) {
if(value.scope && typeof value.scope == 'object') {

@@ -400,3 +417,3 @@ // Write the type

// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -444,3 +461,3 @@ index = index + numberOfWrittenBytes;

// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -467,7 +484,7 @@ index = index + numberOfWrittenBytes;

var serializeBinary = function(buffer, key, value, index) {
var serializeBinary = function(buffer, key, value, index, isArray) {
// Write the type
buffer[index++] = BSON.BSON_DATA_BINARY;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -506,7 +523,7 @@ index = index + numberOfWrittenBytes;

var serializeSymbol = function(buffer, key, value, index) {
var serializeSymbol = function(buffer, key, value, index, isArray) {
// Write the type
buffer[index++] = BSON.BSON_DATA_SYMBOL;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');
// Encode the name

@@ -529,7 +546,7 @@ index = index + numberOfWrittenBytes;

var serializeDBRef = function(buffer, key, value, index, depth, serializeFunctions) {
var serializeDBRef = function(buffer, key, value, index, depth, serializeFunctions, isArray) {
// Write the type
buffer[index++] = BSON.BSON_DATA_OBJECT;
// Number of written bytes
var numberOfWrittenBytes = buffer.write(key, index, 'utf8');
var numberOfWrittenBytes = !isArray ? buffer.write(key, index, 'utf8') : buffer.write(key, index, 'ascii');

@@ -590,39 +607,41 @@ // Encode the name

if(type == 'string') {
index = serializeString(buffer, key, value, index);
index = serializeString(buffer, key, value, index, true);
} else if(type == 'number') {
index = serializeNumber(buffer, key, value, index);
index = serializeNumber(buffer, key, value, index, true);
} else if(type == 'boolean') {
index = serializeBoolean(buffer, key, value, index);
index = serializeBoolean(buffer, key, value, index, true);
} else if(value instanceof Date || isDate(value)) {
index = serializeDate(buffer, key, value, index);
index = serializeDate(buffer, key, value, index, true);
} else if(type == 'undefined' || value == null) {
index = serializeUndefined(buffer, key, value, index);
index = serializeUndefined(buffer, key, value, index, true);
} else if(value['_bsontype'] == 'ObjectID') {
index = serializeObjectId(buffer, key, value, index);
index = serializeObjectId(buffer, key, value, index, true);
} else if(Buffer.isBuffer(value)) {
index = serializeBuffer(buffer, key, value, index);
index = serializeBuffer(buffer, key, value, index, true);
} else if(value instanceof RegExp || isRegExp(value)) {
index = serializeRegExp(buffer, key, value, index);
index = serializeRegExp(buffer, key, value, index, true);
} else if(type == 'object' && value['_bsontype'] == null) {
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined);
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, true);
} else if(type == 'object' && value['_bsontype'] == 'Decimal128') {
index = serializeDecimal128(buffer, key, value, index);
index = serializeDecimal128(buffer, key, value, index, true);
} else if(value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') {
index = serializeLong(buffer, key, value, index);
index = serializeLong(buffer, key, value, index, true);
} else if(value['_bsontype'] == 'Double') {
index = serializeDouble(buffer, key, value, index);
index = serializeDouble(buffer, key, value, index, true);
} else if(typeof value == 'function' && serializeFunctions) {
index = serializeFunction(buffer, key, value, index, checkKeys, depth, serializeFunctions);
index = serializeFunction(buffer, key, value, index, checkKeys, depth, serializeFunctions, true);
} else if(value['_bsontype'] == 'Code') {
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined);
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, true);
} else if(value['_bsontype'] == 'Binary') {
index = serializeBinary(buffer, key, value, index);
index = serializeBinary(buffer, key, value, index, true);
} else if(value['_bsontype'] == 'Symbol') {
index = serializeSymbol(buffer, key, value, index);
index = serializeSymbol(buffer, key, value, index, true);
} else if(value['_bsontype'] == 'DBRef') {
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions);
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, true);
} else if(value['_bsontype'] == 'BSONRegExp') {
index = serializeBSONRegExp(buffer, key, value, index);
index = serializeBSONRegExp(buffer, key, value, index, true);
} else if(value['_bsontype'] == 'Int32') {
index = serializeInt32(buffer, key, value, index, true);
} else if(value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') {
index = serializeMinMax(buffer, key, value, index);
index = serializeMinMax(buffer, key, value, index, true);
}

@@ -702,2 +721,4 @@ }

index = serializeBSONRegExp(buffer, key, value, index);
} else if(value['_bsontype'] == 'Int32') {
index = serializeInt32(buffer, key, value, index);
} else if(value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') {

@@ -781,2 +802,4 @@ index = serializeMinMax(buffer, key, value, index);

index = serializeBSONRegExp(buffer, key, value, index);
} else if(value['_bsontype'] == 'Int32') {
index = serializeInt32(buffer, key, value, index);
} else if(value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') {

@@ -783,0 +806,0 @@ index = serializeMinMax(buffer, key, value, index);

@@ -17,3 +17,3 @@ {

],
"version": "0.5.3",
"version": "0.5.4",
"author": "Christian Amor Kvalheim <christkv@gmail.com>",

@@ -20,0 +20,0 @@ "contributors": [],

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc