diff --git a/.travis.yml b/.travis.yml index 569219fb..be3f322f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,8 @@ language: cpp -dist: precise - compiler: - gcc -os: - - linux - - osx - addons: apt: sources: @@ -17,21 +11,65 @@ addons: - g++-4.8 - libc6-dev # for libiconv which is needed by libgdal -env: - matrix: - - NODE_NVM_VERSION="9" TARGET=STATIC - - NODE_NVM_VERSION="9" TARGET=SHARED - - NODE_NVM_VERSION="9" TARGET=TRUNK - - NODE_NVM_VERSION="8" TARGET=STATIC - - NODE_NVM_VERSION="8" TARGET=SHARED - - NODE_NVM_VERSION="6" TARGET=STATIC - - NODE_NVM_VERSION="6" TARGET=SHARED - - NODE_NVM_VERSION="4" TARGET=STATIC - - NODE_NVM_VERSION="4" TARGET=SHARED - matrix: + include: + - os: osx + env: NODE_NVM_VERSION="10" TARGET=STATIC + - os: linux + dist: precise + env: NODE_NVM_VERSION="10" TARGET=STATIC + - os: osx + env: NODE_NVM_VERSION="10" TARGET=SHARED + - os: linux + dist: trusty + env: NODE_NVM_VERSION="10" TARGET=SHARED + - os: osx + env: NODE_NVM_VERSION="10" TARGET=TRUNK + - os: linux + dist: trusty + env: NODE_NVM_VERSION="10" TARGET=TRUNK + - os: osx + env: NODE_NVM_VERSION="9" TARGET=STATIC + - os: linux + dist: precise + env: NODE_NVM_VERSION="9" TARGET=STATIC + - os: osx + env: NODE_NVM_VERSION="9" TARGET=SHARED + - os: linux + dist: trusty + env: NODE_NVM_VERSION="9" TARGET=SHARED + - os: osx + env: NODE_NVM_VERSION="8" TARGET=STATIC + - os: linux + dist: precise + env: NODE_NVM_VERSION="8" TARGET=STATIC + - os: osx + env: NODE_NVM_VERSION="8" TARGET=SHARED + - os: linux + dist: trusty + env: NODE_NVM_VERSION="8" TARGET=SHARED + - os: osx + env: NODE_NVM_VERSION="6" TARGET=STATIC + - os: linux + dist: precise + env: NODE_NVM_VERSION="6" TARGET=STATIC + - os: osx + env: NODE_NVM_VERSION="6" TARGET=SHARED + - os: linux + dist: trusty + env: NODE_NVM_VERSION="6" TARGET=SHARED + - os: osx + env: NODE_NVM_VERSION="4" TARGET=STATIC + - os: linux + dist: precise + env: NODE_NVM_VERSION="4" TARGET=STATIC + - os: osx + env: NODE_NVM_VERSION="4" TARGET=SHARED + - os: linux + dist: trusty + env: NODE_NVM_VERSION="4" TARGET=SHARED allow_failures: - - env: NODE_NVM_VERSION="9" TARGET=TRUNK + - env: NODE_NVM_VERSION="10" TARGET=TRUNK before_install: - if [[ $TRAVIS_OS_NAME == "linux" ]]; then export CXX=g++-4.8; fi @@ -52,8 +90,7 @@ before_install: install: - if [[ "${TARGET}" == "TRUNK" ]]; then ./scripts/gdal-trunk.sh; fi; - - if [[ "${TARGET}" == "SHARED" && "$(uname -s)" == "Linux" ]]; then sudo apt-get -qq update; sudo apt-get --force-yes -qq install libgdal-dev libgdal1-dev libgdal1h=1.10.0-1~precise1; fi; - - if [[ "${TARGET}" == "SHARED" && "$(uname -s)" == "Darwin" ]]; then brew update; brew uninstall --ignore-dependencies gdal; brew install gdal; fi; + - if [[ "${TARGET}" == "SHARED" && "$(uname -s)" == "Linux" ]]; then sudo apt-get -qq update; sudo apt-get --force-yes -qq install libgdal-dev libc6-dev; fi; - if [[ "${TARGET}" == "SHARED" || "${TARGET}" == "TRUNK" ]]; then npm install --build-from-source --shared_gdal; fi; - if [[ "${TARGET}" == "SHARED" || "${TARGET}" == "TRUNK" ]]; then gdal-config --version --version; fi; - if [[ "${TARGET}" == "STATIC" ]]; then npm install --build-from-source > /dev/null; fi; diff --git a/appveyor.yml b/appveyor.yml index 6069e5ef..4e546bee 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -28,6 +28,8 @@ environment: msvs_toolset: 14 - nodejs_version: 9 msvs_toolset: 14 + - nodejs_version: 10 + msvs_toolset: 14 install: - ps: Start-FileDownload 'https://github.com/mapbox/ci-scripts/raw/v1.1.0/node/ci-cpp.bat' -FileName ci.bat diff --git a/binding.gyp b/binding.gyp index 483f48ce..d9e085a7 100644 --- a/binding.gyp +++ b/binding.gyp @@ -9,6 +9,7 @@ { "target_name": "gdal", "type": "loadable_module", + "win_delay_load_hook": "false", "product_prefix": "", "product_extension": "node", "sources": [ diff --git a/package.json b/package.json index d08ce7a5..03916b9d 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,8 @@ "publish-yuidoc": "npm run yuidoc && node ./scripts/publish-docs.js" }, "dependencies": { - "nan": "~2.7.0", - "node-pre-gyp": "~0.6.39" + "nan": "~2.10.0", + "node-pre-gyp": "~0.10.0" }, "bundledDependencies": [ "node-pre-gyp" diff --git a/src/collections/dataset_bands.cpp b/src/collections/dataset_bands.cpp index c5c471ca..96a0854b 100644 --- a/src/collections/dataset_bands.cpp +++ b/src/collections/dataset_bands.cpp @@ -71,7 +71,7 @@ Local DatasetBands::New(Local ds_obj) DatasetBands *wrapped = new DatasetBands(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(DatasetBands::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(DatasetBands::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), ds_obj); return scope.Escape(obj); diff --git a/src/collections/dataset_layers.cpp b/src/collections/dataset_layers.cpp index bcce75e4..bde1bfa5 100644 --- a/src/collections/dataset_layers.cpp +++ b/src/collections/dataset_layers.cpp @@ -74,7 +74,7 @@ Local DatasetLayers::New(Local ds_obj) DatasetLayers *wrapped = new DatasetLayers(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(DatasetLayers::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(DatasetLayers::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), ds_obj); diff --git a/src/collections/feature_defn_fields.cpp b/src/collections/feature_defn_fields.cpp index ce66ab84..26d99c10 100644 --- a/src/collections/feature_defn_fields.cpp +++ b/src/collections/feature_defn_fields.cpp @@ -72,7 +72,7 @@ Local FeatureDefnFields::New(Local feature_defn) FeatureDefnFields *wrapped = new FeatureDefnFields(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(FeatureDefnFields::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(FeatureDefnFields::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), feature_defn); return scope.Escape(obj); diff --git a/src/collections/feature_fields.cpp b/src/collections/feature_fields.cpp index fd0faee8..dae7246d 100644 --- a/src/collections/feature_fields.cpp +++ b/src/collections/feature_fields.cpp @@ -72,7 +72,7 @@ Local FeatureFields::New(Local layer_obj) FeatureFields *wrapped = new FeatureFields(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(FeatureFields::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(FeatureFields::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), layer_obj); return scope.Escape(obj); @@ -171,7 +171,7 @@ NAN_METHOD(FeatureFields::set) //skip value if field name doesnt exist //both in the feature definition and the passed object - if (field_index == -1 || !values->HasOwnProperty(Nan::New(field_name).ToLocalChecked())) { + if (field_index == -1 || !Nan::HasOwnProperty(values, Nan::New(field_name).ToLocalChecked()).FromMaybe(false)) { continue; } diff --git a/src/collections/gdal_drivers.cpp b/src/collections/gdal_drivers.cpp index e1f4a9d6..076772dc 100644 --- a/src/collections/gdal_drivers.cpp +++ b/src/collections/gdal_drivers.cpp @@ -69,7 +69,7 @@ Local GDALDrivers::New() GDALDrivers *wrapped = new GDALDrivers(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(GDALDrivers::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(GDALDrivers::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/collections/geometry_collection_children.cpp b/src/collections/geometry_collection_children.cpp index d04dabdc..4e896358 100644 --- a/src/collections/geometry_collection_children.cpp +++ b/src/collections/geometry_collection_children.cpp @@ -66,7 +66,7 @@ Local GeometryCollectionChildren::New(Local geom) GeometryCollectionChildren *wrapped = new GeometryCollectionChildren(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(GeometryCollectionChildren::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(GeometryCollectionChildren::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), geom); return scope.Escape(obj); diff --git a/src/collections/layer_features.cpp b/src/collections/layer_features.cpp index 0d0ff837..b0ab5cea 100644 --- a/src/collections/layer_features.cpp +++ b/src/collections/layer_features.cpp @@ -71,7 +71,7 @@ Local LayerFeatures::New(Local layer_obj) LayerFeatures *wrapped = new LayerFeatures(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(LayerFeatures::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(LayerFeatures::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), layer_obj); return scope.Escape(obj); diff --git a/src/collections/layer_fields.cpp b/src/collections/layer_fields.cpp index 2f973a95..5689485b 100644 --- a/src/collections/layer_fields.cpp +++ b/src/collections/layer_fields.cpp @@ -70,7 +70,7 @@ Local LayerFields::New(Local layer_obj) LayerFields *wrapped = new LayerFields(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(LayerFields::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(LayerFields::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), layer_obj); return scope.Escape(obj); diff --git a/src/collections/linestring_points.cpp b/src/collections/linestring_points.cpp index e5edff2a..ab4a195b 100644 --- a/src/collections/linestring_points.cpp +++ b/src/collections/linestring_points.cpp @@ -69,7 +69,7 @@ Local LineStringPoints::New(Local geom) LineStringPoints *wrapped = new LineStringPoints(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(LineStringPoints::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(LineStringPoints::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), geom); return scope.Escape(obj); @@ -210,7 +210,7 @@ NAN_METHOD(LineStringPoints::set) NODE_DOUBLE_FROM_OBJ(obj, "y", y); Local z_prop_name = Nan::New("z").ToLocalChecked(); - if (obj->HasOwnProperty(z_prop_name)) { + if (Nan::HasOwnProperty(obj, z_prop_name).FromMaybe(false)) { Local z_val = obj->Get(z_prop_name); if (!z_val->IsNumber()) { Nan::ThrowError("z property must be number"); @@ -304,7 +304,7 @@ NAN_METHOD(LineStringPoints::add) NODE_DOUBLE_FROM_OBJ(element_obj, "y", y); Local z_prop_name = Nan::New("z").ToLocalChecked(); - if (element_obj->HasOwnProperty(z_prop_name)) { + if (Nan::HasOwnProperty(element_obj, z_prop_name).FromMaybe(false)) { Local z_val = element_obj->Get(z_prop_name); if (!z_val->IsNumber()) { Nan::ThrowError("z property must be number"); @@ -324,7 +324,7 @@ NAN_METHOD(LineStringPoints::add) NODE_DOUBLE_FROM_OBJ(obj, "y", y); Local z_prop_name = Nan::New("z").ToLocalChecked(); - if (obj->HasOwnProperty(z_prop_name)) { + if (Nan::HasOwnProperty(obj, z_prop_name).FromMaybe(false)) { Local z_val = obj->Get(z_prop_name); if (!z_val->IsNumber()) { Nan::ThrowError("z property must be number"); diff --git a/src/collections/polygon_rings.cpp b/src/collections/polygon_rings.cpp index f0978029..0260b7d7 100644 --- a/src/collections/polygon_rings.cpp +++ b/src/collections/polygon_rings.cpp @@ -66,7 +66,7 @@ Local PolygonRings::New(Local geom) PolygonRings *wrapped = new PolygonRings(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(PolygonRings::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(PolygonRings::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), geom); return scope.Escape(obj); diff --git a/src/collections/rasterband_overviews.cpp b/src/collections/rasterband_overviews.cpp index eaff53ac..f6cfc18e 100644 --- a/src/collections/rasterband_overviews.cpp +++ b/src/collections/rasterband_overviews.cpp @@ -65,7 +65,7 @@ Local RasterBandOverviews::New(Local band_obj) RasterBandOverviews *wrapped = new RasterBandOverviews(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(RasterBandOverviews::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(RasterBandOverviews::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), band_obj); return scope.Escape(obj); diff --git a/src/collections/rasterband_pixels.cpp b/src/collections/rasterband_pixels.cpp index 6d8f9aa4..447bfa33 100644 --- a/src/collections/rasterband_pixels.cpp +++ b/src/collections/rasterband_pixels.cpp @@ -78,7 +78,7 @@ Local RasterBandPixels::New(Local band_obj) RasterBandPixels *wrapped = new RasterBandPixels(); v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(RasterBandPixels::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(RasterBandPixels::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); Nan::SetPrivate(obj, Nan::New("parent_").ToLocalChecked(), band_obj); return scope.Escape(obj); diff --git a/src/gdal_algorithms.cpp b/src/gdal_algorithms.cpp index 527523fb..97d9bad2 100644 --- a/src/gdal_algorithms.cpp +++ b/src/gdal_algorithms.cpp @@ -102,7 +102,7 @@ NAN_METHOD(Algorithms::contourGenerate) NODE_INT_FROM_OBJ_OPT(obj, "elevField", elev_field); NODE_DOUBLE_FROM_OBJ_OPT(obj, "interval", interval); NODE_DOUBLE_FROM_OBJ_OPT(obj, "offset", base); - if(obj->HasOwnProperty(Nan::New("fixedLevels").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("fixedLevels").ToLocalChecked()).FromMaybe(false)){ if(fixed_level_array.parse(obj->Get(Nan::New("fixedLevels").ToLocalChecked()))){ return; //error parsing double list } else { @@ -110,7 +110,7 @@ NAN_METHOD(Algorithms::contourGenerate) n_fixed_levels = fixed_level_array.length(); } } - if(obj->HasOwnProperty(Nan::New("nodata").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("nodata").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("nodata").ToLocalChecked()); if(prop->IsNumber()){ use_nodata = 1; @@ -273,7 +273,7 @@ NAN_METHOD(Algorithms::polygonize) } CPLErr err; - if(obj->HasOwnProperty(Nan::New("useFloats").ToLocalChecked()) && obj->Get(Nan::New("useFloats").ToLocalChecked())->BooleanValue()){ + if(Nan::HasOwnProperty(obj, Nan::New("useFloats").ToLocalChecked()).FromMaybe(false) && obj->Get(Nan::New("useFloats").ToLocalChecked())->BooleanValue()){ err = GDALFPolygonize(src->get(), mask ? mask->get() : NULL, reinterpret_cast(dst->get()), pix_val_field, papszOptions, NULL, NULL); } else { err = GDALPolygonize(src->get(), mask ? mask->get() : NULL, reinterpret_cast(dst->get()), pix_val_field, papszOptions, NULL, NULL); diff --git a/src/gdal_common.hpp b/src/gdal_common.hpp index a028a51c..0a223883 100644 --- a/src/gdal_common.hpp +++ b/src/gdal_common.hpp @@ -88,7 +88,7 @@ NAN_SETTER(READ_ONLY_SETTER); #define NODE_DOUBLE_FROM_OBJ(obj, key, var) \ { \ Local sym = Nan::New(key).ToLocalChecked(); \ - if (!obj->HasOwnProperty(sym)){ \ + if (!Nan::HasOwnProperty(obj, sym).FromMaybe(false)){ \ Nan::ThrowError("Object must contain property \"" key "\""); return; \ } \ Local val = obj->Get(sym); \ @@ -102,7 +102,7 @@ NAN_SETTER(READ_ONLY_SETTER); #define NODE_INT_FROM_OBJ(obj, key, var) \ { \ Local sym = Nan::New(key).ToLocalChecked(); \ - if (!obj->HasOwnProperty(sym)){ \ + if (!Nan::HasOwnProperty(obj, sym).FromMaybe(false)){ \ Nan::ThrowError("Object must contain property \"" key "\""); return; \ } \ Local val = obj->Get(sym); \ @@ -116,7 +116,7 @@ NAN_SETTER(READ_ONLY_SETTER); #define NODE_STR_FROM_OBJ(obj, key, var) \ { \ Local sym = Nan::New(key).ToLocalChecked(); \ - if (!obj->HasOwnProperty(sym)){ \ + if (!Nan::HasOwnProperty(obj, sym).FromMaybe(false)){ \ Nan::ThrowError("Object must contain property \"" key "\""); return; \ } \ Local val = obj->Get(sym); \ @@ -130,7 +130,7 @@ NAN_SETTER(READ_ONLY_SETTER); #define NODE_WRAPPED_FROM_OBJ(obj, key, type, var) \ { \ Local sym = Nan::New(key).ToLocalChecked(); \ - if (!obj->HasOwnProperty(sym)){ \ + if (!Nan::HasOwnProperty(obj, sym).FromMaybe(false)){ \ Nan::ThrowError("Object must contain property \"" key "\""); return; \ } \ Local val = obj->Get(sym); \ @@ -148,7 +148,7 @@ NAN_SETTER(READ_ONLY_SETTER); #define NODE_WRAPPED_FROM_OBJ_OPT(obj, key, type, var) \ { \ Local sym = Nan::New(key).ToLocalChecked(); \ - if (obj->HasOwnProperty(sym)){ \ + if (Nan::HasOwnProperty(obj, sym).FromMaybe(false)){ \ Local val = obj->Get(sym); \ if(val->IsObject() && Nan::New(type::constructor)->HasInstance(val)){ \ var = Nan::ObjectWrap::Unwrap(val.As()); \ @@ -166,7 +166,7 @@ NAN_SETTER(READ_ONLY_SETTER); #define NODE_DOUBLE_FROM_OBJ_OPT(obj, key, var) \ { \ Local sym = Nan::New(key).ToLocalChecked(); \ - if (obj->HasOwnProperty(sym)){ \ + if (Nan::HasOwnProperty(obj, sym).FromMaybe(false)){ \ Local val = obj->Get(sym); \ if (!val->IsNumber()){ \ Nan::ThrowTypeError("Property \"" key "\" must be a number"); \ @@ -179,7 +179,7 @@ NAN_SETTER(READ_ONLY_SETTER); #define NODE_INT_FROM_OBJ_OPT(obj, key, var) \ { \ Local sym = Nan::New(key).ToLocalChecked(); \ - if (obj->HasOwnProperty(sym)){ \ + if (Nan::HasOwnProperty(obj, sym).FromMaybe(false)){ \ Local val = obj->Get(sym); \ if (!val->IsNumber()){ \ Nan::ThrowTypeError("Property \"" key "\" must be a number"); \ @@ -192,7 +192,7 @@ NAN_SETTER(READ_ONLY_SETTER); #define NODE_STR_FROM_OBJ_OPT(obj, key, var) \ { \ Local sym = Nan::New(key).ToLocalChecked(); \ - if (obj->HasOwnProperty(sym)){ \ + if (Nan::HasOwnProperty(obj, sym).FromMaybe(false)){ \ Local val = obj->Get(sym); \ if (!val->IsString()){ \ Nan::ThrowTypeError("Property \"" key "\" must be a string"); \ diff --git a/src/gdal_coordinate_transformation.cpp b/src/gdal_coordinate_transformation.cpp index 2a819d03..ea809748 100644 --- a/src/gdal_coordinate_transformation.cpp +++ b/src/gdal_coordinate_transformation.cpp @@ -155,7 +155,7 @@ Local CoordinateTransformation::New(OGRCoordinateTransformation *transfor CoordinateTransformation *wrapped = new CoordinateTransformation(transform); Local ext = Nan::New(wrapped); - Local obj = Nan::New(CoordinateTransformation::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(CoordinateTransformation::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_dataset.cpp b/src/gdal_dataset.cpp index bd9df9db..4df37c2a 100644 --- a/src/gdal_dataset.cpp +++ b/src/gdal_dataset.cpp @@ -171,7 +171,7 @@ Local Dataset::New(GDALDataset *raw) Dataset *wrapped = new Dataset(raw); Local ext = Nan::New(wrapped); - Local obj = Nan::New(Dataset::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(Dataset::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); dataset_cache.add(raw, obj); wrapped->uid = ptr_manager.add(raw); @@ -194,7 +194,7 @@ Local Dataset::New(OGRDataSource *raw) Dataset *wrapped = new Dataset(raw); Local ext = Nan::New(wrapped); - Local obj = Nan::New(Dataset::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(Dataset::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); datasource_cache.add(raw, obj); wrapped->uid = ptr_manager.add(raw); diff --git a/src/gdal_driver.cpp b/src/gdal_driver.cpp index c339cea2..449c1b2e 100644 --- a/src/gdal_driver.cpp +++ b/src/gdal_driver.cpp @@ -140,7 +140,7 @@ Local Driver::New(GDALDriver *driver) Driver *wrapped = new Driver(driver); Local ext = Nan::New(wrapped); - Local obj = Nan::New(Driver::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(Driver::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); //LOG("ADDING DRIVER TO CACHE [%p]", driver); cache.add(driver, obj); @@ -163,7 +163,7 @@ Local Driver::New(OGRSFDriver *driver) Driver *wrapped = new Driver(driver); Local ext = Nan::New(wrapped); - Local obj = Nan::New(Driver::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(Driver::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); cache_ogr.add(driver, obj); diff --git a/src/gdal_feature.cpp b/src/gdal_feature.cpp index 9cabb3ea..8e3d4f5d 100644 --- a/src/gdal_feature.cpp +++ b/src/gdal_feature.cpp @@ -166,7 +166,7 @@ Local Feature::New(OGRFeature *feature, bool owned) Feature *wrapped = new Feature(feature); wrapped->owned_ = owned; Local ext = Nan::New(wrapped); - Local obj = Nan::New(Feature::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(Feature::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_feature_defn.cpp b/src/gdal_feature_defn.cpp index 2b8b4823..b9b9f7ae 100644 --- a/src/gdal_feature_defn.cpp +++ b/src/gdal_feature_defn.cpp @@ -122,7 +122,7 @@ Local FeatureDefn::New(OGRFeatureDefn *def, bool owned) def->Reference(); Local ext = Nan::New(wrapped); - Local obj = Nan::New(FeatureDefn::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(FeatureDefn::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_field_defn.cpp b/src/gdal_field_defn.cpp index a3ab619d..583b707f 100644 --- a/src/gdal_field_defn.cpp +++ b/src/gdal_field_defn.cpp @@ -123,7 +123,7 @@ Local FieldDefn::New(OGRFieldDefn *def, bool owned) wrapped->owned_ = true; v8::Local ext = Nan::New(wrapped); - v8::Local obj = Nan::New(FieldDefn::constructor)->GetFunction()->NewInstance(1, &ext); + v8::Local obj = Nan::NewInstance(Nan::New(FieldDefn::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_geometrycollection.cpp b/src/gdal_geometrycollection.cpp index 65cf186a..f7e8317e 100644 --- a/src/gdal_geometrycollection.cpp +++ b/src/gdal_geometrycollection.cpp @@ -127,7 +127,7 @@ Local GeometryCollection::New(OGRGeometryCollection *geom, bool owned) UPDATE_AMOUNT_OF_GEOMETRY_MEMORY(wrapped); Local ext = Nan::New(wrapped); - Local obj = Nan::New(GeometryCollection::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(GeometryCollection::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_layer.cpp b/src/gdal_layer.cpp index 192dff17..476bda16 100644 --- a/src/gdal_layer.cpp +++ b/src/gdal_layer.cpp @@ -148,7 +148,7 @@ Local Layer::New(OGRLayer *raw, OGRDataSource *raw_parent, bool result_se Layer *wrapped = new Layer(raw); Local ext = Nan::New(wrapped); - Local obj = Nan::New(Layer::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(Layer::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); cache.add(raw, obj); diff --git a/src/gdal_linearring.cpp b/src/gdal_linearring.cpp index ca129b5c..f35913f2 100644 --- a/src/gdal_linearring.cpp +++ b/src/gdal_linearring.cpp @@ -125,7 +125,7 @@ Local LinearRing::New(OGRLinearRing *geom, bool owned) UPDATE_AMOUNT_OF_GEOMETRY_MEMORY(wrapped); Local ext = Nan::New(wrapped); - Local obj = Nan::New(LinearRing::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(LinearRing::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_linestring.cpp b/src/gdal_linestring.cpp index f3aeb3c8..5fd799ad 100644 --- a/src/gdal_linestring.cpp +++ b/src/gdal_linestring.cpp @@ -134,7 +134,7 @@ Local LineString::New(OGRLineString *geom, bool owned) UPDATE_AMOUNT_OF_GEOMETRY_MEMORY(wrapped); Local ext = Nan::New(wrapped); - Local obj = Nan::New(LineString::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(LineString::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_multilinestring.cpp b/src/gdal_multilinestring.cpp index d02c4ac6..f87626b2 100644 --- a/src/gdal_multilinestring.cpp +++ b/src/gdal_multilinestring.cpp @@ -123,7 +123,7 @@ Local MultiLineString::New(OGRMultiLineString *geom, bool owned) UPDATE_AMOUNT_OF_GEOMETRY_MEMORY(wrapped); Local ext = Nan::New(wrapped); - Local obj = Nan::New(MultiLineString::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(MultiLineString::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_multipoint.cpp b/src/gdal_multipoint.cpp index 94a91e98..8b99cddc 100644 --- a/src/gdal_multipoint.cpp +++ b/src/gdal_multipoint.cpp @@ -123,7 +123,7 @@ Local MultiPoint::New(OGRMultiPoint *geom, bool owned) UPDATE_AMOUNT_OF_GEOMETRY_MEMORY(wrapped); Local ext = Nan::New(wrapped); - Local obj = Nan::New(MultiPoint::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(MultiPoint::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_multipolygon.cpp b/src/gdal_multipolygon.cpp index a5fb9d0b..bb9d5f3b 100644 --- a/src/gdal_multipolygon.cpp +++ b/src/gdal_multipolygon.cpp @@ -123,7 +123,7 @@ Local MultiPolygon::New(OGRMultiPolygon *geom, bool owned) UPDATE_AMOUNT_OF_GEOMETRY_MEMORY(wrapped); Local ext = Nan::New(wrapped); - Local obj = Nan::New(MultiPolygon::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(MultiPolygon::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_point.cpp b/src/gdal_point.cpp index 9163dcfd..b4bbfc23 100644 --- a/src/gdal_point.cpp +++ b/src/gdal_point.cpp @@ -139,7 +139,7 @@ Local Point::New(OGRPoint *geom, bool owned) UPDATE_AMOUNT_OF_GEOMETRY_MEMORY(wrapped); Local ext = Nan::New(wrapped); - Local obj = Nan::New(Point::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(Point::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_polygon.cpp b/src/gdal_polygon.cpp index 88663ba5..ef8fb1cc 100644 --- a/src/gdal_polygon.cpp +++ b/src/gdal_polygon.cpp @@ -126,7 +126,7 @@ Local Polygon::New(OGRPolygon *geom, bool owned) UPDATE_AMOUNT_OF_GEOMETRY_MEMORY(wrapped); Local ext = Nan::New(wrapped); - Local obj = Nan::New(Polygon::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(Polygon::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); return scope.Escape(obj); } diff --git a/src/gdal_rasterband.cpp b/src/gdal_rasterband.cpp index 1721c01b..ed970b0b 100644 --- a/src/gdal_rasterband.cpp +++ b/src/gdal_rasterband.cpp @@ -143,7 +143,7 @@ Local RasterBand::New(GDALRasterBand *raw, GDALDataset *raw_parent) RasterBand *wrapped = new RasterBand(raw); Local ext = Nan::New(wrapped); - Local obj = Nan::New(RasterBand::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(RasterBand::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); LOG("Adding band to cache[%p] (parent=%p)", raw, raw_parent); cache.add(raw, obj); diff --git a/src/gdal_spatial_reference.cpp b/src/gdal_spatial_reference.cpp index 52ea45ba..eabd7bc2 100644 --- a/src/gdal_spatial_reference.cpp +++ b/src/gdal_spatial_reference.cpp @@ -173,7 +173,7 @@ Local SpatialReference::New(OGRSpatialReference *raw, bool owned) SpatialReference *wrapped = new SpatialReference(cloned_srs); wrapped->owned_ = true; Local ext = Nan::New(wrapped); - Local obj = Nan::New(SpatialReference::constructor)->GetFunction()->NewInstance(1, &ext); + Local obj = Nan::NewInstance(Nan::New(SpatialReference::constructor)->GetFunction(), 1, &ext).ToLocalChecked(); cache.add(cloned_srs, raw, obj); diff --git a/src/gdal_warper.cpp b/src/gdal_warper.cpp index d854bd7a..238bdd93 100644 --- a/src/gdal_warper.cpp +++ b/src/gdal_warper.cpp @@ -311,7 +311,7 @@ NAN_METHOD(Warper::suggestedWarpOutput) NODE_ARG_OBJECT(0, "Warp options", obj); - if(obj->HasOwnProperty(Nan::New("src").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("src").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("src").ToLocalChecked()); if(prop->IsObject() && !prop->IsNull() && Nan::New(Dataset::constructor)->HasInstance(prop)){ ds = Nan::ObjectWrap::Unwrap(prop.As()); diff --git a/src/utils/fast_buffer.cpp b/src/utils/fast_buffer.cpp index c2a6b4da..eff58be0 100644 --- a/src/utils/fast_buffer.cpp +++ b/src/utils/fast_buffer.cpp @@ -15,7 +15,7 @@ Local FastBuffer::New(unsigned char *data, int length) Local bufferConstructor = globalObj->Get(Nan::New("Buffer").ToLocalChecked()).As(); Local constructorArgs[3] = { slowBuffer, Nan::New(length), Nan::New(0) }; - Local actualBuffer = bufferConstructor->NewInstance(3, constructorArgs); + Local actualBuffer = Nan::NewInstance(bufferConstructor, 3, constructorArgs).ToLocalChecked(); return scope.Escape(actualBuffer); -} \ No newline at end of file +} diff --git a/src/utils/typed_array.cpp b/src/utils/typed_array.cpp index 3d6e0515..13645eb3 100644 --- a/src/utils/typed_array.cpp +++ b/src/utils/typed_array.cpp @@ -38,7 +38,7 @@ Local TypedArray::New(GDALDataType type, unsigned int length) { constructor = val.As(); Local size = Nan::New(length * GDALGetDataTypeSize(type) / 8); - Local array_buffer = constructor->NewInstance(1, &size); + Local array_buffer = Nan::NewInstance(constructor, 1, &size).ToLocalChecked(); if(array_buffer.IsEmpty() || !array_buffer->IsObject()) { Nan::ThrowError("Error allocating ArrayBuffer"); @@ -55,7 +55,7 @@ Local TypedArray::New(GDALDataType type, unsigned int length) { } constructor = val.As(); - Local array = constructor->NewInstance(1, &array_buffer); + Local array = Nan::NewInstance(constructor, 1, &array_buffer).ToLocalChecked(); if(array.IsEmpty() || !array->IsObject()) { Nan::ThrowError("Error creating TypedArray"); @@ -71,7 +71,7 @@ GDALDataType TypedArray::Identify(Local obj) { Nan::HandleScope scope; Local sym = Nan::New("_gdal_type").ToLocalChecked(); - if (!obj->HasOwnProperty(sym)) return GDT_Unknown; + if (!Nan::HasOwnProperty(obj, sym).FromMaybe(false)) return GDT_Unknown; Local val = obj->Get(sym); if (!val->IsNumber()) return GDT_Unknown; diff --git a/src/utils/warp_options.cpp b/src/utils/warp_options.cpp index cbfe36ca..e0436d50 100644 --- a/src/utils/warp_options.cpp +++ b/src/utils/warp_options.cpp @@ -79,13 +79,13 @@ int WarpOptions::parse(Local value) Local obj = value.As(); Local prop; - if(obj->HasOwnProperty(Nan::New("options").ToLocalChecked()) && additional_options.parse(obj->Get(Nan::New("options").ToLocalChecked()))){ + if(Nan::HasOwnProperty(obj, Nan::New("options").ToLocalChecked()).FromMaybe(false) && additional_options.parse(obj->Get(Nan::New("options").ToLocalChecked()))){ return 1; // error parsing string list } options->papszWarpOptions = additional_options.get(); - if(obj->HasOwnProperty(Nan::New("memoryLimit").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("memoryLimit").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("memoryLimit").ToLocalChecked()); if(prop->IsNumber()){ options->dfWarpMemoryLimit = prop->Int32Value(); @@ -93,13 +93,13 @@ int WarpOptions::parse(Local value) Nan::ThrowTypeError("memoryLimit property must be an integer"); return 1; } } - if(obj->HasOwnProperty(Nan::New("resampling").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("resampling").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("resampling").ToLocalChecked()); if(parseResamplingAlg(prop)){ return 1; //error parsing resampling algorithm } } - if(obj->HasOwnProperty(Nan::New("src").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("src").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("src").ToLocalChecked()); if(prop->IsObject() && !prop->IsNull() && Nan::New(Dataset::constructor)->HasInstance(prop)){ Dataset *ds = Nan::ObjectWrap::Unwrap(prop.As()); @@ -121,7 +121,7 @@ int WarpOptions::parse(Local value) Nan::ThrowError("Warp options must include a source dataset"); return 1; } - if(obj->HasOwnProperty(Nan::New("dst").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("dst").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("dst").ToLocalChecked()); if(prop->IsObject() && !prop->IsNull() && Nan::New(Dataset::constructor)->HasInstance(prop)){ Dataset *ds = Nan::ObjectWrap::Unwrap(prop.As()); @@ -140,7 +140,7 @@ int WarpOptions::parse(Local value) Nan::ThrowTypeError("dst property must be a Dataset object"); return 1; } } - if(obj->HasOwnProperty(Nan::New("srcBands").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("srcBands").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("srcBands").ToLocalChecked()); if(src_bands.parse(prop)){ return 1; //error parsing number list @@ -148,7 +148,7 @@ int WarpOptions::parse(Local value) options->panSrcBands = src_bands.get(); options->nBandCount = src_bands.length(); } - if(obj->HasOwnProperty(Nan::New("dstBands").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("dstBands").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("dstBands").ToLocalChecked()); if(dst_bands.parse(prop)){ return 1; //error parsing number list @@ -168,7 +168,7 @@ int WarpOptions::parse(Local value) Nan::ThrowError("dstBands must be provided if srcBands option is used"); return 1; } - if(obj->HasOwnProperty(Nan::New("srcNodata").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("srcNodata").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("srcNodata").ToLocalChecked()); if(prop->IsNumber()){ src_nodata = new double(prop->NumberValue()); @@ -177,7 +177,7 @@ int WarpOptions::parse(Local value) Nan::ThrowTypeError("srcNodata property must be a number"); return 1; } } - if(obj->HasOwnProperty(Nan::New("dstNodata").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("dstNodata").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("dstNodata").ToLocalChecked()); if(prop->IsNumber()){ dst_nodata = new double(prop->NumberValue()); @@ -186,7 +186,7 @@ int WarpOptions::parse(Local value) Nan::ThrowTypeError("dstNodata property must be a number"); return 1; } } - if(obj->HasOwnProperty(Nan::New("srcAlphaBand").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("srcAlphaBand").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("srcAlphaBand").ToLocalChecked()); if(prop->IsNumber()){ options->nSrcAlphaBand = prop->Int32Value(); @@ -194,7 +194,7 @@ int WarpOptions::parse(Local value) Nan::ThrowTypeError("srcAlphaBand property must be an integer"); return 1; } } - if(obj->HasOwnProperty(Nan::New("dstAlphaBand").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("dstAlphaBand").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("dstAlphaBand").ToLocalChecked()); if(prop->IsNumber()){ options->nDstAlphaBand = prop->Int32Value(); @@ -202,7 +202,7 @@ int WarpOptions::parse(Local value) Nan::ThrowTypeError("dstAlphaBand property must be an integer"); return 1; } } - if(obj->HasOwnProperty(Nan::New("blend").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("blend").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("blend").ToLocalChecked()); if(prop->IsNumber()){ options->dfCutlineBlendDist = prop->NumberValue(); @@ -210,7 +210,7 @@ int WarpOptions::parse(Local value) Nan::ThrowTypeError("cutline blend distance must be a number"); return 1; } } - if(obj->HasOwnProperty(Nan::New("cutline").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("cutline").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("cutline").ToLocalChecked()); if(prop->IsObject() && !prop->IsNull() && Nan::New(Geometry::constructor)->HasInstance(prop)){ options->hCutline = Nan::ObjectWrap::Unwrap(prop.As())->get(); @@ -218,7 +218,7 @@ int WarpOptions::parse(Local value) Nan::ThrowTypeError("cutline property must be a Geometry object"); return 1; } } - if(obj->HasOwnProperty(Nan::New("multi").ToLocalChecked())){ + if(Nan::HasOwnProperty(obj, Nan::New("multi").ToLocalChecked()).FromMaybe(false)){ prop = obj->Get(Nan::New("multi").ToLocalChecked()); if(prop->IsTrue()){ multi = true;