Socket
Socket
Sign inDemoInstall

helenus

Package Overview
Dependencies
Maintainers
1
Versions
40
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

helenus - npm Package Compare versions

Comparing version 0.6.7 to 0.6.8

10

History.md

@@ -239,2 +239,10 @@ 0.0.1 / 2011-12-22

* Add support for tunable consistency on a per-query basis for CQL [ @mrvisser #130 ]
* Add support for tunable consistency on a per-query basis for CQL [ @mrvisser #130 ]
0.6.8 / 2013-12-15
==================
* Fixed issues with Deserialization of collection types
* README Updates [ @Rudeg #132 ]
* Add Date Type Support [ @tim-dev #131 ]

@@ -19,2 +19,6 @@

var NOOP = function(){};
/**
* Adds zero left-padding to numbers, when necessary
*/
var zero_pad = function(n){ return n < 10 ? "0" + n : n }

@@ -106,2 +110,20 @@ /**

if(val instanceof Date){
_val = val.getTime()
if(isNaN(_val)){
throw errors.create(new Error('Invalid Date'));
}
// C* < 2.0.2 doesn't work with negative longs
if(_val<0){
return "'" + val.getUTCFullYear()
+ '-' + zero_pad(val.getUTCMonth() + 1)
+ '-' + zero_pad(val.getUTCDate())
+ ' ' + zero_pad(val.getUTCHours())
+ ':' + zero_pad(val.getUTCMinutes())
+ ':' + zero_pad(val.getUTCSeconds())
+ "'"
}
return _val
}
if(typeof val === 'number' || typeof val === 'boolean'){

@@ -108,0 +130,0 @@ return val.toString();

44

lib/marshal/deserializers.js

@@ -49,46 +49,2 @@ var UUID = require('../uuid').UUID,

// https://github.com/simplereach/helenus/issues/96
Deserializers.decodeCollection = function (deserializers) {
return function(str) {
if(str === null || str === undefined) {
return null;
}
var buf = new Buffer(str, 'binary'),
pos = 3, len, keys = [], vals = [], i = 0, result;
while(pos < buf.length){
if(i > deserializers.length - 1) {
i = 0;
}
len = buf.readUInt16BE(pos);
pos += 2;
if(i == 0 && deserializers.length == 2) {
keys.push(deserializers[i](buf.slice(pos, len + pos)));
}
else if(i == 0 && deserializers.length == 1 || i == 1 && deserializers.length == 2) {
vals.push(deserializers[i](buf.slice(pos, len + pos)));
}
i += 1;
pos += len;
}
if(keys.length === vals.length) {
result = {}
for(var i = 0, len = keys.length; i < len; i++) {
result[keys[i]] = vals[i];
}
}
else {
result = vals;
}
return result;
};
};
/**

@@ -95,0 +51,0 @@ * Decodes a Long (Int64)

@@ -61,11 +61,14 @@ var Serializers = require('./serializers'),

function getMapType(str){
return 'MapType';
var index = str.indexOf('<');
return index > 0 ? getCompositeTypes(str.substring(index + 1, str.length - 1)) : str;
}
function getSetType(str){
return 'SetType';
var index = str.indexOf('<');
return index > 0 ? getType(str.substring(index + 1, str.length - 1)) : str;
}
function getListType(str){
return 'ListType';
var index = str.indexOf('<');
return index > 0 ? getType(str.substring(index + 1, str.length - 1)) : str;
}

@@ -112,19 +115,19 @@

if (type.indexOf('CompositeType') > -1){
return getCompositeTypes(type);
return { baseType: 'CompositeType', subType: getCompositeTypes(type) };
} else if(type.indexOf('ReversedType') > -1){
return getType(getInnerType(type));
return { baseType: 'ReversedType', subType: getType(getInnerType(type)) };
}
else if(type.indexOf('org.apache.cassandra.db.marshal.SetType') > -1){
return getSetType(type);
return { baseType: 'SetType', subType: getType(getInnerType(type)) };
}
else if(type.indexOf('org.apache.cassandra.db.marshal.ListType') > -1){
return getListType(type);
return { baseType: 'ListType', subType: getType(getInnerType(type)) };
}
else if(type.indexOf('org.apache.cassandra.db.marshal.MapType') > -1){
return getMapType(type);
return { baseType: 'MapType', subType: getCompositeTypes(type) };
}
else if(type === null || type === undefined) {
return 'BytesType';
return { baseType: null, subType: 'BytesType' };
} else {
return getType(type);
return {baseType: null, subType: getType(type) };
}

@@ -229,2 +232,52 @@ }

/**
* Descodes SetType and ListType
* @private
* @memberOf Marshal
*/
function listDeserializer(deserializer){
return function(str){
var buf = new Buffer(str, 'binary'),
pos = 2, len, vals = [], key, value;
while( pos < buf.length){
len = buf.readUInt16BE(pos);
pos += 2
value = deserializer(buf.slice(pos, len + pos));
pos += len
vals.push(value)
}
return vals;
};
}
/**
* Descodes MapType
* @private
* @memberOf Marshal
*/
function mapDeserializer(deserializers){
return function(str){
var buf = new Buffer(str, 'binary'),
pos = 2, len, vals = {}, key, value;
while( pos < buf.length){
len = buf.readUInt16BE(pos);
pos += 2
key = deserializers[0](buf.slice(pos, len + pos))
pos += len
len = buf.readUInt16BE(pos);
pos += 2;
value = deserializers[1](buf.slice(pos, len + pos))
pos += len
vals[key] = value;
}
return vals;
};
}
/**
* Gets the serializer(s) for a specific type

@@ -235,11 +288,15 @@ * @private

function getSerializer(type){
if (Array.isArray(type)){
var i = 0, typeLength = type.length, serializers = [];
if (type.baseType === 'CompositeType'){
var i = 0, typeLength = type.subType.length, serializers = [];
for(; i < typeLength; i += 1){
serializers.push( getSerializer(type[i]));
serializers.push( getSerializer(type.subType[i]));
}
return compositeSerializer(serializers);
} else if (type.baseType === 'ListType' || type.baseType == 'SetType' || type.baseType === 'MapType'){
return function(){
throw('Serializing MapType, ListType and SetType is not currently supported');
}
} else {
return TYPES[type.replace(/^\s+|\s+$/g,'')].ser;
return TYPES[type.subType.replace(/^\s+|\s+$/g,'')].ser;
}

@@ -254,12 +311,19 @@ }

function getDeserializer(type){
if (Array.isArray(type)){
var i = 0, typeLength = type.length, deserializers = [];
if (type.baseType === 'CompositeType'){
var i = 0, typeLength = type.subType.length, deserializers = [];
for(; i < typeLength; i += 1){
deserializers.push( getDeserializer(type[i]));
deserializers.push( TYPES[type.subType[i].subType].de );
}
return compositeDeserializer(deserializers);
} else if (type.baseType === 'ListType' || type.baseType == 'SetType'){
var subtypeDeserializer = getDeserializer({ baseType:null, subType: type.subType });
return listDeserializer(subtypeDeserializer);
} else if (type.baseType === 'MapType'){
var subtypeDeserializers = type.subType.map(function(t){ return getDeserializer(t) });
return mapDeserializer(subtypeDeserializers);
} else {
return function(val) {
return val !== null ? TYPES[type].de(val) : null;
return val !== null ? TYPES[type.subType].de(val) : null;
};

@@ -277,3 +341,6 @@ }

this.type = parsedType;
this.isComposite = Array.isArray(parsedType);
this.isComposite = parsedType.baseType === 'CompositeType'
this.isMap = parsedType.baseType === 'MapType';
this.isList = parsedType.baseType === 'ListType';
this.isSet = parsedType.baseType === 'SetType';

@@ -280,0 +347,0 @@ /**

{
"name": "helenus"
, "version": "0.6.7"
, "version": "0.6.8"
, "description": "NodeJS Bindings for Cassandra"

@@ -5,0 +5,0 @@ , "keywords": ["cassandra"]

@@ -102,3 +102,3 @@ # Helenus

//the driver will return a helenus.Row object just like CQL
cf.get('foo', {consistency:helenus.ConsistencyLevel.ONE} function(err, row){
cf.get('foo', {consistency:helenus.ConsistencyLevel.ONE}, function(err, row){
if(err){

@@ -105,0 +105,0 @@ throw(err);

Sorry, the diff of this file is not supported yet

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