Skip to content

Commit 3982196

Browse files
authored
Support Node.js v12 (Automattic#1409)
1 parent d407151 commit 3982196

15 files changed

+145
-106
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ language: node_js
22
install:
33
- npm install --build-from-source
44
node_js:
5+
- '12'
56
- '10'
67
- '8'
78
- '6'

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ project adheres to [Semantic Versioning](http://semver.org/).
1010
### Changed
1111
* Use [simple-get](https://github.com/feross/simple-get) for fetching images, now supports redirects (#1398)
1212
### Added
13+
* Support Node.js v12
1314
### Fixed
1415

1516
2.4.1

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
],
4949
"types": "types",
5050
"dependencies": {
51-
"nan": "^2.12.1",
51+
"nan": "^2.13.2",
5252
"node-pre-gyp": "^0.11.0",
5353
"simple-get": "^3.0.3"
5454
},

src/Backends.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ void Backends::Initialize(Local<Object> target) {
1414
PdfBackend::Initialize(obj);
1515
SvgBackend::Initialize(obj);
1616

17-
target->Set(Nan::New<String>("Backends").ToLocalChecked(), obj);
17+
Local<Context> v8ctx = Nan::GetCurrentContext();
18+
target->Set(v8ctx, Nan::New<String>("Backends").ToLocalChecked(), obj);
1819
}

src/Canvas.cc

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ Canvas::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) {
7979
// Class methods
8080
Nan::SetMethod(ctor, "_registerFont", RegisterFont);
8181

82-
Nan::Set(target, Nan::New("Canvas").ToLocalChecked(), ctor->GetFunction());
82+
Local<Context> ctx = Nan::GetCurrentContext();
83+
Nan::Set(target,
84+
Nan::New("Canvas").ToLocalChecked(),
85+
ctor->GetFunction(ctx).ToLocalChecked());
8386
}
8487

8588
/*
@@ -241,25 +244,26 @@ Canvas::ToBufferAsyncAfter(uv_work_t *req) {
241244

242245
static void parsePNGArgs(Local<Value> arg, PngClosure& pngargs) {
243246
if (arg->IsObject()) {
247+
Local<Context> v8ctx = Nan::GetCurrentContext();
244248
Local<Object> obj = Nan::To<Object>(arg).ToLocalChecked();
245249

246-
Local<Value> cLevel = obj->Get(Nan::New("compressionLevel").ToLocalChecked());
250+
Local<Value> cLevel = obj->Get(v8ctx, Nan::New("compressionLevel").ToLocalChecked()).ToLocalChecked();
247251
if (cLevel->IsUint32()) {
248252
uint32_t val = Nan::To<uint32_t>(cLevel).FromMaybe(0);
249253
// See quote below from spec section 4.12.5.5.
250254
if (val <= 9) pngargs.compressionLevel = val;
251255
}
252256

253-
Local<Value> rez = obj->Get(Nan::New("resolution").ToLocalChecked());
257+
Local<Value> rez = obj->Get(v8ctx, Nan::New("resolution").ToLocalChecked()).ToLocalChecked();
254258
if (rez->IsUint32()) {
255259
uint32_t val = Nan::To<uint32_t>(rez).FromMaybe(0);
256260
if (val > 0) pngargs.resolution = val;
257261
}
258262

259-
Local<Value> filters = obj->Get(Nan::New("filters").ToLocalChecked());
263+
Local<Value> filters = obj->Get(v8ctx, Nan::New("filters").ToLocalChecked()).ToLocalChecked();
260264
if (filters->IsUint32()) pngargs.filters = Nan::To<uint32_t>(filters).FromMaybe(0);
261265

262-
Local<Value> palette = obj->Get(Nan::New("palette").ToLocalChecked());
266+
Local<Value> palette = obj->Get(v8ctx, Nan::New("palette").ToLocalChecked()).ToLocalChecked();
263267
if (palette->IsUint8ClampedArray()) {
264268
Local<Uint8ClampedArray> palette_ta = palette.As<Uint8ClampedArray>();
265269
pngargs.nPaletteColors = palette_ta->Length();
@@ -270,7 +274,7 @@ static void parsePNGArgs(Local<Value> arg, PngClosure& pngargs) {
270274
Nan::TypedArrayContents<uint8_t> _paletteColors(palette_ta);
271275
pngargs.palette = *_paletteColors;
272276
// Optional background color index:
273-
Local<Value> backgroundIndexVal = obj->Get(Nan::New("backgroundIndex").ToLocalChecked());
277+
Local<Value> backgroundIndexVal = obj->Get(v8ctx, Nan::New("backgroundIndex").ToLocalChecked()).ToLocalChecked();
274278
if (backgroundIndexVal->IsUint32()) {
275279
pngargs.backgroundIndex = static_cast<uint8_t>(Nan::To<uint32_t>(backgroundIndexVal).FromMaybe(0));
276280
}
@@ -283,25 +287,26 @@ static void parseJPEGArgs(Local<Value> arg, JpegClosure& jpegargs) {
283287
// user agent must use its default quality value, as if the quality argument
284288
// had not been given." - 4.12.5.5
285289
if (arg->IsObject()) {
290+
Local<Context> v8ctx = Nan::GetCurrentContext();
286291
Local<Object> obj = Nan::To<Object>(arg).ToLocalChecked();
287292

288-
Local<Value> qual = obj->Get(Nan::New("quality").ToLocalChecked());
293+
Local<Value> qual = obj->Get(v8ctx, Nan::New("quality").ToLocalChecked()).ToLocalChecked();
289294
if (qual->IsNumber()) {
290295
double quality = Nan::To<double>(qual).FromMaybe(0);
291296
if (quality >= 0.0 && quality <= 1.0) {
292297
jpegargs.quality = static_cast<uint32_t>(100.0 * quality);
293298
}
294299
}
295300

296-
Local<Value> chroma = obj->Get(Nan::New("chromaSubsampling").ToLocalChecked());
301+
Local<Value> chroma = obj->Get(v8ctx, Nan::New("chromaSubsampling").ToLocalChecked()).ToLocalChecked();
297302
if (chroma->IsBoolean()) {
298303
bool subsample = Nan::To<bool>(chroma).FromMaybe(0);
299304
jpegargs.chromaSubsampling = subsample ? 2 : 1;
300305
} else if (chroma->IsNumber()) {
301306
jpegargs.chromaSubsampling = Nan::To<uint32_t>(chroma).FromMaybe(0);
302307
}
303308

304-
Local<Value> progressive = obj->Get(Nan::New("progressive").ToLocalChecked());
309+
Local<Value> progressive = obj->Get(v8ctx, Nan::New("progressive").ToLocalChecked()).ToLocalChecked();
305310
if (!progressive->IsUndefined()) {
306311
jpegargs.progressive = Nan::To<bool>(progressive).FromMaybe(0);
307312
}
@@ -721,9 +726,10 @@ NAN_METHOD(Canvas::RegisterFont) {
721726
Local<String> weight_prop = Nan::New<String>("weight").ToLocalChecked();
722727
Local<String> style_prop = Nan::New<String>("style").ToLocalChecked();
723728

724-
char *family = str_value(js_user_desc->Get(family_prop), NULL, false);
725-
char *weight = str_value(js_user_desc->Get(weight_prop), "normal", true);
726-
char *style = str_value(js_user_desc->Get(style_prop), "normal", false);
729+
Local<Context> v8ctx = Nan::GetCurrentContext();
730+
char *family = str_value(js_user_desc->Get(v8ctx, family_prop).ToLocalChecked(), NULL, false);
731+
char *weight = str_value(js_user_desc->Get(v8ctx, weight_prop).ToLocalChecked(), "normal", true);
732+
char *style = str_value(js_user_desc->Get(v8ctx, style_prop).ToLocalChecked(), "normal", false);
727733

728734
if (family && weight && style) {
729735
pango_font_description_set_weight(user_desc, Canvas::GetWeightFromCSSString(weight));
@@ -895,7 +901,8 @@ Canvas::resurface(Local<Object> canvas) {
895901
backend()->recreateSurface();
896902

897903
// Reset context
898-
context = canvas->Get(Nan::New<String>("context").ToLocalChecked());
904+
Local<Context> v8ctx = Nan::GetCurrentContext();
905+
context = canvas->Get(v8ctx, Nan::New<String>("context").ToLocalChecked()).ToLocalChecked();
899906
if (!context->IsUndefined()) {
900907
Context2d *context2d = ObjectWrap::Unwrap<Context2d>(Nan::To<Object>(context).ToLocalChecked());
901908
cairo_t *prev = context2d->context();

src/CanvasGradient.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ Gradient::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) {
2525

2626
// Prototype
2727
Nan::SetPrototypeMethod(ctor, "addColorStop", AddColorStop);
28-
Nan::Set(target, Nan::New("CanvasGradient").ToLocalChecked(), ctor->GetFunction());
28+
Local<Context> ctx = Nan::GetCurrentContext();
29+
Nan::Set(target,
30+
Nan::New("CanvasGradient").ToLocalChecked(),
31+
ctor->GetFunction(ctx).ToLocalChecked());
2932
}
3033

3134
/*

src/CanvasPattern.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ Pattern::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) {
2929
ctor->SetClassName(Nan::New("CanvasPattern").ToLocalChecked());
3030

3131
// Prototype
32-
Nan::Set(target, Nan::New("CanvasPattern").ToLocalChecked(), ctor->GetFunction());
32+
Local<Context> ctx = Nan::GetCurrentContext();
33+
Nan::Set(target,
34+
Nan::New("CanvasPattern").ToLocalChecked(),
35+
ctor->GetFunction(ctx).ToLocalChecked());
3336
}
3437

3538
/*

src/CanvasRenderingContext2d.cc

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ Context2d::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) {
174174
SetProtoAccessor(proto, Nan::New("font").ToLocalChecked(), GetFont, SetFont, ctor);
175175
SetProtoAccessor(proto, Nan::New("textBaseline").ToLocalChecked(), GetTextBaseline, SetTextBaseline, ctor);
176176
SetProtoAccessor(proto, Nan::New("textAlign").ToLocalChecked(), GetTextAlign, SetTextAlign, ctor);
177-
Nan::Set(target, Nan::New("CanvasRenderingContext2d").ToLocalChecked(), ctor->GetFunction());
177+
Local<Context> ctx = Nan::GetCurrentContext();
178+
Nan::Set(target, Nan::New("CanvasRenderingContext2d").ToLocalChecked(), ctor->GetFunction(ctx).ToLocalChecked());
178179
Nan::Set(target, Nan::New("CanvasRenderingContext2dInit").ToLocalChecked(), Nan::New<Function>(SaveExternalModules));
179180
}
180181

@@ -684,9 +685,10 @@ NAN_METHOD(Context2d::New) {
684685
if (isImageBackend) {
685686
cairo_format_t format = ImageBackend::DEFAULT_FORMAT;
686687
if (info[1]->IsObject()) {
688+
Local<Context> v8ctx = Nan::GetCurrentContext();
687689
Local<Object> ctxAttributes = Nan::To<Object>(info[1]).ToLocalChecked();
688690

689-
Local<Value> pixelFormat = ctxAttributes->Get(Nan::New("pixelFormat").ToLocalChecked());
691+
Local<Value> pixelFormat = ctxAttributes->Get(v8ctx, Nan::New("pixelFormat").ToLocalChecked()).ToLocalChecked();
690692
if (pixelFormat->IsString()) {
691693
Nan::Utf8String utf8PixelFormat(pixelFormat);
692694
if (!strcmp(*utf8PixelFormat, "RGBA32")) format = CAIRO_FORMAT_ARGB32;
@@ -700,7 +702,7 @@ NAN_METHOD(Context2d::New) {
700702
}
701703

702704
// alpha: false forces use of RGB24
703-
Local<Value> alpha = ctxAttributes->Get(Nan::New("alpha").ToLocalChecked());
705+
Local<Value> alpha = ctxAttributes->Get(v8ctx, Nan::New("alpha").ToLocalChecked()).ToLocalChecked();
704706
if (alpha->IsBoolean() && !Nan::To<bool>(alpha).FromMaybe(false)) {
705707
format = CAIRO_FORMAT_RGB24;
706708
}
@@ -2681,21 +2683,22 @@ NAN_METHOD(Context2d::MeasureText) {
26812683
cairo_get_matrix(ctx, &matrix);
26822684
double y_offset = getBaselineAdjustment(layout, context->state->textBaseline);
26832685

2684-
obj->Set(Nan::New<String>("width").ToLocalChecked(),
2686+
Local<Context> v8ctx = Nan::GetCurrentContext();
2687+
obj->Set(v8ctx, Nan::New<String>("width").ToLocalChecked(),
26852688
Nan::New<Number>(logical_rect.width));
2686-
obj->Set(Nan::New<String>("actualBoundingBoxLeft").ToLocalChecked(),
2689+
obj->Set(v8ctx, Nan::New<String>("actualBoundingBoxLeft").ToLocalChecked(),
26872690
Nan::New<Number>(x_offset - PANGO_LBEARING(logical_rect)));
2688-
obj->Set(Nan::New<String>("actualBoundingBoxRight").ToLocalChecked(),
2691+
obj->Set(v8ctx, Nan::New<String>("actualBoundingBoxRight").ToLocalChecked(),
26892692
Nan::New<Number>(x_offset + PANGO_RBEARING(logical_rect)));
2690-
obj->Set(Nan::New<String>("actualBoundingBoxAscent").ToLocalChecked(),
2693+
obj->Set(v8ctx, Nan::New<String>("actualBoundingBoxAscent").ToLocalChecked(),
26912694
Nan::New<Number>(y_offset + PANGO_ASCENT(ink_rect)));
2692-
obj->Set(Nan::New<String>("actualBoundingBoxDescent").ToLocalChecked(),
2695+
obj->Set(v8ctx, Nan::New<String>("actualBoundingBoxDescent").ToLocalChecked(),
26932696
Nan::New<Number>(PANGO_DESCENT(ink_rect) - y_offset));
2694-
obj->Set(Nan::New<String>("emHeightAscent").ToLocalChecked(),
2697+
obj->Set(v8ctx, Nan::New<String>("emHeightAscent").ToLocalChecked(),
26952698
Nan::New<Number>(-(PANGO_ASCENT(logical_rect) - y_offset)));
2696-
obj->Set(Nan::New<String>("emHeightDescent").ToLocalChecked(),
2699+
obj->Set(v8ctx, Nan::New<String>("emHeightDescent").ToLocalChecked(),
26972700
Nan::New<Number>(PANGO_DESCENT(logical_rect) - y_offset));
2698-
obj->Set(Nan::New<String>("alphabeticBaseline").ToLocalChecked(),
2701+
obj->Set(v8ctx, Nan::New<String>("alphabeticBaseline").ToLocalChecked(),
26992702
Nan::New<Number>(-(pango_font_metrics_get_ascent(metrics) * inverse_pango_scale - y_offset)));
27002703

27012704
pango_font_metrics_unref(metrics);
@@ -2714,8 +2717,9 @@ NAN_METHOD(Context2d::SetLineDash) {
27142717
uint32_t dashes = dash->Length() & 1 ? dash->Length() * 2 : dash->Length();
27152718
uint32_t zero_dashes = 0;
27162719
std::vector<double> a(dashes);
2720+
Local<Context> v8ctx = Nan::GetCurrentContext();
27172721
for (uint32_t i=0; i<dashes; i++) {
2718-
Local<Value> d = dash->Get(i % dash->Length());
2722+
Local<Value> d = dash->Get(v8ctx, i % dash->Length()).ToLocalChecked();
27192723
if (!d->IsNumber()) return;
27202724
a[i] = Nan::To<double>(d).FromMaybe(0);
27212725
if (a[i] == 0) zero_dashes++;
@@ -2746,8 +2750,9 @@ NAN_METHOD(Context2d::GetLineDash) {
27462750
cairo_get_dash(ctx, a.data(), NULL);
27472751

27482752
Local<Array> dash = Nan::New<Array>(dashes);
2753+
Local<Context> v8ctx = Nan::GetCurrentContext();
27492754
for (int i=0; i<dashes; i++)
2750-
dash->Set(Nan::New<Number>(i), Nan::New<Number>(a[i]));
2755+
dash->Set(v8ctx, Nan::New<Number>(i), Nan::New<Number>(a[i]));
27512756

27522757
info.GetReturnValue().Set(dash);
27532758
}

src/Image.cc

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ Image::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) {
7070
ctor->Set(Nan::New("MODE_IMAGE").ToLocalChecked(), Nan::New<Number>(DATA_IMAGE));
7171
ctor->Set(Nan::New("MODE_MIME").ToLocalChecked(), Nan::New<Number>(DATA_MIME));
7272

73-
Nan::Set(target, Nan::New("Image").ToLocalChecked(), ctor->GetFunction());
73+
Local<Context> ctx = Nan::GetCurrentContext();
74+
Nan::Set(target, Nan::New("Image").ToLocalChecked(), ctor->GetFunction(ctx).ToLocalChecked());
7475

7576
// Used internally in lib/image.js
7677
NAN_EXPORT(target, GetSource);
@@ -89,8 +90,9 @@ NAN_METHOD(Image::New) {
8990
Image *img = new Image;
9091
img->data_mode = DATA_IMAGE;
9192
img->Wrap(info.This());
92-
info.This()->Set(Nan::New("onload").ToLocalChecked(), Nan::Null());
93-
info.This()->Set(Nan::New("onerror").ToLocalChecked(), Nan::Null());
93+
Local<Context> v8ctx = Nan::GetCurrentContext();
94+
info.This()->Set(v8ctx, Nan::New("onload").ToLocalChecked(), Nan::Null());
95+
info.This()->Set(v8ctx, Nan::New("onerror").ToLocalChecked(), Nan::Null());
9496
info.GetReturnValue().Set(info.This());
9597
}
9698

@@ -249,7 +251,8 @@ NAN_METHOD(Image::SetSource){
249251
}
250252

251253
if (status) {
252-
Local<Value> onerrorFn = info.This()->Get(Nan::New("onerror").ToLocalChecked());
254+
Local<Context> v8ctx = Nan::GetCurrentContext();
255+
Local<Value> onerrorFn = info.This()->Get(v8ctx, Nan::New("onerror").ToLocalChecked()).ToLocalChecked();
253256
if (onerrorFn->IsFunction()) {
254257
Local<Value> argv[1];
255258
CanvasError errorInfo = img->errorInfo;
@@ -260,13 +263,15 @@ NAN_METHOD(Image::SetSource){
260263
} else {
261264
argv[0] = Nan::Error(Nan::New(cairo_status_to_string(status)).ToLocalChecked());
262265
}
263-
onerrorFn.As<Function>()->Call(Isolate::GetCurrent()->GetCurrentContext()->Global(), 1, argv);
266+
Local<Context> ctx = Nan::GetCurrentContext();
267+
onerrorFn.As<Function>()->Call(ctx, ctx->Global(), 1, argv);
264268
}
265269
} else {
266270
img->loaded();
267-
Local<Value> onloadFn = info.This()->Get(Nan::New("onload").ToLocalChecked());
271+
Local<Context> v8ctx = Nan::GetCurrentContext();
272+
Local<Value> onloadFn = info.This()->Get(v8ctx, Nan::New("onload").ToLocalChecked()).ToLocalChecked();
268273
if (onloadFn->IsFunction()) {
269-
onloadFn.As<Function>()->Call(Isolate::GetCurrent()->GetCurrentContext()->Global(), 0, NULL);
274+
onloadFn.As<Function>()->Call(v8ctx, v8ctx->Global(), 0, NULL);
270275
}
271276
}
272277
}

src/ImageData.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ ImageData::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) {
2626
Local<ObjectTemplate> proto = ctor->PrototypeTemplate();
2727
SetProtoAccessor(proto, Nan::New("width").ToLocalChecked(), GetWidth, NULL, ctor);
2828
SetProtoAccessor(proto, Nan::New("height").ToLocalChecked(), GetHeight, NULL, ctor);
29-
Nan::Set(target, Nan::New("ImageData").ToLocalChecked(), ctor->GetFunction());
29+
Local<Context> ctx = Nan::GetCurrentContext();
30+
Nan::Set(target, Nan::New("ImageData").ToLocalChecked(), ctor->GetFunction(ctx).ToLocalChecked());
3031
}
3132

3233
/*
@@ -116,7 +117,8 @@ NAN_METHOD(ImageData::New) {
116117

117118
ImageData *imageData = new ImageData(reinterpret_cast<uint8_t*>(*dataPtr), width, height);
118119
imageData->Wrap(info.This());
119-
info.This()->Set(Nan::New("data").ToLocalChecked(), dataArray);
120+
Local<Context> v8ctx = Nan::GetCurrentContext();
121+
info.This()->Set(v8ctx, Nan::New("data").ToLocalChecked(), dataArray);
120122
info.GetReturnValue().Set(info.This());
121123
}
122124

src/backend/ImageBackend.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,10 @@ void ImageBackend::Initialize(Local<Object> target) {
6464
ImageBackend::constructor.Reset(ctor);
6565
ctor->InstanceTemplate()->SetInternalFieldCount(1);
6666
ctor->SetClassName(Nan::New<String>("ImageBackend").ToLocalChecked());
67-
target->Set(Nan::New<String>("ImageBackend").ToLocalChecked(), ctor->GetFunction());
67+
Local<Context> v8ctx = Nan::GetCurrentContext();
68+
target->Set(v8ctx,
69+
Nan::New<String>("ImageBackend").ToLocalChecked(),
70+
ctor->GetFunction(v8ctx).ToLocalChecked());
6871
}
6972

7073
NAN_METHOD(ImageBackend::New) {

src/backend/PdfBackend.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ void PdfBackend::Initialize(Local<Object> target) {
4343
PdfBackend::constructor.Reset(ctor);
4444
ctor->InstanceTemplate()->SetInternalFieldCount(1);
4545
ctor->SetClassName(Nan::New<String>("PdfBackend").ToLocalChecked());
46-
target->Set(Nan::New<String>("PdfBackend").ToLocalChecked(), ctor->GetFunction());
46+
Local<Context> v8ctx = Nan::GetCurrentContext();
47+
target->Set(v8ctx,
48+
Nan::New<String>("PdfBackend").ToLocalChecked(),
49+
ctor->GetFunction(v8ctx).ToLocalChecked());
4750
}
4851

4952
NAN_METHOD(PdfBackend::New) {

src/backend/SvgBackend.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ void SvgBackend::Initialize(Local<Object> target) {
4545
SvgBackend::constructor.Reset(ctor);
4646
ctor->InstanceTemplate()->SetInternalFieldCount(1);
4747
ctor->SetClassName(Nan::New<String>("SvgBackend").ToLocalChecked());
48-
target->Set(Nan::New<String>("SvgBackend").ToLocalChecked(), ctor->GetFunction());
48+
Local<Context> v8ctx = Nan::GetCurrentContext();
49+
target->Set(v8ctx,
50+
Nan::New<String>("SvgBackend").ToLocalChecked(),
51+
ctor->GetFunction(v8ctx).ToLocalChecked());
4952
}
5053

5154
NAN_METHOD(SvgBackend::New) {

src/init.cc

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ NAN_MODULE_INIT(init) {
4141
Gradient::Initialize(target);
4242
Pattern::Initialize(target);
4343

44-
target->Set(Nan::New<String>("cairoVersion").ToLocalChecked(), Nan::New<String>(cairo_version_string()).ToLocalChecked());
44+
Local<Context> v8ctx = Nan::GetCurrentContext();
45+
46+
target->Set(v8ctx, Nan::New<String>("cairoVersion").ToLocalChecked(), Nan::New<String>(cairo_version_string()).ToLocalChecked());
4547
#ifdef HAVE_JPEG
4648

4749
#ifndef JPEG_LIB_VERSION_MAJOR
@@ -67,22 +69,22 @@ NAN_MODULE_INIT(init) {
6769
} else {
6870
snprintf(jpeg_version, 10, "%d", JPEG_LIB_VERSION_MAJOR);
6971
}
70-
target->Set(Nan::New<String>("jpegVersion").ToLocalChecked(), Nan::New<String>(jpeg_version).ToLocalChecked());
72+
target->Set(v8ctx, Nan::New<String>("jpegVersion").ToLocalChecked(), Nan::New<String>(jpeg_version).ToLocalChecked());
7173
#endif
7274

7375
#ifdef HAVE_GIF
7476
#ifndef GIF_LIB_VERSION
7577
char gif_version[10];
7678
snprintf(gif_version, 10, "%d.%d.%d", GIFLIB_MAJOR, GIFLIB_MINOR, GIFLIB_RELEASE);
77-
target->Set(Nan::New<String>("gifVersion").ToLocalChecked(), Nan::New<String>(gif_version).ToLocalChecked());
79+
target->Set(v8ctx, Nan::New<String>("gifVersion").ToLocalChecked(), Nan::New<String>(gif_version).ToLocalChecked());
7880
#else
79-
target->Set(Nan::New<String>("gifVersion").ToLocalChecked(), Nan::New<String>(GIF_LIB_VERSION).ToLocalChecked());
81+
target->Set(v8ctx, Nan::New<String>("gifVersion").ToLocalChecked(), Nan::New<String>(GIF_LIB_VERSION).ToLocalChecked());
8082
#endif
8183
#endif
8284

8385
char freetype_version[10];
8486
snprintf(freetype_version, 10, "%d.%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH);
85-
target->Set(Nan::New<String>("freetypeVersion").ToLocalChecked(), Nan::New<String>(freetype_version).ToLocalChecked());
87+
target->Set(v8ctx, Nan::New<String>("freetypeVersion").ToLocalChecked(), Nan::New<String>(freetype_version).ToLocalChecked());
8688
}
8789

8890
NODE_MODULE(canvas, init);

0 commit comments

Comments
 (0)