From 4b02026e94ea5162b7dc234363fea43b8bff3f97 Mon Sep 17 00:00:00 2001 From: raub Date: Sat, 28 Apr 2018 16:39:18 +0300 Subject: [PATCH] :art: Refactor and update the examples --- examples/addon/.eslintrc | 116 ++++++++++++++++++ examples/{node-addon => addon}/.gitignore | 8 +- examples/{node-addon => addon}/.npmignore | 25 ++-- examples/addon/CPPLINT.cfg | 13 ++ examples/{node-addon => addon}/binding.gyp | 0 examples/{node-addon => addon}/core.js | 0 .../{node-addon => addon}/cpp/bindings.cpp | 4 +- .../{node-addon => addon}/cpp/example.cpp | 50 +++++--- .../{node-addon => addon}/cpp/example.hpp | 9 +- examples/{node-addon => addon}/index.js | 0 examples/addon/package.json | 9 ++ examples/{node-deps-addon => deps}/.gitignore | 0 examples/{node-deps-addon => deps}/.npmignore | 0 .../bin-linux32/.keep | 0 .../bin-linux64/.keep | 0 .../{node-deps-addon => deps}/bin-mac64/.keep | 0 .../{node-deps-addon => deps}/bin-win32/.keep | 0 .../{node-deps-addon => deps}/bin-win64/.keep | 0 .../{node-deps-addon => deps}/binding.gyp | 0 .../{node-deps-addon => deps}/include/.keep | 0 examples/{node-deps-addon => deps}/index.js | 0 examples/deps/package.json | 9 ++ examples/node-addon/package.json | 25 ---- examples/node-deps-addon/package.json | 29 ----- 24 files changed, 202 insertions(+), 95 deletions(-) create mode 100644 examples/addon/.eslintrc rename examples/{node-addon => addon}/.gitignore (66%) rename examples/{node-addon => addon}/.npmignore (53%) create mode 100644 examples/addon/CPPLINT.cfg rename examples/{node-addon => addon}/binding.gyp (100%) rename examples/{node-addon => addon}/core.js (100%) rename examples/{node-addon => addon}/cpp/bindings.cpp (75%) rename examples/{node-addon => addon}/cpp/example.cpp (68%) rename examples/{node-addon => addon}/cpp/example.hpp (74%) rename examples/{node-addon => addon}/index.js (100%) create mode 100644 examples/addon/package.json rename examples/{node-deps-addon => deps}/.gitignore (100%) rename examples/{node-deps-addon => deps}/.npmignore (100%) rename examples/{node-deps-addon => deps}/bin-linux32/.keep (100%) rename examples/{node-deps-addon => deps}/bin-linux64/.keep (100%) rename examples/{node-deps-addon => deps}/bin-mac64/.keep (100%) rename examples/{node-deps-addon => deps}/bin-win32/.keep (100%) rename examples/{node-deps-addon => deps}/bin-win64/.keep (100%) rename examples/{node-deps-addon => deps}/binding.gyp (100%) rename examples/{node-deps-addon => deps}/include/.keep (100%) rename examples/{node-deps-addon => deps}/index.js (100%) create mode 100644 examples/deps/package.json delete mode 100644 examples/node-addon/package.json delete mode 100644 examples/node-deps-addon/package.json diff --git a/examples/addon/.eslintrc b/examples/addon/.eslintrc new file mode 100644 index 0000000..c3126e7 --- /dev/null +++ b/examples/addon/.eslintrc @@ -0,0 +1,116 @@ +{ + "root": true, + "env": { + "node" : true, + "es6" : true, + "mocha" : true + }, + "globals": { + "expect" : true, + "chai" : true, + "sinon" : true + }, + "extends": ["eslint:recommended"], + "parserOptions": { + "ecmaVersion": 8, + "ecmaFeatures": { + "experimentalObjectRestSpread": true + } + }, + "rules": { + "arrow-parens": ["error", "as-needed"], + "no-trailing-spaces": [ + "error", + { + "skipBlankLines": true + } + ], + "indent": [ + "error", + "tab", + { + "SwitchCase": 1 + } + ], + "linebreak-style": [ + "error", + "unix" + ], + "max-len": ["error", 110], + "quotes": [ + "error", + "single" + ], + "semi": [ + "error", + "always" + ], + "no-multiple-empty-lines": ["error", { "max": 3, "maxEOF": 1, "maxBOF": 1 }], + "keyword-spacing": ["error", { "before": true, "after": true }], + "space-before-blocks": ["error"], + "space-before-function-paren": ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}], + "space-infix-ops": ["error"], + "space-unary-ops": [ + "error", { + "words": true, + "nonwords": false, + "overrides": { + "!": true + } + } + ], + "spaced-comment": [0], + "camelcase": ["error"], + "no-tabs": [0], + "comma-dangle": [0], + "global-require": [0], + "func-names": [0], + "no-param-reassign": [0], + "no-underscore-dangle": [0], + "no-restricted-syntax": [ + "error", + { + "selector": "LabeledStatement", + "message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand." + }, + { + "selector": "WithStatement", + "message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize." + } + ], + "no-mixed-operators": [0], + "no-plusplus": [0], + "comma-spacing": [0], + "default-case": [0], + "no-shadow": [0], + "no-console": [0], + "key-spacing": [0], + "no-return-assign": [0], + "consistent-return": [0], + "class-methods-use-this": [0], + "no-multi-spaces": [ + "error", + { + "exceptions": { + "VariableDeclarator": true, + "Property": true, + "ImportDeclaration": true + } + } + ], + "array-callback-return": [0], + "no-use-before-define": [ + "error", + { + "functions": false, + "classes": true, + "variables": true + } + ], + "padded-blocks": [0], + "space-in-parens": [0], + "valid-jsdoc": [0], + "no-unused-expressions": [0], + "import/no-dynamic-require": [0] + } +} diff --git a/examples/node-addon/.gitignore b/examples/addon/.gitignore similarity index 66% rename from examples/node-addon/.gitignore rename to examples/addon/.gitignore index f4b2eb8..535e588 100644 --- a/examples/node-addon/.gitignore +++ b/examples/addon/.gitignore @@ -2,10 +2,10 @@ .cproject .project .lock-wscript -build* +build*/ .DS_Store -Debug -node_modules +Debug/ +node_modules/ package-lock.json -binary +binary/ *.log diff --git a/examples/node-addon/.npmignore b/examples/addon/.npmignore similarity index 53% rename from examples/node-addon/.npmignore rename to examples/addon/.npmignore index 19d51df..8ebed11 100644 --- a/examples/node-addon/.npmignore +++ b/examples/addon/.npmignore @@ -1,14 +1,15 @@ -.idea -.cproject -.project -.lock-wscript -build* -.DS_Store -Debug -node_modules -package-lock.json -binary *.log -examples +.cproject +.eslintrc .gitignore -test +.idea +.lock-wscript +.project +binary/ +build*/ +CPPLINT.cfg +Debug/ +examples/ +package-lock.json +test/ +qt/ diff --git a/examples/addon/CPPLINT.cfg b/examples/addon/CPPLINT.cfg new file mode 100644 index 0000000..cb3f171 --- /dev/null +++ b/examples/addon/CPPLINT.cfg @@ -0,0 +1,13 @@ +set noparent +linelength=110 +filter=-legal/copyright +filter=-build/include_order +filter=-build/header_guard +filter=-build/namespaces +filter=-build/include_what_you_use +filter=-whitespace/blank_line +filter=-whitespace/comments +filter=-whitespace/tab +filter=-whitespace/end_of_line +filter=-whitespace/indent +filter=-readability/todo diff --git a/examples/node-addon/binding.gyp b/examples/addon/binding.gyp similarity index 100% rename from examples/node-addon/binding.gyp rename to examples/addon/binding.gyp diff --git a/examples/node-addon/core.js b/examples/addon/core.js similarity index 100% rename from examples/node-addon/core.js rename to examples/addon/core.js diff --git a/examples/node-addon/cpp/bindings.cpp b/examples/addon/cpp/bindings.cpp similarity index 75% rename from examples/node-addon/cpp/bindings.cpp rename to examples/addon/cpp/bindings.cpp index 6238397..7dd85fa 100644 --- a/examples/node-addon/cpp/bindings.cpp +++ b/examples/addon/cpp/bindings.cpp @@ -12,7 +12,7 @@ using namespace std; extern "C" { -void init(Handle target) { +void init(V8_VAR_OBJ target) { EventEmitter::init(target); Example::init(target); @@ -20,7 +20,7 @@ void init(Handle target) { } -NODE_MODULE(NODE_GYP_MODULE_NAME, init); +NODE_MODULE(example, init); } // extern "C" diff --git a/examples/node-addon/cpp/example.cpp b/examples/addon/cpp/example.cpp similarity index 68% rename from examples/node-addon/cpp/example.cpp rename to examples/addon/cpp/example.cpp index 195c602..ba8550d 100644 --- a/examples/node-addon/cpp/example.cpp +++ b/examples/addon/cpp/example.cpp @@ -8,6 +8,9 @@ using namespace v8; using namespace node; using namespace std; + +// ------ Aux macros + #define THIS_EXAMPLE \ Example *example = ObjectWrap::Unwrap(info.This()); @@ -15,15 +18,33 @@ using namespace std; if (example->_isDestroyed) return; -Nan::Persistent Example::_ctorExample; +// ------ Constructor and Destructor + +Example::Example() : EventEmitter() { + + _isDestroyed = false; + +} -void Example::init(Handle target) { +Example::~Example() { - Local proto = Nan::New(newCtor); + _destroy(); - // class Example extends EventEmitter - Local parent = Nan::New(EventEmitter::_protoEventEmitter); +} + +// ------ System methods and props for ObjectWrap + +V8_STORE_FT Example::_protoExample; +V8_STORE_FUNC Example::_ctorExample; + + +void Example::init(V8_VAR_OBJ target) { + + V8_VAR_FT proto = Nan::New(newCtor); + + // class AudioBufferSourceNode inherits AudioScheduledSourceNode + V8_VAR_FT parent = Nan::New(EventEmitter::_protoEventEmitter); proto->Inherit(parent); proto->InstanceTemplate()->SetInternalFieldCount(1); @@ -33,8 +54,9 @@ void Example::init(Handle target) { Nan::SetPrototypeMethod(proto, "destroy", destroy); // -------- static - Local ctor = Nan::GetFunction(proto).ToLocalChecked(); + V8_VAR_FUNC ctor = Nan::GetFunction(proto).ToLocalChecked(); + _protoExample.Reset(proto); _ctorExample.Reset(ctor); Nan::Set(target, JS_STR("Example"), ctor); @@ -54,20 +76,6 @@ NAN_METHOD(Example::newCtor) { } -Example::Example() : EventEmitter() { - - _isDestroyed = false; - -} - - -Example::~Example() { - - _destroy(); - -} - - void Example::_destroy() { DES_CHECK; _isDestroyed = true; @@ -79,6 +87,8 @@ void Example::_destroy() { DES_CHECK; NAN_METHOD(Example::destroy) { THIS_EXAMPLE; THIS_CHECK; + example->emit("destroy"); + example->_destroy(); } diff --git a/examples/node-addon/cpp/example.hpp b/examples/addon/cpp/example.hpp similarity index 74% rename from examples/node-addon/cpp/example.hpp rename to examples/addon/cpp/example.hpp index c9df481..7487c70 100644 --- a/examples/node-addon/cpp/example.hpp +++ b/examples/addon/cpp/example.hpp @@ -9,13 +9,15 @@ class Example : public EventEmitter { public: - static void init(v8::Handle target); + ~Example(); + + static void init(V8_VAR_OBJ target); protected: Example(); - ~Example(); + void _destroy(); @@ -28,7 +30,8 @@ private: private: - static Nan::Persistent _ctorExample; + static V8_STORE_FT _protoExample; + static V8_STORE_FUNC _ctorExample; bool _isDestroyed; diff --git a/examples/node-addon/index.js b/examples/addon/index.js similarity index 100% rename from examples/node-addon/index.js rename to examples/addon/index.js diff --git a/examples/addon/package.json b/examples/addon/package.json new file mode 100644 index 0000000..4bd1245 --- /dev/null +++ b/examples/addon/package.json @@ -0,0 +1,9 @@ +{ + "name": "example", + "version": "0.0.0", + "private": true, + "main": "index.js", + "dependencies": { + "addon-tools-raub": "file:../../" + } +} diff --git a/examples/node-deps-addon/.gitignore b/examples/deps/.gitignore similarity index 100% rename from examples/node-deps-addon/.gitignore rename to examples/deps/.gitignore diff --git a/examples/node-deps-addon/.npmignore b/examples/deps/.npmignore similarity index 100% rename from examples/node-deps-addon/.npmignore rename to examples/deps/.npmignore diff --git a/examples/node-deps-addon/bin-linux32/.keep b/examples/deps/bin-linux32/.keep similarity index 100% rename from examples/node-deps-addon/bin-linux32/.keep rename to examples/deps/bin-linux32/.keep diff --git a/examples/node-deps-addon/bin-linux64/.keep b/examples/deps/bin-linux64/.keep similarity index 100% rename from examples/node-deps-addon/bin-linux64/.keep rename to examples/deps/bin-linux64/.keep diff --git a/examples/node-deps-addon/bin-mac64/.keep b/examples/deps/bin-mac64/.keep similarity index 100% rename from examples/node-deps-addon/bin-mac64/.keep rename to examples/deps/bin-mac64/.keep diff --git a/examples/node-deps-addon/bin-win32/.keep b/examples/deps/bin-win32/.keep similarity index 100% rename from examples/node-deps-addon/bin-win32/.keep rename to examples/deps/bin-win32/.keep diff --git a/examples/node-deps-addon/bin-win64/.keep b/examples/deps/bin-win64/.keep similarity index 100% rename from examples/node-deps-addon/bin-win64/.keep rename to examples/deps/bin-win64/.keep diff --git a/examples/node-deps-addon/binding.gyp b/examples/deps/binding.gyp similarity index 100% rename from examples/node-deps-addon/binding.gyp rename to examples/deps/binding.gyp diff --git a/examples/node-deps-addon/include/.keep b/examples/deps/include/.keep similarity index 100% rename from examples/node-deps-addon/include/.keep rename to examples/deps/include/.keep diff --git a/examples/node-deps-addon/index.js b/examples/deps/index.js similarity index 100% rename from examples/node-deps-addon/index.js rename to examples/deps/index.js diff --git a/examples/deps/package.json b/examples/deps/package.json new file mode 100644 index 0000000..4bd1245 --- /dev/null +++ b/examples/deps/package.json @@ -0,0 +1,9 @@ +{ + "name": "example", + "version": "0.0.0", + "private": true, + "main": "index.js", + "dependencies": { + "addon-tools-raub": "file:../../" + } +} diff --git a/examples/node-addon/package.json b/examples/node-addon/package.json deleted file mode 100644 index 41b061e..0000000 --- a/examples/node-addon/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "example", - "version": "0.0.1", - "description": "EXAMPLE", - "main": "index.js", - "author": "Luis Blanco ", - "keywords": [ - "addon" - ], - "maintainers": [ - { - "name": "Luis Blanco", - "email": "raubtierxxx@gmail.com", - "skype": "rauber666" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/raub/node-addon-tools" - }, - "dependencies": { - "addon-tools-raub": "../../" - } -} diff --git a/examples/node-deps-addon/package.json b/examples/node-deps-addon/package.json deleted file mode 100644 index 3a6d60b..0000000 --- a/examples/node-deps-addon/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "deps-example", - "author": "Luis Blanco ", - "description": "EXAMPLE", - "version": "0.0.1", - "main": "index.js", - "keywords": [ - "deps", - "dependency", - "lib", - "library", - "binary" - ], - "maintainers": [ - { - "name": "Luis Blanco", - "email": "raubtierxxx@gmail.com", - "skype": "rauber666" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/raub/node-addon-tools" - }, - "dependencies": { - "addon-tools-raub": "../../" - } -}