🎨 Refactor and update the examples

This commit is contained in:
raub 2018-04-28 16:39:18 +03:00
parent 1d0a7d4234
commit 4b02026e94
24 changed files with 202 additions and 95 deletions

116
examples/addon/.eslintrc Normal file
View File

@ -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]
}
}

View File

@ -2,10 +2,10 @@
.cproject
.project
.lock-wscript
build*
build*/
.DS_Store
Debug
node_modules
Debug/
node_modules/
package-lock.json
binary
binary/
*.log

View File

@ -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/

View File

@ -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

View File

@ -12,7 +12,7 @@ using namespace std;
extern "C" {
void init(Handle<Object> target) {
void init(V8_VAR_OBJ target) {
EventEmitter::init(target);
Example::init(target);
@ -20,7 +20,7 @@ void init(Handle<Object> target) {
}
NODE_MODULE(NODE_GYP_MODULE_NAME, init);
NODE_MODULE(example, init);
} // extern "C"

View File

@ -8,6 +8,9 @@ using namespace v8;
using namespace node;
using namespace std;
// ------ Aux macros
#define THIS_EXAMPLE \
Example *example = ObjectWrap::Unwrap<Example>(info.This());
@ -15,15 +18,33 @@ using namespace std;
if (example->_isDestroyed) return;
Nan::Persistent<v8::Function> Example::_ctorExample;
// ------ Constructor and Destructor
Example::Example() : EventEmitter() {
_isDestroyed = false;
}
void Example::init(Handle<Object> target) {
Example::~Example() {
Local<FunctionTemplate> proto = Nan::New<FunctionTemplate>(newCtor);
_destroy();
// class Example extends EventEmitter
Local<FunctionTemplate> 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<FunctionTemplate>(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<Object> target) {
Nan::SetPrototypeMethod(proto, "destroy", destroy);
// -------- static
Local<Function> 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();
}

View File

@ -9,13 +9,15 @@ class Example : public EventEmitter {
public:
static void init(v8::Handle<v8::Object> target);
~Example();
static void init(V8_VAR_OBJ target);
protected:
Example();
~Example();
void _destroy();
@ -28,7 +30,8 @@ private:
private:
static Nan::Persistent<v8::Function> _ctorExample;
static V8_STORE_FT _protoExample;
static V8_STORE_FUNC _ctorExample;
bool _isDestroyed;

View File

@ -0,0 +1,9 @@
{
"name": "example",
"version": "0.0.0",
"private": true,
"main": "index.js",
"dependencies": {
"addon-tools-raub": "file:../../"
}
}

View File

@ -0,0 +1,9 @@
{
"name": "example",
"version": "0.0.0",
"private": true,
"main": "index.js",
"dependencies": {
"addon-tools-raub": "file:../../"
}
}

View File

@ -1,25 +0,0 @@
{
"name": "example",
"version": "0.0.1",
"description": "EXAMPLE",
"main": "index.js",
"author": "Luis Blanco <raubtierxxx@gmail.com>",
"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": "../../"
}
}

View File

@ -1,29 +0,0 @@
{
"name": "deps-example",
"author": "Luis Blanco <raubtierxxx@gmail.com>",
"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": "../../"
}
}