THRIFT-4653: ES6 classes support (#1615)

* ES6 classes support
* Lint generated code
* ES6 Tests for NodeJS
* Add eslint rules for nodejs
* Run prettier/eslint on nodejs test code
diff --git a/lib/nodejs/test/server.js b/lib/nodejs/test/server.js
index 030d28b..7402094 100644
--- a/lib/nodejs/test/server.js
+++ b/lib/nodejs/test/server.js
@@ -19,96 +19,119 @@
  * under the License.
  */
 
-var fs = require('fs');
-var path = require('path');
-var thrift = require('../lib/thrift');
-var program = require('commander');
-var helpers = require('./helpers');
-
-var ThriftTest = require('./gen-nodejs/ThriftTest');
-var SecondService = require('./gen-nodejs/SecondService');
-var ThriftTestHandler = require('./test_handler').AsyncThriftTestHandler;
-var ThriftTestHandlerPromise = require('./test_handler').SyncThriftTestHandler;
-var ttypes = require('./gen-nodejs/ThriftTest_types');
+const fs = require("fs");
+const path = require("path");
+const thrift = require("../lib/thrift");
+const program = require("commander");
+const helpers = require("./helpers");
 
 program
-  .option('-p, --protocol <protocol>', 'Set thrift protocol (binary|compact|json)', 'binary')
-  .option('-t, --transport <transport>', 'Set thrift transport (buffered|framed|http)', 'buffered')
-  .option('--ssl', 'use ssl transport')
-  .option('--port <port>', 'Set thrift server port', 9090)
-  .option('--domain-socket <path>', 'Set thift server unix domain socket')
-  .option('--promise', 'test with promise style functions')
-  .option('-t, --type <type>', 'Select server type (http|multiplex|tcp|websocket)', 'tcp')
+  .option(
+    "-p, --protocol <protocol>",
+    "Set thrift protocol (binary|compact|json)",
+    "binary"
+  )
+  .option(
+    "-t, --transport <transport>",
+    "Set thrift transport (buffered|framed|http)",
+    "buffered"
+  )
+  .option("--ssl", "use ssl transport")
+  .option("--port <port>", "Set thrift server port", 9090)
+  .option("--domain-socket <path>", "Set thift server unix domain socket")
+  .option(
+    "-t, --type <type>",
+    "Select server type (http|multiplex|tcp|websocket)",
+    "tcp"
+  )
+  .option("--callback", "test with callback style functions")
+  .option("--es6", "Use es6 code")
+  .option("--es5", "Use es5 code")
   .parse(process.argv);
 
-var port = program.port;
-var domainSocket = program.domainSocket;
-var type = program.type;
-var ssl = program.ssl;
-var promise = program.promise;
+const ThriftTest = require(`./${helpers.genPath}/ThriftTest`);
+const SecondService = require(`./${helpers.genPath}/SecondService`);
+const { ThriftTestHandler } = require("./test_handler");
 
-var handler = program.promise ? ThriftTestHandler : ThriftTestHandlerPromise;
+const port = program.port;
+const domainSocket = program.domainSocket;
+const ssl = program.ssl;
 
-if (program.transport === 'http') {
-  program.transport = 'buffered';
-  type = 'http';
+let type = program.type;
+if (program.transport === "http") {
+  program.transport = "buffered";
+  type = "http";
 }
 
-var options = {
+let options = {
   transport: helpers.transports[program.transport],
   protocol: helpers.protocols[program.protocol]
 };
 
-if (type === 'http' || type ==='websocket') {
-  options.handler = handler;
+if (type === "http" || type === "websocket") {
+  options.handler = ThriftTestHandler;
   options.processor = ThriftTest;
 
   options = {
     services: { "/test": options },
     cors: {
-      '*': true
+      "*": true
     }
-  }
+  };
 }
 
-if (type === 'multiplex') {
-  var SecondServiceHandler = {
+let processor;
+if (type === "multiplex") {
+  const SecondServiceHandler = {
     secondtestString: function(thing, result) {
       console.log('testString("' + thing + '")');
       result(null, 'testString("' + thing + '")');
     }
   };
 
-  var processor = new thrift.MultiplexedProcessor();
+  processor = new thrift.MultiplexedProcessor();
 
-  processor.registerProcessor("ThriftTest",
-    new ThriftTest.Processor(ThriftTestHandler));
+  processor.registerProcessor(
+    "ThriftTest",
+    new ThriftTest.Processor(ThriftTestHandler)
+  );
 
-  processor.registerProcessor("SecondService",
-    new SecondService.Processor(SecondServiceHandler));
-
+  processor.registerProcessor(
+    "SecondService",
+    new SecondService.Processor(SecondServiceHandler)
+  );
 }
 
 if (ssl) {
-  if (type === 'tcp' || type === 'multiplex' || type === 'http' || type === 'websocket') {
+  if (
+    type === "tcp" ||
+    type === "multiplex" ||
+    type === "http" ||
+    type === "websocket"
+  ) {
     options.tls = {
-      key: fs.readFileSync(path.resolve(__dirname, 'server.key')),
-      cert: fs.readFileSync(path.resolve(__dirname, 'server.crt'))
+      key: fs.readFileSync(path.resolve(__dirname, "server.key")),
+      cert: fs.readFileSync(path.resolve(__dirname, "server.crt"))
     };
   }
 }
 
-var server;
-if (type === 'tcp') {
-  server = thrift.createServer(ThriftTest, handler, options);
-} else if (type === 'multiplex') {
+let server;
+if (type === "tcp") {
+  server = thrift.createServer(ThriftTest, ThriftTestHandler, options);
+} else if (type === "multiplex") {
   server = thrift.createMultiplexServer(processor, options);
-} else if (type === 'http' || type === 'websocket') {
+} else if (type === "http" || type === "websocket") {
   server = thrift.createWebServer(options);
 }
 
 if (domainSocket) {
   server.listen(domainSocket);
-} else if (type === 'tcp' || type === 'multiplex' || type === 'http' || type === 'websocket') {
+} else if (
+  type === "tcp" ||
+  type === "multiplex" ||
+  type === "http" ||
+  type === "websocket"
+) {
   server.listen(port);
 }