Giter VIP home page Giter VIP logo

foal's Introduction


https://foalts.org

License: MIT Known Vulnerabilities Commit activity Last commit

What is Foal?

Foal (or FoalTS) is a Node.JS framework for creating web applications.

It provides a set of ready-to-use components so you don't have to reinvent the wheel every time. In one single place, you have a complete environment to build web applications. This includes a CLI, testing tools, frontend utilities, scripts, advanced authentication, ORM, deployment environments, GraphQL and Swagger API, AWS utilities, and more. You no longer need to get lost on npm searching for packages and making them work together. All is provided.

But while offering all these features, the framework remains simple. Complexity and unnecessary abstractions are put aside to provide the most intuitive and expressive syntax. We believe that concise and elegant code is the best way to develop an application and maintain it in the future. It also allows you to spend more time coding rather than trying to understand how the framework works.

Finally, the framework is entirely written in TypeScript. The language brings you optional static type-checking along with the latest ECMAScript features. This allows you to detect most silly errors during compilation and improve the quality of your code. It also offers you autocompletion and a well documented API.

Screenshot

Development Policy

Thousands of Tests

Testing FoalTS is put on a very high priority. Providing a reliable product is really important to us. As of December 2020, the framework is covered by more than 2100 tests.

Documentation

New features, no matter what they offer, are useless if they are not well documented. Maintaining complete and quality documentation is key to the framework. If you think something is missing or unclear, feel free to open an issue on Github!

Product Stability

Great attention is paid to the stability of the product. You can find out more by consulting our dependency policy, semantic versioning rules and long-term support policy.

🌇 Get started

First install Node.Js and npm.

Create a new app

$ npm install -g @foal/cli
$ foal createapp my-app
$ cd my-app
$ npm run dev

The development server is started! Go to http://localhost:3001 and find our welcoming page!

👉 Continue with the tutorial 🌱

Backers

backers

Community Chat

You can join the community chat here.

Contributing

See the contribution guidelines.

License

MIT

foal's People

Contributors

amintaghikhani avatar amylily1011 avatar andresmazzo avatar anonimusprogramus avatar changke avatar cr4ftx avatar edo78 avatar fer22f avatar francelwebdev avatar hexetia avatar jamesgeorge007 avatar jeredmasters avatar kingdun3284 avatar lcnvdl avatar leonardosalvucci avatar loicpoullain avatar matt-harvey avatar mcluck90 avatar nipodemos avatar paolodina avatar pettomartino avatar pjo336 avatar refo avatar robk avatar rustamwin avatar scho-to avatar silvestreperret avatar yaaminu avatar zakrabe avatar zeigo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

foal's Issues

Be able to enable CORS

Is your feature request related to a problem? Please describe.

Being able to enable CORS would be useful in two situations:

  • The server serves a public API.
  • During development, the frontend can request the backend from a different source URL (this is an alternative to using a proxy).

Describe the solution you'd like

The developer should be able to enable CORS with or without options. The options should be specified with the Config class.

Express and contextual decorators are confusing

Express decorators are always executed before contextual decorators. Thus upon a request the hooks in the following code are executed in this order: expressDecorator1, expressDecorator2, contextualDecorator1, contextualDecorator2.

@expressDecorator1
@contextualDecorator1
@Service()
class Foobar {
  constructor() {}

  @expressDecorator2
  @contextualDecorator2
  barfoo() {}
}

This may be confusing and could lead to unexpected behaviors while using 3p controller decorators. It would be nicer to only have one of those (if you have another solution, please suggest it in comments).

Here are the pros for each one (which are actually the cons for the other one as well):

Contextual decorators Express decorators
easier to test direct access to req and res
nice to deal with promises to do asynchronous stuff there are already a lot of express middlewares on the web ready to be used with foal (passport, csurf, morgan, etc)
exceptions like NotFoundError can be thrown moving from a legacy express application to foal is easier
contextual decorators don’t depend on express, they could be used as well with websockets in future releases

[@foal/cli] Have default scripts to create new users, groups and permissions

Issue

It would be great to have a flexible way to easily create users, groups and permissions with the command line.

Solution (suggestion)

Create three scripts called create-permission, create-group and create-user:

$ node lib/scripts/create-permission.js --name "Admin permission" --codeName "admin"
$ node lib/scripts/create-group.js --name "Administrators" --codeName "admins"
	--permissions '["admin", "another permission"]'
$ node lib/scripts/create-user.js --user-permissions='["admin"]' --username "toto" --password "hello"
	--groups '["admins"]'

Use template-literal instead of EJS

Template Literal is fastest, smallest and simplest template engine, because it use JS's literal template feature.

It's 55 times faster than EJS, and it also use less CPU and RAM ressources, so it may be a good idea to use it instead of EJS 😀

Install logs

>>> yo foal my-app
? ==========================================================================
We're constantly looking for ways to make yo better! 
May we anonymously report usage statistics to improve the tool over time? 
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes

     _______   ________   ____        ___     _________   _______
    /  ____/  / ____  /  / _  |      /  /    /___  ___/  / _____/
   /  /___   / /   / /  / /_| |     /  /        / /     / /____
  /  ____/  / /   / /  / ___  |    /  /        / /     /____  /
 /  /      / /__ / /  / /   | |   /  /____    / /     _____/ /
/__/      /_______/  /_/    |_|  /_______/   /_/     /______/


   create my-app/config/app.development.json
   create my-app/config/app.production.json
   create my-app/config/app.test.json
   create my-app/config/settings.development.json
   create my-app/config/settings.json
   create my-app/config/settings.production.json
   create my-app/src/app/handlers/index.ts
   create my-app/src/app/handlers/test.ts
   create my-app/src/app/hooks/index.ts
   create my-app/src/app/hooks/test.ts
   create my-app/src/app/models/index.ts
   create my-app/src/app/models/test.ts
   create my-app/src/app/modules/index.ts
   create my-app/src/app/modules/test.ts
   create my-app/src/app/services/index.ts
   create my-app/src/app/services/test.ts
   create my-app/src/app/templates/index.html
   create my-app/src/app/templates/index.ts
   create my-app/src/app/templates/test.ts
   create my-app/src/app/app.module.ts
   create my-app/src/app/test.ts
   create my-app/src/index.ts
   create my-app/src/test.ts
   create my-app/ormconfig.json
   create my-app/package.json
   create my-app/tsconfig.json
   create my-app/tslint.json
   create my-app/.gitignore
   create my-app/public/logo.png
   create my-app/public/bootstrap.min.css
npm WARN deprecated [email protected]: 🙌  Thanks for using Babel: we recommend using babel-preset-env now: please read babeljs.io/env to update! 
npm WARN deprecated [email protected]: Package no longer supported. Contact [email protected] for more info.

> [email protected] install /home/unitech/keymetrics/my-app/node_modules/sqlite3
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.0/node-v64-linux-x64.tar.gz 
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v64 ABI, glibc) (falling back to source compile with node-gyp) 
make: Entering directory '/home/unitech/keymetrics/my-app/node_modules/sqlite3/build'
  ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c
  TOUCH Release/obj.target/deps/action_before_build.stamp
  CC(target) Release/obj.target/sqlite3/gen/sqlite-autoconf-3150000/sqlite3.o
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘sqlite3VXPrintf’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:25065:19: warning: this statement may fall through [-Wimplicit-fallthrough=]
         flag_long = sizeof(char*)==sizeof(long int);
         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:25067:7: note: here
       case etORDINAL:
       ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘sqlite3GetToken’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:137154:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
       if( !sqlite3Isdigit(z[1]) )
         ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:137163:5: note: here
     case CC_DIGIT: {
     ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:137253:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
       if( z[1]=='\'' ){
         ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:137267:5: note: here
     case CC_ID: {
     ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘sqlite3ExprCodeTarget’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:93034:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
     case TK_AGG_COLUMN: {
                         ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:93047:5: note: here
     case TK_COLUMN: {
     ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘resolveP2Values’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:71026:13: warning: this statement may fall through [-Wimplicit-fallthrough=]
           if( pOp->p2!=0 ) p->readOnly = 0;
             ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:71029:9: note: here
         case OP_AutoCommit:
         ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘fkActionTrigger’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:107247:11: warning: this statement may fall through [-Wimplicit-fallthrough=]
         if( !pChanges ){
           ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:107251:7: note: here
       default:
       ^~~~~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘sqlite3GenerateConstraintChecks’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:108736:17: warning: this statement may fall through [-Wimplicit-fallthrough=]
         onError = OE_Abort;
                 ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:108739:7: note: here
       case OE_Rollback:
       ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘sqlite3VdbeExec’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:78202:5: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if( (pIn3->flags & MEM_Null)==0 ) break;
     ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:78236:1: note: here
 case OP_Halt: {
 ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:78367:5: warning: this statement may fall through [-Wimplicit-fallthrough=]
   if( pOp->p1>db->aLimit[SQLITE_LIMIT_LENGTH] ){
     ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:78386:1: note: here
 case OP_String: {          /* out2 */
 ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:78941:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
   pOp->opcode = OP_Function;
               ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:78944:1: note: here
 case OP_Function: {
 ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:82140:38: warning: this statement may fall through [-Wimplicit-fallthrough=]
   p->aCounter[SQLITE_STMTSTATUS_SORT]++;
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:82155:1: note: here
 case OP_Rewind: {        /* jump */
 ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:83361:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
   pOp->opcode = OP_AggStep;
               ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:83364:1: note: here
 case OP_AggStep: {
 ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘fts3SnippetFunc’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:146657:20: warning: this statement may fall through [-Wimplicit-fallthrough=]
     case 6: nToken = sqlite3_value_int(apVal[5]);
             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:146658:5: note: here
     case 5: iCol = sqlite3_value_int(apVal[4]);
     ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:146658:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
     case 5: iCol = sqlite3_value_int(apVal[4]);
             ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:146659:5: note: here
     case 4: zEllipsis = (const char*)sqlite3_value_text(apVal[3]);
     ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:146659:23: warning: this statement may fall through [-Wimplicit-fallthrough=]
     case 4: zEllipsis = (const char*)sqlite3_value_text(apVal[3]);
             ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:146660:5: note: here
     case 3: zEnd = (const char*)sqlite3_value_text(apVal[2]);
     ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:146660:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
     case 3: zEnd = (const char*)sqlite3_value_text(apVal[2]);
             ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:146661:5: note: here
     case 2: zStart = (const char*)sqlite3_value_text(apVal[1]);
     ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘rtreeNonleafConstraint’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:162310:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
       if( p->op!=RTREE_EQ ) break;  /* RTREE_LE and RTREE_LT end here */
         ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:162313:5: note: here
     default: /* RTREE_GT or RTREE_GE,  or fallthrough of RTREE_EQ */
     ^~~~~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘jsonRenderNode’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:176768:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
       if( pNode->jnFlags & JNODE_RAW ){
         ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:176774:5: note: here
     case JSON_REAL:
     ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘jsonReturn’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:176891:7: warning: this statement may fall through [-Wimplicit-fallthrough=]
       int_as_real: /* fall through to real */;
       ^~~~~~~~~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:176893:5: note: here
     case JSON_REAL: {
     ^~~~
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c: In function ‘jsonEachColumn’:
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:178258:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
       if( p->bRecursive ){
         ^
Release/obj/gen/sqlite-autoconf-3150000/sqlite3.c:178268:5: note: here
     case JEACH_ROOT: {
     ^~~~
  AR(target) Release/obj.target/deps/sqlite3.a
  COPY Release/sqlite3.a
  CXX(target) Release/obj.target/node_sqlite3/src/database.o
In file included from ../src/database.h:10:0,
                 from ../src/database.cc:4:
../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’:
../../nan/nan.h:840:60: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, func, argc, argv);
                                                            ^
In file included from ../../nan/nan.h:51:0,
                 from ../src/database.h:10,
                 from ../src/database.cc:4:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:172:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/database.h:10:0,
                 from ../src/database.cc:4:
../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’:
../../nan/nan.h:855:62: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, symbol, argc, argv);
                                                              ^
In file included from ../../nan/nan.h:51:0,
                 from ../src/database.h:10,
                 from ../src/database.cc:4:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:165:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/database.h:10:0,
                 from ../src/database.cc:4:
../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)’:
../../nan/nan.h:870:62: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, method, argc, argv);
                                                              ^
In file included from ../../nan/nan.h:51:0,
                 from ../src/database.h:10,
                 from ../src/database.cc:4:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:158:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/database.h:10:0,
                 from ../src/database.cc:4:
../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::Callback::Call_(v8::Isolate*, v8::Local<v8::Object>, int, v8::Local<v8::Value>*) const’:
../../nan/nan.h:1654:5: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
     ));
     ^
In file included from ../../nan/nan.h:51:0,
                 from ../src/database.h:10,
                 from ../src/database.cc:4:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:172:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
../src/database.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE node_sqlite3::Database::New(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/database.cc:133:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(info.This(), Nan::New("filename").ToLocalChecked(), info[0].As<String>(), ReadOnly);
          ^~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/database.cc:4:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
../src/database.cc:133:101: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(info.This(), Nan::New("filename").ToLocalChecked(), info[0].As<String>(), ReadOnly);
                                                                                                     ^
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/database.cc:4:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
../src/database.cc:134:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(info.This(), Nan::New("mode").ToLocalChecked(), Nan::New(mode), ReadOnly);
          ^~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/database.cc:4:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
../src/database.cc:134:91: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(info.This(), Nan::New("mode").ToLocalChecked(), Nan::New(mode), ReadOnly);
                                                                                           ^
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/database.cc:4:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
../src/database.cc: In static member function ‘static void node_sqlite3::Database::Work_BeginOpen(node_sqlite3::Database::Baton*)’:
../src/database.cc:144:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),
         ^~~~~~
../src/database.cc: In static member function ‘static void node_sqlite3::Database::Work_BeginClose(node_sqlite3::Database::Baton*)’:
../src/database.cc:230:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),
         ^~~~~~
../src/database.cc: In static member function ‘static void node_sqlite3::Database::Work_BeginExec(node_sqlite3::Database::Baton*)’:
../src/database.cc:525:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),
         ^~~~~~
../src/database.cc: In static member function ‘static void node_sqlite3::Database::Work_BeginLoadExtension(node_sqlite3::Database::Baton*)’:
../src/database.cc:625:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),
         ^~~~~~
  CXX(target) Release/obj.target/node_sqlite3/src/node_sqlite3.o
In file included from ../src/database.h:10:0,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’:
../../nan/nan.h:840:60: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, func, argc, argv);
                                                            ^
In file included from ../../nan/nan.h:51:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:172:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/database.h:10:0,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’:
../../nan/nan.h:855:62: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, symbol, argc, argv);
                                                              ^
In file included from ../../nan/nan.h:51:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:165:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/database.h:10:0,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)’:
../../nan/nan.h:870:62: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, method, argc, argv);
                                                              ^
In file included from ../../nan/nan.h:51:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:158:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/database.h:10:0,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::Callback::Call_(v8::Isolate*, v8::Local<v8::Object>, int, v8::Local<v8::Value>*) const’:
../../nan/nan.h:1654:5: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
     ));
     ^
In file included from ../../nan/nan.h:51:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:172:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/node_sqlite3.cc: In function ‘void {anonymous}::RegisterModule(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:21:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_OPEN_READONLY, OPEN_READONLY);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:21:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_OPEN_READONLY, OPEN_READONLY);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:22:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_OPEN_READWRITE, OPEN_READWRITE);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:22:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_OPEN_READWRITE, OPEN_READWRITE);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:23:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_OPEN_CREATE, OPEN_CREATE);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:23:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_OPEN_CREATE, OPEN_CREATE);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:66:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:24:5: note: in expansion of macro ‘DEFINE_CONSTANT_STRING’
     DEFINE_CONSTANT_STRING(target, SQLITE_VERSION, VERSION);
     ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:70:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:24:5: note: in expansion of macro ‘DEFINE_CONSTANT_STRING’
     DEFINE_CONSTANT_STRING(target, SQLITE_VERSION, VERSION);
     ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:66:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:26:5: note: in expansion of macro ‘DEFINE_CONSTANT_STRING’
     DEFINE_CONSTANT_STRING(target, SQLITE_SOURCE_ID, SOURCE_ID);
     ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:70:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:26:5: note: in expansion of macro ‘DEFINE_CONSTANT_STRING’
     DEFINE_CONSTANT_STRING(target, SQLITE_SOURCE_ID, SOURCE_ID);
     ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:28:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_VERSION_NUMBER, VERSION_NUMBER);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:28:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_VERSION_NUMBER, VERSION_NUMBER);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:30:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_OK, OK);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:30:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_OK, OK);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:31:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_ERROR, ERROR);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:31:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_ERROR, ERROR);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:32:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_INTERNAL, INTERNAL);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:32:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_INTERNAL, INTERNAL);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:33:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_PERM, PERM);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:33:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_PERM, PERM);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:34:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_ABORT, ABORT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:34:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_ABORT, ABORT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:35:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_BUSY, BUSY);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:35:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_BUSY, BUSY);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:36:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_LOCKED, LOCKED);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:36:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_LOCKED, LOCKED);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:37:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_NOMEM, NOMEM);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:37:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_NOMEM, NOMEM);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:38:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_READONLY, READONLY);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:38:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_READONLY, READONLY);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:39:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_INTERRUPT, INTERRUPT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:39:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_INTERRUPT, INTERRUPT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:40:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_IOERR, IOERR);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:40:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_IOERR, IOERR);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:41:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_CORRUPT, CORRUPT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:41:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_CORRUPT, CORRUPT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:42:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_NOTFOUND, NOTFOUND);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:42:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_NOTFOUND, NOTFOUND);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:43:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_FULL, FULL);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:43:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_FULL, FULL);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:44:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_CANTOPEN, CANTOPEN);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:44:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_CANTOPEN, CANTOPEN);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:45:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_PROTOCOL, PROTOCOL);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:45:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_PROTOCOL, PROTOCOL);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:46:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_EMPTY, EMPTY);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:46:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_EMPTY, EMPTY);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:47:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_SCHEMA, SCHEMA);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:47:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_SCHEMA, SCHEMA);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:48:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_TOOBIG, TOOBIG);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:48:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_TOOBIG, TOOBIG);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:49:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_CONSTRAINT, CONSTRAINT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:49:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_CONSTRAINT, CONSTRAINT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:50:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_MISMATCH, MISMATCH);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:50:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_MISMATCH, MISMATCH);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:51:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_MISUSE, MISUSE);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:51:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_MISUSE, MISUSE);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:52:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_NOLFS, NOLFS);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:52:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_NOLFS, NOLFS);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:53:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_AUTH, AUTH);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:53:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_AUTH, AUTH);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:54:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_FORMAT, FORMAT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:54:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_FORMAT, FORMAT);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:55:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_RANGE, RANGE);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:55:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_RANGE, RANGE);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:59:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(target,                                                      \
          ^
../src/node_sqlite3.cc:56:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_NOTADB, NOTADB);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
In file included from ../src/node_sqlite3.cc:7:0:
../src/macros.h:63:5: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     );
     ^
../src/node_sqlite3.cc:56:5: note: in expansion of macro ‘DEFINE_CONSTANT_INTEGER’
     DEFINE_CONSTANT_INTEGER(target, SQLITE_NOTADB, NOTADB);
     ^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/node_sqlite3.cc:8:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
  CXX(target) Release/obj.target/node_sqlite3/src/statement.o
In file included from ../src/database.h:10:0,
                 from ../src/statement.cc:7:
../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’:
../../nan/nan.h:840:60: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, func, argc, argv);
                                                            ^
In file included from ../src/statement.cc:2:0:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:172:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/database.h:10:0,
                 from ../src/statement.cc:7:
../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’:
../../nan/nan.h:855:62: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, symbol, argc, argv);
                                                              ^
In file included from ../src/statement.cc:2:0:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:165:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/database.h:10:0,
                 from ../src/statement.cc:7:
../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)’:
../../nan/nan.h:870:62: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
         v8::Isolate::GetCurrent(), target, method, argc, argv);
                                                              ^
In file included from ../src/statement.cc:2:0:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:158:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
In file included from ../src/database.h:10:0,
                 from ../src/statement.cc:7:
../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::Callback::Call_(v8::Isolate*, v8::Local<v8::Object>, int, v8::Local<v8::Value>*) const’:
../../nan/nan.h:1654:5: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
     ));
     ^
In file included from ../src/statement.cc:2:0:
/home/unitech/.node-gyp/10.4.0/include/node/node.h:172:50: note: declared here
                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
                                                  ^
/home/unitech/.node-gyp/10.4.0/include/node/node.h:88:42: note: in definition of macro ‘NODE_DEPRECATED’
     __attribute__((deprecated(message))) declarator
                                          ^~~~~~~~~~
../src/statement.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE node_sqlite3::Statement::New(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/statement.cc:103:10: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(info.This(),Nan::New("sql").ToLocalChecked(), sql, ReadOnly);
          ^~~~~~~~
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/statement.cc:7:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
../src/statement.cc:103:78: warning: ‘Nan::Maybe<bool> Nan::ForceSet(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::PropertyAttribute)’ is deprecated [-Wdeprecated-declarations]
     Nan::ForceSet(info.This(),Nan::New("sql").ToLocalChecked(), sql, ReadOnly);
                                                                              ^
In file included from ../../nan/nan.h:197:0,
                 from ../src/database.h:10,
                 from ../src/statement.cc:7:
../../nan/nan_maybe_43_inl.h:130:35: note: declared here
 NAN_DEPRECATED inline Maybe<bool> ForceSet(
                                   ^~~~~~~~
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginPrepare(node_sqlite3::Database::Baton*)’:
../src/statement.cc:118:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),
         ^~~~~~
In file included from ../src/statement.cc:6:0:
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginBind(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),                              \
         ^
../src/statement.cc:322:5: note: in expansion of macro ‘STATEMENT_BEGIN’
     STATEMENT_BEGIN(Bind);
     ^~~~~~~~~~~~~~~
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginGet(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),                              \
         ^
../src/statement.cc:370:5: note: in expansion of macro ‘STATEMENT_BEGIN’
     STATEMENT_BEGIN(Get);
     ^~~~~~~~~~~~~~~
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginRun(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),                              \
         ^
../src/statement.cc:438:5: note: in expansion of macro ‘STATEMENT_BEGIN’
     STATEMENT_BEGIN(Run);
     ^~~~~~~~~~~~~~~
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginAll(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),                              \
         ^
../src/statement.cc:504:5: note: in expansion of macro ‘STATEMENT_BEGIN’
     STATEMENT_BEGIN(All);
     ^~~~~~~~~~~~~~~
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginEach(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),                              \
         ^
../src/statement.cc:601:5: note: in expansion of macro ‘STATEMENT_BEGIN’
     STATEMENT_BEGIN(Each);
     ^~~~~~~~~~~~~~~
../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginReset(node_sqlite3::Statement::Baton*)’:
../src/macros.h:125:9: warning: unused variable ‘status’ [-Wunused-variable]
     int status = uv_queue_work(uv_default_loop(),                              \
         ^
../src/statement.cc:724:5: note: in expansion of macro ‘STATEMENT_BEGIN’
     STATEMENT_BEGIN(Reset);
     ^~~~~~~~~~~~~~~
  SOLINK_MODULE(target) Release/obj.target/node_sqlite3.node
  COPY Release/node_sqlite3.node
  COPY /home/unitech/keymetrics/my-app/node_modules/sqlite3/lib/binding/node-v64-linux-x64/node_sqlite3.node
  TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory '/home/unitech/keymetrics/my-app/node_modules/sqlite3/build'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
npm WARN [email protected] No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 1018 packages from 1323 contributors and audited 13918 packages in 54.015s
found 1 low severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details

Having "post-hooks"

export class MyController {

  @Hook(() => {
    console.log('Before myMethod');
    
    return (ctx, services, response) => {
      console.log('After myMethod');
      if (isHttpResponseNotFound(response)) {
        console.log('Returned a not found');
      }
    };
  })
  myMethod() {
    return new HttpReponseNotFound();
  }

}

Docs: make a simple code profile with process.hrtime

Be able to specify the template path in `render`.

Currently to use render with a template we need to do this:

import { readFileSync } from 'fs';
import { join }  from 'path';

render(
  readFileSync(join(__dirname, './templates/index.html'), 'utf8'),
  { name: 'foo' }
)

It would be nice to just write that:

render('./templates/index.html', { name: 'foo' }, __dirname);

Sequelize warning when running the app.

sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read moreat http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules/sequelize/lib/sequelize.js:236:13

Trying to understand the ServiceManager.get()

About this function inside the ServiceManager:

get<Service>(serviceClass: Class<Service>): Service {
    // The ts-ignores fix TypeScript bugs.
    // @ts-ignore : Type 'ServiceManager' is not assignable to type 'Service'.
    if (serviceClass === ServiceManager) {
      // @ts-ignore : Type 'ServiceManager' is not assignable to type 'Service'.
      return this;
    }
    // Get the service if it exists.
    if (this.map.get(serviceClass)) {
      return this.map.get(serviceClass);
    }

    // If the service has not been instantiated yet then do it.
    const dependencies = Reflect.getOwnMetadata('design:paramtypes', serviceClass) || [];
    const service = new serviceClass(...dependencies.map(Dep => this.get(Dep)));

    // Save and return the service.
    this.map.set(serviceClass, service);
    return service;
  }

What is the purpose of those lines:

    // The ts-ignores fix TypeScript bugs.
    // @ts-ignore : Type 'ServiceManager' is not assignable to type 'Service'.
    if (serviceClass === ServiceManager) {
      // @ts-ignore : Type 'ServiceManager' is not assignable to type 'Service'.
      return this;
    }

I can't see why someone would use the ServiceManager to get a instance of ServiceManager, could you please clarify @LoicPoullain? Thanks.

[500] `lib/index.js` tries to import the typescript migrations resulting in an exception thrown.

/Users/loicpoullain/Desktop/my-app/migrations/1534517004651-toto.ts:1
(function (exports, require, module, __filename, __dirname) { import {MigrationInterface, QueryRunner} from "typeorm";
                                                              ^^^^^^

SyntaxError: Unexpected token import
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Function.PlatformTools.load (/Users/loicpoullain/Desktop/my-app/src/platform/PlatformTools.ts:110:28)

Having post-hooks

Currently controller decorators are used to execute code before calling a controller method. It would be nice to have post-hook to execute code after the method has been called. Especially the returned value could be changed before sending it back to the client.

Ex: @afterThatRemoveField('password')

Possible convention: every post-hook name should start by afterThat.

What could be the interface of this post-hook?

  • (ctx: PostContext, injector: Injector) => PostContext|Promise<PostContext> with interface PostContext extends Context { result: any }

Question about the architectural pattern of the project

During the docs examples and getting started we can see that the MVC architectural pattern is used, it's also used in the generated codes (ex: the CLI's generate controller, choosing Login. The controller handles the redirects and also the rendering of the login page).

I would like to know why MVC was chosed as the main architectural pattern (if it was) and if you think it is interesting to create a Web API option (maybe during foal createapp).

I don't know if the terminology in my question is right, but with MVC i mean Server Side Rendering of the Pages.

Trouble testing service that connects to database

Hi @LoicPoullain,

I'm trying to test a service from Foal and i'm having trouble to figure out the best way to do it. It should register a user. Should i try to connect to the the real database (and do a rollback after that), should i mock the database or it is best to create a connection just for testing (maybe a file that runs before the tests)?

I looked for examples of that in the docs and found none, your help would be appreciated. thank you.

[Documentation | Getting Started | Introduction] Development Server doesn't load the new frontend app

Describe the bug
Following the Getting started Guide, the prepared frontend app doesn't load when refreshing http://localhost:3000

To Reproduce
Steps to reproduce the behavior:

  1. Following the different steps on this page.
  2. Replace the /public directory and the src/app/controllers/templates/index.html template with the downloaded frontend app files.
  3. Refresh in the browser http://localhost:3000
  4. See no changes (ie. the welcome page of FoalTS).

Expected behavior
I expected to see the prepared frontend app after refreshing the page.

Found Fix
After I ran again the command npm run develop, the correct page loaded.

Desktop (please complete the following information):

  • OS: Windows 10 Family
  • Browser: Firefox
  • Version: 61.0.2

Create all the sub-apps at the root of `src` instead of nesting them

Currently each sub-app has a sub-apps folder where we put its sub-apps.

This creates a ton of nested folders:

  • We have to cd ../../../foo every time to use the FoalTS generators. This is not user friendly as we have to always count the number of parent folders.
  • Exploring in an IDE the files of this very nested architecture is a bit tedious.

Possible alternative: create all the sub-apps at the root of the src directory.

src
  |- app
  |- my-sub-app1
  |- my-sub-app2
  |- my-sub-sub-app3
  '- scripts

Having JWT support for authentication

Is your feature request related to a problem? Please describe.

When developing SPA or mobile applications, the use of sessions and cookies for authentication may be difficult.

Describe the solution you'd like

FoalTS should offer a basic support to handle authentication with JWT.

The solution should:

  • have a simple hook @AuthenticateWithJWTHeader to decode the Authorization header and fill the context with the user,
  • offer refresh tokens,
  • offer token blacklisting.

The solution should not:

  • decide how the JWT is sent to the client (cookie, body, headers, etc).

Error making a POST request in the Simple To-Do List application

Describe the bug
The POST requests fail with an Error 403: Forbidden error (Bad csrf token.) when trying to add a new entry in the Simple To-Do List.

To Reproduce
Steps to reproduce the behavior:

  1. Download the source code of the first tutorial from https://foalts.org/simple-todo-list-source-code.zip.
  2. Expand the file, open a Terminal and move to the simple-todo-list directory
  3. Install dependencies running npm install
  4. Start the app by running npm run develop
  5. Open http://localhost:3000/ in the web browser
  6. Type something in the text field and press ENTER

Expected behavior
A new todo is added.

Actual behavior
The server replies with an Error 403: Forbidden.

Screenshots
Response body
response body

Request headers
response headers

Desktop:

  • OS: MacOS 10.13.6
  • Browser Chrome 70

Additional context
NA

The test generated with the CLI for an "empty" controller fails at compilation

Issue

Describe the bug

The test generated with the CLI for an "empty" controller fails at compilation.

To Reproduce

Run this command:

foal generate controller foobar
> Empty

Then run the tests.

npm run test

The compilation fails with this error:

src/app/controllers/foobar.controller.spec.ts:24:27 - error TS2554: Expected 1 arguments, but got 0.

24       ok(isHttpResponseOK(controller.foo()));

Expected behavior

The test should pass.

Solution

Update the generated test file so that foo receives an empty Context.

Where to look:
The directories packages/cli/src/generate/templates/controller and packages/cli/src/generate/spec/controller.

Which tests are relevant:
The CLI tests: cd packages/cli && npm run dev:test:generators (if you get into trouble while running these tests on Windows, please help us solving this issue).

Feel free to ask any questions if you are stuck!

Keep using webpack?

Issue

Currently every application is built with webpack (dev or prod).

Is webpack really relevant for backend development?

Cons

  • Using webpack adds a new layer of complexity to the build process (configuration, etc).
  • Using webpack adds 419 dependencies to the project : longer installation.
  • Using webpack adds 419 dependencies to the project : it increases the possibility of being exposed to an attack through malicious packages (https://eslint.org/blog/2018/07/postmortem-for-malicious-package-publishes).
  • Unit testing is not straightforward when developing a FoalTS app: every test has to be registered within the test.ts entry point.
  • Debugging with Visual Studio Code is harder.
  • The output file is very different from the source code which complexifies "hard debugging with no sourcemaps".
  • We have to register each TypeORM entity manually.
  • Opening a node shell and "requiring" a controller file often fails because Node.Js does cannot import html files.

Pros

  • Non-typescript files (ex: the templates HTML, graphQL definitions, etc) are bundled in the built directory and so do not require a third-party process to watch them and copy them in this folder.

Have a `restrictQueryToAuthenticatedUser` pre-hook.

Description

When creating a REST controller, restricting the actions (CRUD) to the authenticated user's items is not straightforward. FoalTS should have a pre-hook which does the following:

  • Only items belonging to the user should be fetched.
  • Each updated or deleted item should belong to the user. Otherwise a 404 is returned.
  • Each new item should be marked as belonging to the user.

Current solution

rest('/foo', MyService)
  .withPreHook(ctx => {
    ctx.state.query = { ...ctx.state.query, userId: ctx.user.id };
  }, 'GET /', 'GET /:id', 'PATCH /:id', 'PUT /:id', 'DELETE /:id')
  .withPreHook(ctx => {
    if (ctx.request.body) { if ctx.request.body.userId = ctx.user.id; }
  }, 'POST /');

Solution proposal

rest('/foo', MyService)
  .withPreHook(restrictQueryToAuthenticatedUser())

Using TypeORM as primary ORM of official packages (ex: `@foal/authentication`)

TypeORM

  • can generate migrations when a model is changed (this is equivalent in Django to the command makemigrations),
  • natively supports TypeScript,
  • supports DataMapper and ActiveRecord,
  • has a rich query builder,
  • has great and varied configuration files,
  • handles multiples connections, databases and replication,
  • can use environment variables,
  • and creating relations between entities is straightforward.

Encoding problems when running the `cli` tests on Windows

Issue

Issue reported in the PR #206. When running the tests of the cli package on Windows, they all seem to fail because of a line break encoding (\n vs \r\n).

Possible solutions

  • Ask collaborators to use a virtual machine (for example vagrant) when developing for the project.

OR

  • Update test-environment.ts to replace all \r\n characters by \n when loading a generated file during tests (maybe easier).

Tests do not run with NODE_ENV=test

Issue

Test do not run with NODE_ENV=test causing the configuration not to use the xxx.test.json files.

We could simply add NODE_ENV=test at the start of npm run start:test and npm run start:test:w. But unfortunately this does not work on Windows.

Solution (suggestion)

A possible solution could be to create a foal start:test command. It would use the mocha API to start the tests with the proper node environment.

OPTIONS request returning 404

I created a simple API with a 'hand made' login (not following the login provided by foal).

The API is meant to be public, without SSR.

The problem is that when the browser calls the API (more specifically when it does a OPTIONS request) the API returns a 404 because there is not a response to OPTIONS configured.

I tried adding the following code:

 const app = createApp(AppController, {
    store: session => new (sqliteStoreFactory(session))({ db: 'db.sqlite3' })
  })
  app.options('/*', (req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*')
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With')
    res.send(200)
  })

But the code inside the app.options is never called. I believe that this is because the app.options is being set after the routes, and there isn't a way to set it before them.

Maybe if something like that (code below) was possible this issue would not happen?

// inside index.ts
const app = express()
app.options('/*', (req, res, next) => {
   res.header('Access-Control-Allow-Origin', '*')
   res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
   res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With')
   res.send(200)
})

Then i would pass my app to the createApp, in a optional parameter. If app ins't provided then foal calls the const app = express() inside the createApp function:

// inside index.ts
const app = createApp(AppController, {
    store: session => new (sqliteStoreFactory(session))({ db: 'db.sqlite3' })
  }, app)

Maybe this issue is related to #256?

Have GraphQL components

Possible implementation:

export class MyController extends GraphqlController {
  schema: string|object = '';

  @dependency
  resolver: MyResolver;
}

Then write a new guide called To-Do List with GraphQL.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.