commit 3c8be5e707a0d5424859028dc81d1242b50ba6bf
Author: Tom Hughes <tom@compton.nu>
Date: Sun Jun 16 15:33:08 2019 +0100
Update for Node.js 12.x support
diff --git a/.travis.yml b/.travis.yml
index 6f0a64b..014b4b0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,6 +14,7 @@ node_js:
- 8
- 9
- 10
+- 12
addons:
apt:
diff --git a/package.json b/package.json
index 930f1b2..c8dacab 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
},
"dependencies": {
"bindings": "~1.3.0",
- "nan": "~2.10.0",
+ "nan": "~2.14.0",
"node-pre-gyp": "~0.11.0"
},
"devDependencies": {
diff --git a/src/html_document.cc b/src/html_document.cc
index 13139ac..dd5ebcc 100644
--- a/src/html_document.cc
+++ b/src/html_document.cc
@@ -4,6 +4,6 @@
namespace libxmljs {
void
-HtmlDocument::Initialize(v8::Handle<v8::Object> target) {
+HtmlDocument::Initialize(v8::Local<v8::Object> target) {
}
} // namespcae libxmljs
diff --git a/src/html_document.h b/src/html_document.h
index 91553ad..3a17ff4 100644
--- a/src/html_document.h
+++ b/src/html_document.h
@@ -11,7 +11,7 @@ class HtmlDocument : public XmlDocument {
public:
explicit HtmlDocument(xmlDoc* doc) : XmlDocument(doc) {}
- static void Initialize(v8::Handle<v8::Object> target);
+ static void Initialize(v8::Local<v8::Object> target);
};
} // namespace libxmljs
diff --git a/src/libxmljs.cc b/src/libxmljs.cc
index cf40a36..afa6b86 100644
--- a/src/libxmljs.cc
+++ b/src/libxmljs.cc
@@ -274,6 +274,6 @@ NAN_MODULE_INIT(init)
Nan::SetMethod(target, "xmlNodeCount", XmlNodeCount);
}
-NODE_MODULE(xmljs, init)
+NAN_MODULE_WORKER_ENABLED(xmljs, init)
} // namespace libxmljs
diff --git a/src/xml_attribute.cc b/src/xml_attribute.cc
index 1c2bae7..c71f567 100644
--- a/src/xml_attribute.cc
+++ b/src/xml_attribute.cc
@@ -23,7 +23,7 @@ XmlAttribute::New(xmlNode* xml_obj, const xmlChar* name, const xmlChar* value)
}
XmlAttribute* attribute = new XmlAttribute(attr);
- v8::Local<v8::Object> obj = Nan::NewInstance(Nan::New(constructor_template)->GetFunction()).ToLocalChecked();
+ v8::Local<v8::Object> obj = Nan::NewInstance(Nan::GetFunction(Nan::New(constructor_template)).ToLocalChecked()).ToLocalChecked();
attribute->Wrap(obj);
return scope.Escape(obj);
}
@@ -39,7 +39,7 @@ XmlAttribute::New(xmlAttr* attr)
}
XmlAttribute* attribute = new XmlAttribute(attr);
- v8::Local<v8::Object> obj = Nan::NewInstance(Nan::New(constructor_template)->GetFunction()).ToLocalChecked();
+ v8::Local<v8::Object> obj = Nan::NewInstance(Nan::GetFunction(Nan::New(constructor_template)).ToLocalChecked()).ToLocalChecked();
attribute->Wrap(obj);
return scope.Escape(obj);
}
@@ -59,7 +59,7 @@ NAN_METHOD(XmlAttribute::Value) {
// attr.value('new value');
if (info.Length() > 0) {
- attr->set_value(*v8::String::Utf8Value(info[0]));
+ attr->set_value(*Nan::Utf8String(info[0]));
return info.GetReturnValue().Set(info.Holder());
}
@@ -153,7 +153,7 @@ XmlAttribute::get_namespace() {
}
void
-XmlAttribute::Initialize(v8::Handle<v8::Object> target) {
+XmlAttribute::Initialize(v8::Local<v8::Object> target) {
Nan::HandleScope scope;
v8::Local<v8::FunctionTemplate> tmpl =
Nan::New<v8::FunctionTemplate>(XmlAttribute::New);
@@ -167,7 +167,7 @@ XmlAttribute::Initialize(v8::Handle<v8::Object> target) {
Nan::SetPrototypeMethod(tmpl, "namespace", XmlAttribute::Namespace);
Nan::Set(target, Nan::New<v8::String>("Attribute").ToLocalChecked(),
- tmpl->GetFunction());
+ Nan::GetFunction(tmpl).ToLocalChecked());
}
} // namespace libxmljs
diff --git a/src/xml_attribute.h b/src/xml_attribute.h
index 6367469..787c2be 100644
--- a/src/xml_attribute.h
+++ b/src/xml_attribute.h
@@ -14,7 +14,7 @@ public:
explicit XmlAttribute(xmlAttr* node) :
XmlNode(reinterpret_cast<xmlNode*>(node)) {}
- static void Initialize(v8::Handle<v8::Object> target);
+ static void Initialize(v8::Local<v8::Object> target);
static Nan::Persistent<v8::FunctionTemplate> constructor_template;
static v8::Local<v8::Object> New(xmlNode* xml_obj,
diff --git a/src/xml_comment.cc b/src/xml_comment.cc
index 704b2fe..f832781 100644
--- a/src/xml_comment.cc
+++ b/src/xml_comment.cc
@@ -23,14 +23,14 @@ NAN_METHOD(XmlComment::New) {
return info.GetReturnValue().Set(info.Holder());
}
- XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(info[0]->ToObject());
+ XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(document);
v8::Local<v8::Value> contentOpt;
if (info[1]->IsString()) {
contentOpt = info[1];
}
- v8::String::Utf8Value contentRaw(contentOpt);
+ Nan::Utf8String contentRaw(contentOpt);
const char* content = (contentRaw.length()) ? *contentRaw : NULL;
xmlNode* comm = xmlNewDocComment(document->xml_obj, (xmlChar *) content);
@@ -40,7 +40,7 @@ NAN_METHOD(XmlComment::New) {
comment->Wrap(info.Holder());
// this prevents the document from going away
- info.Holder()->Set(Nan::New<v8::String>("document").ToLocalChecked(), info[0]);
+ Nan::Set(info.Holder(), Nan::New<v8::String>("document").ToLocalChecked(), info[0]);
return info.GetReturnValue().Set(info.Holder());
}
@@ -53,7 +53,7 @@ NAN_METHOD(XmlComment::Text) {
if (info.Length() == 0) {
return info.GetReturnValue().Set(comment->get_content());
} else {
- comment->set_content(*v8::String::Utf8Value(info[0]));
+ comment->set_content(*Nan::Utf8String(info[0]));
}
return info.GetReturnValue().Set(info.Holder());
@@ -87,7 +87,7 @@ XmlComment::New(xmlNode* node)
}
XmlComment* comment = new XmlComment(node);
- v8::Local<v8::Object> obj = Nan::NewInstance(Nan::New(constructor_template)->GetFunction()).ToLocalChecked();
+ v8::Local<v8::Object> obj = Nan::NewInstance(Nan::GetFunction(Nan::New(constructor_template)).ToLocalChecked()).ToLocalChecked();
comment->Wrap(obj);
return scope.Escape(obj);
}
@@ -98,7 +98,7 @@ XmlComment::XmlComment(xmlNode* node)
}
void
-XmlComment::Initialize(v8::Handle<v8::Object> target)
+XmlComment::Initialize(v8::Local<v8::Object> target)
{
Nan::HandleScope scope;
v8::Local<v8::FunctionTemplate> t = Nan::New<v8::FunctionTemplate>(static_cast<NAN_METHOD((*))>(New));
@@ -111,7 +111,7 @@ XmlComment::Initialize(v8::Handle<v8::Object> target)
XmlComment::Text);
Nan::Set(target, Nan::New<v8::String>("Comment").ToLocalChecked(),
- t->GetFunction());
+ Nan::GetFunction(t).ToLocalChecked());
}
} // namespace libxmljs
diff --git a/src/xml_comment.h b/src/xml_comment.h
index 5eed4a6..0eecb70 100644
--- a/src/xml_comment.h
+++ b/src/xml_comment.h
@@ -11,7 +11,7 @@ public:
explicit XmlComment(xmlNode* node);
- static void Initialize(v8::Handle<v8::Object> target);
+ static void Initialize(v8::Local<v8::Object> target);
static Nan::Persistent<v8::FunctionTemplate> constructor_template;
diff --git a/src/xml_document.cc b/src/xml_document.cc
index 46e68b4..cb281e2 100644
--- a/src/xml_document.cc
+++ b/src/xml_document.cc
@@ -38,7 +38,7 @@ NAN_METHOD(XmlDocument::Encoding)
}
// set the encoding otherwise
- v8::String::Utf8Value encoding(info[0]->ToString());
+ Nan::Utf8String encoding(Nan::To<v8::String>(info[0]).ToLocalChecked());
if(document->xml_obj->encoding != NULL) {
xmlFree((xmlChar*)document->xml_obj->encoding);
}
@@ -82,7 +82,7 @@ NAN_METHOD(XmlDocument::Root)
// set the element as the root element for the document
// allows for proper retrieval of root later
- XmlElement* element = Nan::ObjectWrap::Unwrap<XmlElement>(info[0]->ToObject());
+ XmlElement* element = Nan::ObjectWrap::Unwrap<XmlElement>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(element);
xmlDocSetRootElement(document->xml_obj, element->xml_obj);
element->ref_wrapped_ancestor();
@@ -140,7 +140,7 @@ NAN_METHOD(XmlDocument::SetDtd)
XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(info.Holder());
assert(document);
- v8::String::Utf8Value name(info[0]);
+ Nan::Utf8String name(info[0]);
v8::Local<v8::Value> extIdOpt;
v8::Local<v8::Value> sysIdOpt;
@@ -151,8 +151,8 @@ NAN_METHOD(XmlDocument::SetDtd)
sysIdOpt = info[2];
}
- v8::String::Utf8Value extIdRaw(extIdOpt);
- v8::String::Utf8Value sysIdRaw(sysIdOpt);
+ Nan::Utf8String extIdRaw(extIdOpt);
+ Nan::Utf8String sysIdRaw(sysIdOpt);
//must be set to null in order for xmlCreateIntSubset to ignore them
const char* extId = (extIdRaw.length()) ? *extIdRaw : NULL;
@@ -180,38 +180,38 @@ NAN_METHOD(XmlDocument::ToString)
if (info.Length() > 0) {
if (info[0]->IsBoolean()) {
- if (info[0]->ToBoolean()->BooleanValue() == true) {
+ if (Nan::To<v8::Boolean>(info[0]).ToLocalChecked()->Value() == true) {
options |= XML_SAVE_FORMAT;
}
} else if (info[0]->IsObject()) {
- v8::Local<v8::Object> obj = info[0]->ToObject();
+ v8::Local<v8::Object> obj = Nan::To<v8::Object>(info[0]).ToLocalChecked();
// drop the xml declaration
- if (obj->Get(Nan::New<v8::String>("declaration").ToLocalChecked())->IsFalse()) {
+ if (Nan::Get(obj, Nan::New<v8::String>("declaration").ToLocalChecked()).ToLocalChecked()->IsFalse()) {
options |= XML_SAVE_NO_DECL;
}
// format save output
- if (obj->Get(Nan::New<v8::String>("format").ToLocalChecked())->IsTrue()) {
+ if (Nan::Get(obj, Nan::New<v8::String>("format").ToLocalChecked()).ToLocalChecked()->IsTrue()) {
options |= XML_SAVE_FORMAT;
}
// no empty tags (only works with XML) ex: <title></title> becomes <title/>
- if (obj->Get(Nan::New<v8::String>("selfCloseEmpty").ToLocalChecked())->IsFalse()) {
+ if (Nan::Get(obj, Nan::New<v8::String>("selfCloseEmpty").ToLocalChecked()).ToLocalChecked()->IsFalse()) {
options |= XML_SAVE_NO_EMPTY;
}
// format with non-significant whitespace
- if (obj->Get(Nan::New<v8::String>("whitespace").ToLocalChecked())->IsTrue()) {
+ if (Nan::Get(obj, Nan::New<v8::String>("whitespace").ToLocalChecked()).ToLocalChecked()->IsTrue()) {
options |= XML_SAVE_WSNONSIG;
}
- v8::Local<v8::Value> type = obj->Get(Nan::New<v8::String>("type").ToLocalChecked());
- if (type->Equals(Nan::New<v8::String>("XML").ToLocalChecked()) ||
- type->Equals(Nan::New<v8::String>("xml").ToLocalChecked())) {
+ v8::Local<v8::Value> type = Nan::Get(obj, Nan::New<v8::String>("type").ToLocalChecked()).ToLocalChecked();
+ if (Nan::Equals(type, Nan::New<v8::String>("XML").ToLocalChecked()).ToChecked() ||
+ Nan::Equals(type, Nan::New<v8::String>("xml").ToLocalChecked()).ToChecked()) {
options |= XML_SAVE_AS_XML; // force XML serialization on HTML doc
- } else if (type->Equals(Nan::New<v8::String>("HTML").ToLocalChecked()) ||
- type->Equals(Nan::New<v8::String>("html").ToLocalChecked())) {
+ } else if (Nan::Equals(type, Nan::New<v8::String>("HTML").ToLocalChecked()).ToChecked() ||
+ Nan::Equals(type, Nan::New<v8::String>("html").ToLocalChecked()).ToChecked()) {
options |= XML_SAVE_AS_HTML; // force HTML serialization on XML doc
// if the document is XML and we want formatted HTML output
// we must use the XHTML serializer because the default HTML
@@ -219,8 +219,8 @@ NAN_METHOD(XmlDocument::ToString)
if ((options & XML_SAVE_FORMAT) && (options & XML_SAVE_XHTML) == false) {
options |= XML_SAVE_XHTML;
}
- } else if (type->Equals(Nan::New<v8::String>("XHTML").ToLocalChecked()) ||
- type->Equals(Nan::New<v8::String>("xhtml").ToLocalChecked())) {
+ } else if (Nan::Equals(type, Nan::New<v8::String>("XHTML").ToLocalChecked()).ToChecked() ||
+ Nan::Equals(type, Nan::New<v8::String>("xhtml").ToLocalChecked()).ToChecked()) {
options |= XML_SAVE_XHTML; // force XHTML serialization
}
}
@@ -250,7 +250,7 @@ XmlDocument::New(xmlDoc* doc)
return scope.Escape(static_cast<XmlDocument*>(doc->_private)->handle());
}
- v8::Local<v8::Object> obj = Nan::NewInstance(Nan::New(constructor_template)->GetFunction()).ToLocalChecked();
+ v8::Local<v8::Object> obj = Nan::NewInstance(Nan::GetFunction(Nan::New(constructor_template)).ToLocalChecked()).ToLocalChecked();
XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(obj);
@@ -268,8 +268,8 @@ XmlDocument::New(xmlDoc* doc)
int getParserOption(v8::Local<v8::Object> props, const char *key, int value, bool defaultValue = true) {
Nan::HandleScope scope;
- v8::Local<v8::Value> prop = props->Get(Nan::New<v8::String>(key).ToLocalChecked());
- return !prop->IsUndefined() && prop->ToBoolean()->BooleanValue() == defaultValue ? value : 0;
+ v8::Local<v8::Value> prop = Nan::Get(props, Nan::New<v8::String>(key).ToLocalChecked()).ToLocalChecked();
+ return !prop->IsUndefined() && Nan::To<v8::Boolean>(prop).ToLocalChecked()->Value() == defaultValue ? value : 0;
}
xmlParserOption getParserOptions(v8::Local<v8::Object> props) {
@@ -342,16 +342,16 @@ NAN_METHOD(XmlDocument::FromHtml)
{
Nan::HandleScope scope;
- v8::Local<v8::Object> options = info[1]->ToObject();
- v8::Local<v8::Value> baseUrlOpt = options->Get(
- Nan::New<v8::String>("baseUrl").ToLocalChecked());
- v8::Local<v8::Value> encodingOpt = options->Get(
- Nan::New<v8::String>("encoding").ToLocalChecked());
- v8::Local<v8::Value> excludeImpliedElementsOpt = options->Get(
- Nan::New<v8::String>("excludeImpliedElements").ToLocalChecked());
+ v8::Local<v8::Object> options = Nan::To<v8::Object>(info[1]).ToLocalChecked();
+ v8::Local<v8::Value> baseUrlOpt = Nan::Get(options,
+ Nan::New<v8::String>("baseUrl").ToLocalChecked()).ToLocalChecked();
+ v8::Local<v8::Value> encodingOpt = Nan::Get(options,
+ Nan::New<v8::String>("encoding").ToLocalChecked()).ToLocalChecked();
+ v8::Local<v8::Value> excludeImpliedElementsOpt = Nan::Get(options,
+ Nan::New<v8::String>("excludeImpliedElements").ToLocalChecked()).ToLocalChecked();
// the base URL that will be used for this HTML parsed document
- v8::String::Utf8Value baseUrl_(baseUrlOpt->ToString());
+ Nan::Utf8String baseUrl_(Nan::To<v8::String>(baseUrlOpt).ToLocalChecked());
const char * baseUrl = *baseUrl_;
if (!baseUrlOpt->IsString()) {
baseUrl = NULL;
@@ -359,7 +359,7 @@ NAN_METHOD(XmlDocument::FromHtml)
// the encoding to be used for this document
// (leave NULL for libxml to autodetect)
- v8::String::Utf8Value encoding_(encodingOpt->ToString());
+ Nan::Utf8String encoding_(Nan::To<v8::String>(encodingOpt).ToLocalChecked());
const char * encoding = *encoding_;
if (!encodingOpt->IsString()) {
@@ -371,18 +371,18 @@ NAN_METHOD(XmlDocument::FromHtml)
xmlSetStructuredErrorFunc(reinterpret_cast<void*>(&errors), XmlSyntaxError::PushToArray);
int opts = (int)getParserOptions(options);
- if (excludeImpliedElementsOpt->ToBoolean()->Value())
+ if (Nan::To<v8::Boolean>(excludeImpliedElementsOpt).ToLocalChecked()->Value())
opts |= HTML_PARSE_NOIMPLIED | HTML_PARSE_NODEFDTD;
htmlDocPtr doc;
if (!node::Buffer::HasInstance(info[0])) {
// Parse a string
- v8::String::Utf8Value str(info[0]->ToString());
+ Nan::Utf8String str(Nan::To<v8::String>(info[0]).ToLocalChecked());
doc = htmlReadMemory(*str, str.length(), baseUrl, encoding, opts);
}
else {
// Parse a buffer
- v8::Local<v8::Object> buf = info[0]->ToObject();
+ v8::Local<v8::Object> buf = Nan::To<v8::Object>(info[0]).ToLocalChecked();
doc = htmlReadMemory(node::Buffer::Data(buf), node::Buffer::Length(buf),
baseUrl, encoding, opts);
}
@@ -416,14 +416,14 @@ NAN_METHOD(XmlDocument::FromXml)
xmlSetStructuredErrorFunc(reinterpret_cast<void *>(&errors),
XmlSyntaxError::PushToArray);
- v8::Local<v8::Object> options = info[1]->ToObject();
- v8::Local<v8::Value> baseUrlOpt = options->Get(
- Nan::New<v8::String>("baseUrl").ToLocalChecked());
- v8::Local<v8::Value> encodingOpt = options->Get(
- Nan::New<v8::String>("encoding").ToLocalChecked());
+ v8::Local<v8::Object> options = Nan::To<v8::Object>(info[1]).ToLocalChecked();
+ v8::Local<v8::Value> baseUrlOpt = Nan::Get(options,
+ Nan::New<v8::String>("baseUrl").ToLocalChecked()).ToLocalChecked();
+ v8::Local<v8::Value> encodingOpt = Nan::Get(options,
+ Nan::New<v8::String>("encoding").ToLocalChecked()).ToLocalChecked();
// the base URL that will be used for this document
- v8::String::Utf8Value baseUrl_(baseUrlOpt->ToString());
+ Nan::Utf8String baseUrl_(Nan::To<v8::String>(baseUrlOpt).ToLocalChecked());
const char * baseUrl = *baseUrl_;
if (!baseUrlOpt->IsString()) {
baseUrl = NULL;
@@ -431,7 +431,7 @@ NAN_METHOD(XmlDocument::FromXml)
// the encoding to be used for this document
// (leave NULL for libxml to autodetect)
- v8::String::Utf8Value encoding_(encodingOpt->ToString());
+ Nan::Utf8String encoding_(Nan::To<v8::String>(encodingOpt).ToLocalChecked());
const char * encoding = *encoding_;
if (!encodingOpt->IsString()) {
encoding = NULL;
@@ -441,12 +441,12 @@ NAN_METHOD(XmlDocument::FromXml)
xmlDocPtr doc;
if (!node::Buffer::HasInstance(info[0])) {
// Parse a string
- v8::String::Utf8Value str(info[0]->ToString());
+ Nan::Utf8String str(Nan::To<v8::String>(info[0]).ToLocalChecked());
doc = xmlReadMemory(*str, str.length(), baseUrl, "UTF-8", opts);
}
else {
// Parse a buffer
- v8::Local<v8::Object> buf = info[0]->ToObject();
+ v8::Local<v8::Object> buf = Nan::To<v8::Object>(info[0]).ToLocalChecked();
doc = xmlReadMemory(node::Buffer::Data(buf), node::Buffer::Length(buf),
baseUrl, encoding, opts);
}
@@ -483,7 +483,7 @@ NAN_METHOD(XmlDocument::Validate)
XmlSyntaxError::PushToArray);
XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(info.Holder());
- XmlDocument* documentSchema = Nan::ObjectWrap::Unwrap<XmlDocument>(info[0]->ToObject());
+ XmlDocument* documentSchema = Nan::ObjectWrap::Unwrap<XmlDocument>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
xmlSchemaParserCtxtPtr parser_ctxt = xmlSchemaNewDocParserCtxt(documentSchema->xml_obj);
if (parser_ctxt == NULL) {
@@ -500,7 +500,7 @@ NAN_METHOD(XmlDocument::Validate)
bool valid = xmlSchemaValidateDoc(valid_ctxt, document->xml_obj) == 0;
xmlSetStructuredErrorFunc(NULL, NULL);
- info.Holder()->Set(Nan::New<v8::String>("validationErrors").ToLocalChecked(), errors);
+ Nan::Set(info.Holder(), Nan::New<v8::String>("validationErrors").ToLocalChecked(), errors);
xmlSchemaFreeValidCtxt(valid_ctxt);
xmlSchemaFree(schema);
@@ -519,7 +519,7 @@ NAN_METHOD(XmlDocument::RngValidate)
XmlSyntaxError::PushToArray);
XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(info.Holder());
- XmlDocument* documentSchema = Nan::ObjectWrap::Unwrap<XmlDocument>(info[0]->ToObject());
+ XmlDocument* documentSchema = Nan::ObjectWrap::Unwrap<XmlDocument>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
xmlRelaxNGParserCtxtPtr parser_ctxt = xmlRelaxNGNewDocParserCtxt(documentSchema->xml_obj);
if (parser_ctxt == NULL) {
@@ -538,7 +538,7 @@ NAN_METHOD(XmlDocument::RngValidate)
bool valid = xmlRelaxNGValidateDoc(valid_ctxt, document->xml_obj) == 0;
xmlSetStructuredErrorFunc(NULL, NULL);
- info.Holder()->Set(Nan::New<v8::String>("validationErrors").ToLocalChecked(), errors);
+ Nan::Set(info.Holder(), Nan::New<v8::String>("validationErrors").ToLocalChecked(), errors);
xmlRelaxNGFreeValidCtxt(valid_ctxt);
xmlRelaxNGFree(schema);
@@ -553,7 +553,7 @@ NAN_METHOD(XmlDocument::New)
{
Nan::HandleScope scope;
- v8::String::Utf8Value version(info[0]->ToString());
+ Nan::Utf8String version(Nan::To<v8::String>(info[0]).ToLocalChecked());
xmlDoc* doc = xmlNewDoc((const xmlChar*)(*version));
XmlDocument* document = new XmlDocument(doc);
@@ -575,7 +575,7 @@ XmlDocument::~XmlDocument()
}
void
-XmlDocument::Initialize(v8::Handle<v8::Object> target)
+XmlDocument::Initialize(v8::Local<v8::Object> target)
{
Nan::HandleScope scope;
@@ -621,7 +621,7 @@ XmlDocument::Initialize(v8::Handle<v8::Object> target)
Nan::SetMethod(target, "fromHtml", XmlDocument::FromHtml);
// used to create new document handles
- Nan::Set(target, Nan::New<v8::String>("Document").ToLocalChecked(), tmpl->GetFunction());
+ Nan::Set(target, Nan::New<v8::String>("Document").ToLocalChecked(), Nan::GetFunction(tmpl).ToLocalChecked());
XmlNode::Initialize(target);
XmlNamespace::Initialize(target);
diff --git a/src/xml_document.h b/src/xml_document.h
index 5958db2..0e2872e 100644
--- a/src/xml_document.h
+++ b/src/xml_document.h
@@ -20,7 +20,7 @@ public:
virtual ~XmlDocument();
// setup the document handle bindings and internal constructor
- static void Initialize(v8::Handle<v8::Object> target);
+ static void Initialize(v8::Local<v8::Object> target);
// create a new document handle initialized with the
// given xmlDoc object, intended for use in c++ space
diff --git a/src/xml_element.cc b/src/xml_element.cc
index 9e7ddeb..3d147ba 100644
--- a/src/xml_element.cc
+++ b/src/xml_element.cc
@@ -26,16 +26,16 @@ NAN_METHOD(XmlElement::New) {
return info.GetReturnValue().Set(info.Holder());
}
- XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(info[0]->ToObject());
+ XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(document);
- v8::String::Utf8Value name(info[1]);
+ Nan::Utf8String name(info[1]);
v8::Local<v8::Value> contentOpt;
if(info[2]->IsString()) {
contentOpt = info[2];
}
- v8::String::Utf8Value contentRaw(contentOpt);
+ Nan::Utf8String contentRaw(contentOpt);
const char* content = (contentRaw.length()) ? *contentRaw : NULL;
xmlChar* encodedContent = content ? xmlEncodeSpecialChars(document->xml_obj, (const xmlChar*)content) : NULL;
@@ -51,7 +51,7 @@ NAN_METHOD(XmlElement::New) {
element->Wrap(info.Holder());
// this prevents the document from going away
- info.Holder()->Set(Nan::New<v8::String>("document").ToLocalChecked(), info[0]);
+ Nan::Set(info.Holder(), Nan::New<v8::String>("document").ToLocalChecked(), info[0]);
return info.GetReturnValue().Set(info.Holder());
}
@@ -64,7 +64,7 @@ NAN_METHOD(XmlElement::Name) {
if (info.Length() == 0)
return info.GetReturnValue().Set(element->get_name());
- v8::String::Utf8Value name(info[0]->ToString());
+ Nan::Utf8String name(Nan::To<v8::String>(info[0]).ToLocalChecked());
element->set_name(*name);
return info.GetReturnValue().Set(info.Holder());
}
@@ -77,13 +77,13 @@ NAN_METHOD(XmlElement::Attr) {
// getter
if (info.Length() == 1)
{
- v8::String::Utf8Value name(info[0]);
+ Nan::Utf8String name(info[0]);
return info.GetReturnValue().Set(element->get_attr(*name));
}
// setter
- v8::String::Utf8Value name(info[0]->ToString());
- v8::String::Utf8Value value(info[1]->ToString());
+ Nan::Utf8String name(Nan::To<v8::String>(info[0]).ToLocalChecked());
+ Nan::Utf8String value(Nan::To<v8::String>(info[1]).ToLocalChecked());
element->set_attr(*name, *value);
return info.GetReturnValue().Set(info.Holder());
@@ -101,7 +101,7 @@ NAN_METHOD(XmlElement::AddChild) {
XmlElement* element = Nan::ObjectWrap::Unwrap<XmlElement>(info.Holder());
assert(element);
- XmlNode* child = Nan::ObjectWrap::Unwrap<XmlNode>(info[0]->ToObject());
+ XmlNode* child = Nan::ObjectWrap::Unwrap<XmlNode>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(child);
xmlNode *imported_child = element->import_node(child->xml_obj);
@@ -133,7 +133,7 @@ NAN_METHOD(XmlElement::AddCData) {
if(info[0]->IsString()) {
contentOpt = info[0];
}
- v8::String::Utf8Value contentRaw(contentOpt);
+ Nan::Utf8String contentRaw(contentOpt);
const char* content = (contentRaw.length()) ? *contentRaw : NULL;
xmlNode* elem = xmlNewCDataBlock(element->xml_obj->doc,
@@ -149,23 +149,23 @@ NAN_METHOD(XmlElement::Find) {
XmlElement* element = Nan::ObjectWrap::Unwrap<XmlElement>(info.Holder());
assert(element);
- v8::String::Utf8Value xpath(info[0]);
+ Nan::Utf8String xpath(info[0]);
XmlXpathContext ctxt(element->xml_obj);
if (info.Length() == 2) {
if (info[1]->IsString()) {
- v8::String::Utf8Value uri(info[1]);
+ Nan::Utf8String uri(info[1]);
ctxt.register_ns((const xmlChar*)"xmlns", (const xmlChar*)*uri);
} else if (info[1]->IsObject()) {
- v8::Local<v8::Object> namespaces = info[1]->ToObject();
- v8::Local<v8::Array> properties = namespaces->GetPropertyNames();
+ v8::Local<v8::Object> namespaces = Nan::To<v8::Object>(info[1]).ToLocalChecked();
+ v8::Local<v8::Array> properties = Nan::GetPropertyNames(namespaces).ToLocalChecked();
for (unsigned int i = 0; i < properties->Length(); i++) {
- v8::Local<v8::String> prop_name = properties->Get(
- Nan::New<v8::Number>(i))->ToString();
- v8::String::Utf8Value prefix(prop_name);
- v8::String::Utf8Value uri(namespaces->Get(prop_name));
+ v8::Local<v8::String> prop_name = Nan::To<v8::String>(Nan::Get(properties,
+ Nan::New<v8::Number>(i)).ToLocalChecked()).ToLocalChecked();
+ Nan::Utf8String prefix(prop_name);
+ Nan::Utf8String uri(Nan::Get(namespaces, prop_name).ToLocalChecked());
ctxt.register_ns((const xmlChar*)*prefix, (const xmlChar*)*uri);
}
}
@@ -198,7 +198,7 @@ NAN_METHOD(XmlElement::Text) {
if (info.Length() == 0) {
return info.GetReturnValue().Set(element->get_content());
} else {
- element->set_content(*v8::String::Utf8Value(info[0]));
+ element->set_content(*Nan::Utf8String(info[0]));
}
return info.GetReturnValue().Set(info.Holder());
@@ -214,7 +214,7 @@ NAN_METHOD(XmlElement::Child) {
return Nan::ThrowError("Bad argument: must provide #child() with a number");
}
- const int32_t idx = info[0]->Int32Value();
+ const int32_t idx = Nan::To<v8::Int32>(info[0]).ToLocalChecked()->Value();
return info.GetReturnValue().Set(element->get_child(idx));
}
@@ -224,7 +224,7 @@ NAN_METHOD(XmlElement::ChildNodes) {
assert(element);
if (info[0]->IsInt32())
- return info.GetReturnValue().Set(element->get_child(info[0]->Int32Value()));
+ return info.GetReturnValue().Set(element->get_child(Nan::To<v8::Int32>(info[0]).ToLocalChecked()->Value()));
return info.GetReturnValue().Set(element->get_child_nodes());
}
@@ -241,7 +241,7 @@ NAN_METHOD(XmlElement::AddPrevSibling) {
XmlElement* element = Nan::ObjectWrap::Unwrap<XmlElement>(info.Holder());
assert(element);
- XmlNode* new_sibling = Nan::ObjectWrap::Unwrap<XmlNode>(info[0]->ToObject());
+ XmlNode* new_sibling = Nan::ObjectWrap::Unwrap<XmlNode>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(new_sibling);
xmlNode *imported_sibling = element->import_node(new_sibling->xml_obj);
@@ -266,7 +266,7 @@ NAN_METHOD(XmlElement::AddNextSibling) {
XmlElement* element = Nan::ObjectWrap::Unwrap<XmlElement>(info.Holder());
assert(element);
- XmlNode* new_sibling = Nan::ObjectWrap::Unwrap<XmlNode>(info[0]->ToObject());
+ XmlNode* new_sibling = Nan::ObjectWrap::Unwrap<XmlNode>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(new_sibling);
xmlNode *imported_sibling = element->import_node(new_sibling->xml_obj);
@@ -292,9 +292,9 @@ NAN_METHOD(XmlElement::Replace) {
assert(element);
if (info[0]->IsString()) {
- element->replace_text(*v8::String::Utf8Value(info[0]));
+ element->replace_text(*Nan::Utf8String(info[0]));
} else {
- XmlElement* new_sibling = Nan::ObjectWrap::Unwrap<XmlElement>(info[0]->ToObject());
+ XmlElement* new_sibling = Nan::ObjectWrap::Unwrap<XmlElement>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(new_sibling);
xmlNode *imported_sibling = element->import_node(new_sibling->xml_obj);
@@ -352,11 +352,11 @@ XmlElement::get_attrs() {
v8::Local<v8::Array> attributes = Nan::New<v8::Array>();
v8::Local<v8::Function> push = v8::Local<v8::Function>::Cast(
- attributes->Get(Nan::New<v8::String>("push").ToLocalChecked()));
+ Nan::Get(attributes, Nan::New<v8::String>("push").ToLocalChecked()).ToLocalChecked());
v8::Local<v8::Value> argv[1];
do {
argv[0] = XmlAttribute::New(attr);
- push->Call(attributes, 1, argv);
+ Nan::Call(push, attributes, 1, argv);
} while ((attr = attr->next));
return scope.Escape(attributes);
@@ -500,7 +500,7 @@ XmlElement::New(xmlNode* node)
}
XmlElement* element = new XmlElement(node);
- v8::Local<v8::Object> obj = Nan::NewInstance(Nan::New(constructor_template)->GetFunction()).ToLocalChecked();
+ v8::Local<v8::Object> obj = Nan::NewInstance(Nan::GetFunction(Nan::New(constructor_template)).ToLocalChecked()).ToLocalChecked();
element->Wrap(obj);
return scope.Escape(obj);
}
@@ -553,7 +553,7 @@ XmlElement::prev_sibling_will_merge(xmlNode *child) {
}
void
-XmlElement::Initialize(v8::Handle<v8::Object> target)
+XmlElement::Initialize(v8::Local<v8::Object> target)
{
Nan::HandleScope scope;
v8::Local<v8::FunctionTemplate> tmpl =
@@ -623,7 +623,7 @@ XmlElement::Initialize(v8::Handle<v8::Object> target)
XmlElement::Replace);
Nan::Set(target, Nan::New<v8::String>("Element").ToLocalChecked(),
- tmpl->GetFunction());
+ Nan::GetFunction(tmpl).ToLocalChecked());
}
diff --git a/src/xml_element.h b/src/xml_element.h
index 808b0a2..43e82e3 100644
--- a/src/xml_element.h
+++ b/src/xml_element.h
@@ -12,7 +12,7 @@ public:
explicit XmlElement(xmlNode* node);
- static void Initialize(v8::Handle<v8::Object> target);
+ static void Initialize(v8::Local<v8::Object> target);
static Nan::Persistent<v8::FunctionTemplate> constructor_template;
diff --git a/src/xml_namespace.cc b/src/xml_namespace.cc
index 89e9bc6..fc45557 100644
--- a/src/xml_namespace.cc
+++ b/src/xml_namespace.cc
@@ -23,17 +23,17 @@ NAN_METHOD(XmlNamespace::New) {
if (!info[0]->IsObject())
return Nan::ThrowError("You must provide a node to attach this namespace to");
- XmlNode* node = Nan::ObjectWrap::Unwrap<XmlNode>(info[0]->ToObject());
+ XmlNode* node = Nan::ObjectWrap::Unwrap<XmlNode>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
- v8::String::Utf8Value* prefix = 0;
- v8::String::Utf8Value* href = 0;
+ Nan::Utf8String* prefix = 0;
+ Nan::Utf8String* href = 0;
if (info[1]->IsString())
{
- prefix = new v8::String::Utf8Value(info[1]);
+ prefix = new Nan::Utf8String(info[1]);
}
- href = new v8::String::Utf8Value(info[2]);
+ href = new Nan::Utf8String(info[2]);
xmlNs* ns = xmlNewNs(node->xml_obj,
(const xmlChar*)(href->operator*()),
@@ -57,7 +57,7 @@ XmlNamespace::New(xmlNs* node)
}
XmlNamespace* ns = new XmlNamespace(node);
- v8::Local<v8::Object> obj = Nan::NewInstance(Nan::New(constructor_template)->GetFunction()).ToLocalChecked();
+ v8::Local<v8::Object> obj = Nan::NewInstance(Nan::GetFunction(Nan::New(constructor_template)).ToLocalChecked()).ToLocalChecked();
ns->Wrap(obj);
return scope.Escape(obj);
}
@@ -146,7 +146,7 @@ XmlNamespace::get_prefix() {
}
void
-XmlNamespace::Initialize(v8::Handle<v8::Object> target) {
+XmlNamespace::Initialize(v8::Local<v8::Object> target) {
Nan::HandleScope scope;
v8::Local<v8::FunctionTemplate> tmpl =
Nan::New<v8::FunctionTemplate>(New);
@@ -162,6 +162,6 @@ XmlNamespace::Initialize(v8::Handle<v8::Object> target) {
XmlNamespace::Prefix);
Nan::Set(target, Nan::New<v8::String>("Namespace").ToLocalChecked(),
- tmpl->GetFunction());
+ Nan::GetFunction(tmpl).ToLocalChecked());
}
} // namespace libxmljs
diff --git a/src/xml_namespace.h b/src/xml_namespace.h
index 59b0a29..2b31ebe 100644
--- a/src/xml_namespace.h
+++ b/src/xml_namespace.h
@@ -16,7 +16,7 @@ public:
xmlDoc* context; // reference-managed context
- static void Initialize(v8::Handle<v8::Object> target);
+ static void Initialize(v8::Local<v8::Object> target);
static Nan::Persistent<v8::FunctionTemplate> constructor_template;
explicit XmlNamespace(xmlNs* ns);
diff --git a/src/xml_node.cc b/src/xml_node.cc
index 52321e2..e84846c 100644
--- a/src/xml_node.cc
+++ b/src/xml_node.cc
@@ -43,12 +43,12 @@ NAN_METHOD(XmlNode::Namespace) {
// #namespace(ns) libxml.Namespace object was provided
// TODO(sprsquish): check that it was actually given a namespace obj
if (info[0]->IsObject())
- ns = Nan::ObjectWrap::Unwrap<XmlNamespace>(info[0]->ToObject());
+ ns = Nan::ObjectWrap::Unwrap<XmlNamespace>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
// #namespace(href) or #namespace(prefix, href)
// if the namespace has already been defined on the node, just set it
if (info[0]->IsString()) {
- v8::String::Utf8Value ns_to_find(info[0]->ToString());
+ Nan::Utf8String ns_to_find(Nan::To<v8::String>(info[0]).ToLocalChecked());
xmlNs* found_ns = node->find_namespace(*ns_to_find);
if (found_ns) {
// maybe build
@@ -72,13 +72,13 @@ NAN_METHOD(XmlNode::Namespace) {
}
v8::Local<v8::Function> define_namespace =
- Nan::New(XmlNamespace::constructor_template)->GetFunction();
+ Nan::GetFunction(Nan::New(XmlNamespace::constructor_template)).ToLocalChecked();
// will create a new namespace attached to this node
// since we keep the document around, the namespace, like the node, won't be
// garbage collected
v8::Local<v8::Value> new_ns = Nan::NewInstance(define_namespace, argc, argv).ToLocalChecked();
- ns = Nan::ObjectWrap::Unwrap<XmlNamespace>(new_ns->ToObject());
+ ns = Nan::ObjectWrap::Unwrap<XmlNamespace>(Nan::To<v8::Object>(new_ns).ToLocalChecked());
}
node->set_namespace(ns->xml_obj);
@@ -147,38 +147,38 @@ NAN_METHOD(XmlNode::ToString) {
if (info.Length() > 0) {
if (info[0]->IsBoolean()) {
- if (info[0]->ToBoolean()->BooleanValue() == true) {
+ if (Nan::To<v8::Boolean>(info[0]).ToLocalChecked()->Value() == true) {
options |= XML_SAVE_FORMAT;
}
} else if (info[0]->IsObject()) {
- v8::Local<v8::Object> obj = info[0]->ToObject();
+ v8::Local<v8::Object> obj = Nan::To<v8::Object>(info[0]).ToLocalChecked();
// drop the xml declaration
- if (obj->Get(Nan::New<v8::String>("declaration").ToLocalChecked())->IsFalse()) {
+ if (Nan::Get(obj, Nan::New<v8::String>("declaration").ToLocalChecked()).ToLocalChecked()->IsFalse()) {
options |= XML_SAVE_NO_DECL;
}
// format save output
- if (obj->Get(Nan::New<v8::String>("format").ToLocalChecked())->IsTrue()) {
+ if (Nan::Get(obj, Nan::New<v8::String>("format").ToLocalChecked()).ToLocalChecked()->IsTrue()) {
options |= XML_SAVE_FORMAT;
}
// no empty tags (only works with XML) ex: <title></title> becomes <title/>
- if (obj->Get(Nan::New<v8::String>("selfCloseEmpty").ToLocalChecked())->IsFalse()) {
+ if (Nan::Get(obj, Nan::New<v8::String>("selfCloseEmpty").ToLocalChecked()).ToLocalChecked()->IsFalse()) {
options |= XML_SAVE_NO_EMPTY;
}
// format with non-significant whitespace
- if (obj->Get(Nan::New<v8::String>("whitespace").ToLocalChecked())->IsTrue()) {
+ if (Nan::Get(obj, Nan::New<v8::String>("whitespace").ToLocalChecked()).ToLocalChecked()->IsTrue()) {
options |= XML_SAVE_WSNONSIG;
}
- v8::Local<v8::Value> type = obj->Get(Nan::New<v8::String>("type").ToLocalChecked());
- if (type->Equals(Nan::New<v8::String>("XML").ToLocalChecked()) ||
- type->Equals(Nan::New<v8::String>("xml").ToLocalChecked())) {
+ v8::Local<v8::Value> type = Nan::Get(obj, Nan::New<v8::String>("type").ToLocalChecked()).ToLocalChecked();
+ if (Nan::Equals(type, Nan::New<v8::String>("XML").ToLocalChecked()).ToChecked() ||
+ Nan::Equals(type, Nan::New<v8::String>("xml").ToLocalChecked()).ToChecked()) {
options |= XML_SAVE_AS_XML; // force XML serialization on HTML doc
- } else if (type->Equals(Nan::New<v8::String>("HTML").ToLocalChecked()) ||
- type->Equals(Nan::New<v8::String>("html").ToLocalChecked())) {
+ } else if (Nan::Equals(type, Nan::New<v8::String>("HTML").ToLocalChecked()).ToChecked() ||
+ Nan::Equals(type, Nan::New<v8::String>("html").ToLocalChecked()).ToChecked()) {
options |= XML_SAVE_AS_HTML; // force HTML serialization on XML doc
// if the document is XML and we want formatted HTML output
// we must use the XHTML serializer because the default HTML
@@ -186,8 +186,8 @@ NAN_METHOD(XmlNode::ToString) {
if ((options & XML_SAVE_FORMAT) && (options & XML_SAVE_XHTML) == false) {
options |= XML_SAVE_XHTML;
}
- } else if (type->Equals(Nan::New<v8::String>("XHTML").ToLocalChecked()) ||
- type->Equals(Nan::New<v8::String>("xhtml").ToLocalChecked())) {
+ } else if (Nan::Equals(type, Nan::New<v8::String>("XHTML").ToLocalChecked()).ToChecked() ||
+ Nan::Equals(type, Nan::New<v8::String>("xhtml").ToLocalChecked()).ToChecked()) {
options |= XML_SAVE_XHTML; // force XHTML serialization
}
}
@@ -213,7 +213,7 @@ NAN_METHOD(XmlNode::Clone) {
bool recurse = true;
if (info.Length() == 1 && info[0]->IsBoolean())
- recurse = info[0]->ToBoolean()->BooleanValue();
+ recurse = Nan::To<v8::Boolean>(info[0]).ToLocalChecked()->Value();
return info.GetReturnValue().Set(node->clone(recurse));
}
@@ -729,7 +729,7 @@ XmlNode::get_type() {
}
void
-XmlNode::Initialize(v8::Handle<v8::Object> target) {
+XmlNode::Initialize(v8::Local<v8::Object> target) {
Nan::HandleScope scope;
v8::Local<v8::FunctionTemplate> tmpl = Nan::New<v8::FunctionTemplate>();
constructor_template.Reset( tmpl);
diff --git a/src/xml_node.h b/src/xml_node.h
index e5c873d..e447ffa 100644
--- a/src/xml_node.h
+++ b/src/xml_node.h
@@ -29,7 +29,7 @@ public:
explicit XmlNode(xmlNode* node);
virtual ~XmlNode();
- static void Initialize(v8::Handle<v8::Object> target);
+ static void Initialize(v8::Local<v8::Object> target);
static Nan::Persistent<v8::FunctionTemplate> constructor_template;
// create new XmlElement, XmlAttribute, etc. to wrap a libxml xmlNode
diff --git a/src/xml_pi.cc b/src/xml_pi.cc
index 1f8f200..788f176 100644
--- a/src/xml_pi.cc
+++ b/src/xml_pi.cc
@@ -23,16 +23,16 @@ NAN_METHOD(XmlProcessingInstruction::New) {
return info.GetReturnValue().Set(info.Holder());
}
- XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(info[0]->ToObject());
+ XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(document);
- v8::String::Utf8Value name(info[1]);
+ Nan::Utf8String name(info[1]);
v8::Local<v8::Value> contentOpt;
if (info[2]->IsString()) {
contentOpt = info[2];
}
- v8::String::Utf8Value contentRaw(contentOpt);
+ Nan::Utf8String contentRaw(contentOpt);
const char* content = (contentRaw.length()) ? *contentRaw : NULL;
xmlNode* pi = xmlNewDocPI(document->xml_obj, (const xmlChar *) *name, (xmlChar *) content);
@@ -42,7 +42,7 @@ NAN_METHOD(XmlProcessingInstruction::New) {
processing_instruction->Wrap(info.Holder());
// this prevents the document from going away
- info.Holder()->Set(Nan::New<v8::String>("document").ToLocalChecked(), info[0]);
+ Nan::Set(info.Holder(), Nan::New<v8::String>("document").ToLocalChecked(), info[0]);
return info.GetReturnValue().Set(info.Holder());
}
@@ -55,7 +55,7 @@ NAN_METHOD(XmlProcessingInstruction::Name) {
if (info.Length() == 0)
return info.GetReturnValue().Set(processing_instruction->get_name());
- v8::String::Utf8Value name(info[0]->ToString());
+ Nan::Utf8String name(Nan::To<v8::String>(info[0]).ToLocalChecked());
processing_instruction->set_name(*name);
return info.GetReturnValue().Set(info.Holder());
}
@@ -68,7 +68,7 @@ NAN_METHOD(XmlProcessingInstruction::Text) {
if (info.Length() == 0) {
return info.GetReturnValue().Set(processing_instruction->get_content());
} else {
- processing_instruction->set_content(*v8::String::Utf8Value(info[0]));
+ processing_instruction->set_content(*Nan::Utf8String(info[0]));
}
return info.GetReturnValue().Set(info.Holder());
@@ -114,7 +114,7 @@ XmlProcessingInstruction::New(xmlNode* node)
}
XmlProcessingInstruction* processing_instruction = new XmlProcessingInstruction(node);
- v8::Local<v8::Object> obj = Nan::NewInstance(Nan::New(constructor_template)->GetFunction()).ToLocalChecked();
+ v8::Local<v8::Object> obj = Nan::NewInstance(Nan::GetFunction(Nan::New(constructor_template)).ToLocalChecked()).ToLocalChecked();
processing_instruction->Wrap(obj);
return scope.Escape(obj);
}
@@ -125,7 +125,7 @@ XmlProcessingInstruction::XmlProcessingInstruction(xmlNode* node)
}
void
-XmlProcessingInstruction::Initialize(v8::Handle<v8::Object> target)
+XmlProcessingInstruction::Initialize(v8::Local<v8::Object> target)
{
Nan::HandleScope scope;
v8::Local<v8::FunctionTemplate> t = Nan::New<v8::FunctionTemplate>(static_cast<NAN_METHOD((*))>(New));
@@ -142,7 +142,7 @@ XmlProcessingInstruction::Initialize(v8::Handle<v8::Object> target)
XmlProcessingInstruction::Text);
Nan::Set(target, Nan::New<v8::String>("ProcessingInstruction").ToLocalChecked(),
- t->GetFunction());
+ Nan::GetFunction(t).ToLocalChecked());
}
} // namespace libxmljs
diff --git a/src/xml_pi.h b/src/xml_pi.h
index 91deb9a..754e84b 100644
--- a/src/xml_pi.h
+++ b/src/xml_pi.h
@@ -11,7 +11,7 @@ public:
explicit XmlProcessingInstruction(xmlNode* node);
- static void Initialize(v8::Handle<v8::Object> target);
+ static void Initialize(v8::Local<v8::Object> target);
static Nan::Persistent<v8::FunctionTemplate> constructor_template;
diff --git a/src/xml_sax_parser.cc b/src/xml_sax_parser.cc
index be8402f..ac76829 100644
--- a/src/xml_sax_parser.cc
+++ b/src/xml_sax_parser.cc
@@ -123,7 +123,7 @@ XmlSaxParser::Callback(const char* what,
}
// get the 'emit' function from ourselves
- v8::Local<v8::Value> emit_v = this->handle()->Get(Nan::New(emit_symbol));
+ v8::Local<v8::Value> emit_v = Nan::Get(this->handle(), Nan::New(emit_symbol)).ToLocalChecked();
assert(emit_v->IsFunction());
// trigger the event
@@ -140,9 +140,9 @@ NAN_METHOD(XmlSaxParser::Push) {
XmlSaxParser *parser = Nan::ObjectWrap::Unwrap<XmlSaxParser>(info.Holder());
- v8::String::Utf8Value parsable(info[0]->ToString());
+ Nan::Utf8String parsable(Nan::To<v8::String>(info[0]).ToLocalChecked());
- bool terminate = info.Length() > 1 ? info[1]->ToBoolean()->Value() : false;
+ bool terminate = info.Length() > 1 ? Nan::To<v8::Boolean>(info[1]).ToLocalChecked()->Value() : false;
parser->push(*parsable, parsable.length(), terminate);
@@ -171,7 +171,7 @@ NAN_METHOD(XmlSaxParser::ParseString) {
XmlSaxParser *parser = Nan::ObjectWrap::Unwrap<XmlSaxParser>(info.Holder());
- v8::String::Utf8Value parsable(info[0]->ToString());
+ Nan::Utf8String parsable(Nan::To<v8::String>(info[0]).ToLocalChecked());
parser->parse_string(*parsable, parsable.length());
// TODO(sprsquish): return based on the parser
@@ -425,7 +425,7 @@ XmlSaxParser::error(void* context, const char* msg, ...)
}
void
-XmlSaxParser::Initialize(v8::Handle<v8::Object> target) {
+XmlSaxParser::Initialize(v8::Local<v8::Object> target) {
Nan::HandleScope scope;
emit_symbol.Reset(Nan::New<v8::String>(EMIT_SYMBOL_STRING).ToLocalChecked());
@@ -445,7 +445,7 @@ XmlSaxParser::Initialize(v8::Handle<v8::Object> target) {
XmlSaxParser::ParseString);
Nan::Set(target, Nan::New<v8::String>("SaxParser").ToLocalChecked(),
- parser_t->GetFunction());
+ Nan::GetFunction(parser_t).ToLocalChecked());
v8::Local<v8::FunctionTemplate> push_parser_t =
Nan::New<v8::FunctionTemplate>(NewPushParser);
@@ -461,6 +461,6 @@ XmlSaxParser::Initialize(v8::Handle<v8::Object> target) {
XmlSaxParser::Push);
Nan::Set(target, Nan::New<v8::String>("SaxPushParser").ToLocalChecked(),
- push_parser_t->GetFunction());
+ Nan::GetFunction(push_parser_t).ToLocalChecked());
}
} // namespace libxmljs
diff --git a/src/xml_sax_parser.h b/src/xml_sax_parser.h
index 6e1d457..88111c2 100644
--- a/src/xml_sax_parser.h
+++ b/src/xml_sax_parser.h
@@ -13,7 +13,7 @@ class XmlSaxParser : public Nan::ObjectWrap {
virtual ~XmlSaxParser();
static void
- Initialize(v8::Handle<v8::Object> target);
+ Initialize(v8::Local<v8::Object> target);
static NAN_METHOD(NewParser);
diff --git a/src/xml_syntax_error.cc b/src/xml_syntax_error.cc
index d1f1b8c..8fb82ac 100644
--- a/src/xml_syntax_error.cc
+++ b/src/xml_syntax_error.cc
@@ -56,10 +56,10 @@ XmlSyntaxError::PushToArray(void* errs, xmlError* error) {
Nan::HandleScope scope;
v8::Local<v8::Array> errors = *reinterpret_cast<v8::Local<v8::Array>*>(errs);
// push method for array
- v8::Local<v8::Function> push = v8::Local<v8::Function>::Cast(errors->Get(Nan::New<v8::String>("push").ToLocalChecked()));
+ v8::Local<v8::Function> push = v8::Local<v8::Function>::Cast(Nan::Get(errors, Nan::New<v8::String>("push").ToLocalChecked()).ToLocalChecked());
v8::Local<v8::Value> argv[1] = { XmlSyntaxError::BuildSyntaxError(error) };
- push->Call(errors, 1, argv);
+ Nan::Call(push, errors, 1, argv);
}
} // namespace libxmljs
diff --git a/src/xml_text.cc b/src/xml_text.cc
index 9dc0662..84c7672 100644
--- a/src/xml_text.cc
+++ b/src/xml_text.cc
@@ -25,14 +25,14 @@ NAN_METHOD(XmlText::New) {
return info.GetReturnValue().Set(info.Holder());
}
- XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(info[0]->ToObject());
+ XmlDocument* document = Nan::ObjectWrap::Unwrap<XmlDocument>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(document);
v8::Local<v8::Value> contentOpt;
if (info[1]->IsString()) {
contentOpt = info[1];
}
- v8::String::Utf8Value contentRaw(contentOpt);
+ Nan::Utf8String contentRaw(contentOpt);
const char* content = (contentRaw.length()) ? *contentRaw : NULL;
xmlChar* encodedContent = content ? xmlEncodeSpecialChars(document->xml_obj, (const xmlChar*) content) : NULL;
@@ -47,7 +47,7 @@ NAN_METHOD(XmlText::New) {
element->Wrap(info.Holder());
// this prevents the document from going away
- info.Holder()->Set(Nan::New<v8::String>("document").ToLocalChecked(), info[0]);
+ Nan::Set(info.Holder(), Nan::New<v8::String>("document").ToLocalChecked(), info[0]);
return info.GetReturnValue().Set(info.Holder());
}
@@ -76,7 +76,7 @@ NAN_METHOD(XmlText::Text) {
if (info.Length() == 0) {
return info.GetReturnValue().Set(element->get_content());
} else {
- element->set_content(*v8::String::Utf8Value(info[0]));
+ element->set_content(*Nan::Utf8String(info[0]));
}
return info.GetReturnValue().Set(info.Holder());
@@ -86,7 +86,7 @@ NAN_METHOD(XmlText::AddPrevSibling) {
XmlText* text = Nan::ObjectWrap::Unwrap<XmlText>(info.Holder());
assert(text);
- XmlNode* new_sibling = Nan::ObjectWrap::Unwrap<XmlNode>(info[0]->ToObject());
+ XmlNode* new_sibling = Nan::ObjectWrap::Unwrap<XmlNode>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(new_sibling);
xmlNode *imported_sibling = text->import_node(new_sibling->xml_obj);
@@ -105,7 +105,7 @@ NAN_METHOD(XmlText::AddNextSibling) {
XmlText* text = Nan::ObjectWrap::Unwrap<XmlText>(info.Holder());
assert(text);
- XmlNode* new_sibling = Nan::ObjectWrap::Unwrap<XmlNode>(info[0]->ToObject());
+ XmlNode* new_sibling = Nan::ObjectWrap::Unwrap<XmlNode>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(new_sibling);
xmlNode *imported_sibling = text->import_node(new_sibling->xml_obj);
@@ -125,9 +125,9 @@ NAN_METHOD(XmlText::Replace) {
assert(element);
if (info[0]->IsString()) {
- element->replace_text(*v8::String::Utf8Value(info[0]));
+ element->replace_text(*Nan::Utf8String(info[0]));
} else {
- XmlText* new_sibling = Nan::ObjectWrap::Unwrap<XmlText>(info[0]->ToObject());
+ XmlText* new_sibling = Nan::ObjectWrap::Unwrap<XmlText>(Nan::To<v8::Object>(info[0]).ToLocalChecked());
assert(new_sibling);
xmlNode *imported_sibling = element->import_node(new_sibling->xml_obj);
@@ -207,7 +207,7 @@ XmlText::New(xmlNode* node)
}
XmlText* element = new XmlText(node);
- v8::Local<v8::Object> obj = Nan::NewInstance(Nan::New(constructor_template)->GetFunction()).ToLocalChecked();
+ v8::Local<v8::Object> obj = Nan::NewInstance(Nan::GetFunction(Nan::New(constructor_template)).ToLocalChecked()).ToLocalChecked();
element->Wrap(obj);
return scope.Escape(obj);
}
@@ -249,7 +249,7 @@ XmlText::prev_sibling_will_merge(xmlNode *child) {
}
void
-XmlText::Initialize(v8::Handle<v8::Object> target)
+XmlText::Initialize(v8::Local<v8::Object> target)
{
Nan::HandleScope scope;
v8::Local<v8::FunctionTemplate> tmpl =
@@ -277,7 +277,7 @@ XmlText::Initialize(v8::Handle<v8::Object> target)
XmlText::Replace);
Nan::Set(target, Nan::New<v8::String>("Text").ToLocalChecked(),
- tmpl->GetFunction());
+ Nan::GetFunction(tmpl).ToLocalChecked());
}
diff --git a/src/xml_text.h b/src/xml_text.h
index d03b008..cc258f2 100644
--- a/src/xml_text.h
+++ b/src/xml_text.h
@@ -11,7 +11,7 @@ public:
explicit XmlText(xmlNode* node);
- static void Initialize(v8::Handle<v8::Object> target);
+ static void Initialize(v8::Local<v8::Object> target);
static Nan::Persistent<v8::FunctionTemplate> constructor_template;
diff --git a/test/memory_management.js b/test/memory_management.js
index 2378d10..8b7d1f9 100644
--- a/test/memory_management.js
+++ b/test/memory_management.js
@@ -6,7 +6,7 @@ if (!global.gc) {
}
var nodeVersion = process.versions.node
-var shouldSkip = semver.satisfies(nodeVersion, '8.x || 9.x || 10.x')
+var shouldSkip = semver.satisfies(nodeVersion, '8.x || 9.x || 10.x || 11.x || 12.x')
module.exports.setUp = function(done) {
collectGarbage();