diff --git a/package.json b/package.json index 38cc967..56cee87 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,17 @@ { "name": "compress-buffer-crc32", "description": "Synchronous Buffer compression library for Node.js", - "homepage" : "http://egorfine.github.com/node-compress-buffer", - "bugs" : { "url" : "http://github.com/egorFiNE/node-compress-buffer/issues" }, - "version": "2.0.1", + "homepage": "http://egorfine.github.com/node-compress-buffer", + "bugs": { + "url": "http://github.com/egorFiNE/node-compress-buffer/issues" + }, + "version": "3.0.0", "author": "Egor Egorov", "repository": { "type": "git", "url": "http://github.com/egorfine/node-compress-buffer.git" }, - "main" : "./index", + "main": "./index", "devDependencies": { "nodeunit": ">=0.5.4" }, diff --git a/src/compress-buffer.cc b/src/compress-buffer.cc index 648a7ce..71cd2b0 100644 --- a/src/compress-buffer.cc +++ b/src/compress-buffer.cc @@ -218,9 +218,10 @@ namespace node_compress_buffer { } v8::Local bufferIn = info[0]; + v8::Local ctx = Nan::GetCurrentContext(); if (info.Length() > 1) { - compressionLevel = info[1]->IntegerValue(); + compressionLevel = info[1]->IntegerValue(ctx).FromJust(); } size_t bytesIn = node::Buffer::Length(bufferIn); @@ -259,23 +260,23 @@ namespace node_compress_buffer { v8::Local result = Nan::New(); - result->Set(Nan::New(SYM_BODY), Nan::CopyBuffer(dataOut, bytesOut).ToLocalChecked()); + result->Set(ctx, Nan::New(SYM_BODY), Nan::CopyBuffer(dataOut, bytesOut).ToLocalChecked()); - result->Set(Nan::New(SYM_BOUNDARY), Nan::CopyBuffer(dataBoundary, bytesBoundary).ToLocalChecked()); + result->Set(ctx, Nan::New(SYM_BOUNDARY), Nan::CopyBuffer(dataBoundary, bytesBoundary).ToLocalChecked()); v8::Local dataOffsets = Nan::New(); - dataOffsets->Set(Nan::New(SYM_LEFT), Nan::New(HEADER_SIZE)); - dataOffsets->Set(Nan::New(SYM_RIGHT), Nan::New(HEADER_SIZE + dataLength)); - dataOffsets->Set(Nan::New(SYM_LAST_BLOCK), Nan::New(lastBlockPosition)); + dataOffsets->Set(ctx, Nan::New(SYM_LEFT), Nan::New(HEADER_SIZE)); + dataOffsets->Set(ctx, Nan::New(SYM_RIGHT), Nan::New(HEADER_SIZE + dataLength)); + dataOffsets->Set(ctx, Nan::New(SYM_LAST_BLOCK), Nan::New(lastBlockPosition)); v8::Local meta = Nan::New(); - meta->Set(Nan::New(SYM_OFFSETS), dataOffsets); - meta->Set(Nan::New(SYM_LENGTH), Nan::New(static_cast(bytesIn))); - meta->Set(Nan::New(SYM_LAST_VALUE), Nan::New(lastBlockValue)); - meta->Set(Nan::New(SYM_RAW_LENGTH), Nan::New(static_cast(bytesOut - HEADER_SIZE - FOOTER_SIZE))); - meta->Set(Nan::New(SYM_CRC), Nan::CopyBuffer(dataOut + (bytesOut - FOOTER_SIZE), 4).ToLocalChecked()); + meta->Set(ctx, Nan::New(SYM_OFFSETS), dataOffsets); + meta->Set(ctx, Nan::New(SYM_LENGTH), Nan::New(static_cast(bytesIn))); + meta->Set(ctx, Nan::New(SYM_LAST_VALUE), Nan::New(lastBlockValue)); + meta->Set(ctx, Nan::New(SYM_RAW_LENGTH), Nan::New(static_cast(bytesOut - HEADER_SIZE - FOOTER_SIZE))); + meta->Set(ctx, Nan::New(SYM_CRC), Nan::CopyBuffer(dataOut + (bytesOut - FOOTER_SIZE), 4).ToLocalChecked()); - result->Set(Nan::New(SYM_META), meta); + result->Set(ctx, Nan::New(SYM_META), meta); free(dataOut); free(dataBoundary); @@ -298,10 +299,11 @@ namespace node_compress_buffer { return; } - v8::Local bufferIn = info[0]->ToObject(); + v8::Local ctx = Nan::GetCurrentContext(); + v8::Local bufferIn = info[0]->ToObject(ctx).ToLocalChecked(); if (info.Length() > 1) { - compressionLevel = info[1]->IntegerValue(); + compressionLevel = info[1]->IntegerValue(ctx).FromJust(); } const char *dataIn = node::Buffer::Data(bufferIn); @@ -320,21 +322,22 @@ namespace node_compress_buffer { return; } - v8::Handle b = Nan::CopyBuffer(dataOut, bytesOut).ToLocalChecked(); + v8::Local b = Nan::CopyBuffer(dataOut, bytesOut).ToLocalChecked(); free(dataOut); info.GetReturnValue().Set(b); } static NAN_METHOD(estimate) { v8::Local arr = v8::Local::Cast(info[0]); + v8::Local ctx = Nan::GetCurrentContext(); int i = 0; int l = arr->Length(); int sum = HEADER_SIZE + FOOTER_SIZE + ((l - 1) * SPACER_SIZE); for(; i < l; i++) { - v8::Local obj = arr->Get(i)->ToObject(); + v8::Local obj = arr->Get(ctx, i).ToLocalChecked()->ToObject(ctx).ToLocalChecked(); - if (!obj->Has(Nan::New(SYM_META))) { + if (!obj->Has(ctx, Nan::New(SYM_META)).FromJust()) { char msg[40]; sprintf(msg, "ESTIMATE wrong object (no meta key) at: %d", i); Nan::ThrowError(msg); @@ -342,9 +345,9 @@ namespace node_compress_buffer { return; } - v8::Local meta = obj->Get(Nan::New(SYM_META))->ToObject(); + v8::Local meta = obj->Get(ctx, Nan::New(SYM_META)).ToLocalChecked()->ToObject(ctx).ToLocalChecked(); - if (!meta->Has(Nan::New(SYM_RAW_LENGTH))) { + if (!meta->Has(ctx, Nan::New(SYM_RAW_LENGTH)).FromJust()) { char msg[60]; sprintf(msg, "ESTIMATE wrong object (no rawLength key) at: %d", i); Nan::ThrowError(msg); @@ -352,7 +355,7 @@ namespace node_compress_buffer { return; } - sum += meta->Get(Nan::New(SYM_RAW_LENGTH))->Uint32Value(); + sum += meta->Get(ctx, Nan::New(SYM_RAW_LENGTH)).ToLocalChecked()->Uint32Value(ctx).FromJust(); } info.GetReturnValue().Set(Nan::New(sum)); @@ -375,14 +378,15 @@ namespace node_compress_buffer { unsigned long tot = 0; v8::Local arr = v8::Local::Cast(info[0]); + v8::Local ctx = Nan::GetCurrentContext(); int l = arr->Length(); int i = 0; for (; i < l; i++) { - v8::Local obj = arr->Get(i)->ToObject(); + v8::Local obj = arr->Get(ctx, i).ToLocalChecked()->ToObject(ctx).ToLocalChecked(); - if (!obj->Has(Nan::New(SYM_META))) { + if (!obj->Has(ctx, Nan::New(SYM_META)).FromJust()) { char msg[40]; sprintf(msg, "CRC32 wrong object (no meta key) at: %d", i); Nan::ThrowError(msg); @@ -390,9 +394,9 @@ namespace node_compress_buffer { return; } - v8::Local meta = obj->Get(Nan::New(SYM_META))->ToObject(); + v8::Local meta = obj->Get(ctx, Nan::New(SYM_META)).ToLocalChecked()->ToObject(ctx).ToLocalChecked(); - if (!meta->Has(Nan::New(SYM_CRC))) { + if (!meta->Has(ctx, Nan::New(SYM_CRC)).FromJust()) { char msg[40]; sprintf(msg, "CRC32 wrong object (no crc key) at: %d", i); Nan::ThrowError(msg); @@ -400,7 +404,7 @@ namespace node_compress_buffer { return; } - v8::Local objCrc = meta->Get(Nan::New(SYM_CRC)); + v8::Local objCrc = meta->Get(ctx, Nan::New(SYM_CRC)).ToLocalChecked(); if (!node::Buffer::HasInstance(objCrc)) { char msg[40]; sprintf(msg, "CRC32 is not a buffer at: %d", i); @@ -409,7 +413,7 @@ namespace node_compress_buffer { return; } - v8::Local bufCrc = objCrc->ToObject(); + v8::Local bufCrc = objCrc->ToObject(ctx).ToLocalChecked(); if (node::Buffer::Length(bufCrc) != 4) { char msg[40]; @@ -420,15 +424,15 @@ namespace node_compress_buffer { } unsigned long tmpCrc = reverseBytes((unsigned char *) node::Buffer::Data(bufCrc)); - unsigned long tmpLen = meta->Get(Nan::New(SYM_LENGTH))->Uint32Value(); + unsigned long tmpLen = meta->Get(ctx, Nan::New(SYM_LENGTH)).ToLocalChecked()->Uint32Value(ctx).FromJust(); crc = crc32_combine(crc, tmpCrc, tmpLen); tot += tmpLen; } v8::Local data = Nan::New(); - data->Set(Nan::New(SYM_CRC), Nan::CopyBuffer((char *) &crc, 4).ToLocalChecked()); - data->Set(Nan::New(SYM_LENGTH), Nan::CopyBuffer((char *) &tot, 4).ToLocalChecked()); + data->Set(ctx, Nan::New(SYM_CRC), Nan::CopyBuffer((char *) &crc, 4).ToLocalChecked()); + data->Set(ctx, Nan::New(SYM_LENGTH), Nan::CopyBuffer((char *) &tot, 4).ToLocalChecked()); info.GetReturnValue().Set(data); } @@ -462,7 +466,7 @@ namespace node_compress_buffer { return; } - v8::Local bufferIn = info[0]->ToObject(); + v8::Local bufferIn = info[0]->ToObject(Nan::GetCurrentContext()).ToLocalChecked(); strmUncompress.next_in = (Bytef*) node::Buffer::Data(bufferIn); strmUncompress.avail_in = node::Buffer::Length(bufferIn); @@ -517,21 +521,23 @@ namespace node_compress_buffer { return; } - v8::Handle b = Nan::CopyBuffer((char *)bufferOut, malloc_size).ToLocalChecked(); + v8::Local b = Nan::CopyBuffer((char *)bufferOut, malloc_size).ToLocalChecked(); free(bufferOut); info.GetReturnValue().Set(b); } - void init(v8::Handle target) { + void init(v8::Local target) { tmpBody = (unsigned char *) malloc(CHUNK); const unsigned char header[] = {0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff}; - v8::Handle buffers = Nan::New(); - buffers->Set(Nan::New(SYM_HEADER), Nan::CopyBuffer(reinterpret_cast(header), 10).ToLocalChecked()); + v8::Local buffers = Nan::New(); + v8::Local ctx = Nan::GetCurrentContext(); - target->Set(Nan::New(SYM_BUFFERS), buffers); + buffers->Set(ctx, Nan::New(SYM_HEADER), Nan::CopyBuffer(reinterpret_cast(header), 10).ToLocalChecked()); + + target->Set(ctx, Nan::New(SYM_BUFFERS), buffers); Nan::SetMethod(target, "compress", compress); Nan::SetMethod(target, "uncompress", uncompress); diff --git a/test/node-compress-buffer-test.js b/test/node-compress-buffer-test.js index b85ea85..c681ee9 100644 --- a/test/node-compress-buffer-test.js +++ b/test/node-compress-buffer-test.js @@ -14,7 +14,7 @@ var loremIpsum="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do exports['basic compress']= function(test) { test.expect(2); - var uncompressed = new Buffer(loremIpsum); + var uncompressed = Buffer.from(loremIpsum); var compressed = compress(uncompressed); test.equal(compressed.length,282); test.equal(md5(compressed), "6e31946d851b7cab51e058653a16b666"); @@ -23,7 +23,7 @@ exports['basic compress']= function(test) { exports['basic uncompress']= function(test) { test.expect(2); - var uncompressed = new Buffer(loremIpsum); + var uncompressed = Buffer.from(loremIpsum); var compressed = compress(uncompressed); uncompressed = uncompress(compressed); test.equal(uncompressed.length,loremIpsum.length); @@ -60,7 +60,7 @@ exports['compress short']= function(test) { test.expect(2); var buffer, compressed; - buffer = new Buffer("too short"); + buffer = Buffer.from("too short"); compressed = compress(buffer); test.notEqual(compressed,buffer); test.notEqual(compressed.length,buffer.length); @@ -70,10 +70,10 @@ exports['compress short']= function(test) { exports['errors']= function(test) { test.expect(2); - var compressed = compress(new Buffer("")); + var compressed = compress(Buffer.from("")); test.ok(compressed.length>=0); - var nothing = uncompress(new Buffer(" sfsdcfgdfgsdgfdsgdgdsgdfgsdfgsdfgdfgfsfd ")); + var nothing = uncompress(Buffer.from(" sfsdcfgdfgsdgfdsgdgdsgdfgsdfgsdfgdfgfsfd ")); test.ok(nothing==null); test.done();