Commit 562917649c8e64bfff7df0328005bb5087d88dae

Authored by Igor Kulikov
1 parent 5d64a270

Improve JS Executor

@@ -203,7 +203,7 @@ sql: @@ -203,7 +203,7 @@ sql:
203 attributes: 203 attributes:
204 batch_size: "${SQL_ATTRIBUTES_BATCH_SIZE:10000}" 204 batch_size: "${SQL_ATTRIBUTES_BATCH_SIZE:10000}"
205 batch_max_delay: "${SQL_ATTRIBUTES_BATCH_MAX_DELAY_MS:100}" 205 batch_max_delay: "${SQL_ATTRIBUTES_BATCH_MAX_DELAY_MS:100}"
206 - stats_print_interval_ms: "${SQL_ATTRIBUTES_BATCH_STATS_PRINT_MS:1000}" 206 + stats_print_interval_ms: "${SQL_ATTRIBUTES_BATCH_STATS_PRINT_MS:10000}"
207 # Specify whether to remove null characters from strValue of attributes and timeseries before insert 207 # Specify whether to remove null characters from strValue of attributes and timeseries before insert
208 remove_null_chars: "${SQL_REMOVE_NULL_CHARS:true}" 208 remove_null_chars: "${SQL_REMOVE_NULL_CHARS:true}"
209 209
@@ -17,11 +17,28 @@ @@ -17,11 +17,28 @@
17 17
18 const vm = require('vm'); 18 const vm = require('vm');
19 19
20 -function JsExecutor() { 20 +function JsExecutor(useSandbox) {
  21 + this.useSandbox = useSandbox;
21 } 22 }
22 23
23 JsExecutor.prototype.compileScript = function(code) { 24 JsExecutor.prototype.compileScript = function(code) {
24 - return new Promise(function(resolve, reject) { 25 + if (this.useSandbox) {
  26 + return createScript(code);
  27 + } else {
  28 + return createFunction(code);
  29 + }
  30 +}
  31 +
  32 +JsExecutor.prototype.executeScript = function(script, args, timeout) {
  33 + if (this.useSandbox) {
  34 + return invokeScript(script, args, timeout);
  35 + } else {
  36 + return invokeFunction(script, args);
  37 + }
  38 +}
  39 +
  40 +function createScript(code) {
  41 + return new Promise((resolve, reject) => {
25 try { 42 try {
26 code = "("+code+")(...args)"; 43 code = "("+code+")(...args)";
27 var script = new vm.Script(code); 44 var script = new vm.Script(code);
@@ -32,8 +49,8 @@ JsExecutor.prototype.compileScript = function(code) { @@ -32,8 +49,8 @@ JsExecutor.prototype.compileScript = function(code) {
32 }); 49 });
33 } 50 }
34 51
35 -JsExecutor.prototype.executeScript = function(script, args, timeout) {  
36 - return new Promise(function(resolve, reject) { 52 +function invokeScript(script, args, timeout) {
  53 + return new Promise((resolve, reject) => {
37 try { 54 try {
38 var sandbox = Object.create(null); 55 var sandbox = Object.create(null);
39 sandbox.args = args; 56 sandbox.args = args;
@@ -45,4 +62,29 @@ JsExecutor.prototype.executeScript = function(script, args, timeout) { @@ -45,4 +62,29 @@ JsExecutor.prototype.executeScript = function(script, args, timeout) {
45 }); 62 });
46 } 63 }
47 64
  65 +
  66 +function createFunction(code) {
  67 + return new Promise((resolve, reject) => {
  68 + try {
  69 + code = "return ("+code+")(...args)";
  70 + const parsingContext = vm.createContext({});
  71 + const func = vm.compileFunction(code, ['args'], {parsingContext: parsingContext});
  72 + resolve(func);
  73 + } catch (err) {
  74 + reject(err);
  75 + }
  76 + });
  77 +}
  78 +
  79 +function invokeFunction(func, args) {
  80 + return new Promise((resolve, reject) => {
  81 + try {
  82 + var result = func(args);
  83 + resolve(result);
  84 + } catch (err) {
  85 + reject(err);
  86 + }
  87 + });
  88 +}
  89 +
48 module.exports = JsExecutor; 90 module.exports = JsExecutor;
@@ -15,18 +15,22 @@ @@ -15,18 +15,22 @@
15 */ 15 */
16 'use strict'; 16 'use strict';
17 17
  18 +const COMPILATION_ERROR = 0;
  19 +const RUNTIME_ERROR = 1;
  20 +const TIMEOUT_ERROR = 2;
  21 +const UNRECOGNIZED = -1;
  22 +
18 const config = require('config'), 23 const config = require('config'),
19 - logger = require('../config/logger')('JsInvokeMessageProcessor'), 24 + logger = require('../config/logger')._logger('JsInvokeMessageProcessor'),
20 Utils = require('./utils'), 25 Utils = require('./utils'),
21 - js = require('./jsinvoke.proto').js,  
22 - KeyedMessage = require('kafka-node').KeyedMessage,  
23 JsExecutor = require('./jsExecutor'); 26 JsExecutor = require('./jsExecutor');
24 27
25 const scriptBodyTraceFrequency = Number(config.get('script.script_body_trace_frequency')); 28 const scriptBodyTraceFrequency = Number(config.get('script.script_body_trace_frequency'));
  29 +const useSandbox = config.get('script.use_sandbox') === 'true';
26 30
27 function JsInvokeMessageProcessor(producer) { 31 function JsInvokeMessageProcessor(producer) {
28 this.producer = producer; 32 this.producer = producer;
29 - this.executor = new JsExecutor(); 33 + this.executor = new JsExecutor(useSandbox);
30 this.scriptMap = {}; 34 this.scriptMap = {};
31 this.executedScriptsCounter = 0; 35 this.executedScriptsCounter = 0;
32 } 36 }
@@ -34,18 +38,22 @@ function JsInvokeMessageProcessor(producer) { @@ -34,18 +38,22 @@ function JsInvokeMessageProcessor(producer) {
34 JsInvokeMessageProcessor.prototype.onJsInvokeMessage = function(message) { 38 JsInvokeMessageProcessor.prototype.onJsInvokeMessage = function(message) {
35 39
36 var requestId; 40 var requestId;
  41 + var responseTopic;
37 try { 42 try {
38 - var request = js.RemoteJsRequest.decode(message.value);  
39 - requestId = getRequestId(request); 43 + var request = JSON.parse(message.value.toString('utf8'));
  44 + var buf = message.headers['requestId'];
  45 + requestId = Utils.UUIDFromBuffer(buf);
  46 + buf = message.headers['responseTopic'];
  47 + responseTopic = buf.toString('utf8');
40 48
41 - logger.debug('[%s] Received request, responseTopic: [%s]', requestId, request.responseTopic); 49 + logger.debug('[%s] Received request, responseTopic: [%s]', requestId, responseTopic);
42 50
43 if (request.compileRequest) { 51 if (request.compileRequest) {
44 - this.processCompileRequest(requestId, request.responseTopic, request.compileRequest); 52 + this.processCompileRequest(requestId, responseTopic, request.compileRequest);
45 } else if (request.invokeRequest) { 53 } else if (request.invokeRequest) {
46 - this.processInvokeRequest(requestId, request.responseTopic, request.invokeRequest); 54 + this.processInvokeRequest(requestId, responseTopic, request.invokeRequest);
47 } else if (request.releaseRequest) { 55 } else if (request.releaseRequest) {
48 - this.processReleaseRequest(requestId, request.responseTopic, request.releaseRequest); 56 + this.processReleaseRequest(requestId, responseTopic, request.releaseRequest);
49 } else { 57 } else {
50 logger.error('[%s] Unknown request recevied!', requestId); 58 logger.error('[%s] Unknown request recevied!', requestId);
51 } 59 }
@@ -68,7 +76,7 @@ JsInvokeMessageProcessor.prototype.processCompileRequest = function(requestId, r @@ -68,7 +76,7 @@ JsInvokeMessageProcessor.prototype.processCompileRequest = function(requestId, r
68 this.sendResponse(requestId, responseTopic, scriptId, compileResponse); 76 this.sendResponse(requestId, responseTopic, scriptId, compileResponse);
69 }, 77 },
70 (err) => { 78 (err) => {
71 - var compileResponse = createCompileResponse(scriptId, false, js.JsInvokeErrorCode.COMPILATION_ERROR, err); 79 + var compileResponse = createCompileResponse(scriptId, false, COMPILATION_ERROR, err);
72 logger.debug('[%s] Sending failed compile response, scriptId: [%s]', requestId, scriptId); 80 logger.debug('[%s] Sending failed compile response, scriptId: [%s]', requestId, scriptId);
73 this.sendResponse(requestId, responseTopic, scriptId, compileResponse); 81 this.sendResponse(requestId, responseTopic, scriptId, compileResponse);
74 } 82 }
@@ -96,9 +104,9 @@ JsInvokeMessageProcessor.prototype.processInvokeRequest = function(requestId, re @@ -96,9 +104,9 @@ JsInvokeMessageProcessor.prototype.processInvokeRequest = function(requestId, re
96 (err) => { 104 (err) => {
97 var errorCode; 105 var errorCode;
98 if (err.message.includes('Script execution timed out')) { 106 if (err.message.includes('Script execution timed out')) {
99 - errorCode = js.JsInvokeErrorCode.TIMEOUT_ERROR; 107 + errorCode = TIMEOUT_ERROR;
100 } else { 108 } else {
101 - errorCode = js.JsInvokeErrorCode.RUNTIME_ERROR; 109 + errorCode = RUNTIME_ERROR;
102 } 110 }
103 var invokeResponse = createInvokeResponse("", false, errorCode, err); 111 var invokeResponse = createInvokeResponse("", false, errorCode, err);
104 logger.debug('[%s] Sending failed invoke response, scriptId: [%s], errorCode: [%s]', requestId, scriptId, errorCode); 112 logger.debug('[%s] Sending failed invoke response, scriptId: [%s], errorCode: [%s]', requestId, scriptId, errorCode);
@@ -107,8 +115,8 @@ JsInvokeMessageProcessor.prototype.processInvokeRequest = function(requestId, re @@ -107,8 +115,8 @@ JsInvokeMessageProcessor.prototype.processInvokeRequest = function(requestId, re
107 ) 115 )
108 }, 116 },
109 (err) => { 117 (err) => {
110 - var invokeResponse = createInvokeResponse("", false, js.JsInvokeErrorCode.COMPILATION_ERROR, err);  
111 - logger.debug('[%s] Sending failed invoke response, scriptId: [%s], errorCode: [%s]', requestId, scriptId, js.JsInvokeErrorCode.COMPILATION_ERROR); 118 + var invokeResponse = createInvokeResponse("", false, COMPILATION_ERROR, err);
  119 + logger.debug('[%s] Sending failed invoke response, scriptId: [%s], errorCode: [%s]', requestId, scriptId, COMPILATION_ERROR);
112 this.sendResponse(requestId, responseTopic, scriptId, null, invokeResponse); 120 this.sendResponse(requestId, responseTopic, scriptId, null, invokeResponse);
113 } 121 }
114 ); 122 );
@@ -127,15 +135,26 @@ JsInvokeMessageProcessor.prototype.processReleaseRequest = function(requestId, r @@ -127,15 +135,26 @@ JsInvokeMessageProcessor.prototype.processReleaseRequest = function(requestId, r
127 135
128 JsInvokeMessageProcessor.prototype.sendResponse = function (requestId, responseTopic, scriptId, compileResponse, invokeResponse, releaseResponse) { 136 JsInvokeMessageProcessor.prototype.sendResponse = function (requestId, responseTopic, scriptId, compileResponse, invokeResponse, releaseResponse) {
129 var remoteResponse = createRemoteResponse(requestId, compileResponse, invokeResponse, releaseResponse); 137 var remoteResponse = createRemoteResponse(requestId, compileResponse, invokeResponse, releaseResponse);
130 - var rawResponse = js.RemoteJsResponse.encode(remoteResponse).finish();  
131 - const message = new KeyedMessage(scriptId, rawResponse);  
132 - const payloads = [ { topic: responseTopic, messages: message, key: scriptId } ];  
133 - this.producer.send(payloads, function (err, data) {  
134 - if (err) {  
135 - logger.error('[%s] Failed to send response to kafka: %s', requestId, err.message);  
136 - logger.error(err.stack); 138 + var rawResponse = Buffer.from(JSON.stringify(remoteResponse), 'utf8');
  139 + this.producer.send(
  140 + {
  141 + topic: responseTopic,
  142 + messages: [
  143 + {
  144 + key: scriptId,
  145 + value: rawResponse
  146 + }
  147 + ]
137 } 148 }
138 - }); 149 + ).then(
  150 + () => {},
  151 + (err) => {
  152 + if (err) {
  153 + logger.error('[%s] Failed to send response to kafka: %s', requestId, err.message);
  154 + logger.error(err.stack);
  155 + }
  156 + }
  157 + );
139 } 158 }
140 159
141 JsInvokeMessageProcessor.prototype.getOrCompileScript = function(scriptId, scriptBody) { 160 JsInvokeMessageProcessor.prototype.getOrCompileScript = function(scriptId, scriptBody) {
@@ -159,50 +178,42 @@ JsInvokeMessageProcessor.prototype.getOrCompileScript = function(scriptId, scrip @@ -159,50 +178,42 @@ JsInvokeMessageProcessor.prototype.getOrCompileScript = function(scriptId, scrip
159 178
160 function createRemoteResponse(requestId, compileResponse, invokeResponse, releaseResponse) { 179 function createRemoteResponse(requestId, compileResponse, invokeResponse, releaseResponse) {
161 const requestIdBits = Utils.UUIDToBits(requestId); 180 const requestIdBits = Utils.UUIDToBits(requestId);
162 - return js.RemoteJsResponse.create(  
163 - { 181 + return {
164 requestIdMSB: requestIdBits[0], 182 requestIdMSB: requestIdBits[0],
165 requestIdLSB: requestIdBits[1], 183 requestIdLSB: requestIdBits[1],
166 compileResponse: compileResponse, 184 compileResponse: compileResponse,
167 invokeResponse: invokeResponse, 185 invokeResponse: invokeResponse,
168 releaseResponse: releaseResponse 186 releaseResponse: releaseResponse
169 - }  
170 - ); 187 + };
171 } 188 }
172 189
173 function createCompileResponse(scriptId, success, errorCode, err) { 190 function createCompileResponse(scriptId, success, errorCode, err) {
174 const scriptIdBits = Utils.UUIDToBits(scriptId); 191 const scriptIdBits = Utils.UUIDToBits(scriptId);
175 - return js.JsCompileResponse.create(  
176 - { 192 + return {
177 errorCode: errorCode, 193 errorCode: errorCode,
178 success: success, 194 success: success,
179 errorDetails: parseJsErrorDetails(err), 195 errorDetails: parseJsErrorDetails(err),
180 scriptIdMSB: scriptIdBits[0], 196 scriptIdMSB: scriptIdBits[0],
181 scriptIdLSB: scriptIdBits[1] 197 scriptIdLSB: scriptIdBits[1]
182 - }  
183 - ); 198 + };
184 } 199 }
185 200
186 function createInvokeResponse(result, success, errorCode, err) { 201 function createInvokeResponse(result, success, errorCode, err) {
187 - return js.JsInvokeResponse.create(  
188 - { 202 + return {
189 errorCode: errorCode, 203 errorCode: errorCode,
190 success: success, 204 success: success,
191 errorDetails: parseJsErrorDetails(err), 205 errorDetails: parseJsErrorDetails(err),
192 result: result 206 result: result
193 - }  
194 - ); 207 + };
195 } 208 }
196 209
197 function createReleaseResponse(scriptId, success) { 210 function createReleaseResponse(scriptId, success) {
198 const scriptIdBits = Utils.UUIDToBits(scriptId); 211 const scriptIdBits = Utils.UUIDToBits(scriptId);
199 - return js.JsReleaseResponse.create(  
200 - { 212 + return {
201 success: success, 213 success: success,
202 scriptIdMSB: scriptIdBits[0], 214 scriptIdMSB: scriptIdBits[0],
203 scriptIdLSB: scriptIdBits[1] 215 scriptIdLSB: scriptIdBits[1]
204 - }  
205 - ); 216 + };
206 } 217 }
207 218
208 function parseJsErrorDetails(err) { 219 function parseJsErrorDetails(err) {
@@ -229,8 +240,4 @@ function getScriptId(request) { @@ -229,8 +240,4 @@ function getScriptId(request) {
229 return Utils.toUUIDString(request.scriptIdMSB, request.scriptIdLSB); 240 return Utils.toUUIDString(request.scriptIdMSB, request.scriptIdLSB);
230 } 241 }
231 242
232 -function getRequestId(request) {  
233 - return Utils.toUUIDString(request.requestIdMSB, request.requestIdLSB);  
234 -}  
235 -  
236 -module.exports = JsInvokeMessageProcessor;  
  243 +module.exports = JsInvokeMessageProcessor;
@@ -18,16 +18,17 @@ @@ -18,16 +18,17 @@
18 const Long = require('long'), 18 const Long = require('long'),
19 uuidParse = require('uuid-parse'); 19 uuidParse = require('uuid-parse');
20 20
21 -var logger = require('../config/logger')('Utils');  
22 -  
23 exports.toUUIDString = function(mostSigBits, leastSigBits) { 21 exports.toUUIDString = function(mostSigBits, leastSigBits) {
24 var msbBytes = Long.fromValue(mostSigBits, false).toBytes(false); 22 var msbBytes = Long.fromValue(mostSigBits, false).toBytes(false);
25 var lsbBytes = Long.fromValue(leastSigBits, false).toBytes(false); 23 var lsbBytes = Long.fromValue(leastSigBits, false).toBytes(false);
26 var uuidBytes = msbBytes.concat(lsbBytes); 24 var uuidBytes = msbBytes.concat(lsbBytes);
27 - var buff = new Buffer(uuidBytes, 'utf8');  
28 return uuidParse.unparse(uuidBytes); 25 return uuidParse.unparse(uuidBytes);
29 } 26 }
30 27
  28 +exports.UUIDFromBuffer = function(buf) {
  29 + return uuidParse.unparse(buf);
  30 +}
  31 +
31 exports.UUIDToBits = function(uuidString) { 32 exports.UUIDToBits = function(uuidString) {
32 const bytes = uuidParse.parse(uuidString); 33 const bytes = uuidParse.parse(uuidString);
33 var msb = Long.fromBytes(bytes.slice(0,8), false, false).toString(); 34 var msb = Long.fromBytes(bytes.slice(0,8), false, false).toString();
@@ -25,4 +25,5 @@ logger: @@ -25,4 +25,5 @@ logger:
25 filename: "LOGGER_FILENAME" 25 filename: "LOGGER_FILENAME"
26 26
27 script: 27 script:
  28 + use_sandbox: "SCRIPT_USE_SANDBOX"
28 script_body_trace_frequency: "SCRIPT_BODY_TRACE_FREQUENCY" 29 script_body_trace_frequency: "SCRIPT_BODY_TRACE_FREQUENCY"
@@ -26,4 +26,5 @@ logger: @@ -26,4 +26,5 @@ logger:
26 filename: "tb-js-executor-%DATE%.log" 26 filename: "tb-js-executor-%DATE%.log"
27 27
28 script: 28 script:
  29 + use_sandbox: "true"
29 script_body_trace_frequency: "1000" 30 script_body_trace_frequency: "1000"
@@ -17,9 +17,24 @@ var config = require('config'), @@ -17,9 +17,24 @@ var config = require('config'),
17 path = require('path'), 17 path = require('path'),
18 DailyRotateFile = require('winston-daily-rotate-file'); 18 DailyRotateFile = require('winston-daily-rotate-file');
19 19
  20 +const { logLevel } = require('kafkajs');
20 const { createLogger, format, transports } = require('winston'); 21 const { createLogger, format, transports } = require('winston');
21 const { combine, timestamp, label, printf, splat } = format; 22 const { combine, timestamp, label, printf, splat } = format;
22 23
  24 +const toWinstonLogLevel = level => {
  25 + switch(level) {
  26 + case logLevel.ERROR:
  27 + case logLevel.NOTHING:
  28 + return 'error'
  29 + case logLevel.WARN:
  30 + return 'warn'
  31 + case logLevel.INFO:
  32 + return 'info'
  33 + case logLevel.DEBUG:
  34 + return 'debug'
  35 + }
  36 +}
  37 +
23 var loggerTransports = []; 38 var loggerTransports = [];
24 39
25 if (process.env.NODE_ENV !== 'production' || process.env.DOCKER_MODE === 'true') { 40 if (process.env.NODE_ENV !== 'production' || process.env.DOCKER_MODE === 'true') {
@@ -56,4 +71,33 @@ function _logger(moduleLabel) { @@ -56,4 +71,33 @@ function _logger(moduleLabel) {
56 }); 71 });
57 } 72 }
58 73
59 -module.exports = _logger;  
  74 +const KafkaJsWinstonLogCreator = logLevel => {
  75 + const logger = createLogger({
  76 + level: toWinstonLogLevel(logLevel),
  77 + format:combine(
  78 + splat(),
  79 + label({ label: 'kafkajs' }),
  80 + timestamp({format: 'YYYY-MM-DD HH:mm:ss,SSS'}),
  81 + printf(info => {
  82 + var res = `${info.timestamp} [${info.label}] ${info.level.toUpperCase()}: ${info.message}`;
  83 + if (info.extra) {
  84 + res +=`: ${JSON.stringify(info.extra)}`;
  85 + }
  86 + return res;
  87 + }
  88 + )
  89 + ),
  90 + transports: loggerTransports
  91 + });
  92 +
  93 + return ({ namespace, level, label, log }) => {
  94 + const { message, ...extra } = log;
  95 + logger.log({
  96 + level: toWinstonLogLevel(level),
  97 + message,
  98 + extra,
  99 + });
  100 + }
  101 +}
  102 +
  103 +module.exports = {_logger, KafkaJsWinstonLogCreator};
@@ -35,60 +35,6 @@ @@ -35,60 +35,6 @@
35 "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", 35 "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
36 "dev": true 36 "dev": true
37 }, 37 },
38 - "@protobufjs/aspromise": {  
39 - "version": "1.1.2",  
40 - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",  
41 - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="  
42 - },  
43 - "@protobufjs/base64": {  
44 - "version": "1.1.2",  
45 - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",  
46 - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="  
47 - },  
48 - "@protobufjs/codegen": {  
49 - "version": "2.0.4",  
50 - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",  
51 - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="  
52 - },  
53 - "@protobufjs/eventemitter": {  
54 - "version": "1.1.0",  
55 - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",  
56 - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="  
57 - },  
58 - "@protobufjs/fetch": {  
59 - "version": "1.1.0",  
60 - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",  
61 - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",  
62 - "requires": {  
63 - "@protobufjs/aspromise": "^1.1.1",  
64 - "@protobufjs/inquire": "^1.1.0"  
65 - }  
66 - },  
67 - "@protobufjs/float": {  
68 - "version": "1.0.2",  
69 - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",  
70 - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="  
71 - },  
72 - "@protobufjs/inquire": {  
73 - "version": "1.1.0",  
74 - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",  
75 - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="  
76 - },  
77 - "@protobufjs/path": {  
78 - "version": "1.1.2",  
79 - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",  
80 - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="  
81 - },  
82 - "@protobufjs/pool": {  
83 - "version": "1.1.0",  
84 - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",  
85 - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="  
86 - },  
87 - "@protobufjs/utf8": {  
88 - "version": "1.1.0",  
89 - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",  
90 - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="  
91 - },  
92 "@types/events": { 38 "@types/events": {
93 "version": "3.0.0", 39 "version": "3.0.0",
94 "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", 40 "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
@@ -106,11 +52,6 @@ @@ -106,11 +52,6 @@
106 "@types/node": "*" 52 "@types/node": "*"
107 } 53 }
108 }, 54 },
109 - "@types/long": {  
110 - "version": "4.0.0",  
111 - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz",  
112 - "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q=="  
113 - },  
114 "@types/minimatch": { 55 "@types/minimatch": {
115 "version": "3.0.3", 56 "version": "3.0.3",
116 "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", 57 "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
@@ -120,7 +61,8 @@ @@ -120,7 +61,8 @@
120 "@types/node": { 61 "@types/node": {
121 "version": "10.12.10", 62 "version": "10.12.10",
122 "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.10.tgz", 63 "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.10.tgz",
123 - "integrity": "sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w==" 64 + "integrity": "sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w==",
  65 + "dev": true
124 }, 66 },
125 "abbrev": { 67 "abbrev": {
126 "version": "1.1.1", 68 "version": "1.1.1",
@@ -182,11 +124,6 @@ @@ -182,11 +124,6 @@
182 } 124 }
183 } 125 }
184 }, 126 },
185 - "ansi-regex": {  
186 - "version": "2.1.1",  
187 - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",  
188 - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="  
189 - },  
190 "ansi-styles": { 127 "ansi-styles": {
191 "version": "3.2.1", 128 "version": "3.2.1",
192 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 129 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -206,22 +143,6 @@ @@ -206,22 +143,6 @@
206 "normalize-path": "^2.1.1" 143 "normalize-path": "^2.1.1"
207 } 144 }
208 }, 145 },
209 - "aproba": {  
210 - "version": "1.2.0",  
211 - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",  
212 - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",  
213 - "optional": true  
214 - },  
215 - "are-we-there-yet": {  
216 - "version": "1.1.5",  
217 - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",  
218 - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",  
219 - "optional": true,  
220 - "requires": {  
221 - "delegates": "^1.0.0",  
222 - "readable-stream": "^2.0.6"  
223 - }  
224 - },  
225 "argparse": { 146 "argparse": {
226 "version": "1.0.10", 147 "version": "1.0.10",
227 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 148 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -331,7 +252,8 @@ @@ -331,7 +252,8 @@
331 "balanced-match": { 252 "balanced-match": {
332 "version": "1.0.0", 253 "version": "1.0.0",
333 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 254 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
334 - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 255 + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
  256 + "dev": true
335 }, 257 },
336 "base": { 258 "base": {
337 "version": "0.11.2", 259 "version": "0.11.2",
@@ -397,39 +319,12 @@ @@ -397,39 +319,12 @@
397 "tweetnacl": "^0.14.3" 319 "tweetnacl": "^0.14.3"
398 } 320 }
399 }, 321 },
400 - "binary": {  
401 - "version": "0.3.0",  
402 - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",  
403 - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",  
404 - "requires": {  
405 - "buffers": "~0.1.1",  
406 - "chainsaw": "~0.1.0"  
407 - }  
408 - },  
409 "binary-extensions": { 322 "binary-extensions": {
410 "version": "1.12.0", 323 "version": "1.12.0",
411 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", 324 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
412 "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", 325 "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
413 "dev": true 326 "dev": true
414 }, 327 },
415 - "bindings": {  
416 - "version": "1.5.0",  
417 - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",  
418 - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",  
419 - "optional": true,  
420 - "requires": {  
421 - "file-uri-to-path": "1.0.0"  
422 - }  
423 - },  
424 - "bl": {  
425 - "version": "2.2.0",  
426 - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz",  
427 - "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==",  
428 - "requires": {  
429 - "readable-stream": "^2.3.5",  
430 - "safe-buffer": "^5.1.1"  
431 - }  
432 - },  
433 "boxen": { 328 "boxen": {
434 "version": "1.3.0", 329 "version": "1.3.0",
435 "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", 330 "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
@@ -482,6 +377,7 @@ @@ -482,6 +377,7 @@
482 "version": "1.1.11", 377 "version": "1.1.11",
483 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 378 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
484 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 379 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
  380 + "dev": true,
485 "requires": { 381 "requires": {
486 "balanced-match": "^1.0.0", 382 "balanced-match": "^1.0.0",
487 "concat-map": "0.0.1" 383 "concat-map": "0.0.1"
@@ -516,53 +412,6 @@ @@ -516,53 +412,6 @@
516 } 412 }
517 } 413 }
518 }, 414 },
519 - "buffer-alloc": {  
520 - "version": "1.2.0",  
521 - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",  
522 - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",  
523 - "optional": true,  
524 - "requires": {  
525 - "buffer-alloc-unsafe": "^1.1.0",  
526 - "buffer-fill": "^1.0.0"  
527 - }  
528 - },  
529 - "buffer-alloc-unsafe": {  
530 - "version": "1.1.0",  
531 - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",  
532 - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",  
533 - "optional": true  
534 - },  
535 - "buffer-crc32": {  
536 - "version": "0.2.13",  
537 - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",  
538 - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="  
539 - },  
540 - "buffer-fill": {  
541 - "version": "1.0.0",  
542 - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",  
543 - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",  
544 - "optional": true  
545 - },  
546 - "buffermaker": {  
547 - "version": "1.2.1",  
548 - "resolved": "https://registry.npmjs.org/buffermaker/-/buffermaker-1.2.1.tgz",  
549 - "integrity": "sha512-IdnyU2jDHU65U63JuVQNTHiWjPRH0CS3aYd/WPaEwyX84rFdukhOduAVb1jwUScmb5X0JWPw8NZOrhoLMiyAHQ==",  
550 - "requires": {  
551 - "long": "1.1.2"  
552 - },  
553 - "dependencies": {  
554 - "long": {  
555 - "version": "1.1.2",  
556 - "resolved": "https://registry.npmjs.org/long/-/long-1.1.2.tgz",  
557 - "integrity": "sha1-6u9ZUcp1UdlpJrgtokLbnWso+1M="  
558 - }  
559 - }  
560 - },  
561 - "buffers": {  
562 - "version": "0.1.1",  
563 - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",  
564 - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s="  
565 - },  
566 "byline": { 415 "byline": {
567 "version": "5.0.0", 416 "version": "5.0.0",
568 "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", 417 "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
@@ -610,14 +459,6 @@ @@ -610,14 +459,6 @@
610 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", 459 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
611 "dev": true 460 "dev": true
612 }, 461 },
613 - "chainsaw": {  
614 - "version": "0.1.0",  
615 - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",  
616 - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",  
617 - "requires": {  
618 - "traverse": ">=0.3.0 <0.4"  
619 - }  
620 - },  
621 "chalk": { 462 "chalk": {
622 "version": "2.4.1", 463 "version": "2.4.1",
623 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", 464 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
@@ -650,12 +491,6 @@ @@ -650,12 +491,6 @@
650 "upath": "^1.0.5" 491 "upath": "^1.0.5"
651 } 492 }
652 }, 493 },
653 - "chownr": {  
654 - "version": "1.1.2",  
655 - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",  
656 - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",  
657 - "optional": true  
658 - },  
659 "ci-info": { 494 "ci-info": {
660 "version": "1.6.0", 495 "version": "1.6.0",
661 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", 496 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
@@ -691,11 +526,6 @@ @@ -691,11 +526,6 @@
691 "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", 526 "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
692 "dev": true 527 "dev": true
693 }, 528 },
694 - "code-point-at": {  
695 - "version": "1.1.0",  
696 - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",  
697 - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="  
698 - },  
699 "collection-visit": { 529 "collection-visit": {
700 "version": "1.0.0", 530 "version": "1.0.0",
701 "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 531 "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
@@ -774,7 +604,8 @@ @@ -774,7 +604,8 @@
774 "concat-map": { 604 "concat-map": {
775 "version": "0.0.1", 605 "version": "0.0.1",
776 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 606 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
777 - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 607 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
  608 + "dev": true
778 }, 609 },
779 "config": { 610 "config": {
780 "version": "3.2.2", 611 "version": "3.2.2",
@@ -798,11 +629,6 @@ @@ -798,11 +629,6 @@
798 "xdg-basedir": "^3.0.0" 629 "xdg-basedir": "^3.0.0"
799 } 630 }
800 }, 631 },
801 - "console-control-strings": {  
802 - "version": "1.1.0",  
803 - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",  
804 - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="  
805 - },  
806 "copy-descriptor": { 632 "copy-descriptor": {
807 "version": "0.1.1", 633 "version": "0.1.1",
808 "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 634 "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
@@ -858,6 +684,7 @@ @@ -858,6 +684,7 @@
858 "version": "2.6.9", 684 "version": "2.6.9",
859 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 685 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
860 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 686 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
  687 + "dev": true,
861 "requires": { 688 "requires": {
862 "ms": "2.0.0" 689 "ms": "2.0.0"
863 } 690 }
@@ -868,19 +695,11 @@ @@ -868,19 +695,11 @@
868 "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 695 "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
869 "dev": true 696 "dev": true
870 }, 697 },
871 - "decompress-response": {  
872 - "version": "3.3.0",  
873 - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",  
874 - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",  
875 - "optional": true,  
876 - "requires": {  
877 - "mimic-response": "^1.0.0"  
878 - }  
879 - },  
880 "deep-extend": { 698 "deep-extend": {
881 "version": "0.6.0", 699 "version": "0.6.0",
882 "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 700 "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
883 - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 701 + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
  702 + "dev": true
884 }, 703 },
885 "deep-is": { 704 "deep-is": {
886 "version": "0.1.3", 705 "version": "0.1.3",
@@ -935,23 +754,6 @@ @@ -935,23 +754,6 @@
935 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 754 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
936 "dev": true 755 "dev": true
937 }, 756 },
938 - "delegates": {  
939 - "version": "1.0.0",  
940 - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",  
941 - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",  
942 - "optional": true  
943 - },  
944 - "denque": {  
945 - "version": "1.4.1",  
946 - "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz",  
947 - "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ=="  
948 - },  
949 - "detect-libc": {  
950 - "version": "1.0.3",  
951 - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",  
952 - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",  
953 - "optional": true  
954 - },  
955 "diagnostics": { 757 "diagnostics": {
956 "version": "1.1.1", 758 "version": "1.1.1",
957 "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", 759 "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
@@ -1004,14 +806,6 @@ @@ -1004,14 +806,6 @@
1004 "env-variable": "0.0.x" 806 "env-variable": "0.0.x"
1005 } 807 }
1006 }, 808 },
1007 - "end-of-stream": {  
1008 - "version": "1.4.1",  
1009 - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",  
1010 - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",  
1011 - "requires": {  
1012 - "once": "^1.4.0"  
1013 - }  
1014 - },  
1015 "env-variable": { 809 "env-variable": {
1016 "version": "0.0.5", 810 "version": "0.0.5",
1017 "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", 811 "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz",
@@ -1272,12 +1066,6 @@ @@ -1272,12 +1066,6 @@
1272 "moment": "^2.11.2" 1066 "moment": "^2.11.2"
1273 } 1067 }
1274 }, 1068 },
1275 - "file-uri-to-path": {  
1276 - "version": "1.0.0",  
1277 - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",  
1278 - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",  
1279 - "optional": true  
1280 - },  
1281 "fill-range": { 1069 "fill-range": {
1282 "version": "4.0.0", 1070 "version": "4.0.0",
1283 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 1071 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -1343,12 +1131,6 @@ @@ -1343,12 +1131,6 @@
1343 "readable-stream": "^2.0.0" 1131 "readable-stream": "^2.0.0"
1344 } 1132 }
1345 }, 1133 },
1346 - "fs-constants": {  
1347 - "version": "1.0.0",  
1348 - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",  
1349 - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",  
1350 - "optional": true  
1351 - },  
1352 "fs-extra": { 1134 "fs-extra": {
1353 "version": "6.0.1", 1135 "version": "6.0.1",
1354 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", 1136 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
@@ -1895,22 +1677,6 @@ @@ -1895,22 +1677,6 @@
1895 } 1677 }
1896 } 1678 }
1897 }, 1679 },
1898 - "gauge": {  
1899 - "version": "2.7.4",  
1900 - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",  
1901 - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",  
1902 - "optional": true,  
1903 - "requires": {  
1904 - "aproba": "^1.0.3",  
1905 - "console-control-strings": "^1.0.0",  
1906 - "has-unicode": "^2.0.0",  
1907 - "object-assign": "^4.1.0",  
1908 - "signal-exit": "^3.0.0",  
1909 - "string-width": "^1.0.1",  
1910 - "strip-ansi": "^3.0.1",  
1911 - "wide-align": "^1.1.0"  
1912 - }  
1913 - },  
1914 "get-stream": { 1680 "get-stream": {
1915 "version": "3.0.0", 1681 "version": "3.0.0",
1916 "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 1682 "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
@@ -1932,12 +1698,6 @@ @@ -1932,12 +1698,6 @@
1932 "assert-plus": "^1.0.0" 1698 "assert-plus": "^1.0.0"
1933 } 1699 }
1934 }, 1700 },
1935 - "github-from-package": {  
1936 - "version": "0.0.0",  
1937 - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",  
1938 - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=",  
1939 - "optional": true  
1940 - },  
1941 "glob": { 1701 "glob": {
1942 "version": "7.1.4", 1702 "version": "7.1.4",
1943 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 1703 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
@@ -2059,12 +1819,6 @@ @@ -2059,12 +1819,6 @@
2059 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1819 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
2060 "dev": true 1820 "dev": true
2061 }, 1821 },
2062 - "has-unicode": {  
2063 - "version": "2.0.1",  
2064 - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",  
2065 - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",  
2066 - "optional": true  
2067 - },  
2068 "has-value": { 1822 "has-value": {
2069 "version": "1.0.0", 1823 "version": "1.0.0",
2070 "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 1824 "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -2150,7 +1904,8 @@ @@ -2150,7 +1904,8 @@
2150 "ini": { 1904 "ini": {
2151 "version": "1.3.5", 1905 "version": "1.3.5",
2152 "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 1906 "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
2153 - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 1907 + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
  1908 + "dev": true
2154 }, 1909 },
2155 "into-stream": { 1910 "into-stream": {
2156 "version": "5.1.0", 1911 "version": "5.1.0",
@@ -2262,14 +2017,6 @@ @@ -2262,14 +2017,6 @@
2262 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2017 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
2263 "dev": true 2018 "dev": true
2264 }, 2019 },
2265 - "is-fullwidth-code-point": {  
2266 - "version": "1.0.0",  
2267 - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",  
2268 - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",  
2269 - "requires": {  
2270 - "number-is-nan": "^1.0.0"  
2271 - }  
2272 - },  
2273 "is-glob": { 2020 "is-glob": {
2274 "version": "4.0.0", 2021 "version": "4.0.0",
2275 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", 2022 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
@@ -2453,42 +2200,12 @@ @@ -2453,42 +2200,12 @@
2453 "verror": "1.10.0" 2200 "verror": "1.10.0"
2454 } 2201 }
2455 }, 2202 },
2456 - "kafka-node": {  
2457 - "version": "4.1.3",  
2458 - "resolved": "https://registry.npmjs.org/kafka-node/-/kafka-node-4.1.3.tgz",  
2459 - "integrity": "sha512-C2WHksRCr7vIKmbxYaCk2c5Q1lnHIi6C0f3AioK3ARcRHGO9DpqErcoaS9d8PP62yzTnkYras+iAlmPsZHNSfw==",  
2460 - "requires": {  
2461 - "async": "^2.6.2",  
2462 - "binary": "~0.3.0",  
2463 - "bl": "^2.2.0",  
2464 - "buffer-crc32": "~0.2.5",  
2465 - "buffermaker": "~1.2.0",  
2466 - "debug": "^2.1.3",  
2467 - "denque": "^1.3.0",  
2468 - "lodash": "^4.17.4",  
2469 - "minimatch": "^3.0.2",  
2470 - "nested-error-stacks": "^2.0.0",  
2471 - "optional": "^0.1.3",  
2472 - "retry": "^0.10.1",  
2473 - "snappy": "^6.0.1",  
2474 - "uuid": "^3.0.0"  
2475 - },  
2476 - "dependencies": {  
2477 - "async": {  
2478 - "version": "2.6.3",  
2479 - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",  
2480 - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",  
2481 - "requires": {  
2482 - "lodash": "^4.17.14"  
2483 - },  
2484 - "dependencies": {  
2485 - "lodash": {  
2486 - "version": "4.17.15",  
2487 - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",  
2488 - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="  
2489 - }  
2490 - }  
2491 - } 2203 + "kafkajs": {
  2204 + "version": "1.11.0",
  2205 + "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-1.11.0.tgz",
  2206 + "integrity": "sha512-dLRCcFIBygZucR+e8U2ZqH2wgMrAu114K0szUyUseJoeOii3cG5bHZPIdqKecXxI6begPVCfGS3R0nJY4zHW2A==",
  2207 + "requires": {
  2208 + "long": "^4.0.0"
2492 } 2209 }
2493 }, 2210 },
2494 "kind-of": { 2211 "kind-of": {
@@ -2641,16 +2358,11 @@ @@ -2641,16 +2358,11 @@
2641 "mime-db": "1.40.0" 2358 "mime-db": "1.40.0"
2642 } 2359 }
2643 }, 2360 },
2644 - "mimic-response": {  
2645 - "version": "1.0.1",  
2646 - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",  
2647 - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",  
2648 - "optional": true  
2649 - },  
2650 "minimatch": { 2361 "minimatch": {
2651 "version": "3.0.4", 2362 "version": "3.0.4",
2652 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2363 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2653 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2364 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
  2365 + "dev": true,
2654 "requires": { 2366 "requires": {
2655 "brace-expansion": "^1.1.7" 2367 "brace-expansion": "^1.1.7"
2656 } 2368 }
@@ -2685,6 +2397,7 @@ @@ -2685,6 +2397,7 @@
2685 "version": "0.5.1", 2397 "version": "0.5.1",
2686 "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2398 "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
2687 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2399 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
  2400 + "dev": true,
2688 "requires": { 2401 "requires": {
2689 "minimist": "0.0.8" 2402 "minimist": "0.0.8"
2690 }, 2403 },
@@ -2692,7 +2405,8 @@ @@ -2692,7 +2405,8 @@
2692 "minimist": { 2405 "minimist": {
2693 "version": "0.0.8", 2406 "version": "0.0.8",
2694 "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2407 "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
2695 - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 2408 + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
  2409 + "dev": true
2696 } 2410 }
2697 } 2411 }
2698 }, 2412 },
@@ -2704,7 +2418,8 @@ @@ -2704,7 +2418,8 @@
2704 "ms": { 2418 "ms": {
2705 "version": "2.0.0", 2419 "version": "2.0.0",
2706 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2420 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2707 - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2421 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
  2422 + "dev": true
2708 }, 2423 },
2709 "multistream": { 2424 "multistream": {
2710 "version": "2.1.1", 2425 "version": "2.1.1",
@@ -2742,26 +2457,6 @@ @@ -2742,26 +2457,6 @@
2742 "to-regex": "^3.0.1" 2457 "to-regex": "^3.0.1"
2743 } 2458 }
2744 }, 2459 },
2745 - "napi-build-utils": {  
2746 - "version": "1.0.1",  
2747 - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz",  
2748 - "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==",  
2749 - "optional": true  
2750 - },  
2751 - "nested-error-stacks": {  
2752 - "version": "2.1.0",  
2753 - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz",  
2754 - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug=="  
2755 - },  
2756 - "node-abi": {  
2757 - "version": "2.9.0",  
2758 - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.9.0.tgz",  
2759 - "integrity": "sha512-jmEOvv0eanWjhX8dX1pmjb7oJl1U1oR4FOh0b2GnvALwSYoOdU7sj+kLDSAyjo4pfC9aj/IxkloxdLJQhSSQBA==",  
2760 - "optional": true,  
2761 - "requires": {  
2762 - "semver": "^5.4.1"  
2763 - }  
2764 - },  
2765 "nodemon": { 2460 "nodemon": {
2766 "version": "1.18.7", 2461 "version": "1.18.7",
2767 "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.7.tgz", 2462 "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.7.tgz",
@@ -2797,12 +2492,6 @@ @@ -2797,12 +2492,6 @@
2797 } 2492 }
2798 } 2493 }
2799 }, 2494 },
2800 - "noop-logger": {  
2801 - "version": "0.1.1",  
2802 - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",  
2803 - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=",  
2804 - "optional": true  
2805 - },  
2806 "nopt": { 2495 "nopt": {
2807 "version": "1.0.10", 2496 "version": "1.0.10",
2808 "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 2497 "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
@@ -2830,35 +2519,12 @@ @@ -2830,35 +2519,12 @@
2830 "path-key": "^2.0.0" 2519 "path-key": "^2.0.0"
2831 } 2520 }
2832 }, 2521 },
2833 - "npmlog": {  
2834 - "version": "4.1.2",  
2835 - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",  
2836 - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",  
2837 - "optional": true,  
2838 - "requires": {  
2839 - "are-we-there-yet": "~1.1.2",  
2840 - "console-control-strings": "~1.1.0",  
2841 - "gauge": "~2.7.3",  
2842 - "set-blocking": "~2.0.0"  
2843 - }  
2844 - },  
2845 - "number-is-nan": {  
2846 - "version": "1.0.1",  
2847 - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",  
2848 - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="  
2849 - },  
2850 "oauth-sign": { 2522 "oauth-sign": {
2851 "version": "0.9.0", 2523 "version": "0.9.0",
2852 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 2524 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
2853 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 2525 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
2854 "dev": true 2526 "dev": true
2855 }, 2527 },
2856 - "object-assign": {  
2857 - "version": "4.1.1",  
2858 - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",  
2859 - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",  
2860 - "optional": true  
2861 - },  
2862 "object-copy": { 2528 "object-copy": {
2863 "version": "0.1.0", 2529 "version": "0.1.0",
2864 "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 2530 "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
@@ -2917,6 +2583,7 @@ @@ -2917,6 +2583,7 @@
2917 "version": "1.4.0", 2583 "version": "1.4.0",
2918 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2584 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2919 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2585 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
  2586 + "dev": true,
2920 "requires": { 2587 "requires": {
2921 "wrappy": "1" 2588 "wrappy": "1"
2922 } 2589 }
@@ -2926,11 +2593,6 @@ @@ -2926,11 +2593,6 @@
2926 "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", 2593 "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz",
2927 "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=" 2594 "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4="
2928 }, 2595 },
2929 - "optional": {  
2930 - "version": "0.1.4",  
2931 - "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",  
2932 - "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw=="  
2933 - },  
2934 "optionator": { 2596 "optionator": {
2935 "version": "0.8.2", 2597 "version": "0.8.2",
2936 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 2598 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
@@ -2945,12 +2607,6 @@ @@ -2945,12 +2607,6 @@
2945 "wordwrap": "~1.0.0" 2607 "wordwrap": "~1.0.0"
2946 } 2608 }
2947 }, 2609 },
2948 - "os-homedir": {  
2949 - "version": "1.0.2",  
2950 - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",  
2951 - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",  
2952 - "optional": true  
2953 - },  
2954 "os-tmpdir": { 2610 "os-tmpdir": {
2955 "version": "1.0.2", 2611 "version": "1.0.2",
2956 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2612 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -3127,38 +2783,6 @@ @@ -3127,38 +2783,6 @@
3127 "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 2783 "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
3128 "dev": true 2784 "dev": true
3129 }, 2785 },
3130 - "prebuild-install": {  
3131 - "version": "5.3.0",  
3132 - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.0.tgz",  
3133 - "integrity": "sha512-aaLVANlj4HgZweKttFNUVNRxDukytuIuxeK2boIMHjagNJCiVKWFsKF4tCE3ql3GbrD2tExPQ7/pwtEJcHNZeg==",  
3134 - "optional": true,  
3135 - "requires": {  
3136 - "detect-libc": "^1.0.3",  
3137 - "expand-template": "^2.0.3",  
3138 - "github-from-package": "0.0.0",  
3139 - "minimist": "^1.2.0",  
3140 - "mkdirp": "^0.5.1",  
3141 - "napi-build-utils": "^1.0.1",  
3142 - "node-abi": "^2.7.0",  
3143 - "noop-logger": "^0.1.1",  
3144 - "npmlog": "^4.0.1",  
3145 - "os-homedir": "^1.0.1",  
3146 - "pump": "^2.0.1",  
3147 - "rc": "^1.2.7",  
3148 - "simple-get": "^2.7.0",  
3149 - "tar-fs": "^1.13.0",  
3150 - "tunnel-agent": "^0.6.0",  
3151 - "which-pm-runs": "^1.0.0"  
3152 - },  
3153 - "dependencies": {  
3154 - "expand-template": {  
3155 - "version": "2.0.3",  
3156 - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",  
3157 - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",  
3158 - "optional": true  
3159 - }  
3160 - }  
3161 - },  
3162 "prelude-ls": { 2786 "prelude-ls": {
3163 "version": "1.1.2", 2787 "version": "1.1.2",
3164 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2788 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
@@ -3182,26 +2806,6 @@ @@ -3182,26 +2806,6 @@
3182 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2806 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
3183 "dev": true 2807 "dev": true
3184 }, 2808 },
3185 - "protobufjs": {  
3186 - "version": "6.8.8",  
3187 - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz",  
3188 - "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==",  
3189 - "requires": {  
3190 - "@protobufjs/aspromise": "^1.1.2",  
3191 - "@protobufjs/base64": "^1.1.2",  
3192 - "@protobufjs/codegen": "^2.0.4",  
3193 - "@protobufjs/eventemitter": "^1.1.0",  
3194 - "@protobufjs/fetch": "^1.1.0",  
3195 - "@protobufjs/float": "^1.0.2",  
3196 - "@protobufjs/inquire": "^1.1.0",  
3197 - "@protobufjs/path": "^1.1.2",  
3198 - "@protobufjs/pool": "^1.1.0",  
3199 - "@protobufjs/utf8": "^1.1.0",  
3200 - "@types/long": "^4.0.0",  
3201 - "@types/node": "^10.1.0",  
3202 - "long": "^4.0.0"  
3203 - }  
3204 - },  
3205 "pseudomap": { 2809 "pseudomap": {
3206 "version": "1.0.2", 2810 "version": "1.0.2",
3207 "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2811 "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -3220,16 +2824,6 @@ @@ -3220,16 +2824,6 @@
3220 "integrity": "sha512-vL6NLxNHzkNTjGJUpMm5PLC+94/0tTlC1vkP9bdU0pOHih+EujMjgMTwfZopZvHWRFbqJ5Y73OMoau50PewDDA==", 2824 "integrity": "sha512-vL6NLxNHzkNTjGJUpMm5PLC+94/0tTlC1vkP9bdU0pOHih+EujMjgMTwfZopZvHWRFbqJ5Y73OMoau50PewDDA==",
3221 "dev": true 2825 "dev": true
3222 }, 2826 },
3223 - "pump": {  
3224 - "version": "2.0.1",  
3225 - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",  
3226 - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",  
3227 - "optional": true,  
3228 - "requires": {  
3229 - "end-of-stream": "^1.1.0",  
3230 - "once": "^1.3.1"  
3231 - }  
3232 - },  
3233 "punycode": { 2827 "punycode": {
3234 "version": "2.1.1", 2828 "version": "2.1.1",
3235 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2829 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
@@ -3246,6 +2840,7 @@ @@ -3246,6 +2840,7 @@
3246 "version": "1.2.8", 2840 "version": "1.2.8",
3247 "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2841 "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
3248 "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2842 "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
  2843 + "dev": true,
3249 "requires": { 2844 "requires": {
3250 "deep-extend": "^0.6.0", 2845 "deep-extend": "^0.6.0",
3251 "ini": "~1.3.0", 2846 "ini": "~1.3.0",
@@ -3389,11 +2984,6 @@ @@ -3389,11 +2984,6 @@
3389 "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 2984 "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
3390 "dev": true 2985 "dev": true
3391 }, 2986 },
3392 - "retry": {  
3393 - "version": "0.10.1",  
3394 - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",  
3395 - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q="  
3396 - },  
3397 "safe-buffer": { 2987 "safe-buffer": {
3398 "version": "5.1.2", 2988 "version": "5.1.2",
3399 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2989 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -3428,12 +3018,6 @@ @@ -3428,12 +3018,6 @@
3428 "semver": "^5.0.3" 3018 "semver": "^5.0.3"
3429 } 3019 }
3430 }, 3020 },
3431 - "set-blocking": {  
3432 - "version": "2.0.0",  
3433 - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",  
3434 - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",  
3435 - "optional": true  
3436 - },  
3437 "set-value": { 3021 "set-value": {
3438 "version": "2.0.0", 3022 "version": "2.0.0",
3439 "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", 3023 "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
@@ -3475,24 +3059,8 @@ @@ -3475,24 +3059,8 @@
3475 "signal-exit": { 3059 "signal-exit": {
3476 "version": "3.0.2", 3060 "version": "3.0.2",
3477 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 3061 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
3478 - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="  
3479 - },  
3480 - "simple-concat": {  
3481 - "version": "1.0.0",  
3482 - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",  
3483 - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",  
3484 - "optional": true  
3485 - },  
3486 - "simple-get": {  
3487 - "version": "2.8.1",  
3488 - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz",  
3489 - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==",  
3490 - "optional": true,  
3491 - "requires": {  
3492 - "decompress-response": "^3.3.0",  
3493 - "once": "^1.3.1",  
3494 - "simple-concat": "^1.0.0"  
3495 - } 3062 + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
  3063 + "dev": true
3496 }, 3064 },
3497 "simple-swizzle": { 3065 "simple-swizzle": {
3498 "version": "0.2.2", 3066 "version": "0.2.2",
@@ -3615,25 +3183,6 @@ @@ -3615,25 +3183,6 @@
3615 } 3183 }
3616 } 3184 }
3617 }, 3185 },
3618 - "snappy": {  
3619 - "version": "6.2.3",  
3620 - "resolved": "https://registry.npmjs.org/snappy/-/snappy-6.2.3.tgz",  
3621 - "integrity": "sha512-HZpVoIxMfQ4fL3iDuMdI1R5xycw1o9YDCAndTKZCY/EHRoKFvzwplttuBBVGeEg2fd1hYiwAXos/sM24W7N1LA==",  
3622 - "optional": true,  
3623 - "requires": {  
3624 - "bindings": "^1.3.1",  
3625 - "nan": "^2.14.0",  
3626 - "prebuild-install": "^5.2.2"  
3627 - },  
3628 - "dependencies": {  
3629 - "nan": {  
3630 - "version": "2.14.0",  
3631 - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",  
3632 - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",  
3633 - "optional": true  
3634 - }  
3635 - }  
3636 - },  
3637 "source-map": { 3186 "source-map": {
3638 "version": "0.5.7", 3187 "version": "0.5.7",
3639 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3188 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -3725,16 +3274,6 @@ @@ -3725,16 +3274,6 @@
3725 "readable-stream": "^2.1.4" 3274 "readable-stream": "^2.1.4"
3726 } 3275 }
3727 }, 3276 },
3728 - "string-width": {  
3729 - "version": "1.0.2",  
3730 - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",  
3731 - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",  
3732 - "requires": {  
3733 - "code-point-at": "^1.0.0",  
3734 - "is-fullwidth-code-point": "^1.0.0",  
3735 - "strip-ansi": "^3.0.0"  
3736 - }  
3737 - },  
3738 "string_decoder": { 3277 "string_decoder": {
3739 "version": "1.1.1", 3278 "version": "1.1.1",
3740 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3279 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -3743,14 +3282,6 @@ @@ -3743,14 +3282,6 @@
3743 "safe-buffer": "~5.1.0" 3282 "safe-buffer": "~5.1.0"
3744 } 3283 }
3745 }, 3284 },
3746 - "strip-ansi": {  
3747 - "version": "3.0.1",  
3748 - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",  
3749 - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",  
3750 - "requires": {  
3751 - "ansi-regex": "^2.0.0"  
3752 - }  
3753 - },  
3754 "strip-eof": { 3285 "strip-eof": {
3755 "version": "1.0.0", 3286 "version": "1.0.0",
3756 "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 3287 "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
@@ -3760,7 +3291,8 @@ @@ -3760,7 +3291,8 @@
3760 "strip-json-comments": { 3291 "strip-json-comments": {
3761 "version": "2.0.1", 3292 "version": "2.0.1",
3762 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 3293 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
3763 - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 3294 + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
  3295 + "dev": true
3764 }, 3296 },
3765 "supports-color": { 3297 "supports-color": {
3766 "version": "5.5.0", 3298 "version": "5.5.0",
@@ -3771,57 +3303,6 @@ @@ -3771,57 +3303,6 @@
3771 "has-flag": "^3.0.0" 3303 "has-flag": "^3.0.0"
3772 } 3304 }
3773 }, 3305 },
3774 - "tar-fs": {  
3775 - "version": "1.16.3",  
3776 - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",  
3777 - "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",  
3778 - "optional": true,  
3779 - "requires": {  
3780 - "chownr": "^1.0.1",  
3781 - "mkdirp": "^0.5.1",  
3782 - "pump": "^1.0.0",  
3783 - "tar-stream": "^1.1.2"  
3784 - },  
3785 - "dependencies": {  
3786 - "pump": {  
3787 - "version": "1.0.3",  
3788 - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",  
3789 - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",  
3790 - "optional": true,  
3791 - "requires": {  
3792 - "end-of-stream": "^1.1.0",  
3793 - "once": "^1.3.1"  
3794 - }  
3795 - }  
3796 - }  
3797 - },  
3798 - "tar-stream": {  
3799 - "version": "1.6.2",  
3800 - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",  
3801 - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",  
3802 - "optional": true,  
3803 - "requires": {  
3804 - "bl": "^1.0.0",  
3805 - "buffer-alloc": "^1.2.0",  
3806 - "end-of-stream": "^1.0.0",  
3807 - "fs-constants": "^1.0.0",  
3808 - "readable-stream": "^2.3.0",  
3809 - "to-buffer": "^1.1.1",  
3810 - "xtend": "^4.0.0"  
3811 - },  
3812 - "dependencies": {  
3813 - "bl": {  
3814 - "version": "1.2.2",  
3815 - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",  
3816 - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",  
3817 - "optional": true,  
3818 - "requires": {  
3819 - "readable-stream": "^2.3.5",  
3820 - "safe-buffer": "^5.1.1"  
3821 - }  
3822 - }  
3823 - }  
3824 - },  
3825 "term-size": { 3306 "term-size": {
3826 "version": "1.2.0", 3307 "version": "1.2.0",
3827 "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", 3308 "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
@@ -3848,12 +3329,6 @@ @@ -3848,12 +3329,6 @@
3848 "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", 3329 "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
3849 "dev": true 3330 "dev": true
3850 }, 3331 },
3851 - "to-buffer": {  
3852 - "version": "1.1.1",  
3853 - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",  
3854 - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",  
3855 - "optional": true  
3856 - },  
3857 "to-object-path": { 3332 "to-object-path": {
3858 "version": "0.3.0", 3333 "version": "0.3.0",
3859 "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 3334 "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
@@ -3923,11 +3398,6 @@ @@ -3923,11 +3398,6 @@
3923 } 3398 }
3924 } 3399 }
3925 }, 3400 },
3926 - "traverse": {  
3927 - "version": "0.3.9",  
3928 - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",  
3929 - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk="  
3930 - },  
3931 "triple-beam": { 3401 "triple-beam": {
3932 "version": "1.3.0", 3402 "version": "1.3.0",
3933 "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", 3403 "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
@@ -3937,6 +3407,7 @@ @@ -3937,6 +3407,7 @@
3937 "version": "0.6.0", 3407 "version": "0.6.0",
3938 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 3408 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
3939 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 3409 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
  3410 + "dev": true,
3940 "requires": { 3411 "requires": {
3941 "safe-buffer": "^5.0.1" 3412 "safe-buffer": "^5.0.1"
3942 } 3413 }
@@ -4140,7 +3611,8 @@ @@ -4140,7 +3611,8 @@
4140 "uuid": { 3611 "uuid": {
4141 "version": "3.3.2", 3612 "version": "3.3.2",
4142 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", 3613 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
4143 - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" 3614 + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
  3615 + "dev": true
4144 }, 3616 },
4145 "uuid-parse": { 3617 "uuid-parse": {
4146 "version": "1.0.0", 3618 "version": "1.0.0",
@@ -4167,21 +3639,6 @@ @@ -4167,21 +3639,6 @@
4167 "isexe": "^2.0.0" 3639 "isexe": "^2.0.0"
4168 } 3640 }
4169 }, 3641 },
4170 - "which-pm-runs": {  
4171 - "version": "1.0.0",  
4172 - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz",  
4173 - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=",  
4174 - "optional": true  
4175 - },  
4176 - "wide-align": {  
4177 - "version": "1.1.3",  
4178 - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",  
4179 - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",  
4180 - "optional": true,  
4181 - "requires": {  
4182 - "string-width": "^1.0.2 || 2"  
4183 - }  
4184 - },  
4185 "widest-line": { 3642 "widest-line": {
4186 "version": "2.0.1", 3643 "version": "2.0.1",
4187 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", 3644 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
@@ -4281,7 +3738,8 @@ @@ -4281,7 +3738,8 @@
4281 "wrappy": { 3738 "wrappy": {
4282 "version": "1.0.2", 3739 "version": "1.0.2",
4283 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3740 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
4284 - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3741 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
  3742 + "dev": true
4285 }, 3743 },
4286 "write-file-atomic": { 3744 "write-file-atomic": {
4287 "version": "2.3.0", 3745 "version": "2.3.0",
@@ -4300,12 +3758,6 @@ @@ -4300,12 +3758,6 @@
4300 "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", 3758 "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
4301 "dev": true 3759 "dev": true
4302 }, 3760 },
4303 - "xtend": {  
4304 - "version": "4.0.2",  
4305 - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",  
4306 - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",  
4307 - "optional": true  
4308 - },  
4309 "yallist": { 3761 "yallist": {
4310 "version": "3.0.3", 3762 "version": "3.0.3",
4311 "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", 3763 "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
@@ -6,18 +6,16 @@ @@ -6,18 +6,16 @@
6 "main": "server.js", 6 "main": "server.js",
7 "bin": "server.js", 7 "bin": "server.js",
8 "scripts": { 8 "scripts": {
9 - "build-proto": "pbjs -t static-module -w commonjs -o ./api/jsinvoke.proto.js ../../application/src/main/proto/jsinvoke.proto",  
10 - "install": "npm run build-proto && pkg -t node10-linux-x64,node10-win-x64 --out-path ./target . && node install.js", 9 + "install": "pkg -t node10-linux-x64,node10-win-x64 --out-path ./target . && node install.js",
11 "test": "echo \"Error: no test specified\" && exit 1", 10 "test": "echo \"Error: no test specified\" && exit 1",
12 - "start": "npm run build-proto && nodemon server.js",  
13 - "start-prod": "npm run build-proto && NODE_ENV=production nodemon server.js" 11 + "start": "nodemon server.js",
  12 + "start-prod": "NODE_ENV=production nodemon server.js"
14 }, 13 },
15 "dependencies": { 14 "dependencies": {
16 "config": "^3.2.2", 15 "config": "^3.2.2",
17 "js-yaml": "^3.12.0", 16 "js-yaml": "^3.12.0",
18 - "kafka-node": "^4.1.3", 17 + "kafkajs": "^1.11.0",
19 "long": "^4.0.0", 18 "long": "^4.0.0",
20 - "protobufjs": "^6.8.8",  
21 "uuid-parse": "^1.0.0", 19 "uuid-parse": "^1.0.0",
22 "winston": "^3.0.0", 20 "winston": "^3.0.0",
23 "winston-daily-rotate-file": "^3.2.1" 21 "winston-daily-rotate-file": "^3.2.1"
@@ -13,14 +13,17 @@ @@ -13,14 +13,17 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
  16 +
  17 +const { logLevel, Kafka } = require('kafkajs');
  18 +
16 const config = require('config'), 19 const config = require('config'),
17 - kafka = require('kafka-node'),  
18 - ConsumerGroup = kafka.ConsumerGroup,  
19 - Producer = kafka.Producer,  
20 JsInvokeMessageProcessor = require('./api/jsInvokeMessageProcessor'), 20 JsInvokeMessageProcessor = require('./api/jsInvokeMessageProcessor'),
21 - logger = require('./config/logger')('main'); 21 + logger = require('./config/logger')._logger('main'),
  22 + KafkaJsWinstonLogCreator = require('./config/logger').KafkaJsWinstonLogCreator;
22 23
23 var kafkaClient; 24 var kafkaClient;
  25 +var consumer;
  26 +var producer;
24 27
25 (async() => { 28 (async() => {
26 try { 29 try {
@@ -32,49 +35,24 @@ var kafkaClient; @@ -32,49 +35,24 @@ var kafkaClient;
32 logger.info('Kafka Bootstrap Servers: %s', kafkaBootstrapServers); 35 logger.info('Kafka Bootstrap Servers: %s', kafkaBootstrapServers);
33 logger.info('Kafka Requests Topic: %s', kafkaRequestTopic); 36 logger.info('Kafka Requests Topic: %s', kafkaRequestTopic);
34 37
35 - kafkaClient = new kafka.KafkaClient({kafkaHost: kafkaBootstrapServers});  
36 -  
37 - var consumer = new ConsumerGroup(  
38 - {  
39 - kafkaHost: kafkaBootstrapServers,  
40 - groupId: 'js-executor-group',  
41 - autoCommit: true,  
42 - encoding: 'buffer'  
43 - },  
44 - kafkaRequestTopic  
45 - );  
46 -  
47 - consumer.on('error', (err) => {  
48 - logger.error('Unexpected kafka consumer error: %s', err.message);  
49 - logger.error(err.stack);  
50 - });  
51 -  
52 - consumer.on('offsetOutOfRange', (err) => {  
53 - logger.error('Offset out of range error: %s', err.message);  
54 - logger.error(err.stack);  
55 - });  
56 -  
57 - consumer.on('rebalancing', () => {  
58 - logger.info('Rebalancing event received.');  
59 - })  
60 -  
61 - consumer.on('rebalanced', () => {  
62 - logger.info('Rebalanced event received.');  
63 - });  
64 -  
65 - var producer = new Producer(kafkaClient);  
66 - producer.on('error', (err) => {  
67 - logger.error('Unexpected kafka producer error: %s', err.message);  
68 - logger.error(err.stack); 38 + kafkaClient = new Kafka({
  39 + brokers: kafkaBootstrapServers.split(','),
  40 + logLevel: logLevel.INFO,
  41 + logCreator: KafkaJsWinstonLogCreator
69 }); 42 });
70 43
71 - var messageProcessor = new JsInvokeMessageProcessor(producer); 44 + consumer = kafkaClient.consumer({ groupId: 'js-executor-group' });
  45 + producer = kafkaClient.producer();
  46 + const messageProcessor = new JsInvokeMessageProcessor(producer);
  47 + await consumer.connect();
  48 + await producer.connect();
  49 + await consumer.subscribe({ topic: kafkaRequestTopic});
72 50
73 - producer.on('ready', () => {  
74 - consumer.on('message', (message) => { 51 + logger.info('Started ThingsBoard JavaScript Executor Microservice.');
  52 + await consumer.run({
  53 + eachMessage: async ({ topic, partition, message }) => {
75 messageProcessor.onJsInvokeMessage(message); 54 messageProcessor.onJsInvokeMessage(message);
76 - });  
77 - logger.info('Started ThingsBoard JavaScript Executor Microservice.'); 55 + },
78 }); 56 });
79 57
80 } catch (e) { 58 } catch (e) {
@@ -84,21 +62,41 @@ var kafkaClient; @@ -84,21 +62,41 @@ var kafkaClient;
84 } 62 }
85 })(); 63 })();
86 64
87 -process.on('exit', function () { 65 +process.on('exit', () => {
88 exit(0); 66 exit(0);
89 }); 67 });
90 68
91 -function exit(status) { 69 +async function exit(status) {
92 logger.info('Exiting with status: %d ...', status); 70 logger.info('Exiting with status: %d ...', status);
93 - if (kafkaClient) {  
94 - logger.info('Stopping Kafka Client...');  
95 - var _kafkaClient = kafkaClient;  
96 - kafkaClient = null;  
97 - _kafkaClient.close(() => {  
98 - logger.info('Kafka Client stopped.'); 71 + if (consumer) {
  72 + logger.info('Stopping Kafka Consumer...');
  73 + var _consumer = consumer;
  74 + consumer = null;
  75 + try {
  76 + await _consumer.disconnect();
  77 + logger.info('Kafka Consumer stopped.');
  78 + await disconnectProducer();
99 process.exit(status); 79 process.exit(status);
100 - }); 80 + } catch (e) {
  81 + logger.info('Kafka Consumer stop error.');
  82 + await disconnectProducer();
  83 + process.exit(status);
  84 + }
101 } else { 85 } else {
102 process.exit(status); 86 process.exit(status);
103 } 87 }
104 } 88 }
  89 +
  90 +async function disconnectProducer() {
  91 + if (producer) {
  92 + logger.info('Stopping Kafka Producer...');
  93 + var _producer = producer;
  94 + producer = null;
  95 + try {
  96 + await _producer.disconnect();
  97 + logger.info('Kafka Producer stopped.');
  98 + } catch (e) {
  99 + logger.info('Kafka Producer stop error.');
  100 + }
  101 + }
  102 +}