Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix broken builds on Node.js 12.x due to changes to the V8 API. #80

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions uwp/windows.devices.bluetooth.advertisement/CollectionsWrap.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ namespace NodeRT {
namespace Collections {

using v8::String;
using v8::Handle;
using v8::Value;
using v8::Boolean;
using v8::Integer;
Expand Down Expand Up @@ -613,7 +612,7 @@ namespace NodeRT {
{
try
{
unsigned int index = info[0]->Uint32Value();
unsigned int index = info[0]->Uint32Value(Nan::GetCurrentContext()).FromJust();

if (index >= wrapper->_instance->Size)
{
Expand Down Expand Up @@ -1033,7 +1032,7 @@ namespace NodeRT {
{
try
{
unsigned int index = info[0]->Uint32Value();
unsigned int index = info[0]->Uint32Value(Nan::GetCurrentContext()).FromJust();

T value = wrapper->_convertToTypeFunc(info[1]);
wrapper->_instance->InsertAt(index, value);
Expand Down Expand Up @@ -1067,7 +1066,7 @@ namespace NodeRT {
{
try
{
unsigned int index = info[0]->Uint32Value();
unsigned int index = info[0]->Uint32Value(Nan::GetCurrentContext()).FromJust();

wrapper->_instance->RemoveAt(index);
return;
Expand Down Expand Up @@ -1164,7 +1163,7 @@ namespace NodeRT {
{
try
{
unsigned int index = info[0]->Uint32Value();
unsigned int index = info[0]->Uint32Value(Nan::GetCurrentContext()).FromJust();

if (index >= wrapper->_instance->Size)
{
Expand Down Expand Up @@ -1208,7 +1207,7 @@ namespace NodeRT {
{
try
{
unsigned int index = info[0]->Uint32Value();
unsigned int index = info[0]->Uint32Value(Nan::GetCurrentContext()).FromJust();

if (index >= wrapper->_instance->Size)
{
Expand Down
11 changes: 5 additions & 6 deletions uwp/windows.devices.bluetooth.advertisement/NodeRtUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
namespace NodeRT { namespace Utils {

using v8::String;
using v8::Handle;
using v8::Value;
using v8::Boolean;
using v8::Integer;
Expand Down Expand Up @@ -143,7 +142,7 @@ namespace NodeRT { namespace Utils {
// Changes to this code might break the Collection Convertor logic
::Platform::String^ V8StringToPlatformString(Local<Value> value)
{
v8::String::Value stringVal(value);
v8::String::Value stringVal(v8::Isolate::GetCurrent(), value);
#ifdef WCHART_NOT_BUILTIN_IN_NODE
return ref new Platform::String(reinterpret_cast<const wchar_t*>(*stringVal));
#else
Expand Down Expand Up @@ -197,7 +196,7 @@ namespace NodeRT { namespace Utils {
Local<Value> CreateExternalWinRTObject(const char* ns, const char* objectName, ::Platform::Object ^instance)
{
EscapableHandleScope scope;
Handle<Value> opaqueWrapper = CreateOpaqueWrapper(instance);
Local<Value> opaqueWrapper = CreateOpaqueWrapper(instance);

Local<Object> global = Nan::GetCurrentContext()->Global();
if (!Nan::Has(global, Nan::New<String>("__winRtNamespaces__").ToLocalChecked()).FromMaybe(false))
Expand Down Expand Up @@ -295,7 +294,7 @@ namespace NodeRT { namespace Utils {
{
// 116444736000000000 = The time in 100 nanoseconds between 1/1/1970(UTC) to 1/1/1601(UTC)
// ux_time = (Current time since 1601 in 100 nano sec units)/10000 - 116444736000000000;
time.UniversalTime = value->IntegerValue()* 10000 + 116444736000000000;
time.UniversalTime = value->IntegerValue(Nan::GetCurrentContext()).FromJust()* 10000 + 116444736000000000;
}

return time;
Expand All @@ -315,7 +314,7 @@ namespace NodeRT { namespace Utils {
return false;
}

v8::String::Value stringVal(value);
v8::String::Value stringVal(v8::Isolate::GetCurrent(), value);
std::wstring guidStr( L"{" );
guidStr += StringToWchar(stringVal);
guidStr += L"}" ;
Expand Down Expand Up @@ -650,7 +649,7 @@ namespace NodeRT { namespace Utils {
return retVal;
}

String::Value val(str);
String::Value val(v8::Isolate::GetCurrent(), str);
retVal = (*val)[0];
return retVal;
}
Expand Down
6 changes: 3 additions & 3 deletions uwp/windows.devices.bluetooth.advertisement/OpaqueWrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,20 @@ namespace NodeRT {
return _instance;
}

static bool IsOpaqueWrapper(v8::Handle<v8::Value> value)
static bool IsOpaqueWrapper(v8::Local<v8::Value> value)
{
if (value.IsEmpty() || !value->IsObject())
{
return false;
}

v8::Handle<v8::Value> hiddenVal = NodeRT::Utils::GetHiddenValue(value.As<v8::Object>(), Nan::New<v8::String>("__winrtOpaqueWrapper__").ToLocalChecked());
v8::Local<v8::Value> hiddenVal = NodeRT::Utils::GetHiddenValue(value.As<v8::Object>(), Nan::New<v8::String>("__winrtOpaqueWrapper__").ToLocalChecked());
if (hiddenVal.IsEmpty() || !hiddenVal->IsBoolean())
{
return false;
}

return hiddenVal->Equals(Nan::True());
return hiddenVal->Equals(Nan::GetCurrentContext(), Nan::True()).FromJust();
}

private:
Expand Down
19 changes: 9 additions & 10 deletions uwp/windows.devices.bluetooth.advertisement/_nodert_generated.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ const char* REGISTRATION_TOKEN_MAP_PROPERTY_NAME = "__registrationTokenMap__";

using v8::Array;
using v8::String;
using v8::Handle;
using v8::Value;
using v8::Boolean;
using v8::Integer;
Expand Down Expand Up @@ -1074,7 +1073,7 @@ namespace NodeRT { namespace Windows { namespace Devices { namespace Bluetooth {
try
{

Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(value)));
Platform::String^ winRtValue = ref new Platform::String(NodeRT::Utils::StringToWchar(v8::String::Value(v8::Isolate::GetCurrent(), value)));

wrapper->_instance->LocalName = winRtValue;
}
Expand Down Expand Up @@ -2641,7 +2640,7 @@ namespace NodeRT { namespace Windows { namespace Devices { namespace Bluetooth {
return;
}

String::Value eventName(info[0]);
String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
auto str = *eventName;

Local<Function> callback = info[1].As<Function>();
Expand Down Expand Up @@ -2763,7 +2762,7 @@ namespace NodeRT { namespace Windows { namespace Devices { namespace Bluetooth {
}
else
{
Nan::ThrowError(Nan::Error(String::Concat(NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
return;
}

Expand Down Expand Up @@ -2793,12 +2792,12 @@ namespace NodeRT { namespace Windows { namespace Devices { namespace Bluetooth {
return;
}

String::Value eventName(info[0]);
String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
auto str = *eventName;

if ((!NodeRT::Utils::CaseInsenstiveEquals(L"received", str)) &&(!NodeRT::Utils::CaseInsenstiveEquals(L"stopped", str)))
{
Nan::ThrowError(Nan::Error(String::Concat(NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
return;
}

Expand Down Expand Up @@ -4259,7 +4258,7 @@ namespace NodeRT { namespace Windows { namespace Devices { namespace Bluetooth {
return;
}

String::Value eventName(info[0]);
String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
auto str = *eventName;

Local<Function> callback = info[1].As<Function>();
Expand Down Expand Up @@ -4324,7 +4323,7 @@ namespace NodeRT { namespace Windows { namespace Devices { namespace Bluetooth {
}
else
{
Nan::ThrowError(Nan::Error(String::Concat(NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
return;
}

Expand Down Expand Up @@ -4354,12 +4353,12 @@ namespace NodeRT { namespace Windows { namespace Devices { namespace Bluetooth {
return;
}

String::Value eventName(info[0]);
String::Value eventName(v8::Isolate::GetCurrent(), info[0]);
auto str = *eventName;

if ((!NodeRT::Utils::CaseInsenstiveEquals(L"statusChanged", str)))
{
Nan::ThrowError(Nan::Error(String::Concat(NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
Nan::ThrowError(Nan::Error(String::Concat(v8::Isolate::GetCurrent(), NodeRT::Utils::NewString(L"given event name isn't supported: "), info[0].As<String>())));
return;
}

Expand Down
45 changes: 22 additions & 23 deletions uwp/windows.devices.bluetooth.advertisement/node-async.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ namespace NodeUtils
using v8::Exception;
using v8::Object;
using v8::Local;
using v8::Handle;
using v8::Value;
using Nan::New;
using Nan::HandleScope;
Expand All @@ -47,7 +46,7 @@ namespace NodeUtils
using Nan::Persistent;
using Nan::Undefined;

typedef std::function<void (int, Handle<Value>*)> InvokeCallbackDelegate;
typedef std::function<void (int, Local<Value>*)> InvokeCallbackDelegate;

class Async
{
Expand All @@ -69,7 +68,7 @@ namespace NodeUtils
callback_args_size = 0;
}

void setCallbackArgs(Handle<Value>* argv, int argc)
void setCallbackArgs(Local<Value>* argv, int argc)
{
HandleScope scope;

Expand Down Expand Up @@ -117,8 +116,8 @@ namespace NodeUtils
}

static uv_async_t* NewAsyncToken(
Handle<Function> callback,
Handle<Value> receiver)
Local<Function> callback,
Local<Value> receiver)
{
uv_async_t* asyncHandle = NewAsyncToken();
SetHandleCallbackData(asyncHandle->data, callback, receiver);
Expand All @@ -136,8 +135,8 @@ namespace NodeUtils
}

static uv_idle_t* NewIdleToken(
Handle<Function> callback,
Handle<Value> receiver)
Local<Function> callback,
Local<Value> receiver)
{
uv_idle_t* idleHandle = NewIdleToken();
SetHandleCallbackData(idleHandle->data, callback, receiver);
Expand All @@ -158,8 +157,8 @@ namespace NodeUtils

static void SetHandleCallbackData(
void* handleData,
Handle<Function> callback,
Handle<Value> receiver)
Local<Function> callback,
Local<Value> receiver)
{
TokenData* Token = static_cast<TokenData*>(handleData);
Token->callbackData.Reset(CreateCallbackData(callback, receiver));
Expand All @@ -179,8 +178,8 @@ namespace NodeUtils
std::shared_ptr<TInput> input,
std::function<void (Baton<TInput, TResult>*)> doWork,
std::function<void (Baton<TInput, TResult>*)> afterWork,
Handle<Function> callback,
Handle<Value> receiver = Handle<Value>())
Local<Function> callback,
Local<Value> receiver = Local<Value>())
{
HandleScope scope;
Local<Object> callbackData = CreateCallbackData(callback, receiver);
Expand All @@ -202,8 +201,8 @@ namespace NodeUtils
}

static uv_async_t* __cdecl GetAsyncToken(
Handle<Function> callback,
Handle<Value> receiver = Handle<Value>())
Local<Function> callback,
Local<Value> receiver = Local<Value>())
{
return TokenData::NewAsyncToken(callback, receiver);
}
Expand All @@ -214,8 +213,8 @@ namespace NodeUtils
}

static uv_idle_t* __cdecl GetIdleToken(
Handle<Function> callback,
Handle<Value> receiver = Handle<Value>())
Local<Function> callback,
Local<Value> receiver = Local<Value>())
{
return TokenData::NewIdleToken(callback, receiver);
}
Expand All @@ -239,7 +238,7 @@ namespace NodeUtils
{
TokenData* Token = static_cast<TokenData*>(async->data);

InvokeCallbackDelegate invokeCallback = [Token](int argc, Handle<Value>* argv)
InvokeCallbackDelegate invokeCallback = [Token](int argc, Local<Value>* argv)
{
if (!Token->callbackData.IsEmpty())
{
Expand Down Expand Up @@ -279,7 +278,7 @@ namespace NodeUtils
{
TokenData* Token = static_cast<TokenData*>(idler->data);

InvokeCallbackDelegate invokeCallback = [Token](int argc, Handle<Value>* argv)
InvokeCallbackDelegate invokeCallback = [Token](int argc, Local<Value>* argv)
{
if (!Token->callbackData.IsEmpty())
{
Expand All @@ -297,12 +296,12 @@ namespace NodeUtils
}

private:
static Handle<Object> CreateCallbackData(Handle<Function> callback, Handle<Value> receiver)
static Local<Object> CreateCallbackData(Local<Function> callback, Local<Value> receiver)
{
EscapableHandleScope scope;

Local<Object> callbackData;
if (!callback.IsEmpty() && !callback->Equals(Undefined()))
if (!callback.IsEmpty() && !callback->Equals(Nan::GetCurrentContext(), Undefined()).FromJust())
{
callbackData = New<Object>();

Expand All @@ -317,7 +316,7 @@ namespace NodeUtils
Local<Value> currentDomain = Undefined();

Local<Object> process = Nan::To<Object>(Nan::Get(GetCurrentContext()->Global(), New<String>("process").ToLocalChecked()).ToLocalChecked()).ToLocalChecked();
if (!process->Equals(Undefined()))
if (!process->Equals(Nan::GetCurrentContext(), Undefined()).FromJust())
{
currentDomain = process->Get(New<String>("domain").ToLocalChecked()) ;
}
Expand Down Expand Up @@ -351,13 +350,13 @@ namespace NodeUtils
// typical AfterWorkFunc implementation
//if (baton->error)
//{
// Handle<Value> err = Exception::Error(...);
// Handle<Value> argv[] = { err };
// Local<Value> err = Exception::Error(...);
// Local<Value> argv[] = { err };
// baton->setCallbackArgs(argv, _countof(argv));
//}
//else
//{
// Handle<Value> argv[] = { Undefined(), ... };
// Local<Value> argv[] = { Undefined(), ... };
// baton->setCallbackArgs(argv, _countof(argv));
//}

Expand Down
Loading