diff --git a/README.md b/README.md index b1c83a390..937807812 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ Hyperledger Explorer is a simple, powerful, easy-to-use, well maintained, open s - [10.0 Build Hyperledger Explorer ](#Build-Hyperledger-Explorer) - [10.1 Optional: Configure Hyperledger Explorer for HTTPS ](#Configure-Hyperledger-Explorer-for-HTTPS) - [11.0 Run Hyperledger Explorer ](#Run-Hyperledger-Explorer) + - [11.1 Configuration of logging ](#Run-Hyperledger-Explorer-Logging) - [12.0 Optional: Run Hyperledger Explorer Using Docker ](#Run-Hyperledger-Explorer-using-Docker) - [12.1 Docker Repository ](#Docker-Repository) - [12.2 Run Hyperledger Explorer Using Docker Compose ](#Run-Hyperledger-Explorer-using-Docker-Compose) @@ -401,7 +402,24 @@ From new terminal (if Sync Process in Standalone). - If the Hyperledger Explorer was used previously in your browser be sure to clear the cache before relaunching. - If Hyperledger Fabric network is deployed on other machine, please toggle DISCOVERY_AS_LOCALHOST in start.sh / syncstart.sh to 'false'. + +# 11.1 Configuration of logging + +By using the following environmet variables, you can control log level of each component (app, db and console). You can set these `ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < MARK < OFF` string to each level. Each file is rolled by both date (7days) and size (8MB). + +* LOG_LEVEL_APP + * Log level regarding application layer. The logs are written to `logs/app/app.log`. + * default `DEBUG` +* LOG_LEVEL_DB + * Log level regarding backend layer. The logs are written to `logs/db/db.log`. + * default `DEBUG` +* LOG_LEVEL_CONSOLE + * Log level regarding console. The logs are written to `logs/console/console.log`. + * default `INFO` +* LOG_CONSOLE_STDOUT + * You can switch the destination of console log from file to standard output. + * default `false` diff --git a/app/common/helper.js b/app/common/helper.js index 844144195..210d265b7 100644 --- a/app/common/helper.js +++ b/app/common/helper.js @@ -20,10 +20,9 @@ const log4js = require('log4js/lib/log4js'); -const appList = []; - const path = require('path'); const fs = require('fs-extra'); +const yn = require('yn'); exports.getLogger = getLogger; exports.readAllFiles = readAllFiles; @@ -64,46 +63,71 @@ function readAllFiles(dir) { * @returns */ function getLogger(moduleName) { - let logger; - - if (moduleName === 'PgService') { - logger = log4js.getLogger('PgService'); - } else { - appList.push(moduleName); - logger = log4js.getLogger(moduleName); - } + const logger = log4js.getLogger(moduleName); let appLog = 'logs/app/app.log'; let dbLog = 'logs/db/db.log'; + let consoleLog = 'logs/console/console.log'; if (process.env.SYNC_LOG_PATH) { appLog = `${process.env.SYNC_LOG_PATH}/app/app.log`; dbLog = `${process.env.SYNC_LOG_PATH}/db/db.log`; + consoleLog = `${process.env.SYNC_LOG_PATH}/console/console.log`; } - fs.ensureFileSync(appLog); - fs.ensureFileSync(dbLog); + let appLevel = 'debug'; + let dbLevel = 'debug'; + let consoleLevel = 'info'; + + if (process.env.LOG_LEVEL_APP) { + appLevel = process.env.LOG_LEVEL_APP; + } + if (process.env.LOG_LEVEL_DB) { + dbLevel = process.env.LOG_LEVEL_DB; + } + if (process.env.LOG_LEVEL_CONSOLE) { + consoleLevel = process.env.LOG_LEVEL_CONSOLE; + } - log4js.configure({ - appenders: [ - { + const logConfig = { + appenders: { + app: { type: 'dateFile', filename: appLog, - // eslint-disable-next-line spellcheck/spell-checker - pattern: '-yyyy-MM-dd', - category: appList + maxLogSize: 8 * 1024 * 1024, + daysToKeep: 7 }, - { + db: { type: 'dateFile', filename: dbLog, - // eslint-disable-next-line spellcheck/spell-checker - pattern: '-yyyy-MM-dd', - category: ['PgService'] + maxLogSize: 8 * 1024 * 1024, + daysToKeep: 7 + }, + console: { + type: 'dateFile', + filename: consoleLog, + maxLogSize: 8 * 1024 * 1024, + daysToKeep: 7 + }, + consoleFilter: { + type: 'logLevelFilter', + appender: 'console', + level: consoleLevel } - ] - }); + }, + categories: { + default: { appenders: ['consoleFilter', 'app'], level: appLevel }, + PgService: { appenders: ['consoleFilter', 'db'], level: dbLevel } + } + }; + + if (process.env.LOG_CONSOLE_STDOUT) { + if (yn(process.env.LOG_CONSOLE_STDOUT)) { + logConfig.appenders.console = { type: 'console' }; + } + } - logger.setLevel('DEBUG'); + log4js.configure(logConfig); return logger; } diff --git a/app/persistence/fabric/CRUDService.js b/app/persistence/fabric/CRUDService.js index 9725eff6d..8602c0720 100644 --- a/app/persistence/fabric/CRUDService.js +++ b/app/persistence/fabric/CRUDService.js @@ -82,7 +82,7 @@ class CRUDService { } logger.debug('getTxList.byOrgs ', byOrgs); - console.debug('getTxList.byOrgs ', byOrgs); + logger.debug('getTxList.byOrgs ', byOrgs); const sqlTxListByOrgs = ` select t.creator_msp_id,t.txhash,t.type,t.chaincodename,t.createdt,channel.name as channelName from transactions as t inner join channel on t.channel_genesis_hash=channel.channel_genesis_hash where t.blockid >= ${blockNum} and t.id >= ${txid} and t.creator_msp_id in (${orgs}) and @@ -118,7 +118,7 @@ class CRUDService { } logger.debug('getBlockAndTxList.byOrgs ', byOrgs); - console.debug('getBlockAndTxList.byOrgs ', byOrgs); + logger.debug('getBlockAndTxList.byOrgs ', byOrgs); const sqlBlockTxList = `select a.* from ( select (select c.name from channel c where c.channel_genesis_hash = diff --git a/app/persistence/fabric/MetricService.js b/app/persistence/fabric/MetricService.js index 7a1c2c47b..ee83c9e72 100644 --- a/app/persistence/fabric/MetricService.js +++ b/app/persistence/fabric/MetricService.js @@ -131,7 +131,7 @@ class MetricService { as channel_genesis_hash,c.path as path ,txcount as c from chaincodes as c inner join channel on c.channel_genesis_hash=channel.channel_genesis_hash where c.channel_genesis_hash='${channel_genesis_hash}' `); if (c) { c.forEach((item, index) => { - console.debug(' item ------------> ', item); + logger.debug(' item ------------> ', item); txArray.push({ chaincodename: item.chaincodename, channelName: item.channelname, diff --git a/app/persistence/postgreSQL/PgService.js b/app/persistence/postgreSQL/PgService.js index 45ea8ea90..bb2195eb5 100644 --- a/app/persistence/postgreSQL/PgService.js +++ b/app/persistence/postgreSQL/PgService.js @@ -79,10 +79,6 @@ class PgService { logger.info(`connecting to Postgresql ${connectionString}`); this.client = new Client(this.pgconfig); - - logger.info( - 'Please set logger.setLevel to DEBUG in ./app/helper.js to log the debugging.' - ); } /** @@ -93,7 +89,7 @@ class PgService { async handleDisconnect() { try { this.client.on('error', err => { - console.log('db error', err); + logger.error('db error', err); if (err.code === 'PROTOCOL_CONNECTION_LOST') { this.handleDisconnect(); } else { @@ -108,7 +104,7 @@ class PgService { * To avoid a hot loop, and to allow our node script to * Process asynchronous requests in the meantime. */ - console.log('error when connecting to db:', err); + logger.error('error when connecting to db:', err); setTimeout(this.handleDisconnect, 2000); } } @@ -163,7 +159,6 @@ class PgService { _self.client.query(addSql, addSqlParams, (err, res) => { if (err) { logger.error('[INSERT ERROR] - ', err.message); - console.log(err.stack); reject(err); return; } @@ -173,7 +168,7 @@ class PgService { ); // Console.log('INSERT ID:', res.rows[0].id); logger.debug( - '-----------------------------------------------------------------\n\n' + '-----------------------------------------------------------------' ); resolve(res.rows[0].id); @@ -218,7 +213,6 @@ class PgService { const addSql = ` UPDATE ${tablename} set ${updateParmsStr} WHERE ${pkName} = ${pkValue} RETURNING *`; logger.debug(`update sql is ${addSql}`); - console.log(`update sql is ${addSql}`); _self.client.query(addSql, addSqlParams, (err, res) => { if (err) { logger.error('[INSERT ERROR] - ', err.message); @@ -276,7 +270,6 @@ class PgService { const addSql = ` UPDATE ${tablename} set ${updateParmsStr} WHERE ${updatewhereparm} RETURNING * `; logger.debug(`update sql is ${addSql}`); - console.log(`update sql is ${addSql}`); _self.client.query(addSql, addSqlParams, (err, res) => { if (err) { logger.error('[INSERT ERROR] - ', err.message); @@ -528,7 +521,6 @@ class PgService { return; } - // console.log( `The solution is: ${rows.length } ` ); logger.debug(` the getRowsBySQlNoCondition ${sql}`); if (res && res.rows) { diff --git a/app/platform/fabric/FabricClient.js b/app/platform/fabric/FabricClient.js index ac5dc6b6f..ca010dc7c 100644 --- a/app/platform/fabric/FabricClient.js +++ b/app/platform/fabric/FabricClient.js @@ -172,7 +172,7 @@ class FabricClient { this.defaultOrderer.getName() ); } else if (persistence) { - console.log('\n ********* call to initializeDetachClient **********'); + logger.info('********* call to initializeDetachClient **********'); this.initializeDetachClient(this.client_config, persistence); } } @@ -186,7 +186,7 @@ class FabricClient { */ async initializeDetachClient(client_config, persistence) { const name = client_config.name; - console.debug( + logger.debug( 'initializeDetachClient --> client_config ', client_config, ' name ', @@ -200,14 +200,14 @@ class FabricClient { this.userName = fabricConfig.getAdminUser(); const peers = fabricConfig.getPeersConfig(); - console.log('initializeDetachClient, network config) ', config); - console.log( - '\n************************************* initializeDetachClient *************************************************' + logger.info('initializeDetachClient, network config) ', config); + logger.info( + '************************************* initializeDetachClient *************************************************' ); - console.log('Error :', explorer_mess.error.ERROR_1009); - console.log('Info : ', explorer_mess.message.MESSAGE_1001); - console.log( - '************************************** initializeDetachClient ************************************************\n' + logger.info('Error :', explorer_mess.error.ERROR_1009); + logger.info('Info : ', explorer_mess.message.MESSAGE_1001); + logger.info( + '************************************** initializeDetachClient ************************************************' ); const defaultPeerConfig = fabricConfig.getDefaultPeerConfig(); const default_peer_name = defaultPeerConfig.name; @@ -250,14 +250,13 @@ class FabricClient { } } catch (e) { logger.error(e); - console.error(e); } } try { newchannel.getPeer(default_peer_name); } catch (e) { - console.error( + logger.error( 'Failed to connect to default peer: ', default_peer_name, ' \n', @@ -394,7 +393,7 @@ class FabricClient { ); // Setting channel_genesis_hash to map this.setChannelGenHash(channel_name, channel_genesis_hash); - console.debug( + logger.debug( 'Channel genesis hash for channel [%s] >> %s', channel_name, channel_genesis_hash @@ -414,7 +413,7 @@ class FabricClient { * @memberof FabricClient */ async initializeChannelFromDiscover(channel_name) { - console.debug('initializeChannelFromDiscover ', channel_name); + logger.debug('initializeChannelFromDiscover ', channel_name); let channel = this.hfc_client.getChannel(channel_name, false); if (!channel) { await this.initializeNewChannel(channel_name); @@ -466,25 +465,17 @@ class FabricClient { for (const msp_id in discover_results.orderers) { const endpoints = discover_results.orderers[msp_id].endpoints; for (const endpoint of endpoints) { - console.log(' FabricClient.discover_results endpoint ', endpoint); + logger.info(' FabricClient.discover_results endpoint ', endpoint); const discoveryProtocol = this.hfc_client.getConfigSetting( 'discovery-protocol' ); const requesturl = `${discoveryProtocol}://${endpoint.host}:` + endpoint.port; - console.log( - '\ninitializeChannelFromDiscover.discoveryProtocol ', - discoveryProtocol, - ' requesturl ', - requesturl, - '\n' - ); logger.debug( - '\ninitializeChannelFromDiscover.discoveryProtocol ', + 'initializeChannelFromDiscover.discoveryProtocol ', discoveryProtocol, ' requesturl ', - requesturl, - '\n' + requesturl ); this.newOrderer( @@ -641,7 +632,6 @@ class FabricClient { txId: this.getHFC_Client().newTransactionID(true) // Get an admin based transactionID }; const genesisBlock = await channel.getGenesisBlock(request); - // console.log(genesisBlock) return genesisBlock; } catch (error) { logger.error( diff --git a/app/platform/fabric/FabricConfig.js b/app/platform/fabric/FabricConfig.js index 11b88ec26..a7c6fae3f 100644 --- a/app/platform/fabric/FabricConfig.js +++ b/app/platform/fabric/FabricConfig.js @@ -3,6 +3,9 @@ */ const fs = require('fs'); +const helper = require('../../common/helper'); + +const logger = helper.getLogger('FabricConfig'); /** * @@ -61,7 +64,7 @@ class FabricConfig { * @memberof FabricConfig */ getTls() { - console.log('config.client.tlsEnable ', this.config.client.tlsEnable); + logger.info('config.client.tlsEnable ', this.config.client.tlsEnable); return this.config.client.tlsEnable; } @@ -115,7 +118,7 @@ class FabricConfig { let defChannel; for (const x in this.config.channels) { // Getting default channel - console.log('FabricConfig, this.config.channels ', x); + logger.info('FabricConfig, this.config.channels ', x); if (x) { defChannel = x; } diff --git a/app/platform/fabric/Platform.js b/app/platform/fabric/Platform.js index 3e2a3ce71..c6a6adf7f 100644 --- a/app/platform/fabric/Platform.js +++ b/app/platform/fabric/Platform.js @@ -64,7 +64,7 @@ class Platform { logger.debug( '******* Initialization started for hyperledger fabric platform ******' ); - console.debug( + logger.debug( '******* Initialization started for hyperledger fabric platform ******,', network_configs ); @@ -117,7 +117,7 @@ class Platform { * Create fabric explorer client for each * Each client is connected to only a single peer and monitor that particular peer only */ - console.log( + logger.info( ' client_configs.name ', client_configs.name, ' client_configs.profile ', @@ -135,14 +135,14 @@ class Platform { let client; if (clientstatus) { - console.log('FabricUtils.createFabricClient '); + logger.info('FabricUtils.createFabricClient '); client = await FabricUtils.createFabricClient( client_configs, client_name, this.persistence ); } else { - console.log('FabricUtils.createDetachClient '); + logger.info('FabricUtils.createDetachClient '); client = await FabricUtils.createDetachClient( client_configs, client_name, @@ -151,7 +151,7 @@ class Platform { } if (client) { // Set client into clients map - console.log('FabricUtils.createDetachClient '); + logger.info('FabricUtils.createDetachClient '); const clients = this.networks.get(network_name); clients.set(client_name, client); // Console.log('clients ', clients); @@ -170,7 +170,7 @@ class Platform { /* eslint-disable */ for (const [network_name, clients] of this.networks.entries()) { for (const [client_name, client] of clients.entries()) { - console.log( + logger.info( 'initializeListener, client_name, client ', client_name, client.client_config @@ -307,7 +307,7 @@ class Platform { * @memberof Platform */ async destroy() { - console.log( + logger.info( '<<<<<<<<<<<<<<<<<<<<<<<<<< Closing explorer >>>>>>>>>>>>>>>>>>>>>' ); for (const explorerListener of this.explorerListeners) { diff --git a/app/platform/fabric/e2e-test/feature/docker-compose/docker-compose-explorer.yaml b/app/platform/fabric/e2e-test/feature/docker-compose/docker-compose-explorer.yaml index 67d740850..efac346e6 100644 --- a/app/platform/fabric/e2e-test/feature/docker-compose/docker-compose-explorer.yaml +++ b/app/platform/fabric/e2e-test/feature/docker-compose/docker-compose-explorer.yaml @@ -34,6 +34,10 @@ services: - DATABASE_HOST=explorerdb.mynetwork.com - DATABASE_USERNAME=hppoc - DATABASE_PASSWD=password + - LOG_LEVEL_APP=debug + - LOG_LEVEL_DB=debug + - LOG_LEVEL_CONSOLE=info + - LOG_CONSOLE_STDOUT=true - DISCOVERY_AS_LOCALHOST=false volumes: - ./../explorer-configs/config-${NETWORK_PROFILE}.json:/opt/explorer/app/platform/fabric/config.json diff --git a/app/platform/fabric/gateway/FabricGateway.js b/app/platform/fabric/gateway/FabricGateway.js index 1336f73aa..68697473e 100644 --- a/app/platform/fabric/gateway/FabricGateway.js +++ b/app/platform/fabric/gateway/FabricGateway.js @@ -56,7 +56,7 @@ class FabricGateway { this.identityLabel = this.userName; this.FSWALLET = 'wallet/' + this.networkName; - const info = `\nLoading configuration ${this.config} \n`; + const info = `Loading configuration ${this.config}`; logger.debug(info.toUpperCase()); const peers = this.fabricConfig.getPeers(); @@ -73,7 +73,7 @@ class FabricGateway { signedCertPath } = this.fabricConfig.getOrganizationsConfig()); logger.log( - '\nsignedCertPath ', + 'signedCertPath ', signedCertPath, ' \nadminPrivateKeyPath ', adminPrivateKeyPath @@ -95,7 +95,7 @@ class FabricGateway { // Check to see if we've already enrolled the admin user. const adminExists = await this.wallet.exists(this.userName); if (adminExists) { - console.debug( + logger.debug( `An identity for the admin user: ${ this.userName } already exists in the wallet` @@ -143,7 +143,6 @@ class FabricGateway { this.client = this.gateway.getClient(); } catch (error) { logger.error(` ${error}`); - console.debug(error); throw new ExplorerError(explorer_mess.error.ERROR_1010); } } @@ -227,7 +226,6 @@ class FabricGateway { * Reason : no fabric running, check your network */ logger.error('Error instantiating FabricCAServices ', error); - console.dir('Error instantiating FabricCAServices ', error); // TODO decide how to proceed if error } return { @@ -238,7 +236,7 @@ class FabricGateway { async getIdentityInfo(label) { let identityInfo; - console.log('Searching for an identity with label: ', label); + logger.info('Searching for an identity with label: ', label); try { const list = await this.wallet.list(); identityInfo = list.filter(id => { diff --git a/app/platform/fabric/service/UserService.js b/app/platform/fabric/service/UserService.js index 0f41c8364..286e0f646 100644 --- a/app/platform/fabric/service/UserService.js +++ b/app/platform/fabric/service/UserService.js @@ -52,8 +52,7 @@ class UserService { if (clients.config && clients.config.client) { enableAuth = clients.config.client.enableAuthentication; if (typeof enableAuth !== 'undefined' && enableAuth !== null) { - logger.log(`Network: ${network_name} enableAuthentication ${enableAuth}`); - console.log( + logger.info( `Network: ${network_name} enableAuthentication ${enableAuth}` ); adminUser = clients.config.client.adminUser; diff --git a/app/platform/fabric/sync/FabricEvent.js b/app/platform/fabric/sync/FabricEvent.js index d9c0b733e..f9eae25c4 100644 --- a/app/platform/fabric/sync/FabricEvent.js +++ b/app/platform/fabric/sync/FabricEvent.js @@ -68,7 +68,6 @@ class FabricEvent { }, err => { logger.error('Block Event %s', err); - console.error(err); } ); this.connectChannelEventHub(channel.getName(), eventHub); @@ -106,7 +105,6 @@ class FabricEvent { } } catch (err) { logger.error('Failed to get the channel ', err); - console.error('Failed to get the channel ', err); } return false; } diff --git a/app/platform/fabric/sync/SyncPlatform.js b/app/platform/fabric/sync/SyncPlatform.js index 512ae0eb2..1029775da 100644 --- a/app/platform/fabric/sync/SyncPlatform.js +++ b/app/platform/fabric/sync/SyncPlatform.js @@ -80,8 +80,8 @@ class SyncPlatform { this.client_name = args[1]; } - console.log( - `\n${explorer_mess.message.MESSAGE_1002}`, + logger.info( + explorer_mess.message.MESSAGE_1002, this.network_name, this.client_name ); @@ -113,7 +113,7 @@ class SyncPlatform { } setInterval(() => { - console.log('Updating the client network and other details to DB'); + logger.info('Updating the client network and other details to DB'); this.syncService.synchNetworkConfigToDB(this.client); }, 30000); diff --git a/app/platform/fabric/sync/SyncService.js b/app/platform/fabric/sync/SyncService.js index 7f471b659..e237f4385 100644 --- a/app/platform/fabric/sync/SyncService.js +++ b/app/platform/fabric/sync/SyncService.js @@ -76,7 +76,7 @@ class SyncServices { } for (const [channel_name, channel] of channels.entries()) { - console.log( + logger.info( 'SyncServices.synchNetworkConfigToDB client ', client.client_name, ' channel_name ', @@ -256,7 +256,7 @@ class SyncServices { 'discovery-protocol' ); const requesturl = `${discoveryProtocol}://${orderer.host}:${orderer.port}`; - console.log( + logger.debug( 'insertNewOrderers discoveryProtocol ', discoveryProtocol, ' requesturl ', @@ -641,13 +641,13 @@ class SyncServices { const res = await this.persistence .getCrudService() .saveTransaction(transaction_row); - console.log('saveTransaction ', res); + logger.debug('saveTransaction ', res); } // Insert block - console.log('block_row.blocknum ', block_row.blocknum); + logger.info('block_row.blocknum ', block_row.blocknum); const status = await this.persistence.getCrudService().saveBlock(block_row); - console.debug('status ', status); + logger.debug('status ', status); if (status) { // Push last block @@ -670,7 +670,7 @@ class SyncServices { _self.platform.send(notify); } } else { - console.error('Failed to process the block %j', block); + logger.error('Failed to process the block %j', block); logger.error('Failed to process the block %j', block); } const index = blocksInProcess.indexOf(blockPro_key); @@ -747,7 +747,7 @@ function jsonObjSize(json) { break; } default: - console.log(typeof obj); + logger.debug(typeof obj); break; } } diff --git a/app/platform/fabric/utils/FabricUtils.js b/app/platform/fabric/utils/FabricUtils.js index fce3d3a13..8de48b5f6 100644 --- a/app/platform/fabric/utils/FabricUtils.js +++ b/app/platform/fabric/utils/FabricUtils.js @@ -225,7 +225,6 @@ function getPEMfromConfig(config) { result = utils.normalizeX509(result); } catch (e) { logger.error(e); - console.error(e); } } } diff --git a/app/rest/authroutes.js b/app/rest/authroutes.js index ece9fe1a7..06978a6b6 100644 --- a/app/rest/authroutes.js +++ b/app/rest/authroutes.js @@ -5,6 +5,9 @@ const passport = require('passport'); const { responder } = require('./requestutils'); +const helper = require('../common/helper'); + +const logger = helper.getLogger('Auth'); /** * @@ -37,7 +40,7 @@ const authroutes = async function(router, platform) { * curl -X POST -H 'Content-Type: routerlication/json' -d '{ 'user': '', 'password': '', 'network': '' }' -i 'http://:/login' */ router.post('/login', async (req, res, next) => { - console.log('req.body', req.body); + logger.debug('req.body', req.body); return passport.authenticate('local-login', (err, token, userData) => { if (err) { if (err.name === 'IncorrectCredentialsError') { diff --git a/docker-compose.yaml b/docker-compose.yaml index ee9335d73..085c50c53 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -37,6 +37,10 @@ services: - DATABASE_HOST=explorerdb.mynetwork.com - DATABASE_USERNAME=hppoc - DATABASE_PASSWD=password + - LOG_LEVEL_APP=debug + - LOG_LEVEL_DB=debug + - LOG_LEVEL_CONSOLE=info + - LOG_CONSOLE_STDOUT=true - DISCOVERY_AS_LOCALHOST=false volumes: - ./examples/net1/config.json:/opt/explorer/app/platform/fabric/config.json diff --git a/main.js b/main.js index 0b0053835..704c50d01 100644 --- a/main.js +++ b/main.js @@ -48,7 +48,7 @@ class Broadcaster extends WebSocket.Server { this.on('connection', function connection(ws, req) { const location = url.parse(req.url, true); this.on('message', message => { - console.log('received: %s, %s', location, message); + logger.info('received: %s, %s', location, message); }); }); } @@ -63,7 +63,6 @@ class Broadcaster extends WebSocket.Server { this.clients.forEach(client => { if (client.readyState === WebSocket.OPEN) { logger.debug('Broadcast >> %j', data); - console.log('Broadcast >> %j', data); client.send(JSON.stringify(data)); } }); @@ -102,7 +101,7 @@ async function startExplorer() { // = =========== web socket ==============// const sslPath = path.join(__dirname, sslCertsPath); - console.debug(sslEnabled, sslCertsPath, sslPath); + logger.debug(sslEnabled, sslCertsPath, sslPath); if (sslEnabled) { const options = { @@ -116,18 +115,13 @@ async function startExplorer() { const broadcaster = new Broadcaster(server); await explorer.initialize(broadcaster); explorer.getApp().use(express.static(path.join(__dirname, 'client/build'))); - logger.info( - 'Please set logger.setLevel to DEBUG in ./app/helper.js to log the debugging.' - ); + // ============= start server ======================= server.listen(port, () => { - console.log('\n'); - console.log( + logger.info( `Please open web browser to access :${protocol}://${host}:${port}/` ); - console.log('\n'); - console.log(`pid is ${process.pid}`); - console.log('\n'); + logger.info(`pid is ${process.pid}`); }); } @@ -148,17 +142,15 @@ server.on('connection', connection => { */ const shutDown = function(exitCode) { - console.log('Received kill signal, shutting down gracefully'); + logger.info('Received kill signal, shutting down gracefully'); server.close(() => { explorer.close(); - console.log('Closed out connections'); + logger.info('Closed out connections'); process.exit(exitCode); }); setTimeout(() => { - console.error( - 'Could not close connections in time, forcefully shutting down' - ); + logger.error('Could not close connections in time, forcefully shutting down'); explorer.close(); process.exit(1); }, 10000); @@ -168,22 +160,26 @@ const shutDown = function(exitCode) { }; process.on('unhandledRejection', up => { - console.log('<<<<<<<<<<<<<<<<<<<<<<<<<< Explorer Error >>>>>>>>>>>>>>>>>>>>>'); + logger.error( + '<<<<<<<<<<<<<<<<<<<<<<<<<< Explorer Error >>>>>>>>>>>>>>>>>>>>>' + ); if (up instanceof ExplorerError) { - console.log('Error : ', up.message); + logger.error('Error : ', up.message); } else { - console.log(up); + logger.error(up); } setTimeout(() => { shutDown(1); }, 2000); }); process.on('uncaughtException', up => { - console.log('<<<<<<<<<<<<<<<<<<<<<<<<<< Explorer Error >>>>>>>>>>>>>>>>>>>>>'); + logger.error( + '<<<<<<<<<<<<<<<<<<<<<<<<<< Explorer Error >>>>>>>>>>>>>>>>>>>>>' + ); if (up instanceof ExplorerError) { - console.log('Error : ', up.message); + logger.error('Error : ', up.message); } else { - console.log(up); + logger.error(up); } setTimeout(() => { shutDown(1); diff --git a/package-lock.json b/package-lock.json index 17e44fd6c..72f0e5c7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1081,6 +1081,15 @@ "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "damerau-levenshtein": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", @@ -1106,6 +1115,11 @@ "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", "dev": true }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -1342,6 +1356,35 @@ "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1834,6 +1877,21 @@ "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.0.0.tgz", "integrity": "sha512-dhT57wqxfqmkOi4HM7NuT4Gd7gbUgSK2ocG27Y6lwm8lbOAw9XQfeANawGq8wLDtlGPO1ZgDj0HmKsykTxfFAg==" }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -1992,19 +2050,23 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "aproba": { "version": "1.2.0", - "bundled": true + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { "version": "1.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -2012,11 +2074,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2024,50 +2088,61 @@ }, "chownr": { "version": "1.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" }, "code-point-at": { "version": "1.1.0", - "bundled": true + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "concat-map": { "version": "0.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "core-util-is": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "deep-extend": { "version": "0.6.0", - "bundled": true + "resolved": false, + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "delegates": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "detect-libc": { "version": "1.0.3", - "bundled": true + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -2081,25 +2156,29 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "iconv-lite": { "version": "0.4.23", - "bundled": true, + "resolved": false, + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "requires": { "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -2107,37 +2186,44 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "resolved": false, + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", - "bundled": true + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "bundled": true + "resolved": false, + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "minipass": { "version": "2.3.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2145,27 +2231,31 @@ }, "minizlib": { "version": "1.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "requires": { "minipass": "^2.2.1" } }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "bundled": true + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, "needle": { "version": "2.3.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-CaLXV3W8Vnbps8ZANqDGz7j4x7Yj1LW4TWF/TQuDfj7Cfx4nAPTvw98qgTevtto1oHDrh3pQkaODbqupXlsWTg==", "requires": { "debug": "^4.1.0", "iconv-lite": "^0.4.4", @@ -2174,20 +2264,23 @@ "dependencies": { "debug": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { "ms": "^2.1.1" } }, "ms": { "version": "2.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "node-pre-gyp": { "version": "0.13.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==", "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -2203,7 +2296,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -2211,11 +2305,13 @@ }, "npm-bundled": { "version": "1.0.6", - "bundled": true + "resolved": false, + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" }, "npm-packlist": { "version": "1.4.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -2223,7 +2319,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -2233,30 +2330,36 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "object-assign": { "version": "4.1.1", - "bundled": true + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -2264,15 +2367,18 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "process-nextick-args": { "version": "2.0.0", - "bundled": true + "resolved": false, + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "rc": { "version": "1.2.8", - "bundled": true, + "resolved": false, + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -2282,7 +2388,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": false, + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -2295,14 +2402,16 @@ }, "rimraf": { "version": "2.6.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { "glob": "^7.1.3" }, "dependencies": { "glob": { "version": "7.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2316,31 +2425,38 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "resolved": false, + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", - "bundled": true + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.4", - "bundled": true + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { "version": "5.7.0", - "bundled": true + "resolved": false, + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "set-blocking": { "version": "2.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "signal-exit": { "version": "3.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2349,25 +2465,29 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "tar": { "version": "4.4.8", - "bundled": true, + "resolved": false, + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", @@ -2380,22 +2500,26 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "wide-align": { "version": "1.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "yallist": { "version": "3.0.3", - "bundled": true + "resolved": false, + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" } } }, @@ -2473,19 +2597,23 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "aproba": { "version": "1.2.0", - "bundled": true + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { "version": "1.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -2493,11 +2621,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2505,50 +2635,61 @@ }, "chownr": { "version": "1.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" }, "code-point-at": { "version": "1.1.0", - "bundled": true + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "concat-map": { "version": "0.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "core-util-is": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "deep-extend": { "version": "0.6.0", - "bundled": true + "resolved": false, + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "delegates": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "detect-libc": { "version": "1.0.3", - "bundled": true + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -2562,25 +2703,29 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "iconv-lite": { "version": "0.4.23", - "bundled": true, + "resolved": false, + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "requires": { "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -2588,37 +2733,44 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "resolved": false, + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", - "bundled": true + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "bundled": true + "resolved": false, + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "minipass": { "version": "2.3.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2626,27 +2778,31 @@ }, "minizlib": { "version": "1.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "requires": { "minipass": "^2.2.1" } }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "bundled": true + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, "needle": { "version": "2.3.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-CaLXV3W8Vnbps8ZANqDGz7j4x7Yj1LW4TWF/TQuDfj7Cfx4nAPTvw98qgTevtto1oHDrh3pQkaODbqupXlsWTg==", "requires": { "debug": "^4.1.0", "iconv-lite": "^0.4.4", @@ -2655,20 +2811,23 @@ "dependencies": { "debug": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { "ms": "^2.1.1" } }, "ms": { "version": "2.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "node-pre-gyp": { "version": "0.13.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==", "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -2684,7 +2843,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -2692,11 +2852,13 @@ }, "npm-bundled": { "version": "1.0.6", - "bundled": true + "resolved": false, + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" }, "npm-packlist": { "version": "1.4.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -2704,7 +2866,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -2714,30 +2877,36 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "object-assign": { "version": "4.1.1", - "bundled": true + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -2745,15 +2914,18 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "process-nextick-args": { "version": "2.0.0", - "bundled": true + "resolved": false, + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "rc": { "version": "1.2.8", - "bundled": true, + "resolved": false, + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -2763,7 +2935,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": false, + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -2776,14 +2949,16 @@ }, "rimraf": { "version": "2.6.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { "glob": "^7.1.3" }, "dependencies": { "glob": { "version": "7.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2797,31 +2972,38 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "resolved": false, + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", - "bundled": true + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.4", - "bundled": true + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { "version": "5.7.0", - "bundled": true + "resolved": false, + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "set-blocking": { "version": "2.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "signal-exit": { "version": "3.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2830,25 +3012,29 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "tar": { "version": "4.4.8", - "bundled": true, + "resolved": false, + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", @@ -2861,22 +3047,26 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "wide-align": { "version": "1.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "yallist": { "version": "3.0.3", - "bundled": true + "resolved": false, + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" } } }, @@ -3645,19 +3835,23 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "aproba": { "version": "1.2.0", - "bundled": true + "resolved": false, + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { "version": "1.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -3665,11 +3859,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3677,50 +3873,61 @@ }, "chownr": { "version": "1.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" }, "code-point-at": { "version": "1.1.0", - "bundled": true + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "concat-map": { "version": "0.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "core-util-is": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "deep-extend": { "version": "0.6.0", - "bundled": true + "resolved": false, + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "delegates": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "detect-libc": { "version": "1.0.3", - "bundled": true + "resolved": false, + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -3734,25 +3941,29 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "iconv-lite": { "version": "0.4.23", - "bundled": true, + "resolved": false, + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "requires": { "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -3760,37 +3971,44 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "resolved": false, + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", - "bundled": true + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", - "bundled": true + "resolved": false, + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "minipass": { "version": "2.3.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3798,21 +4016,24 @@ }, "minizlib": { "version": "1.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "requires": { "minipass": "^2.2.1" } }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", - "bundled": true + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, @@ -3823,7 +4044,8 @@ }, "needle": { "version": "2.3.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-CaLXV3W8Vnbps8ZANqDGz7j4x7Yj1LW4TWF/TQuDfj7Cfx4nAPTvw98qgTevtto1oHDrh3pQkaODbqupXlsWTg==", "requires": { "debug": "^4.1.0", "iconv-lite": "^0.4.4", @@ -3832,20 +4054,23 @@ "dependencies": { "debug": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { "ms": "^2.1.1" } }, "ms": { "version": "2.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "node-pre-gyp": { "version": "0.13.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==", "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -3861,7 +4086,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -3869,11 +4095,13 @@ }, "npm-bundled": { "version": "1.0.6", - "bundled": true + "resolved": false, + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" }, "npm-packlist": { "version": "1.4.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -3881,7 +4109,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -3891,30 +4120,36 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "object-assign": { "version": "4.1.1", - "bundled": true + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -3922,15 +4157,18 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "process-nextick-args": { "version": "2.0.0", - "bundled": true + "resolved": false, + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "rc": { "version": "1.2.8", - "bundled": true, + "resolved": false, + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -3940,7 +4178,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": false, + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3953,14 +4192,16 @@ }, "rimraf": { "version": "2.6.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { "glob": "^7.1.3" }, "dependencies": { "glob": { "version": "7.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3974,31 +4215,38 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "resolved": false, + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", - "bundled": true + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.4", - "bundled": true + "resolved": false, + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { "version": "5.7.0", - "bundled": true + "resolved": false, + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "set-blocking": { "version": "2.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "signal-exit": { "version": "3.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4007,25 +4255,29 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "tar": { "version": "4.4.8", - "bundled": true, + "resolved": false, + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", @@ -4038,22 +4290,26 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "wide-align": { "version": "1.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "yallist": { "version": "3.0.3", - "bundled": true + "resolved": false, + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" } } }, @@ -5274,29 +5530,34 @@ } }, "log4js": { - "version": "0.6.38", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", - "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", - "requires": { - "readable-stream": "~1.0.2", - "semver": "~4.3.3" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.1.0.tgz", + "integrity": "sha512-fSCHMYsMJbHwfNTuMlopVVcfkKwIRLh5mpNZGB2oBbnSmr3yUTo4tL4xGBA0/q29xowlu96eTXGghJFNhPXMnA==", + "requires": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.3" }, "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "ms": "^2.1.1" } }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -5492,9 +5753,9 @@ "dev": true }, "nan": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "optional": true }, "nano": { @@ -5550,6 +5811,11 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -6416,6 +6682,11 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==" + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -6882,21 +7153,7 @@ "resolved": "https://registry.npmjs.org/stompjs/-/stompjs-2.3.3.tgz", "integrity": "sha1-NBeKx7uO4pTMXVVK2LUPf1RZ/Y4=", "requires": { - "websocket": "^1.0.28" - }, - "dependencies": { - "websocket": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.28.tgz", - "integrity": "sha512-00y/20/80P7H4bCYkzuuvvfDvh+dgtXi5kzDf3UcZwN6boTYaKvsrtZ5lIYm1Gsg48siMErd9M4zjSYfYFHTrA==", - "optional": true, - "requires": { - "debug": "^2.2.0", - "nan": "^2.11.0", - "typedarray-to-buffer": "^3.1.5", - "yaeti": "^0.0.6" - } - } + "websocket": "^1.0.31" } }, "stream-buffers": { @@ -6913,6 +7170,51 @@ "through": "~2.3.4" } }, + "streamroller": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.3.tgz", + "integrity": "sha512-AegmvQsscTRhHVO46PhCDerjIpxi7E+d2GxgUDu+nzw/HuLnUdxHWr6WQ+mVn/4iJgMKKFFdiUwFcFRDvcjCtw==", + "requires": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "streamsearch": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", @@ -7250,6 +7552,11 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -7443,6 +7750,19 @@ "extsprintf": "^1.2.0" } }, + "websocket": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz", + "integrity": "sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ==", + "optional": true, + "requires": { + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -7553,6 +7873,11 @@ "window-size": "^0.1.4", "y18n": "^3.2.0" } + }, + "yn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-4.0.0.tgz", + "integrity": "sha512-huWiiCS4TxKc4SfgmTwW1K7JmXPPAmuXWYy4j9qjQo4+27Kni8mGhAAi1cloRWmBe2EqcLgt3IGqQoRL/MtPgg==" } } } diff --git a/package.json b/package.json index d4c75b06f..f8518f652 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "http-status-codes": "^1.3.0", "js-sha256": "^0.9.0", "jsonwebtoken": "^8.5.0", - "log4js": "^0.6.38", + "log4js": "^6.1.0", "multer": "^1.3.0", "npm-run-all": "^4.1.5", "passport": "^0.4.0", @@ -52,7 +52,8 @@ "swagger-ui-express": "^4.0.5", "utf8-bytes": "0.0.1", "winston": "^2.2.0", - "ws": "^5.1.1" + "ws": "^5.1.1", + "yn": "^4.0.0" }, "license": "Apache-2.0", "devDependencies": { diff --git a/start.sh b/start.sh index cfc7f4a62..bd1aca1bd 100755 --- a/start.sh +++ b/start.sh @@ -10,20 +10,14 @@ rm -rf /tmp/fabric-client-kvs_peerOrg* -mkdir -p ./logs/app & mkdir -p ./logs/db & mkdir -p ./logs/console - -LOG_CONSOLE_PATH="logs/console/console-$(date +%Y-%m-%d).log" - echo "************************************************************************************" echo "**************************** Hyperledger Explorer **********************************" echo "************************************************************************************" -echo "***** Please check the log [$LOG_CONSOLE_PATH] for any error *****" -echo "************************************************************************************" - -export DISCOVERY_AS_LOCALHOST=true -node main.js name - hyperledger-explorer >>$LOG_CONSOLE_PATH 2>&1 & - -find ./logs/app -mtime +7 -type f -delete & find ./logs/db -mtime +7 -type f -delete & find ./logs/console -mtime +7 -type f -delete - +export LOG_LEVEL_APP=debug +export LOG_LEVEL_DB=debug +export LOG_LEVEL_CONSOLE=info +export LOG_CONSOLE_STDOUT=false +export DISCOVERY_AS_LOCALHOST=true +node main.js name - hyperledger-explorer & diff --git a/sync.js b/sync.js index e6ccb5cb3..ee6fa6158 100644 --- a/sync.js +++ b/sync.js @@ -17,9 +17,7 @@ async function start() { synchronizer = new Synchronizer(args); await synchronizer.initialize(); - console.log('\n'); - console.log(`Synchronizer pid is ${process.pid}`); - console.log('\n'); + logger.info(`Synchronizer pid is ${process.pid}`); } start(); @@ -30,7 +28,7 @@ start(); */ const shutDown = function() { - console.log( + logger.info( '<<<<<<<<<<<<<<<<<<<<<<<<<< Closing client processor >>>>>>>>>>>>>>>>>>>>>' ); if (synchronizer) { @@ -39,7 +37,7 @@ const shutDown = function() { setTimeout(() => { process.exit(0); setTimeout(() => { - console.error( + logger.error( 'Could not close child connections in time, forcefully shutting down' ); if (synchronizer) { @@ -51,24 +49,24 @@ const shutDown = function() { }; process.on('unhandledRejection', up => { - console.log( + logger.error( '<<<<<<<<<<<<<<<<<<<<<<<<<< Synchronizer Error >>>>>>>>>>>>>>>>>>>>>' ); if (up instanceof ExplorerError) { - console.log('Error : ', up.message); + logger.error('Error : ', up.message); } else { - console.log(up); + logger.error(up); } shutDown(); }); process.on('uncaughtException', up => { - console.log( + logger.error( '<<<<<<<<<<<<<<<<<<<<<<<<<< Synchronizer Error >>>>>>>>>>>>>>>>>>>>>' ); if (up instanceof ExplorerError) { - console.log('Error : ', up.message); + logger.error('Error : ', up.message); } else { - console.log(up); + logger.error(up); } shutDown(); }); diff --git a/syncstart.sh b/syncstart.sh index 26cc48193..4b345ec28 100755 --- a/syncstart.sh +++ b/syncstart.sh @@ -3,29 +3,26 @@ # #!/bin/bash -# -#Redirecting console.log to log file. -#Please visit ./logs/sync/app to view the application logs and visit the ./logs/sync/db to view the Database logs and visit the ./log/console for the console.log + +# Please visit ./logs/sync/app to view the application logs and visit the ./logs/sync/db to view the Database logs and visit the ./logs/sync/console for the console.log # Log rotating for every 7 days. rm -rf /tmp/fabric-client-kvs_peerOrg* export SYNC_LOG_PATH=./logs/sync -mkdir -p $SYNC_LOG_PATH/app & mkdir -p $SYNC_LOG_PATH/db & mkdir -p $SYNC_LOG_PATH/console - -SYNC_LOG_CONSOLE_PATH="$SYNC_LOG_PATH/console/console-$(date +%Y-%m-%d).log" - echo "************************************************************************************" echo "**************************** Hyperledger Explorer Sync**********************************" echo "************************************************************************************" -echo "***** Please check the log [$SYNC_LOG_CONSOLE_PATH] for any error *****" -echo "************************************************************************************" + +export LOG_LEVEL_APP=debug +export LOG_LEVEL_DB=debug +export LOG_LEVEL_CONSOLE=info +export LOG_CONSOLE_STDOUT=false export DISCOVERY_AS_LOCALHOST=true -node sync.js $1 $2 >>$SYNC_LOG_CONSOLE_PATH 2>&1 & +node sync.js $1 $2 & -find $SYNC_LOG_PATH/app -mtime +7 -type f -delete & find $SYNC_LOG_PATH/db -mtime +7 -type f -delete & find $SYNC_LOG_PATH/console -mtime +7 -type f -delete