node-addon-api
Advanced tools
Comparing version 5.0.0 to 5.1.0
const path = require('path'); | ||
const include_dir = path.relative('.', __dirname); | ||
const includeDir = path.relative('.', __dirname); | ||
module.exports = { | ||
include: `"${__dirname}"`, // deprecated, can be removed as part of 4.0.0 | ||
include_dir, | ||
gyp: path.join(include_dir, 'node_api.gyp:nothing'), | ||
include_dir: includeDir, | ||
gyp: path.join(includeDir, 'node_api.gyp:nothing'), | ||
isNodeApiBuiltin: true, | ||
needsFlag: false | ||
}; |
@@ -19,2 +19,6 @@ { | ||
{ | ||
"name": "Ammar Faizi", | ||
"url": "https://github.com/ammarfaizi2" | ||
}, | ||
{ | ||
"name": "András Timár, Dr", | ||
@@ -76,2 +80,6 @@ "url": "https://github.com/timarandras" | ||
{ | ||
"name": "Dante Calderón", | ||
"url": "https://github.com/dantehemerson" | ||
}, | ||
{ | ||
"name": "Darshan Sen", | ||
@@ -109,2 +117,6 @@ "url": "https://github.com/RaisinTen" | ||
{ | ||
"name": "Feng Yu", | ||
"url": "https://github.com/F3n67u" | ||
}, | ||
{ | ||
"name": "Ferdinand Holzer", | ||
@@ -154,2 +166,6 @@ "url": "https://github.com/fholzer" | ||
{ | ||
"name": "Jenny", | ||
"url": "https://github.com/egg-bread" | ||
}, | ||
{ | ||
"name": "Jeroen Janssen", | ||
@@ -175,2 +191,6 @@ "url": "https://github.com/japj" | ||
{ | ||
"name": "Julian Mesa", | ||
"url": "https://github.com/julianmesa-gitkraken" | ||
}, | ||
{ | ||
"name": "Kasumi Hanazuki", | ||
@@ -208,2 +228,6 @@ "url": "https://github.com/hanazuki" | ||
{ | ||
"name": "Kyle Kovacs", | ||
"url": "https://github.com/nullromo" | ||
}, | ||
{ | ||
"name": "legendecas", | ||
@@ -277,2 +301,6 @@ "url": "https://github.com/legendecas" | ||
{ | ||
"name": "Peter Šándor", | ||
"url": "https://github.com/petersandor" | ||
}, | ||
{ | ||
"name": "Philipp Renoth", | ||
@@ -286,2 +314,6 @@ "url": "https://github.com/DaAitch" | ||
{ | ||
"name": "Richard Lau", | ||
"url": "https://github.com/richardlau" | ||
}, | ||
{ | ||
"name": "Rolf Timmermans", | ||
@@ -299,2 +331,6 @@ "url": "https://github.com/rolftimmermans" | ||
{ | ||
"name": "Saint Gabriel", | ||
"url": "https://github.com/chineduG" | ||
}, | ||
{ | ||
"name": "Sampson Gao", | ||
@@ -363,2 +399,6 @@ "url": "https://github.com/sampsongao" | ||
"url": "https://github.com/ZzqiZQute" | ||
}, | ||
{ | ||
"name": "Feng Yu", | ||
"url": "https://github.com/F3n67u" | ||
} | ||
@@ -414,2 +454,3 @@ ], | ||
"test": "node test", | ||
"test:debug": "node-gyp rebuild -C test --debug && NODE_API_BUILD_CONFIG=Debug node ./test/index.js", | ||
"predev": "node-gyp rebuild -C test --debug", | ||
@@ -424,4 +465,4 @@ "dev": "node test", | ||
"pre-commit": "lint", | ||
"version": "5.0.0", | ||
"version": "5.1.0", | ||
"support": true | ||
} |
@@ -19,4 +19,4 @@ NOTE: The default branch has been renamed! | ||
There are three options for implementing addons: Node-API, nan, or direct | ||
use of internal V8, libuv and Node.js libraries. Unless there is a need for | ||
direct access to functionality which is not exposed by Node-API as outlined | ||
use of internal V8, libuv, and Node.js libraries. Unless there is a need for | ||
direct access to functionality that is not exposed by Node-API as outlined | ||
in [C/C++ addons](https://nodejs.org/dist/latest/docs/api/addons.html) | ||
@@ -28,3 +28,3 @@ in Node.js core, use Node-API. Refer to | ||
Node-API is an ABI stable C interface provided by Node.js for building native | ||
addons. It is independent from the underlying JavaScript runtime (e.g. V8 or ChakraCore) | ||
addons. It is independent of the underlying JavaScript runtime (e.g. V8 or ChakraCore) | ||
and is maintained as part of Node.js itself. It is intended to insulate | ||
@@ -51,3 +51,3 @@ native addons from changes in the underlying JavaScript engine and allow | ||
As new APIs are added to Node-API, node-addon-api must be updated to provide | ||
wrappers for those new APIs. For this reason node-addon-api provides | ||
wrappers for those new APIs. For this reason, node-addon-api provides | ||
methods that allow callers to obtain the underlying Node-API handles so | ||
@@ -62,3 +62,3 @@ direct calls to Node-API and the use of the objects/methods provided by | ||
The [Node-API Resource](https://nodejs.github.io/node-addon-examples/) offers an | ||
The [Node-API Resource](https://nodejs.github.io/node-addon-examples/) offers an | ||
excellent orientation and tips for developers just getting started with Node-API | ||
@@ -77,3 +77,3 @@ and node-addon-api. | ||
## **Current version: 5.0.0** | ||
## **Current version: 5.1.0** | ||
@@ -195,2 +195,24 @@ (See [CHANGELOG.md](CHANGELOG.md) for complete Changelog) | ||
To run a specific unit test, filter conditions are available | ||
**Example:** | ||
compile and run only tests on objectwrap.cc and objectwrap.js | ||
``` | ||
npm run unit --filter=objectwrap | ||
``` | ||
Multiple unit tests cane be selected with wildcards | ||
**Example:** | ||
compile and run all test files ending with "reference" -> function_reference.cc, object_reference.cc, reference.cc | ||
``` | ||
npm run unit --filter=*reference | ||
``` | ||
Multiple filter conditions can be joined to broaden the test selection | ||
**Example:** | ||
compile and run all tests under folders threadsafe_function and typed_threadsafe_function and also the objectwrap.cc file | ||
npm run unit --filter='*function objectwrap' | ||
### **Debug** | ||
@@ -204,3 +226,3 @@ | ||
If you want faster build, you might use the following option: | ||
If you want a faster build, you might use the following option: | ||
@@ -233,3 +255,3 @@ ``` | ||
wrappers, tools that facilitate n-api/node-addon-api providing more | ||
convenient patterns on developing a Node.js add-ons with n-api/node-addon-api | ||
convenient patterns for developing a Node.js add-on with n-api/node-addon-api | ||
can be published to NPM as standalone packages. It is also recommended to tag | ||
@@ -280,7 +302,7 @@ such packages with `node-addon-api` to provide more visibility to the community. | ||
| Chengzhong Wu | [legendecas](https://github.com/legendecas) | | ||
| Gabriel Schulhof | [gabrielschulhof](https://github.com/gabrielschulhof) | | ||
| Jim Schlight | [jschlight](https://github.com/jschlight) | | ||
| Jack Xia | [JckXia](https://github.com/JckXia) | | ||
| Kevin Eady | [KevinEady](https://github.com/KevinEady) | | ||
| Michael Dawson | [mhdawson](https://github.com/mhdawson) | | ||
| Kevin Eady | [KevinEady](https://github.com/KevinEady) | ||
| Nicola Del Gobbo | [NickNaso](https://github.com/NickNaso) | | ||
| Vladimir Morozov | [vmoroz](https://github.com/vmoroz) | | ||
@@ -292,4 +314,6 @@ ### Emeritus | ||
| Benjamin Byholm | [kkoopa](https://github.com/kkoopa) | | ||
| Gabriel Schulhof | [gabrielschulhof](https://github.com/gabrielschulhof) | | ||
| Hitesh Kanwathirtha | [digitalinfinity](https://github.com/digitalinfinity) | | ||
| Jason Ginchereau | [jasongin](https://github.com/jasongin) | | ||
| Hitesh Kanwathirtha | [digitalinfinity](https://github.com/digitalinfinity) | | ||
| Jim Schlight | [jschlight](https://github.com/jschlight) | | ||
| Sampson Gao | [sampsongao](https://github.com/sampsongao) | | ||
@@ -296,0 +320,0 @@ | Taylor Woll | [boingoing](https://github.com/boingoing) | |
@@ -7,12 +7,11 @@ 'use strict'; | ||
const path = require('path'); | ||
const child_process = require('child_process'); | ||
// Read the output of the command, break it into lines, and use the reducer to | ||
// decide whether the file is an N-API module or not. | ||
function checkFile(file, command, argv, reducer) { | ||
const child = child_process.spawn(command, argv, { | ||
function checkFile (file, command, argv, reducer) { | ||
const child = require('child_process').spawn(command, argv, { | ||
stdio: ['inherit', 'pipe', 'inherit'] | ||
}); | ||
let leftover = ''; | ||
let isNapi = undefined; | ||
let isNapi; | ||
child.stdout.on('data', (chunk) => { | ||
@@ -31,7 +30,7 @@ if (isNapi === undefined) { | ||
console.log( | ||
command + ' exited with code: ' + code + ' and signal: ' + signal); | ||
command + ' exited with code: ' + code + ' and signal: ' + signal); | ||
} else { | ||
// Green if it's a N-API module, red otherwise. | ||
console.log( | ||
'\x1b[' + (isNapi ? '42' : '41') + 'm' + | ||
'\x1b[' + (isNapi ? '42' : '41') + 'm' + | ||
(isNapi ? ' N-API' : 'Not N-API') + | ||
@@ -44,3 +43,3 @@ '\x1b[0m: ' + file); | ||
// Use nm -a to list symbols. | ||
function checkFileUNIX(file) { | ||
function checkFileUNIX (file) { | ||
checkFile(file, 'nm', ['-a', file], (soFar, line) => { | ||
@@ -60,3 +59,3 @@ if (soFar === undefined) { | ||
// Use dumpbin /imports to list symbols. | ||
function checkFileWin32(file) { | ||
function checkFileWin32 (file) { | ||
checkFile(file, 'dumpbin', ['/imports', file], (soFar, line) => { | ||
@@ -75,6 +74,6 @@ if (soFar === undefined) { | ||
// one of the above checks, depending on the OS. | ||
function recurse(top) { | ||
function recurse (top) { | ||
fs.readdir(top, (error, items) => { | ||
if (error) { | ||
throw ("error reading directory " + top + ": " + error); | ||
throw new Error('error reading directory ' + top + ': ' + error); | ||
} | ||
@@ -85,3 +84,3 @@ items.forEach((item) => { | ||
if (error) { | ||
throw ("error about " + item + ": " + error); | ||
throw new Error('error about ' + item + ': ' + error); | ||
} | ||
@@ -95,5 +94,5 @@ if (stats.isDirectory()) { | ||
path.basename(item) !== 'nothing.node') { | ||
process.platform === 'win32' ? | ||
checkFileWin32(item) : | ||
checkFileUNIX(item); | ||
process.platform === 'win32' | ||
? checkFileWin32(item) | ||
: checkFileUNIX(item); | ||
} | ||
@@ -100,0 +99,0 @@ })(item)); |
#! /usr/bin/env node | ||
'use strict' | ||
'use strict'; | ||
@@ -18,26 +18,27 @@ const fs = require('fs'); | ||
const disable = args[1]; | ||
if (disable != "--disable" && dir != "--disable") { | ||
var ConfigFileOperations = { | ||
let ConfigFileOperations; | ||
if (disable !== '--disable' && dir !== '--disable') { | ||
ConfigFileOperations = { | ||
'package.json': [ | ||
[ /([ ]*)"dependencies": {/g, '$1"dependencies": {\n$1 "node-addon-api": "' + NodeApiVersion + '",'], | ||
[ /[ ]*"nan": *"[^"]+"(,|)[\n\r]/g, '' ] | ||
[/([ ]*)"dependencies": {/g, '$1"dependencies": {\n$1 "node-addon-api": "' + NodeApiVersion + '",'], | ||
[/[ ]*"nan": *"[^"]+"(,|)[\n\r]/g, ''] | ||
], | ||
'binding.gyp': [ | ||
[ /([ ]*)'include_dirs': \[/g, '$1\'include_dirs\': [\n$1 \'<!(node -p "require(\\\'node-addon-api\\\').include_dir")\',' ], | ||
[ /([ ]*)"include_dirs": \[/g, '$1"include_dirs": [\n$1 "<!(node -p \\"require(\'node-addon-api\').include_dir\\")",' ], | ||
[ /[ ]*("|')<!\(node -e ("|'|\\"|\\')require\(("|'|\\"|\\')nan("|'|\\"|\\')\)("|'|\\"|\\')\)("|')(,|)[\r\n]/g, '' ], | ||
[ /([ ]*)("|')target_name("|'): ("|')(.+?)("|'),/g, '$1$2target_name$2: $4$5$6,\n $2cflags!$2: [ $2-fno-exceptions$2 ],\n $2cflags_cc!$2: [ $2-fno-exceptions$2 ],\n $2xcode_settings$2: { $2GCC_ENABLE_CPP_EXCEPTIONS$2: $2YES$2,\n $2CLANG_CXX_LIBRARY$2: $2libc++$2,\n $2MACOSX_DEPLOYMENT_TARGET$2: $210.7$2,\n },\n $2msvs_settings$2: {\n $2VCCLCompilerTool$2: { $2ExceptionHandling$2: 1 },\n },' ], | ||
[/([ ]*)'include_dirs': \[/g, '$1\'include_dirs\': [\n$1 \'<!(node -p "require(\\\'node-addon-api\\\').include_dir")\','], | ||
[/([ ]*)"include_dirs": \[/g, '$1"include_dirs": [\n$1 "<!(node -p \\"require(\'node-addon-api\').include_dir\\")",'], | ||
[/[ ]*("|')<!\(node -e ("|'|\\"|\\')require\(("|'|\\"|\\')nan("|'|\\"|\\')\)("|'|\\"|\\')\)("|')(,|)[\r\n]/g, ''], | ||
[/([ ]*)("|')target_name("|'): ("|')(.+?)("|'),/g, '$1$2target_name$2: $4$5$6,\n $2cflags!$2: [ $2-fno-exceptions$2 ],\n $2cflags_cc!$2: [ $2-fno-exceptions$2 ],\n $2xcode_settings$2: { $2GCC_ENABLE_CPP_EXCEPTIONS$2: $2YES$2,\n $2CLANG_CXX_LIBRARY$2: $2libc++$2,\n $2MACOSX_DEPLOYMENT_TARGET$2: $210.7$2,\n },\n $2msvs_settings$2: {\n $2VCCLCompilerTool$2: { $2ExceptionHandling$2: 1 },\n },'] | ||
] | ||
}; | ||
} else { | ||
var ConfigFileOperations = { | ||
ConfigFileOperations = { | ||
'package.json': [ | ||
[ /([ ]*)"dependencies": {/g, '$1"dependencies": {\n$1 "node-addon-api": "' + NodeApiVersion + '",'], | ||
[ /[ ]*"nan": *"[^"]+"(,|)[\n\r]/g, '' ] | ||
[/([ ]*)"dependencies": {/g, '$1"dependencies": {\n$1 "node-addon-api": "' + NodeApiVersion + '",'], | ||
[/[ ]*"nan": *"[^"]+"(,|)[\n\r]/g, ''] | ||
], | ||
'binding.gyp': [ | ||
[ /([ ]*)'include_dirs': \[/g, '$1\'include_dirs\': [\n$1 \'<!(node -p "require(\\\'node-addon-api\\\').include_dir")\',' ], | ||
[ /([ ]*)"include_dirs": \[/g, '$1"include_dirs": [\n$1 "<!(node -p \'require(\\\"node-addon-api\\\").include_dir\')",' ], | ||
[ /[ ]*("|')<!\(node -e ("|'|\\"|\\')require\(("|'|\\"|\\')nan("|'|\\"|\\')\)("|'|\\"|\\')\)("|')(,|)[\r\n]/g, '' ], | ||
[ /([ ]*)("|')target_name("|'): ("|')(.+?)("|'),/g, '$1$2target_name$2: $4$5$6,\n $2cflags!$2: [ $2-fno-exceptions$2 ],\n $2cflags_cc!$2: [ $2-fno-exceptions$2 ],\n $2defines$2: [ $2NAPI_DISABLE_CPP_EXCEPTIONS$2 ],\n $2conditions$2: [\n [\'OS==\"win\"\', { $2defines$2: [ $2_HAS_EXCEPTIONS=1$2 ] }]\n ]' ], | ||
[/([ ]*)'include_dirs': \[/g, '$1\'include_dirs\': [\n$1 \'<!(node -p "require(\\\'node-addon-api\\\').include_dir")\','], | ||
[/([ ]*)"include_dirs": \[/g, '$1"include_dirs": [\n$1 "<!(node -p \'require(\\"node-addon-api\\").include_dir\')",'], | ||
[/[ ]*("|')<!\(node -e ("|'|\\"|\\')require\(("|'|\\"|\\')nan("|'|\\"|\\')\)("|'|\\"|\\')\)("|')(,|)[\r\n]/g, ''], | ||
[/([ ]*)("|')target_name("|'): ("|')(.+?)("|'),/g, '$1$2target_name$2: $4$5$6,\n $2cflags!$2: [ $2-fno-exceptions$2 ],\n $2cflags_cc!$2: [ $2-fno-exceptions$2 ],\n $2defines$2: [ $2NAPI_DISABLE_CPP_EXCEPTIONS$2 ],\n $2conditions$2: [\n [\'OS=="win"\', { $2defines$2: [ $2_HAS_EXCEPTIONS=1$2 ] }]\n ]'] | ||
] | ||
@@ -47,223 +48,214 @@ }; | ||
var SourceFileOperations = [ | ||
[ /Nan::SetMethod\(target,[\s]*\"(.*)\"[\s]*,[\s]*([^)]+)\)/g, 'exports.Set(Napi::String::New(env, \"$1\"), Napi::Function::New(env, $2))' ], | ||
const SourceFileOperations = [ | ||
[/Nan::SetMethod\(target,[\s]*"(.*)"[\s]*,[\s]*([^)]+)\)/g, 'exports.Set(Napi::String::New(env, "$1"), Napi::Function::New(env, $2))'], | ||
[ /v8::Local<v8::FunctionTemplate>\s+(\w+)\s*=\s*Nan::New<FunctionTemplate>\([\w\d:]+\);(?:\w+->Reset\(\1\))?\s+\1->SetClassName\(Nan::String::New\("(\w+)"\)\);/g, 'Napi::Function $1 = DefineClass(env, "$2", {' ], | ||
[ /Local<FunctionTemplate>\s+(\w+)\s*=\s*Nan::New<FunctionTemplate>\([\w\d:]+\);\s+(\w+)\.Reset\((\1)\);\s+\1->SetClassName\((Nan::String::New|Nan::New<(v8::)*String>)\("(.+?)"\)\);/g, 'Napi::Function $1 = DefineClass(env, "$6", {'], | ||
[ /Local<FunctionTemplate>\s+(\w+)\s*=\s*Nan::New<FunctionTemplate>\([\w\d:]+\);(?:\w+->Reset\(\1\))?\s+\1->SetClassName\(Nan::String::New\("(\w+)"\)\);/g, 'Napi::Function $1 = DefineClass(env, "$2", {' ], | ||
[ /Nan::New<v8::FunctionTemplate>\(([\w\d:]+)\)->GetFunction\(\)/g, 'Napi::Function::New(env, $1)' ], | ||
[ /Nan::New<FunctionTemplate>\(([\w\d:]+)\)->GetFunction()/g, 'Napi::Function::New(env, $1);' ], | ||
[ /Nan::New<v8::FunctionTemplate>\(([\w\d:]+)\)/g, 'Napi::Function::New(env, $1)' ], | ||
[ /Nan::New<FunctionTemplate>\(([\w\d:]+)\)/g, 'Napi::Function::New(env, $1)' ], | ||
[/v8::Local<v8::FunctionTemplate>\s+(\w+)\s*=\s*Nan::New<FunctionTemplate>\([\w\d:]+\);(?:\w+->Reset\(\1\))?\s+\1->SetClassName\(Nan::String::New\("(\w+)"\)\);/g, 'Napi::Function $1 = DefineClass(env, "$2", {'], | ||
[/Local<FunctionTemplate>\s+(\w+)\s*=\s*Nan::New<FunctionTemplate>\([\w\d:]+\);\s+(\w+)\.Reset\((\1)\);\s+\1->SetClassName\((Nan::String::New|Nan::New<(v8::)*String>)\("(.+?)"\)\);/g, 'Napi::Function $1 = DefineClass(env, "$6", {'], | ||
[/Local<FunctionTemplate>\s+(\w+)\s*=\s*Nan::New<FunctionTemplate>\([\w\d:]+\);(?:\w+->Reset\(\1\))?\s+\1->SetClassName\(Nan::String::New\("(\w+)"\)\);/g, 'Napi::Function $1 = DefineClass(env, "$2", {'], | ||
[/Nan::New<v8::FunctionTemplate>\(([\w\d:]+)\)->GetFunction\(\)/g, 'Napi::Function::New(env, $1)'], | ||
[/Nan::New<FunctionTemplate>\(([\w\d:]+)\)->GetFunction()/g, 'Napi::Function::New(env, $1);'], | ||
[/Nan::New<v8::FunctionTemplate>\(([\w\d:]+)\)/g, 'Napi::Function::New(env, $1)'], | ||
[/Nan::New<FunctionTemplate>\(([\w\d:]+)\)/g, 'Napi::Function::New(env, $1)'], | ||
// FunctionTemplate to FunctionReference | ||
[ /Nan::Persistent<(v8::)*FunctionTemplate>/g, 'Napi::FunctionReference' ], | ||
[ /Nan::Persistent<(v8::)*Function>/g, 'Napi::FunctionReference' ], | ||
[ /v8::Local<v8::FunctionTemplate>/g, 'Napi::FunctionReference' ], | ||
[ /Local<FunctionTemplate>/g, 'Napi::FunctionReference' ], | ||
[ /v8::FunctionTemplate/g, 'Napi::FunctionReference' ], | ||
[ /FunctionTemplate/g, 'Napi::FunctionReference' ], | ||
[/Nan::Persistent<(v8::)*FunctionTemplate>/g, 'Napi::FunctionReference'], | ||
[/Nan::Persistent<(v8::)*Function>/g, 'Napi::FunctionReference'], | ||
[/v8::Local<v8::FunctionTemplate>/g, 'Napi::FunctionReference'], | ||
[/Local<FunctionTemplate>/g, 'Napi::FunctionReference'], | ||
[/v8::FunctionTemplate/g, 'Napi::FunctionReference'], | ||
[/FunctionTemplate/g, 'Napi::FunctionReference'], | ||
[ /([ ]*)Nan::SetPrototypeMethod\(\w+, "(\w+)", (\w+)\);/g, '$1InstanceMethod("$2", &$3),' ], | ||
[ /([ ]*)(?:\w+\.Reset\(\w+\);\s+)?\(target\)\.Set\("(\w+)",\s*Nan::GetFunction\((\w+)\)\);/gm, | ||
[/([ ]*)Nan::SetPrototypeMethod\(\w+, "(\w+)", (\w+)\);/g, '$1InstanceMethod("$2", &$3),'], | ||
[/([ ]*)(?:\w+\.Reset\(\w+\);\s+)?\(target\)\.Set\("(\w+)",\s*Nan::GetFunction\((\w+)\)\);/gm, | ||
'});\n\n' + | ||
'$1constructor = Napi::Persistent($3);\n' + | ||
'$1constructor.SuppressDestruct();\n' + | ||
'$1target.Set("$2", $3);' ], | ||
'$1target.Set("$2", $3);'], | ||
// TODO: Other attribute combinations | ||
[ /static_cast<PropertyAttribute>\(ReadOnly\s*\|\s*DontDelete\)/gm, | ||
'static_cast<napi_property_attributes>(napi_enumerable | napi_configurable)' ], | ||
[/static_cast<PropertyAttribute>\(ReadOnly\s*\|\s*DontDelete\)/gm, | ||
'static_cast<napi_property_attributes>(napi_enumerable | napi_configurable)'], | ||
[ /([\w\d:<>]+?)::Cast\((.+?)\)/g, '$2.As<$1>()' ], | ||
[/([\w\d:<>]+?)::Cast\((.+?)\)/g, '$2.As<$1>()'], | ||
[ /\*Nan::Utf8String\(([^)]+)\)/g, '$1->As<Napi::String>().Utf8Value().c_str()' ], | ||
[ /Nan::Utf8String +(\w+)\(([^)]+)\)/g, 'std::string $1 = $2.As<Napi::String>()' ], | ||
[ /Nan::Utf8String/g, 'std::string' ], | ||
[/\*Nan::Utf8String\(([^)]+)\)/g, '$1->As<Napi::String>().Utf8Value().c_str()'], | ||
[/Nan::Utf8String +(\w+)\(([^)]+)\)/g, 'std::string $1 = $2.As<Napi::String>()'], | ||
[/Nan::Utf8String/g, 'std::string'], | ||
[ /v8::String::Utf8Value (.+?)\((.+?)\)/g, 'Napi::String $1(env, $2)' ], | ||
[ /String::Utf8Value (.+?)\((.+?)\)/g, 'Napi::String $1(env, $2)' ], | ||
[ /\.length\(\)/g, '.Length()' ], | ||
[/v8::String::Utf8Value (.+?)\((.+?)\)/g, 'Napi::String $1(env, $2)'], | ||
[/String::Utf8Value (.+?)\((.+?)\)/g, 'Napi::String $1(env, $2)'], | ||
[/\.length\(\)/g, '.Length()'], | ||
[ /Nan::MakeCallback\(([^,]+),[\s\\]+([^,]+),/gm, '$2.MakeCallback($1,' ], | ||
[/Nan::MakeCallback\(([^,]+),[\s\\]+([^,]+),/gm, '$2.MakeCallback($1,'], | ||
[ /class\s+(\w+)\s*:\s*public\s+Nan::ObjectWrap/g, 'class $1 : public Napi::ObjectWrap<$1>' ], | ||
[ /(\w+)\(([^\)]*)\)\s*:\s*Nan::ObjectWrap\(\)\s*(,)?/gm, '$1($2) : Napi::ObjectWrap<$1>()$3' ], | ||
[/class\s+(\w+)\s*:\s*public\s+Nan::ObjectWrap/g, 'class $1 : public Napi::ObjectWrap<$1>'], | ||
[/(\w+)\(([^)]*)\)\s*:\s*Nan::ObjectWrap\(\)\s*(,)?/gm, '$1($2) : Napi::ObjectWrap<$1>()$3'], | ||
// HandleOKCallback to OnOK | ||
[ /HandleOKCallback/g, 'OnOK' ], | ||
[/HandleOKCallback/g, 'OnOK'], | ||
// HandleErrorCallback to OnError | ||
[ /HandleErrorCallback/g, 'OnError' ], | ||
[/HandleErrorCallback/g, 'OnError'], | ||
// ex. .As<Function>() to .As<Napi::Object>() | ||
[ /\.As<v8::(Value|Boolean|String|Number|Object|Array|Symbol|External|Function)>\(\)/g, '.As<Napi::$1>()' ], | ||
[ /\.As<(Value|Boolean|String|Number|Object|Array|Symbol|External|Function)>\(\)/g, '.As<Napi::$1>()' ], | ||
[/\.As<v8::(Value|Boolean|String|Number|Object|Array|Symbol|External|Function)>\(\)/g, '.As<Napi::$1>()'], | ||
[/\.As<(Value|Boolean|String|Number|Object|Array|Symbol|External|Function)>\(\)/g, '.As<Napi::$1>()'], | ||
// ex. Nan::New<Number>(info[0]) to Napi::Number::New(info[0]) | ||
[ /Nan::New<(v8::)*Integer>\((.+?)\)/g, 'Napi::Number::New(env, $2)' ], | ||
[ /Nan::New\(([0-9\.]+)\)/g, 'Napi::Number::New(env, $1)' ], | ||
[ /Nan::New<(v8::)*String>\("(.+?)"\)/g, 'Napi::String::New(env, "$2")' ], | ||
[ /Nan::New\("(.+?)"\)/g, 'Napi::String::New(env, "$1")' ], | ||
[ /Nan::New<(v8::)*(.+?)>\(\)/g, 'Napi::$2::New(env)' ], | ||
[ /Nan::New<(.+?)>\(\)/g, 'Napi::$1::New(env)' ], | ||
[ /Nan::New<(v8::)*(.+?)>\(/g, 'Napi::$2::New(env, ' ], | ||
[ /Nan::New<(.+?)>\(/g, 'Napi::$1::New(env, ' ], | ||
[ /Nan::NewBuffer\(/g, 'Napi::Buffer<char>::New(env, ' ], | ||
[/Nan::New<(v8::)*Integer>\((.+?)\)/g, 'Napi::Number::New(env, $2)'], | ||
[/Nan::New\(([0-9.]+)\)/g, 'Napi::Number::New(env, $1)'], | ||
[/Nan::New<(v8::)*String>\("(.+?)"\)/g, 'Napi::String::New(env, "$2")'], | ||
[/Nan::New\("(.+?)"\)/g, 'Napi::String::New(env, "$1")'], | ||
[/Nan::New<(v8::)*(.+?)>\(\)/g, 'Napi::$2::New(env)'], | ||
[/Nan::New<(.+?)>\(\)/g, 'Napi::$1::New(env)'], | ||
[/Nan::New<(v8::)*(.+?)>\(/g, 'Napi::$2::New(env, '], | ||
[/Nan::New<(.+?)>\(/g, 'Napi::$1::New(env, '], | ||
[/Nan::NewBuffer\(/g, 'Napi::Buffer<char>::New(env, '], | ||
// TODO: Properly handle this | ||
[ /Nan::New\(/g, 'Napi::New(env, ' ], | ||
[/Nan::New\(/g, 'Napi::New(env, '], | ||
[ /\.IsInt32\(\)/g, '.IsNumber()' ], | ||
[ /->IsInt32\(\)/g, '.IsNumber()' ], | ||
[/\.IsInt32\(\)/g, '.IsNumber()'], | ||
[/->IsInt32\(\)/g, '.IsNumber()'], | ||
[/(.+?)->BooleanValue\(\)/g, '$1.As<Napi::Boolean>().Value()'], | ||
[/(.+?)->Int32Value\(\)/g, '$1.As<Napi::Number>().Int32Value()'], | ||
[/(.+?)->Uint32Value\(\)/g, '$1.As<Napi::Number>().Uint32Value()'], | ||
[/(.+?)->IntegerValue\(\)/g, '$1.As<Napi::Number>().Int64Value()'], | ||
[/(.+?)->NumberValue\(\)/g, '$1.As<Napi::Number>().DoubleValue()'], | ||
[ /(.+?)->BooleanValue\(\)/g, '$1.As<Napi::Boolean>().Value()' ], | ||
[ /(.+?)->Int32Value\(\)/g, '$1.As<Napi::Number>().Int32Value()' ], | ||
[ /(.+?)->Uint32Value\(\)/g, '$1.As<Napi::Number>().Uint32Value()' ], | ||
[ /(.+?)->IntegerValue\(\)/g, '$1.As<Napi::Number>().Int64Value()' ], | ||
[ /(.+?)->NumberValue\(\)/g, '$1.As<Napi::Number>().DoubleValue()' ], | ||
// ex. Nan::To<bool>(info[0]) to info[0].Value() | ||
[ /Nan::To<v8::(Boolean|String|Number|Object|Array|Symbol|Function)>\((.+?)\)/g, '$2.To<Napi::$1>()' ], | ||
[ /Nan::To<(Boolean|String|Number|Object|Array|Symbol|Function)>\((.+?)\)/g, '$2.To<Napi::$1>()' ], | ||
[/Nan::To<v8::(Boolean|String|Number|Object|Array|Symbol|Function)>\((.+?)\)/g, '$2.To<Napi::$1>()'], | ||
[/Nan::To<(Boolean|String|Number|Object|Array|Symbol|Function)>\((.+?)\)/g, '$2.To<Napi::$1>()'], | ||
// ex. Nan::To<bool>(info[0]) to info[0].As<Napi::Boolean>().Value() | ||
[ /Nan::To<bool>\((.+?)\)/g, '$1.As<Napi::Boolean>().Value()' ], | ||
[/Nan::To<bool>\((.+?)\)/g, '$1.As<Napi::Boolean>().Value()'], | ||
// ex. Nan::To<int>(info[0]) to info[0].As<Napi::Number>().Int32Value() | ||
[ /Nan::To<int>\((.+?)\)/g, '$1.As<Napi::Number>().Int32Value()' ], | ||
[/Nan::To<int>\((.+?)\)/g, '$1.As<Napi::Number>().Int32Value()'], | ||
// ex. Nan::To<int32_t>(info[0]) to info[0].As<Napi::Number>().Int32Value() | ||
[ /Nan::To<int32_t>\((.+?)\)/g, '$1.As<Napi::Number>().Int32Value()' ], | ||
[/Nan::To<int32_t>\((.+?)\)/g, '$1.As<Napi::Number>().Int32Value()'], | ||
// ex. Nan::To<uint32_t>(info[0]) to info[0].As<Napi::Number>().Uint32Value() | ||
[ /Nan::To<uint32_t>\((.+?)\)/g, '$1.As<Napi::Number>().Uint32Value()' ], | ||
[/Nan::To<uint32_t>\((.+?)\)/g, '$1.As<Napi::Number>().Uint32Value()'], | ||
// ex. Nan::To<int64_t>(info[0]) to info[0].As<Napi::Number>().Int64Value() | ||
[ /Nan::To<int64_t>\((.+?)\)/g, '$1.As<Napi::Number>().Int64Value()' ], | ||
[/Nan::To<int64_t>\((.+?)\)/g, '$1.As<Napi::Number>().Int64Value()'], | ||
// ex. Nan::To<float>(info[0]) to info[0].As<Napi::Number>().FloatValue() | ||
[ /Nan::To<float>\((.+?)\)/g, '$1.As<Napi::Number>().FloatValue()' ], | ||
[/Nan::To<float>\((.+?)\)/g, '$1.As<Napi::Number>().FloatValue()'], | ||
// ex. Nan::To<double>(info[0]) to info[0].As<Napi::Number>().DoubleValue() | ||
[ /Nan::To<double>\((.+?)\)/g, '$1.As<Napi::Number>().DoubleValue()' ], | ||
[/Nan::To<double>\((.+?)\)/g, '$1.As<Napi::Number>().DoubleValue()'], | ||
[ /Nan::New\((\w+)\)->HasInstance\((\w+)\)/g, '$2.InstanceOf($1.Value())' ], | ||
[/Nan::New\((\w+)\)->HasInstance\((\w+)\)/g, '$2.InstanceOf($1.Value())'], | ||
[ /Nan::Has\(([^,]+),\s*/gm, '($1).Has(' ], | ||
[ /\.Has\([\s|\\]*Nan::New<(v8::)*String>\(([^)]+)\)\)/gm, '.Has($1)' ], | ||
[ /\.Has\([\s|\\]*Nan::New\(([^)]+)\)\)/gm, '.Has($1)' ], | ||
[/Nan::Has\(([^,]+),\s*/gm, '($1).Has('], | ||
[/\.Has\([\s|\\]*Nan::New<(v8::)*String>\(([^)]+)\)\)/gm, '.Has($1)'], | ||
[/\.Has\([\s|\\]*Nan::New\(([^)]+)\)\)/gm, '.Has($1)'], | ||
[ /Nan::Get\(([^,]+),\s*/gm, '($1).Get(' ], | ||
[ /\.Get\([\s|\\]*Nan::New<(v8::)*String>\(([^)]+)\)\)/gm, '.Get($1)' ], | ||
[ /\.Get\([\s|\\]*Nan::New\(([^)]+)\)\)/gm, '.Get($1)' ], | ||
[/Nan::Get\(([^,]+),\s*/gm, '($1).Get('], | ||
[/\.Get\([\s|\\]*Nan::New<(v8::)*String>\(([^)]+)\)\)/gm, '.Get($1)'], | ||
[/\.Get\([\s|\\]*Nan::New\(([^)]+)\)\)/gm, '.Get($1)'], | ||
[ /Nan::Set\(([^,]+),\s*/gm, '($1).Set(' ], | ||
[ /\.Set\([\s|\\]*Nan::New<(v8::)*String>\(([^)]+)\)\s*,/gm, '.Set($1,' ], | ||
[ /\.Set\([\s|\\]*Nan::New\(([^)]+)\)\s*,/gm, '.Set($1,' ], | ||
[/Nan::Set\(([^,]+),\s*/gm, '($1).Set('], | ||
[/\.Set\([\s|\\]*Nan::New<(v8::)*String>\(([^)]+)\)\s*,/gm, '.Set($1,'], | ||
[/\.Set\([\s|\\]*Nan::New\(([^)]+)\)\s*,/gm, '.Set($1,'], | ||
// ex. node::Buffer::HasInstance(info[0]) to info[0].IsBuffer() | ||
[ /node::Buffer::HasInstance\((.+?)\)/g, '$1.IsBuffer()' ], | ||
[/node::Buffer::HasInstance\((.+?)\)/g, '$1.IsBuffer()'], | ||
// ex. node::Buffer::Length(info[0]) to info[0].Length() | ||
[ /node::Buffer::Length\((.+?)\)/g, '$1.As<Napi::Buffer<char>>().Length()' ], | ||
[/node::Buffer::Length\((.+?)\)/g, '$1.As<Napi::Buffer<char>>().Length()'], | ||
// ex. node::Buffer::Data(info[0]) to info[0].Data() | ||
[ /node::Buffer::Data\((.+?)\)/g, '$1.As<Napi::Buffer<char>>().Data()' ], | ||
[ /Nan::CopyBuffer\(/g, 'Napi::Buffer::Copy(env, ' ], | ||
[/node::Buffer::Data\((.+?)\)/g, '$1.As<Napi::Buffer<char>>().Data()'], | ||
[/Nan::CopyBuffer\(/g, 'Napi::Buffer::Copy(env, '], | ||
// Nan::AsyncQueueWorker(worker) | ||
[ /Nan::AsyncQueueWorker\((.+)\);/g, '$1.Queue();' ], | ||
[ /Nan::(Undefined|Null|True|False)\(\)/g, 'env.$1()' ], | ||
[/Nan::AsyncQueueWorker\((.+)\);/g, '$1.Queue();'], | ||
[/Nan::(Undefined|Null|True|False)\(\)/g, 'env.$1()'], | ||
// Nan::ThrowError(error) to Napi::Error::New(env, error).ThrowAsJavaScriptException() | ||
[ /([ ]*)return Nan::Throw(\w*?)Error\((.+?)\);/g, '$1Napi::$2Error::New(env, $3).ThrowAsJavaScriptException();\n$1return env.Null();' ], | ||
[ /Nan::Throw(\w*?)Error\((.+?)\);\n(\s*)return;/g, 'Napi::$1Error::New(env, $2).ThrowAsJavaScriptException();\n$3return env.Null();' ], | ||
[ /Nan::Throw(\w*?)Error\((.+?)\);/g, 'Napi::$1Error::New(env, $2).ThrowAsJavaScriptException();\n' ], | ||
[/([ ]*)return Nan::Throw(\w*?)Error\((.+?)\);/g, '$1Napi::$2Error::New(env, $3).ThrowAsJavaScriptException();\n$1return env.Null();'], | ||
[/Nan::Throw(\w*?)Error\((.+?)\);\n(\s*)return;/g, 'Napi::$1Error::New(env, $2).ThrowAsJavaScriptException();\n$3return env.Null();'], | ||
[/Nan::Throw(\w*?)Error\((.+?)\);/g, 'Napi::$1Error::New(env, $2).ThrowAsJavaScriptException();\n'], | ||
// Nan::RangeError(error) to Napi::RangeError::New(env, error) | ||
[ /Nan::(\w*?)Error\((.+)\)/g, 'Napi::$1Error::New(env, $2)' ], | ||
[/Nan::(\w*?)Error\((.+)\)/g, 'Napi::$1Error::New(env, $2)'], | ||
[ /Nan::Set\((.+?),\n* *(.+?),\n* *(.+?),\n* *(.+?)\)/g, '$1.Set($2, $3, $4)' ], | ||
[/Nan::Set\((.+?),\n* *(.+?),\n* *(.+?),\n* *(.+?)\)/g, '$1.Set($2, $3, $4)'], | ||
[ /Nan::(Escapable)?HandleScope\s+(\w+)\s*;/g, 'Napi::$1HandleScope $2(env);' ], | ||
[ /Nan::(Escapable)?HandleScope/g, 'Napi::$1HandleScope' ], | ||
[ /Nan::ForceSet\(([^,]+), ?/g, '$1->DefineProperty(' ], | ||
[ /\.ForceSet\(Napi::String::New\(env, "(\w+)"\),\s*?/g, '.DefineProperty("$1", ' ], | ||
[/Nan::(Escapable)?HandleScope\s+(\w+)\s*;/g, 'Napi::$1HandleScope $2(env);'], | ||
[/Nan::(Escapable)?HandleScope/g, 'Napi::$1HandleScope'], | ||
[/Nan::ForceSet\(([^,]+), ?/g, '$1->DefineProperty('], | ||
[/\.ForceSet\(Napi::String::New\(env, "(\w+)"\),\s*?/g, '.DefineProperty("$1", '], | ||
// [ /Nan::GetPropertyNames\(([^,]+)\)/, '$1->GetPropertyNames()' ], | ||
[ /Nan::Equals\(([^,]+),/g, '$1.StrictEquals(' ], | ||
[/Nan::Equals\(([^,]+),/g, '$1.StrictEquals('], | ||
[/(.+)->Set\(/g, '$1.Set('], | ||
[ /(.+)->Set\(/g, '$1.Set\(' ], | ||
[/Nan::Callback/g, 'Napi::FunctionReference'], | ||
[/Nan::Persistent<Object>/g, 'Napi::ObjectReference'], | ||
[/Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target/g, 'Napi::Env& env, Napi::Object& target'], | ||
[ /Nan::Callback/g, 'Napi::FunctionReference' ], | ||
[/(\w+)\*\s+(\w+)\s*=\s*Nan::ObjectWrap::Unwrap<\w+>\(info\.This\(\)\);/g, '$1* $2 = this;'], | ||
[/Nan::ObjectWrap::Unwrap<(\w+)>\((.*)\);/g, '$2.Unwrap<$1>();'], | ||
[/Nan::NAN_METHOD_RETURN_TYPE/g, 'void'], | ||
[/NAN_INLINE/g, 'inline'], | ||
[ /Nan::Persistent<Object>/g, 'Napi::ObjectReference' ], | ||
[ /Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target/g, 'Napi::Env& env, Napi::Object& target' ], | ||
[/Nan::NAN_METHOD_ARGS_TYPE/g, 'const Napi::CallbackInfo&'], | ||
[/NAN_METHOD\(([\w\d:]+?)\)/g, 'Napi::Value $1(const Napi::CallbackInfo& info)'], | ||
[/static\s*NAN_GETTER\(([\w\d:]+?)\)/g, 'Napi::Value $1(const Napi::CallbackInfo& info)'], | ||
[/NAN_GETTER\(([\w\d:]+?)\)/g, 'Napi::Value $1(const Napi::CallbackInfo& info)'], | ||
[/static\s*NAN_SETTER\(([\w\d:]+?)\)/g, 'void $1(const Napi::CallbackInfo& info, const Napi::Value& value)'], | ||
[/NAN_SETTER\(([\w\d:]+?)\)/g, 'void $1(const Napi::CallbackInfo& info, const Napi::Value& value)'], | ||
[/void Init\((v8::)*Local<(v8::)*Object> exports\)/g, 'Napi::Object Init(Napi::Env env, Napi::Object exports)'], | ||
[/NAN_MODULE_INIT\(([\w\d:]+?)\);/g, 'Napi::Object $1(Napi::Env env, Napi::Object exports);'], | ||
[/NAN_MODULE_INIT\(([\w\d:]+?)\)/g, 'Napi::Object $1(Napi::Env env, Napi::Object exports)'], | ||
[ /(\w+)\*\s+(\w+)\s*=\s*Nan::ObjectWrap::Unwrap<\w+>\(info\.This\(\)\);/g, '$1* $2 = this;' ], | ||
[ /Nan::ObjectWrap::Unwrap<(\w+)>\((.*)\);/g, '$2.Unwrap<$1>();' ], | ||
[/::(Init(?:ialize)?)\(target\)/g, '::$1(env, target, module)'], | ||
[/constructor_template/g, 'constructor'], | ||
[ /Nan::NAN_METHOD_RETURN_TYPE/g, 'void' ], | ||
[ /NAN_INLINE/g, 'inline' ], | ||
[/Nan::FunctionCallbackInfo<(v8::)?Value>[ ]*& [ ]*info\)[ ]*{\n*([ ]*)/gm, 'Napi::CallbackInfo& info) {\n$2Napi::Env env = info.Env();\n$2'], | ||
[/Nan::FunctionCallbackInfo<(v8::)*Value>\s*&\s*info\);/g, 'Napi::CallbackInfo& info);'], | ||
[/Nan::FunctionCallbackInfo<(v8::)*Value>\s*&/g, 'Napi::CallbackInfo&'], | ||
[ /Nan::NAN_METHOD_ARGS_TYPE/g, 'const Napi::CallbackInfo&' ], | ||
[ /NAN_METHOD\(([\w\d:]+?)\)/g, 'Napi::Value $1(const Napi::CallbackInfo& info)'], | ||
[ /static\s*NAN_GETTER\(([\w\d:]+?)\)/g, 'Napi::Value $1(const Napi::CallbackInfo& info)' ], | ||
[ /NAN_GETTER\(([\w\d:]+?)\)/g, 'Napi::Value $1(const Napi::CallbackInfo& info)' ], | ||
[ /static\s*NAN_SETTER\(([\w\d:]+?)\)/g, 'void $1(const Napi::CallbackInfo& info, const Napi::Value& value)' ], | ||
[ /NAN_SETTER\(([\w\d:]+?)\)/g, 'void $1(const Napi::CallbackInfo& info, const Napi::Value& value)' ], | ||
[ /void Init\((v8::)*Local<(v8::)*Object> exports\)/g, 'Napi::Object Init(Napi::Env env, Napi::Object exports)' ], | ||
[ /NAN_MODULE_INIT\(([\w\d:]+?)\);/g, 'Napi::Object $1(Napi::Env env, Napi::Object exports);' ], | ||
[ /NAN_MODULE_INIT\(([\w\d:]+?)\)/g, 'Napi::Object $1(Napi::Env env, Napi::Object exports)' ], | ||
[/Buffer::HasInstance\(([^)]+)\)/g, '$1.IsBuffer()'], | ||
[/info\[(\d+)\]->/g, 'info[$1].'], | ||
[/info\[([\w\d]+)\]->/g, 'info[$1].'], | ||
[/info\.This\(\)->/g, 'info.This().'], | ||
[/->Is(Object|String|Int32|Number)\(\)/g, '.Is$1()'], | ||
[/info.GetReturnValue\(\).SetUndefined\(\)/g, 'return env.Undefined()'], | ||
[/info\.GetReturnValue\(\)\.Set\(((\n|.)+?)\);/g, 'return $1;'], | ||
[ /::(Init(?:ialize)?)\(target\)/g, '::$1(env, target, module)' ], | ||
[ /constructor_template/g, 'constructor' ], | ||
[ /Nan::FunctionCallbackInfo<(v8::)?Value>[ ]*& [ ]*info\)[ ]*{\n*([ ]*)/gm, 'Napi::CallbackInfo& info) {\n$2Napi::Env env = info.Env();\n$2' ], | ||
[ /Nan::FunctionCallbackInfo<(v8::)*Value>\s*&\s*info\);/g, 'Napi::CallbackInfo& info);' ], | ||
[ /Nan::FunctionCallbackInfo<(v8::)*Value>\s*&/g, 'Napi::CallbackInfo&' ], | ||
[ /Buffer::HasInstance\(([^)]+)\)/g, '$1.IsBuffer()' ], | ||
[ /info\[(\d+)\]->/g, 'info[$1].' ], | ||
[ /info\[([\w\d]+)\]->/g, 'info[$1].' ], | ||
[ /info\.This\(\)->/g, 'info.This().' ], | ||
[ /->Is(Object|String|Int32|Number)\(\)/g, '.Is$1()' ], | ||
[ /info.GetReturnValue\(\).SetUndefined\(\)/g, 'return env.Undefined()' ], | ||
[ /info\.GetReturnValue\(\)\.Set\(((\n|.)+?)\);/g, 'return $1;' ], | ||
// ex. Local<Value> to Napi::Value | ||
[ /v8::Local<v8::(Value|Boolean|String|Number|Object|Array|Symbol|External|Function)>/g, 'Napi::$1' ], | ||
[ /Local<(Value|Boolean|String|Number|Object|Array|Symbol|External|Function)>/g, 'Napi::$1' ], | ||
[/v8::Local<v8::(Value|Boolean|String|Number|Object|Array|Symbol|External|Function)>/g, 'Napi::$1'], | ||
[/Local<(Value|Boolean|String|Number|Object|Array|Symbol|External|Function)>/g, 'Napi::$1'], | ||
// Declare an env in helper functions that take a Napi::Value | ||
[ /(\w+)\(Napi::Value (\w+)(,\s*[^\()]+)?\)\s*{\n*([ ]*)/gm, '$1(Napi::Value $2$3) {\n$4Napi::Env env = $2.Env();\n$4' ], | ||
[/(\w+)\(Napi::Value (\w+)(,\s*[^()]+)?\)\s*{\n*([ ]*)/gm, '$1(Napi::Value $2$3) {\n$4Napi::Env env = $2.Env();\n$4'], | ||
// delete #include <node.h> and/or <v8.h> | ||
[ /#include +(<|")(?:node|nan).h("|>)/g, "#include $1napi.h$2\n#include $1uv.h$2" ], | ||
[/#include +(<|")(?:node|nan).h("|>)/g, '#include $1napi.h$2\n#include $1uv.h$2'], | ||
// NODE_MODULE to NODE_API_MODULE | ||
[ /NODE_MODULE/g, 'NODE_API_MODULE' ], | ||
[ /Nan::/g, 'Napi::' ], | ||
[ /nan.h/g, 'napi.h' ], | ||
[/NODE_MODULE/g, 'NODE_API_MODULE'], | ||
[/Nan::/g, 'Napi::'], | ||
[/nan.h/g, 'napi.h'], | ||
// delete .FromJust() | ||
[ /\.FromJust\(\)/g, '' ], | ||
[/\.FromJust\(\)/g, ''], | ||
// delete .ToLocalCheck() | ||
[ /\.ToLocalChecked\(\)/g, '' ], | ||
[ /^.*->SetInternalFieldCount\(.*$/gm, '' ], | ||
[/\.ToLocalChecked\(\)/g, ''], | ||
[/^.*->SetInternalFieldCount\(.*$/gm, ''], | ||
// replace using node; and/or using v8; to using Napi; | ||
[ /using (node|v8);/g, 'using Napi;' ], | ||
[ /using namespace (node|Nan|v8);/g, 'using namespace Napi;' ], | ||
[/using (node|v8);/g, 'using Napi;'], | ||
[/using namespace (node|Nan|v8);/g, 'using namespace Napi;'], | ||
// delete using v8::Local; | ||
[ /using v8::Local;\n/g, '' ], | ||
[/using v8::Local;\n/g, ''], | ||
// replace using v8::XXX; with using Napi::XXX | ||
[ /using v8::([A-Za-z]+);/g, 'using Napi::$1;' ], | ||
[/using v8::([A-Za-z]+);/g, 'using Napi::$1;'] | ||
]; | ||
var paths = listFiles(dir); | ||
paths.forEach(function(dirEntry) { | ||
var filename = dirEntry.split('\\').pop().split('/').pop(); | ||
const paths = listFiles(dir); | ||
paths.forEach(function (dirEntry) { | ||
const filename = dirEntry.split('\\').pop().split('/').pop(); | ||
// Check whether the file is a source file or a config file | ||
// then execute function accordingly | ||
var sourcePattern = /.+\.h|.+\.cc|.+\.cpp/; | ||
const sourcePattern = /.+\.h|.+\.cc|.+\.cpp/; | ||
if (sourcePattern.test(filename)) { | ||
@@ -276,8 +268,8 @@ convertFile(dirEntry, SourceFileOperations); | ||
function listFiles(dir, filelist) { | ||
var files = fs.readdirSync(dir); | ||
function listFiles (dir, filelist) { | ||
const files = fs.readdirSync(dir); | ||
filelist = filelist || []; | ||
files.forEach(function(file) { | ||
files.forEach(function (file) { | ||
if (file === 'node_modules') { | ||
return | ||
return; | ||
} | ||
@@ -294,5 +286,5 @@ | ||
function convert(content, operations) { | ||
for (let i = 0; i < operations.length; i ++) { | ||
let operation = operations[i]; | ||
function convert (content, operations) { | ||
for (let i = 0; i < operations.length; i++) { | ||
const operation = operations[i]; | ||
content = content.replace(operation[0], operation[1]); | ||
@@ -303,4 +295,4 @@ } | ||
function convertFile(fileName, operations) { | ||
fs.readFile(fileName, "utf-8", function (err, file) { | ||
function convertFile (fileName, operations) { | ||
fs.readFile(fileName, 'utf-8', function (err, file) { | ||
if (err) throw err; | ||
@@ -310,3 +302,3 @@ | ||
fs.writeFile(fileName, file, function(err){ | ||
fs.writeFile(fileName, file, function (err) { | ||
if (err) throw err; | ||
@@ -313,0 +305,0 @@ }); |
@@ -7,2 +7,4 @@ #!/usr/bin/env node | ||
const FORMAT_START = process.env.FORMAT_START || 'main'; | ||
const IS_WIN = process.platform === 'win32'; | ||
const ESLINT_PATH = IS_WIN ? 'node_modules\\.bin\\eslint.cmd' : 'node_modules/.bin/eslint'; | ||
@@ -48,6 +50,12 @@ function main (args) { | ||
} | ||
const result = spawn('node_modules/.bin/eslint', [...options], { | ||
const result = spawn(ESLINT_PATH, [...options], { | ||
encoding: 'utf-8' | ||
}); | ||
if (result.error && result.error.errno === 'ENOENT') { | ||
console.error('Eslint not found! Eslint is supposed to be found at ', ESLINT_PATH); | ||
return 2; | ||
} | ||
if (result.status === 1) { | ||
@@ -54,0 +62,0 @@ console.error('Eslint error:', result.stdout); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
502
318
379971