Skip to content

Commit

Permalink
fix: add support for node 12
Browse files Browse the repository at this point in the history
  • Loading branch information
mbroadst committed Aug 20, 2019
1 parent 28fd17b commit ae6755d
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 27 deletions.
10 changes: 6 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,19 @@ services:

matrix:
include:
- env: NODE_LTS=argon
- env: NODE_LTS=boron
- env: NODE_LTS=carbon
- env: NODE_VERSION=4
- env: NODE_VERSION=6
- env: NODE_VERSION=8
- env: NODE_VERSION=10
- env: NODE_VERSION=12

script:
- >
docker run
-i
-v $(pwd):/app
-w /app
-e NODE_LTS=$NODE_LTS
-e NODE_VERSION=$NODE_VERSION
-e KERBEROS_USERNAME=administrator
-e KERBEROS_PASSWORD=Password01
-e KERBEROS_REALM=example.com
Expand Down
18 changes: 9 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,25 @@
"authentication"
],
"dependencies": {
"bindings": "^1.3.0",
"nan": "^2.10.0",
"prebuild-install": "^5.0.0"
"bindings": "^1.5.0",
"nan": "^2.14.0",
"prebuild-install": "^5.3.0"
},
"devDependencies": {
"chai": "^4.1.2",
"chai-string": "^1.4.0",
"chai": "^4.2.0",
"chai-string": "^1.5.0",
"clang-format": "^1.2.4",
"dmd-clear": "^0.1.2",
"eslint": "^5.3.0",
"eslint": "^5.16.0",
"eslint-plugin-prettier": "^2.6.2",
"jsdoc-to-markdown": "^4.0.1",
"mocha": "^5.2.0",
"mongodb": "^3.1.3",
"mongodb": "^3.2.5",
"prebuild": "^7.6.2",
"prebuild-ci": "^2.2.3",
"prettier": "^1.14.2",
"prettier": "^1.17.1",
"request": "^2.88.0",
"segfault-handler": "^1.0.1",
"segfault-handler": "^1.2.0",
"standard-version": "^4.4.0"
},
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion src/kerberos.cc
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ NAN_GETTER(KerberosServer::ContextCompleteGetter) {

NAN_METHOD(TestMethod) {
std::string string(*Nan::Utf8String(info[0]));
bool shouldError = info[1]->BooleanValue();
bool shouldError = Nan::To<bool>(info[1]).FromJust();

std::string optionalString;
Nan::Callback* callback;
Expand Down
26 changes: 20 additions & 6 deletions src/kerberos_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,33 @@ inline void ResultDeleter(krb_result* result) {
NAN_INLINE std::string StringOptionValue(v8::Local<v8::Object> options, const char* _key) {
Nan::HandleScope scope;
v8::Local<v8::String> key = Nan::New(_key).ToLocalChecked();
return !options.IsEmpty() && options->Has(key) && options->Get(key)->IsString()
? std::string(*(Nan::Utf8String(options->Get(key))))
: std::string();
if (options.IsEmpty() || !Nan::Has(options, key).FromMaybe(false)) {
return std::string();
}

v8::Local<v8::Value> value = Nan::Get(options, key).ToLocalChecked();
if (!value->IsString()) {
return std::string();
}

return std::string(*(Nan::Utf8String(value)));
}

NAN_INLINE uint32_t UInt32OptionValue(v8::Local<v8::Object> options,
const char* _key,
uint32_t def) {
Nan::HandleScope scope;
v8::Local<v8::String> key = Nan::New(_key).ToLocalChecked();
return !options.IsEmpty() && options->Has(key) && options->Get(key)->IsNumber()
? options->Get(key)->Uint32Value()
: def;
if (options.IsEmpty() || !Nan::Has(options, key).FromMaybe(false)) {
return def;
}

v8::Local<v8::Value> value = Nan::Get(options, key).ToLocalChecked();
if (!value->IsNumber()) {
return def;
}

return value->Uint32Value(Nan::GetCurrentContext()).FromJust();
}

#endif
18 changes: 12 additions & 6 deletions src/win32/kerberos_win32.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@
#define GSS_C_REPLAY_FLAG 4
#define GSS_C_SEQUENCE_FLAG 8

const wchar_t* to_wstring(const v8::String::Utf8Value& str) {
const char *bytes = *str;
const wchar_t* to_wstring(const char *bytes) {
unsigned int sizeOfStr = MultiByteToWideChar(CP_UTF8, 0, bytes, -1, NULL, 0);
wchar_t *output = new wchar_t[sizeOfStr];
MultiByteToWideChar(CP_UTF8, 0, bytes, -1, output, sizeOfStr);
Expand All @@ -23,9 +22,16 @@ const wchar_t* to_wstring(const v8::String::Utf8Value& str) {
NAN_INLINE std::wstring WStringOptionValue(v8::Local<v8::Object> options, const char* _key) {
Nan::HandleScope scope;
v8::Local<v8::String> key = Nan::New(_key).ToLocalChecked();
return !options.IsEmpty() && options->Has(key) && options->Get(key)->IsString()
? std::wstring(to_wstring(v8::String::Utf8Value(options->Get(key)->ToString())))
: std::wstring();
if (options.IsEmpty() || !Nan::Has(options, key).FromMaybe(false)) {
return std::wstring();
}

v8::Local<v8::Value> value = Nan::Get(options, key).ToLocalChecked();
if (!value->IsString()) {
return std::wstring();
}

return std::wstring(to_wstring(*(Nan::Utf8String(value))));
}

/// KerberosClient
Expand Down Expand Up @@ -131,7 +137,7 @@ NAN_METHOD(KerberosServer::Step) {

/// Global Methods
NAN_METHOD(InitializeClient) {
std::wstring service(to_wstring(v8::String::Utf8Value(info[0]->ToString())));
std::wstring service(to_wstring(*(Nan::Utf8String(info[0]))));
v8::Local<v8::Object> options = Nan::To<v8::Object>(info[1]).ToLocalChecked();
Nan::Callback* callback = new Nan::Callback(Nan::To<v8::Function>(info[2]).ToLocalChecked());

Expand Down
2 changes: 1 addition & 1 deletion test/scripts/travis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ echo "Installing Node.js"
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install --lts=$NODE_LTS
nvm install $NODE_VERSION

echo "Installing dependencies and running test"
npm install --unsafe-perm
Expand Down

0 comments on commit ae6755d

Please sign in to comment.