diff --git a/package.json b/package.json index ca07f62b9..3f2601955 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "url": "git://github.com/mapbox/node-sqlite3.git" }, "dependencies": { - "nan": "~2.10.0", + "nan": "^2.12.1", "node-pre-gyp": "^0.11.0", "request": "^2.87.0" }, diff --git a/src/database.cc b/src/database.cc index 4dbd5c6ab..ace5fa0b0 100644 --- a/src/database.cc +++ b/src/database.cc @@ -37,7 +37,7 @@ void Database::Process() { Nan::HandleScope scope; if (!open && locked && !queue.empty()) { - EXCEPTION(Nan::New("Database handle is closed").ToLocalChecked(), SQLITE_MISUSE, exception); + EXCEPTION("Database handle is closed", SQLITE_MISUSE, exception); Local argv[] = { exception }; bool called = false; @@ -85,7 +85,7 @@ void Database::Schedule(Work_Callback callback, Baton* baton, bool exclusive) { Nan::HandleScope scope; if (!open && locked) { - EXCEPTION(Nan::New("Database is closed").ToLocalChecked(), SQLITE_MISUSE, exception); + EXCEPTION("Database is closed", SQLITE_MISUSE, exception); Local cb = Nan::New(baton->callback); if (!cb.IsEmpty() && cb->IsFunction()) { Local argv[] = { exception }; @@ -176,7 +176,7 @@ void Database::Work_AfterOpen(uv_work_t* req) { Local argv[1]; if (baton->status != SQLITE_OK) { - EXCEPTION(Nan::New(baton->message.c_str()).ToLocalChecked(), baton->status, exception); + EXCEPTION(baton->message, baton->status, exception); argv[0] = exception; } else { @@ -256,7 +256,7 @@ void Database::Work_AfterClose(uv_work_t* req) { Local argv[1]; if (baton->status != SQLITE_OK) { - EXCEPTION(Nan::New(baton->message.c_str()).ToLocalChecked(), baton->status, exception); + EXCEPTION(baton->message, baton->status, exception); argv[0] = exception; } else { @@ -346,6 +346,9 @@ NAN_METHOD(Database::Configure) { } else { return Nan::ThrowError(Exception::Error(String::Concat( +#if V8_MAJOR_VERSION > 6 + info.GetIsolate(), +#endif Nan::To(info[0]).ToLocalChecked(), Nan::New(" is not a valid configuration option").ToLocalChecked() ))); @@ -554,7 +557,7 @@ void Database::Work_AfterExec(uv_work_t* req) { Local cb = Nan::New(baton->callback); if (baton->status != SQLITE_OK) { - EXCEPTION(Nan::New(baton->message.c_str()).ToLocalChecked(), baton->status, exception); + EXCEPTION(baton->message, baton->status, exception); if (!cb.IsEmpty() && cb->IsFunction()) { Local argv[] = { exception }; @@ -656,7 +659,7 @@ void Database::Work_AfterLoadExtension(uv_work_t* req) { Local cb = Nan::New(baton->callback); if (baton->status != SQLITE_OK) { - EXCEPTION(Nan::New(baton->message.c_str()).ToLocalChecked(), baton->status, exception); + EXCEPTION(baton->message, baton->status, exception); if (!cb.IsEmpty() && cb->IsFunction()) { Local argv[] = { exception }; diff --git a/src/macros.h b/src/macros.h index 38399ee86..99c15f3fd 100644 --- a/src/macros.h +++ b/src/macros.h @@ -83,21 +83,15 @@ const char* sqlite_authorizer_string(int type); Nan::New(property).ToLocalChecked()).ToLocalChecked()).FromJust(); #define EXCEPTION(msg, errno, name) \ - Local name = Exception::Error( \ - String::Concat( \ - String::Concat( \ - Nan::New(sqlite_code_string(errno)).ToLocalChecked(), \ - Nan::New(": ").ToLocalChecked() \ - ), \ - (msg) \ - ) \ - ); \ + Local name = Exception::Error(Nan::New( \ + std::string(sqlite_code_string(errno)) + \ + std::string(": ") + std::string(msg) \ + ).ToLocalChecked()); \ Local name ##_obj = name.As(); \ Nan::Set(name ##_obj, Nan::New("errno").ToLocalChecked(), Nan::New(errno));\ Nan::Set(name ##_obj, Nan::New("code").ToLocalChecked(), \ Nan::New(sqlite_code_string(errno)).ToLocalChecked()); - #define EMIT_EVENT(obj, argc, argv) \ TRY_CATCH_CALL((obj), \ Nan::Get(obj, \ diff --git a/src/statement.cc b/src/statement.cc index 6efbe5766..e09aeafff 100644 --- a/src/statement.cc +++ b/src/statement.cc @@ -65,7 +65,7 @@ template void Statement::Error(T* baton) { Statement* stmt = baton->stmt; // Fail hard on logic errors. assert(stmt->status != 0); - EXCEPTION(Nan::New(stmt->message.c_str()).ToLocalChecked(), stmt->status, exception); + EXCEPTION(stmt->message, stmt->status, exception); Local cb = Nan::New(baton->callback); @@ -857,7 +857,7 @@ void Statement::CleanQueue() { if (prepared && !queue.empty()) { // This statement has already been prepared and is now finalized. // Fire error for all remaining items in the queue. - EXCEPTION(Nan::New("Statement is already finalized").ToLocalChecked(), SQLITE_MISUSE, exception); + EXCEPTION("Statement is already finalized", SQLITE_MISUSE, exception); Local argv[] = { exception }; bool called = false;